Mittelstandsforum in Bielefeld und wir sind mit dabei!

Mittelstandsforum WEGE 2016

Gut 500 Gäste waren beim Mittelstandsforum vor Ort, das von der Wirtschaftsentwicklungsgesellschaft Bielefeld (WEGE) zum Austausch ostwestfälischer Unternehmen zum 13. Mal ausgerichtet wurde. Die enge Verzahnung von Wirtschaft und Politik möchte der Oberbürgermeister Pit Clausen künftig mit einem festen Sitz im Haupt & Beteiligungsausschuss der Stadt honorieren, wie die Neue Westfälische im Rückblick schreibt.

Wirtschaftsförderung WEGE Bielefeld

Bielefeld als Wirtschaftsstandort

Das Unternehmertum am Standort Bielefeld zeichne sich für Clausen besonders durch Professionalität und Verantwortungsbewusstsein aus. Seit bekannt gegeben wurde, dass Bielefeld die am schnellsten wachsende Stadt in NRW ist, muss auch auf diese Ausprägung des demographischen Wandel reagiert werden: Beispielsweise durch junges und modernes Wohnen. Oder auch durch den weiteren Ausbau Bielefelds als Wissenschafts-Standort, in dem bereits heute auf 1.000 Einwohner 100 Studenten kommen. In diesem Zusammenhang erwähnte Clausen auch, wie erfolgreich in Bielefeld gegründet wird und insbesondere in den Bereichen IT und Bio-Tech Neugründungen stattfinden.

In diesem Zusammenhang nannte er die Founders Foundation von Bertelsmann, die es sich zur Aufgabe gemacht hat, Unternehmer auszubilden und Netzwerke zwischen Silicon Valley, Berlin, Tel Aviv und Ostwestfalen herzustellen.

Wir setzen auf neue Ideen

Unter diesem Motto war unsere Kollegin Hanna auf dem Podium vertreten und hat über die comspace Unternehmenskultur und unsere Initiative Spende dein Talent erzählt.

In diesem Artikel möchten wir gerne die anderen Teilnehmer vorstellen, die das Mittelstandsforum mit ihren Beiträgen bereichert haben.

Neue Produkte und Dienstleistungen ermöglichen den Erfolg und die Wettbewerbsfähigkeit eines Unternehmens. Um diesen Vorsprung zu sichern, bedienen sich bevorzugt junge Unternehmen dem Offensichtlichen:
Sie nutzen das Wissen ihrer Mitarbeiter und stellen den Mensch in den Mittelpunkt.
Vorraussetzung ist aber der offene Gedankenaustausch, interdisziplinäre Teams und die Nutzung zeitgemäßer Technologien aus bspw. Marketing, (interner und externer) Kommunikation und Logistik.

Auf dem Panel wurden folgende Ideen vorgestellt:

Elvira Touati, von Fincallorca, erläuterte wie Kunden durch geschicktes Online Marketing und Überflugvideos gezielter angesprochen werden können.

Dr. Rinje Brandis berichtete, wie aufgrund interner Bedürfnisse, die Krause DiMaTec GmbH als 3D-Druck-Consulting Unternehmen ausgegründet wurde und dass die Technologie zahlreiche Anwendungsmöglichkeiten eröffne, gerade für den heimischen Maschinenbau.

Janina Lüders, die stellvertretend für das studentische iGem-Team auf der Bühne stand, stellte ihr Forschungsergebnis aus dem Bereich synthetische Technologien vor – einen international prämierten Biosensor. Mit einem Smartphone und einem auf Papier gedrucktem Teststreifen lassen sich Schwermetalle und K.O.-Tropfen in Flüssigkeiten nachweisen.

Mittelstandsforum WEGE 2016

Wir gestalten Zukunft und investieren

Robert Richter, Geschäftsführer der Ritex GmbH, erläuterte wie seine qualitativen und innovativen Produkte ungewöhnlicherweise von Deutschland nach Asien exportiert werden. Dies unterstreiche auch die Stärken des Standorts Deutschland, denn hier sind loyale, gut ausgebildete Mitarbeiter ein Garant für den künftigen Geschäftserfolg.
Dr. Johanna Will-Armstrong der von Bodelschwinghsche Stiftung Bethel, betonte, dass man sich gerade in OWL, als Arbeitgeber mit über 9000 Angestellten, nur durch Transparenz und Beteiligungsmöglichkeiten die Motivation und Innovation der Mitarbeiter sichern kann. Ihre Verbundenheit zum Standort Bielefeld stärke man zudem mit Bauinvestitionen von über 200 Mio.€.

Hunter International GmbH, vertreten durch Nadine Trautwein, sieht gerade im Standort Bielefeld Ihre Wettbewerbsvorteile und ist daher kürzlich mit dem gesamten Firmensitz, inklusive der Produktion, nach Bielefeld umgezogen.

Dürkopp Adler ist bereits mitten im Prozess der Transformation und Digitalisierung und investiert in zukunftsfähige Technologien, betonte Michael Kilian, Sprecher des Vorstands. Innovative Technologien und die Einbeziehung der Mitarbeiter ermöglichen die Forschung und Entwicklung modernster technologischer Fasern, wie Carbongewebe. Die ersten Erfahrungen mit Industrie 4.0 und Internet der Dinge sammelte Dürkopp Adler bereits mit Ihren fernüberwachten Nähmaschinen über eine Cloudlösung.

Die Verbundorganisation Beauty Alliance sieht auch weiterhin eine Zukunft für Ihre rund 100 stationären Händler. Die Kombination geeigneter On- und Offline Maßnahmen soll Innovationen schaffen und die Sparte Gesundheitsprodukte wettbewerbsfähig halten.

Wir organisieren den Wandel und denken digital

Was bedeutet Industrie 4.0 und die Digitalisierung der Wirtschaft – dazu äußerten sich auch regionale Vertreter klassischer Industriegrößen aus Bielefeld.
Der digitale Wandel muss als strategische Aufgabe angesehen werden und man braucht Visionen. Das Projekt it’s OWL fördert die Entwicklung von Robotern zur optischen Vermessung von Bauteilen, stellte Dr. Rolf Heddrich von Goldbeck Bauelemente vor. Dr. Benjamin Jurke der DMG MORI bestätigte den deutschen Wirtschaftstandort und betonte die Bedeutung hochindividualisierter Produktion. “one size fits all” funktioniert nunmal nicht in der Industrie.

Über “Neues vom Robo Sapiens” berichtete Prof. Dr. Jochen Steil vom COR-Lab der Uni Bielefeld. Er sagte voraus, dass die Industrieroboter ihre klassischen “Käfige” verlassen würden, in denen sie bisweilen Ihre Tätigkeiten ausüben mussten und zunehmend die Produktion durchdringen werden. Der Industriestandort Deutschland sei aber auf dem richtigen Weg, vor allem durch ein effektives Zusammenwirken der unterschiedlichen Disziplinen.

Nicht nur Industriehallen wandeln sich dank Digitalisierung, auch im Alltag greift die Transformation immer mehr. So nutzt die Bielefelder Gemeinnützige Wohnungsgesellschaft intelligente Technologien in Ihren
KogniHome Wohnungsprojekten. Entstanden sind die Ideen, zu solchen Assistenzprojekte, aus dem Bereich des altersgerechten Wohnens und haben mittlerweile eine allgemeine, gesellschaftliche Berechtigung erlangt. Ob intelligente Eingangsbereiche oder technologische Fitness-Coaches, beide bereichern mittlerweile die Leben einer breiten Zielgruppen.

 

WEGE Bielefeld 2016

Die Fachvorträge wurden abgerundet durch den Bielefelder Poetry-Slammer Kolja Fach, der amüsant vortrug, warum man besser nicht auf den Chihuahua seiner Freundin aufpassen sollte, wenn dieser verblüffende Ähnlichkeiten zu Wüstenrennmäusen aufweist.
Unter dem Motto “Das kommt aus Bielefeld” spielte das Trio um Kristin Shey Ihren Boomerang Song.
Die Wirtschaftsförderung stellte Sebastian Merget als ihr neues Gesicht zur “Das kommt aus Bielefeld” Imagevideo-Kampagne vor.

Unser Fazit

Das angekündigte Motto: “Wirtschaft Live” versprach nicht zu viel. Bei den ostwestfälischen Unternehmen wurden bereits viele wichtige Weichen für die Digitale Transformation gestellt und moderne Technologien werden innovativ genutzt, um den Anforderungen eines globalen Marktes gerecht zu werden. Mit der richtigen Einstellung sind moderne Märkte vor allem Chancen und nicht nur Belastung. Innovationen und zukunftsgerichtete Mitarbeiter ermöglichen es, diese Chance des Wandels zu nutzen.

“Unternehmenskultur ist wie…” Unser Versuch einer Analogie.

Mit welcher Analogie lässt sich Unternehmenskultur am besten beschreiben? Diese Frage stellt Mark Poppenborg auf dem Blog von intrinsify.me und hat damit einen spannenden Austausch zum Thema “Was ist Unternehmenskultur?” angestoßen. Er schickt selbst drei Beispiele für Analogien inklusive Stärken und Schwächen ins Rennen und bittet um weitere Vorschläge.

Comspace Februar 2015
comspace von der Straße aus betrachtet. (c) Veit Mette

Bei comspace fanden wir die Frage nach einer eingängigen Veranschaulichung von Unternehmenskultur sofort spannend. Darum haben wir – unsere Feelgood Managerin Sarah Jansohn und ich – uns direkt an die Arbeit für diesen Artikel als Antwort auf die intrinsify.me-Frage gemacht.

Unternehmenskultur als Straßenverkehr(snetz)

Strassenverkehr

Zugegeben, das klingt erstmal ziemlich technisch und wenig spektakulär. Und tatsächlich haben wir anfangs in der gemeinsamen Diskussion einige Zweifel gespürt oder müdes Gähnen geerntet. 😉 Aber wir finden: Diese Analogie hat es in sich! Denn:

Das Verkehrsnetz in einer gewissen Region oder einem Land entspricht in unserer Analogie einem Unternehmen. Der Straßenverkehr hat immer gewisse Rahmenbedingungen: Das Straßennetz, offizielle Verkehrsregeln und ungeschriebene Regeln. Im Unternehmen sind das z.B. der physische Standort, die Büroausstattung und arbeitsvertragliche Regelungen, an die sich jeder Mitarbeiter halten muss. So wie sich das Straßennetz von Land zu Land unterscheidet (und in Teilen doch ähnlich ist), unterscheiden sich auch Unternehmen in einigen ihrer Rahmenbedingungen voneinander.

Das wichtigste in unserer Analogie sind aber die Menschen in den Autos. Denn der Verkehr entsteht erst durch die Teilnehmer, so wie die Unternehmenskultur durch die Mitarbeiter_innen im Unternehmen entsteht, die sich innerhalb der Rahmenbedingungen bewegen.

Weitere Merkmale der Analogie

  • Die Straßenlandschaft sowie das Unternehmen bilden ein Netzwerk aus vorgegebenen Rahmenbedingungen ab, die relativ(!) stabil sind. Mit der individuellen Nutzung dieser Rahmenbedingungen manifestieren oder verändern sich die Vernetzungen.
  • Um teilhaben zu können, braucht es ein Aufnahmeritual. Beim Straßenverkehr ist das die Fahrprüfung; im Unternehmen der Einstellungsprozess.
  • Jeder Verkehrsteilnehmer hat ein eigenes Auto, ein individuelles Ziel und einen persönlichen Fahrstil. Im Unternehmen trägt jeder Mitarbeiter mit seinen Zielen, Kompetenzen und konkretem Verhalten zur Unternehmenskultur bei.
  • Wer eine Auffahrt nutzt oder das Straßennetz verlässt (temporär oder final) verändert den Verkehrsfluss;  Zu- und Abgänge von Mitarbeitern im Unternehmen verändern die Unternehmenskultur.
  • Es gibt viel und wenig befahrene Straßen, Autobahnen und Feldwege. Unternehmenskultur kann bestimmte Werkzeuge und Methoden bedeuten, die von vielen oder wenigen benutzt werden. Bei comspace z.B. Projektmanagement-Methoden, die je nach Kunde und Team variieren oder nach speziellem Bedarf eingesetzte Linux-Betriebssysteme
  • Wenn es zu viel Verkehr / Gleichförmigkeit gibt, kommt es zu Stau oder unharmonischer Unternehmenskultur.

  • Wenn alle Verkehrsteilnehmer/Mitarbeiter unterschiedlich genug sind (Fahrzeug, Fahrstil, Geschwindigkeit) und jeder Rücksicht nimmt, ist alles im Fluss – und man braucht nicht mal viele Regelungen dafür. 😉 Diversität macht ein System stabiler und resilienter!

  • Störungen durch Personen, der Infrastruktur oder Umweltbedingungen können berücksichtigt werden: Falschfahrer und Verkehrsbehinderer (personenbezogen), Straßensperrung oder Geschwindigkeitsbegrenzung (Unternehmensvorgaben), schlechte Witterungsbedingungen (Krisen).

Stärken unserer Analogie

  • Anschaulich
  • Alltagsnah
  • Entsteht und verändert sich durch aktives benutzen durch die Teilnehmer (jeder gestaltet – bewusst oder unbewusst – durch sein Verhalten und auch das, was er NICHT tut, die Unternehmenskultur). Unternehmenskultur ist durch objektive Rahmenbedingungen geprägt, entsteht aber durch jeden Einzelnen und verändert sich auch ständig.

Schwächen der Analogie

  • Andere Verkehrsteilnehmern als Autofahrer sind nicht berücksichtigt. Was ist mit Fahrradfahrern und Fußgängern? Die Analogie müsste erweitert werden, wird dann aber zu kompliziert.

 

tl;dr und Fazit:

Mit dem Führerschein erhält man die Erlaubnis am Straßenverkehr teilzunehmen. Mit der Einstellung erhält man die Möglichkeit an einer Unternehmenskultur teilzunehmen. Dabei gibt es klar niedergeschriebene Regeln, ungeschriebene Regeln und Freiraum zur individuellen Gestaltung und Nutzung.
In beiden Fällen lernen die Teilnehmer_innen erst mit der aktiven Teilnahme und Nutzung wie die Kultur funktioniert. Nur wenn Kultur gelebt und über sie kommuniziert wird, entwickelt sie sich weiter.   

Vertiefung des Themas

Kultur-Systeme haben eine wichtige Funktion: Durch ihre objektiven Rahmenbedingungen und (un)geschriebenen Verhaltensregeln konstituieren sie Routinen, die Entscheidungen erleichtern und beschleunigen. So wie Rechtssysteme oder religiöse Systeme wie die Zehn Gebote uns die Entscheidung abnehmen, ob Stehlen eine gute Idee ist oder nicht, helfen uns Ampeln im Straßenverkehr schnell zu entscheiden, dass man bei rot sicherheitshalber stehen bleibt und erst bei grün geht. Eine unterscheidbare und authentisch kommunizierte Unternehmenskultur gibt eine ähnliche Hilfestellung, um das Zusammenarbeiten zu vereinfachen, persönliche Unsicherheiten zu minimieren und manche Entscheidungen auf Autopilot zu stellen.

Natürlich gibt es vergleichbare Mechanismen auch in anderen Bereichen des Lebens. Die Uni Paderborn hat dazu einige interessante Arbeiten unter dem Oberbegriff Automatismen veröffentlicht. In diesem Zusammenhang sind wir auf dieses  wunderbare Zeitraffer-Video von nordamerikanischen Flugrouten gestoßen – ein Verkehrsnetz mit einer ganz eigenen Kultur:

https://www.youtube.com/watch?v=dPv8psZsvIU 

Update:

Der Wettbewerb um die passendste Analogie ist mittlerweile beendet und die Gewinnerin ist Simone Gilau mit ihrem Vorschlag „Unternehmenskultur ist wie ein Garten„. Uns gefällt diese Analogie ebenfalls sehr gut, da sie einen kreativen und komplexen Entwicklungsprozess beschreibt, der Diversität würdigt und die Wichtigkeit von kontinuierlichem „Kümmern“ zur Erhaltung und Weiterentwicklung der Unternehmenskultur voraussetzt.

Sitecore Commerce Connect – Teil 5: Warenkorb verwalten

Bisher ging es in dieser Serie um die Verwaltung und Darstellung von Produkten und Preisen aus Hybris. Das Ziel dieses Artikels ist es auch erste Prozesse rund um den Warenkorb mittels Sitecore Commerce Connect abbilden zu können.

Warenkorb

Die zentrale Überlegung am Anfang eines Projektes ist, welches System zu welcher Zeit die Zuständigkeit für den Warenkorb hat. Wird der Warenkorb immer auf beiden Seiten synchron gehalten, das heißt jede Änderung am Warenkorb wird unmittelbar an das externe Shopsystem (kurz ECS) gemeldet, oder wird der Warenkorb im ECS nur zu definierten Zeitpunkten synchronisiert, also z.B. beim Checkout? Letzteres bedingt weniger Requests an das ECS, aber Sitecore-seitig ist dann z.B. eine Warenkorbwertermittlung erforderlich, die im schlechtesten Fall nicht mit der im ECS synchron ist.

Warenkorb-Verwaltung

Im Rahmen unserer Evaluierung ist das ECS für den Warenkorb zuständig und Sitecore meldet alle Änderungen unmittelbar an das ECS. Für die Darstellung auf der Webseite werden die Daten rund um den Warenkorb wiederum immer online vom ECS abgefragt.
Außerdem haben wir uns entschieden, den mitgelieferten Engagement Plan ‘Abandoned Carts’ gleich mit zu nutzen, zumal dafür scheinbar keine weitere Implementierung erforderlich ist.

Warenkorb anlegen/ abfragen

Für alle Funktionen rund um den Warenkorb ist der Service Provider ‚CartServiceProvider‘ des Cart Service Layers zuständig.

Beispiel Verwendung CartServiceProvider.CreateOrResumeCart

[csharp]
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Comspace.Sitecore.CommerceConnect.Services.Prices;
using Sitecore;
using Sitecore.Analytics;
using Sitecore.Commerce.Entities.Carts;
using Sitecore.Commerce.Services.Carts;
using Sitecore.Commerce.Services.Prices;
using Sitecore.Data;

namespace Comspace.Sitecore.CommerceConnect.Services.Carts
{
/// <summary>
/// Sitecore.Commerce.Carts.config
/// </summary>
public class CartManager
{
public const string TrackerAttachmentKeyCart = "Comspace.Sitecore.CommerceConnect_Cart";

public static Cart GetCart()
{
if (!Tracker.Current.Contact.Attachments.ContainsKey(TrackerAttachmentKeyCart))
{
//create cart
var createOrResumeCartRequest = new CreateOrResumeCartRequest(
"Website",
Context.User.Profile.Email,
"Default",
Context.User.Profile.Email); //NOTE FindCartInEaState: c.CustomerId == request.CustomerId
var cart = new CartServiceProvider().CreateOrResumeCart(createOrResumeCartRequest).Cart;

//persist cart
Tracker.Current.Contact.Attachments[TrackerAttachmentKeyCart] = cart;
}
return Tracker.Current.Contact.Attachments[TrackerAttachmentKeyCart] as Cart;
}
}

//…
}
[/csharp]

Pipeline loadCart

Die Anbindung des ECS erfolgt mittels Erweiterung der Pipeline ‚loadCart‘ der Sitecore.Commerce.Carts.config.
.config

[xml]
<!– LOAD CART
Gets the cart object that matches the specified criteria.
This pipeline is responsible for reading data for a specific cart that is managed by the commerce system.
This pipeline reads the cart data from the commerce system and converts that data into the Commerce format.
–>
<commerce.carts.loadCart>
<processor type="Comspace.Sitecore.CommerceConnect.Hybris.Pipelines.Carts.LoadCart, Comspace.Sitecore.CommerceConnect.Hybris" patch:after="processor[@type=’Sitecore.Commerce.Pipelines.Carts.LoadCart.LoadCartFromEaState, Sitecore.Commerce‘]"/>
</commerce.carts.loadCart>
[/xml]

Processor LoadCart

[csharp]
using Comspace.Sitecore.CommerceConnect.Hybris.Connector;
using Comspace.Sitecore.CommerceConnect.Hybris.Connector.Model.Cart;
using Comspace.Sitecore.CommerceConnect.Services.Carts;
using Sitecore.Commerce.Entities.Carts;
using Sitecore.Commerce.Pipelines;
using Sitecore.Commerce.Pipelines.Carts.Common;
using Sitecore.Commerce.Services.Carts;

namespace Comspace.Sitecore.CommerceConnect.Hybris.Pipelines.Carts
{
/// <summary>
/// commerce.carts.loadCart
/// </summary>
public class LoadCart : CartPipelineProcessor
{
public override void Process(ServicePipelineArgs args)
{
var loadCartRequest = args.Request as LoadCartRequest;

//get from ECS
ExternalCart externalCart = CartConnector.Load(global::Sitecore.Context.Language.Name, loadCartRequest.UserId);

//convert to commerce connect cart
Cart cart = new Cart();
cart.ExternalId = externalCart.Code;
cart.ShopName = loadCartRequest.ShopName;
cart.UserId = loadCartRequest.UserId;

//init totals
cart = CartManager.UpdateCartTotals(cart); //NOTE prevent multiple request

//persist for next processor
((CartResult) args.Result).Cart = cart;
}
}
}
[/csharp]

Produkt zum Warenkorb hinzufügen

Beispiel Verwendung CartServiceProvider.AddCartLines

[csharp]
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Comspace.Sitecore.CommerceConnect.Services.Prices;
using Sitecore;
using Sitecore.Analytics;
using Sitecore.Commerce.Entities.Carts;
using Sitecore.Commerce.Services.Carts;
using Sitecore.Commerce.Services.Prices;
using Sitecore.Data;

namespace Comspace.Sitecore.CommerceConnect.Services.Carts
{
/// <summary>
/// Sitecore.Commerce.Carts.config
/// </summary>
public class CartManager
{
//…

public static Cart AddLine(string externalId, string sitecoreItemId, uint quantitiy)
{
Cart cart = GetCart();

//create cartlines
List<CartLine> lines = new List<CartLine>
{
new CartLine
{
Product = new CartProduct
{
ProductId = externalId,
SitecoreProductItemId = new ID(sitecoreItemId),
Price = PriceManager.GetPrice(externalId, Context.Language)
},
Quantity = quantitiy,
LineNumber = (uint) (cart.Lines.Count + 1)
}
};

//add cart lines
AddCartLinesRequest addCartLinerequest = new AddCartLinesRequest(cart, new ReadOnlyCollection<CartLine>(lines));
CartResult cartResult = new CartServiceProvider().AddCartLines(addCartLinerequest);

return cartResult.Cart; //result contains the updated cart
}
}
}
[/csharp]

Pipeline addCartLines

.config

[xml]
<!– ADD CART LINES
This pipeline is responsible for adding a new line to the shopping cart and recording a corresponding page event in DMS.
This happens when a product is added to the cart.
–>
<commerce.carts.addCartLines>
<processor type="Comspace.Sitecore.CommerceConnect.Hybris.Pipelines.Carts.AddLineToCart, Comspace.Sitecore.CommerceConnect.Hybris" patch:after="processor[@type=’Sitecore.Commerce.Pipelines.Carts.AddCartLines.AddLinesToCart, Sitecore.Commerce‘]"/>
</commerce.carts.addCartLines>
[/xml]

Processor AddCartLines

[csharp]
using System.Linq;
using Comspace.Sitecore.CommerceConnect.Hybris.Connector;
using Sitecore.Commerce.Entities.Carts;
using Sitecore.Commerce.Pipelines;
using Sitecore.Commerce.Services.Carts;

namespace Comspace.Sitecore.CommerceConnect.Hybris.Pipelines.Carts
{
/// <summary>
/// commerce.carts.addCartLines
/// </summary>
public class AddLineToCart : PipelineProcessor<ServicePipelineArgs>
{
public override void Process(ServicePipelineArgs args)
{
var cartLinesRequest = args.Request as CartLinesRequest;

//add to ECS
Cart cart = cartLinesRequest.Cart;
CartLine cartline = cartLinesRequest.Lines.First();
CartConnector.AddLineToCard(global::Sitecore.Context.Language.Name, cart, cartline);
}
}
}
[/csharp]

Warenkorb Summen

Damit die Summen im Warenkorb immer korrekt sind und keine Sitecore-seitige Berechnung stattfinden muss, werden auch die Warenkorb Summen immer online aus dem ECS geholt. Dafür muss die Pipeline ‘saveCart’ erweitert werden:

Pipeline saveCart

.config

[xml]
<!– SAVE CART
Saves the cart object to the external system and in Sitecore EA state.
–>
<commerce.carts.saveCart>
<processor type="Comspace.Sitecore.CommerceConnect.Pipelines.Carts.UpdateCartTotals, Comspace.Sitecore.CommerceConnect" patch:after="processor[@type=’Sitecore.Commerce.Pipelines.Carts.Common.SaveCartToEaState, Sitecore.Commerce‘]"/>
</commerce.carts.saveCart>
[/xml]

Processor UpdateCartTotals

[csharp]
using Comspace.Sitecore.CommerceConnect.Services.Carts;
using Sitecore.Commerce.Entities.Carts;
using Sitecore.Commerce.Pipelines;
using Sitecore.Commerce.Services.Carts;

namespace Comspace.Sitecore.CommerceConnect.Pipelines.Carts
{
/// <summary>
/// commerce.carts.saveCart
/// </summary>
public class UpdateCartTotals : PipelineProcessor<ServicePipelineArgs>
{
public override void Process(ServicePipelineArgs args)
{
var cartRequest = (CartRequestWithCart) args.Request;

//get from ECS
Cart cart = CartManager.UpdateCartTotals(cartRequest.Cart);

//persist for next processor
((CartResult) args.Result).Cart = cart;
}
}
}
[/csharp]

Beispiel Verwendung PricingServiceProvider.GetCartTotal

[csharp]
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Comspace.Sitecore.CommerceConnect.Services.Prices;
using Sitecore;
using Sitecore.Analytics;
using Sitecore.Commerce.Entities.Carts;
using Sitecore.Commerce.Services.Carts;
using Sitecore.Commerce.Services.Prices;
using Sitecore.Data;

namespace Comspace.Sitecore.CommerceConnect.Services.Carts
{
/// <summary>
/// Sitecore.Commerce.Carts.config
/// </summary>
public class CartManager
{
//…

public static Cart UpdateCartTotals(Cart cart)
{
var request = new GetCartTotalRequest();
request.Cart = cart;

//get from ECS
var cartTotalResult = new PricingServiceProvider().GetCartTotal(request); //result contains the updated cart

Tracker.Current.Contact.Attachments[TrackerAttachmentKeyCart] = cartTotalResult.Cart; //refresh cache
return cartTotalResult.Cart;
}
}
}
[/csharp]

Stolpersteine

Der Processor ‘FindCartInEaState’ benötigt eine CustomerId, damit der Contact ermittelt werden kann. Dafür muss die eigentlich optionale CustomerId mit an den ‘CreateOrResumeCartRequest’ übergeben werden (siehe oben). Anderenfalls wird immer wieder ein neuer Warenkorb angelegt, obwohl für den Contact bereits einer existiert.

Resumé

Und auch diesen letzten Beitrag möchte ich mit ein paar Eindrücken und Erkenntnissen abschließen:

  • Der Cart Sercice Layer ist sehr umfangreich und im Rahmen der Evaluierung konnte nur ein sehr kleiner Ausschnitt evaluiert werden.
  • Eine Herausforderung in einem echten Projekt sind die Zuständigkeit und Synchronisation zwischen dem Sitecore Shop und dem ECS. Was wird wo zwischengespeichert und wann an wen gemeldet?
  • Wie auch schon unter Stolpersteine beschrieben, war der Zugriff auf die Contacts im Engangement Plan (automatisch im Hintergrund) immer wieder holprig. Eine der Ursachen war sicherlich die Entwicklungsumgebung: wechselnde Browser, plötzliche Neustarts etc.  Hier müsste in einem echten Projekt eine kritische Analyse erfolgen.
  • Auch dem Umgang mit Fehlern in der Verarbeitung muss in einem echten Projekt eine hohe Aufmerksamkeit gewidmet werden – Stichwort Transaktionssicherheit.

So, das war’s erstmal von meiner Seite zum Thema Commerce Connect. Ich freue mich über euer Feedback 🙂

Alle voran gegangenen Artikel dieser Serie findet ihr hier:
Teil 1: Ein Überblick
Teil 2: Produkte synchronisieren
Teil 3: Klassifizierungen synchronisieren
Teil 4: Preise darstellen

Blogparade: Die frechmutigsten und erfolgreichsten Recruitingaktionen 2015

comspace Recruiting Aktion Blogparade

Nach der Marketingaktion ist vor der Marketingaktion. Diese Regel gilt natürlich auch im Recruiting und Personalmarketing.

2015 haben wir mit der Bewerbung per SMS selbst eine sehr erfolgreiche Aktion durchgeführt, die uns neben unerwartet (aber erhofft) vielen Bewerbern, einige Aufmerksamkeit in der Presse und allgemeine Bekanntheit für comspace in unserem direkten Umfeld eingebracht hat.
comspace Recruiting Aktion Blogparade

 

Wie und was genau sich dahinter verbirgt, in einem eigenen Beitrag zu dieser Blogparade.

Was ist eine Blogparade?

Ein Blog – in diesem Falle unseres bei comspace – stellt Fragen oder ein allgemeines Thema in den Social Web Raum. Andere Blogger, Unternehmensblogs und Experten schreiben Antworten, Artikel und Kommentare auf die initialen Fragen und tragen somit zu einer hochverdichteten Zusammenstellung von Know-how bei, die allen aktiv Beteiligten, wie auch den passiven Lesern aller teilnehmenden Blogs zu Gute kommt.

Unsere Einstiegsfragen lauten:

  • Wie sah Ihre Aktion aus und wie ist sie entstanden?
  • Welchen Erfolg konnten Sie erzielen?
  • Welche Schwierigkeiten mussten Sie überwinden?
  • Welche Erfahrungen können Sie daraus weiter geben?
  • Wie sähe die perfekte Recruiting-Aktion für Sie aus, wenn es keine Beschränkungen gäbe?
  • Haben Sie selber als Bewerber an einer besonderen Recruiting-Aktion teilgenommen? Wie war das für Sie?
  • Zukunftsausblick: Werden frechmutige Aktionen in Zukunft mehr werden? Wie werden sie sich weiter entwickeln? Oder bleibt doch alles beim Alten?

Wie können Sie an der Blogparade teilnehmen?

  1. Schreiben Sie einen Blogbeitrag über Ihre ausgefallenste Recruiting-Maßnahme und beantworten Sie eine oder mehrere der o.g. Fragen darin.
  2. Die Überschrift kann frei gewählt werden – Recruiting und frechmutig sollten zum besseren wiederfinden enthalten sein.
  3. Verlinken Sie aus Ihrem Beitrag auf diesen Artikel hier und weisen Sie uns mit einem Link in den Kommentaren auf Ihren Artikel hin.
  4. Eine kurze einleitende Erklärung in Ihrem Artikel für Ihre Leser zu dieser Blogparade ist empfehlenswert.
  5. Sie haben eine Schreibblockade oder wissen nicht, was eine Blogparade ist? Dazu hat Kerstin Hoffmann bereits eine eigene Blogparade organisiert und klärt in diesem Artikel zu beidem auf.
  6. Sie haben keinen Blog, möchten Ihre Erkenntnisse trotzdem teilen? Sehr gerne! Einfach unter diesem Beitrag als Kommentar hinterlassen oder per Mail mit dem Betreff Blogparade Recruiting an alex.kahl@comspace.de senden.

Bis zum 19.2.2016 werden wir Beiträge sammeln und dann mit der Zusammenfassung beginnen. 

// UPDATE 12.1.2016 Verlängerung der Blogparade bis zum 19.2.: Ich gebe zu, es war sehr optimistisch kurz vor Weihnachten eine Blogparade zu starten. Ein wenig hatte ich auf die ruhige Zeit zwischen den Tagen gehofft und dass die eine oder der andere da bereits dazu käme einen Beitrag ins Rennen zu schicken.

Damit noch genug Zeit für spannende Artikel bleibt, haben wir die Parade also bis zum 19.2. verlängert. Bis eine Woche vor dem HRIC – dem ersten HR Inspiration Camp am 26.2. in Bielefeld. Hier werden wir voraussichtlich einige der Ergebnisse live vorstellen.

Hier unsere frechmutige Recruiting-Aktion 2015: Bewerbung per SMS kombiniert mit Plakaten in Bielefelder Bussen und Bahnen.

Was haben Sie von der Teilnahme an der Blogparade?

Erkenntnisgewinn, neue Inspirationen und Erfahrungs-Austausch mit anderen Unternehmen und Experten im Bereich Bewerber_innen Ansprache. Im Anschluss werden wir alle Beiträge zu einem kostenlosen E-Book zusammenfassen und hier zum Download anbieten.

Und nun freuen wir uns auf Ihre Einsendungen!

Herzlichen Dank an Jörg Buckmann, der Frechmut sogar in einem Buchtitel über HR-Marketing verewigt hat und an Henner Knabenreich, der auf personalmarketing2null.de den Begriff frechmutigst im Zusammenhang mit Bewerbungen  geprägt hat 🙂

Wir sind gespannt, was neben Unternehmen die HR-Experten dort draußen zu berichten haben, wie zum Beispiel: wollmilchsau, das Talentmanagement-Blog von VEDA, HRinMind, Recrutainment, Henrik Zaborowsi, metaHR und nicht zuletzt Gero saatkorn Hesse

Sitecore Commerce Connect – Teil 4: Preise darstellen

In den letzten beiden Teilen dieser Serie ging es um die Synchronisation von Produkten und Klassifizierungen. Das Ziel dieses Artikels ist es auch die Preise aus dem externen Shopsystem, in unserem Fall Hybris, auf der Webseite anzeigen zu können.

ProduktDemo

Der Pricing Layer ist ein “klassischer” Layer im Sitecore Commerce Connect, d.h. die Preise werden online abgerufen und nicht synchronisiert. Der Grund: Preise ändern sich häufiger und die Preisfindung ist sehr komplex, hier wird die Hoheit im externen Shopsystem (kurz ECS) belassen.

Preisabfragen

Für die Abfrage von Preisen ist der Service Provider ‚PricingServiceProvider‘ zuständig.

Eine Beispiel:

[csharp]using System.Linq;
using Sitecore.Commerce.Entities.Prices;
using Sitecore.Commerce.Services.Prices;
using Sitecore.Globalization;

namespace Comspace.Sitecore.CommerceConnect.Services.Prices
{
/// <summary>
/// Sitecore.Commerce.Prices.config
/// </summary>
public class PriceManager
{
public static Price GetPrice(string productId, Language language)
{
CustomGetProductPriceRequest request = new CustomGetProductPriceRequest(language.Name, productId);
GetProductPricesResult result = new PricingServiceProvider().GetProductPrices(request);

return result.Prices.Any() ? result.Prices.First().Value : null; //simplified
}
}
}[/csharp]

Um die Preise aus dem ECS abzurufen, muss die Pipeline ‚getProductPrices‘ der Sitecore.Commerce.Prices.config erweitert werden:

Pipeline getProductPrices

.config

[xml]<!– GET PRODUCT PRICES Gets the price object that matches the specified criteria.
This pipeline is responsible for reading pricing data from a commerce system.
This pipeline requests product pricing information from the commerce system and
then converts the output into the proper Commerce format.
–>
<commerce.prices.getProductPrices>
<processor type="Sitecore.Commerce.Pipelines.Prices.GetProductPrices.GetProductPrices, Sitecore.Commerce">
<patch:delete />
</processor>
<processor type="Comspace.Sitecore.CommerceConnect.Hybris.Pipelines.Prices.GetProductPrices, Comspace.Sitecore.CommerceConnect.Hybris" />
</commerce.prices.getProductPrices>[/xml]

Processor GetProductPrices

[csharp]using Comspace.Sitecore.CommerceConnect.Hybris.Connector;
using Comspace.Sitecore.CommerceConnect.Hybris.Connector.Model;
using Comspace.Sitecore.CommerceConnect.Services.Prices;
using Sitecore.Commerce.Entities.Prices;
using Sitecore.Commerce.Pipelines;
using Sitecore.Commerce.Services.Prices;

namespace Comspace.Sitecore.CommerceConnect.Hybris.Pipelines.Prices
{
/// <summary>
/// commerce.prices.getProductPrices
/// </summary>
public class GetProductPrices : PipelineProcessor<ServicePipelineArgs>
{
public override void Process(ServicePipelineArgs args)
{
var request = args.Request as CustomGetProductPriceRequest;

//get from ECS
ExternalProduct productSource = ProductConnector.Load(request.Language, request.ProductId);
if (productSource != null && productSource.Price != null)
{
//convert to commerce connect price
Price price = new Price
{
Amount = productSource.Price.Value,
CurrencyCode = productSource.Price.CurrencyIso
};

//persist for next processor
((GetProductPricesResult) args.Result).Prices.Add("List price", price); //simplified
}
}
}
}[/csharp]

Stolpersteine

Der ‚GetProductPricesRequest‘ enthielt überraschenderweise kein Attribut für die aktuell zu synchronisierende Sprache. Daher musste dieser überschrieben werden:

[csharp]using Sitecore.Commerce.Services.Prices;

namespace Comspace.Sitecore.CommerceConnect.Services.Prices
{
/// <summary>
/// Extendended GetProductPricesRequest.
/// </summary>
public class CustomGetProductPriceRequest : GetProductPricesRequest
{
public string Language { get; set; }

public CustomGetProductPriceRequest(string language, string productId, params string[] priceTypeIds)
: base(productId, priceTypeIds)
{
Language = language;
}
}
}[/csharp]

Resumé

Zuletzt möchte ich wieder ein paar Eindrücke und Erkenntnisse zusammenfassen:

  • Der Service Layer ist eher klein und schnell erfasst.
  • Was mir wirklich gut gefällt ist, dass die Preishoheit im ECS verbleibt.
  • In umfangreicheren Produklisten sollte zwecks Performance die Nutzung der Methode/Pipeline ‚getProductBulkPrices‘ bevorzugt werden.

Wenn ihr mehr zum Sitecore Commerce Connect wissen wollt, dann schaut mal hier:

Sitecore Commerce Connect – Teil 2: Produkte synchronisieren

Im ersten Teil dieser Serie ging es darum einen kurzen Überblick über das Sitecore Commerce Connect Modul zu verschaffen. In diesem Beitrag geht es nun um die Synchronisation von Produkten zwischen einem externen Shopsystem (kurz ECS, in unserem PoC Hybris) und Sitecore.

Zunächst ist es wichtig zu verstehen, dass Preise und Bestand im Commerce Connect nicht als Produktstammdaten gelten. Der Bestand ändert sich ständig und DEN Preis gibt es ja auch nicht, Preisfindung ist ein sehr komplexes Thema. Sitecore geht davon aus, dass diese Informationen online vom ECS ermittelt und geliefert werden. Im Teil 4 dieser Serie wird dann beschrieben, wie ihr auch an diese Informationen kommt.

image00

Die Hoheit für die Produktdaten liegt sicherlich im ECS. Für die Synchronisation der Produktdaten schlägt Sitecore folgende Varianten vor:

  1. Produkte als Items in Sitecore Datenbank (optional bidirektional)
  2. Produkte in ECS, Zugriff über Sitecore Data Provider
  3. Produkte in ECS, Zugriff über Sitecore Index

Wir haben uns im Verlauf des PoC für die Variante 1 entschieden, da diese standardmäßig vom Sitecore so vorgesehen ist und den höchsten Komfort bietet. In der Sitecore Commerce Components Overview im Kapitel “Products” sind einige Argumente für oder gegen die unterschiedlichen Variante aufgeführt.

So, jetzt aber Butter bei die Fische 🙂

Installation Modul

Falls ihr das Modul noch nicht installiert habt, findet ihr wie gewohnt eine gute Installationsanleitung auf dev.sitecore.net.

Synchronisation Produkte

Das Ziel: Titel, Beschreibung und Bilder der Produkte aus dem externen Shopsystem mit Sitecore zu synchronisieren.

image01

In folgende Pipelines der Sitecore.Commerce.Products.config muss für die unidirektionale Synchronisation der Produkte eingegriffen werden:

Pipeline getExternalCommerceSystemProductList

.config

[xml]
&lt;!– GET EXTERNAL COMMERCE SYSTEM PRODUCT LIST
This pipeline is responsible for obtaining the list of product Ids to be synchronized from the external commerce system.–&gt;
&lt;commerce.synchronizeProducts.getExternalCommerceSystemProductList&gt;
&lt;processor type="Sitecore.Commerce.Pipelines.Products.GetExternalCommerceSystemProductList.GetExternalCommerceSystemProductList, Sitecore.Commerce"&gt;
&lt;patch:delete /&gt;
&lt;/processor&gt;
&lt;processor type="Comspace.Sitecore.CommerceConnect.Hybris.Pipelines.Products.ReadProducts, Comspace.Sitecore.CommerceConnect.Hybris" /&gt;
&lt;/commerce.synchronizeProducts.getExternalCommerceSystemProductList&gt;
[/xml]

Processor ReadProducts

[csharp]
using System.Collections.Generic;
using System.Linq;
using Comspace.Sitecore.CommerceConnect.Hybris.Connector;
using Comspace.Sitecore.CommerceConnect.Hybris.Connector.Model;
using Sitecore.Commerce.Pipelines;
using Sitecore.Commerce.Services.Products;

namespace Comspace.Sitecore.CommerceConnect.Hybris.Pipelines.Products
{
/// &lt;summary&gt;
/// commerce.synchronizeProducts.getExternalCommerceSystemProductList
/// &lt;/summary&gt;
public class ReadProducts : PipelineProcessor&lt;ServicePipelineArgs&gt;
{
public override void Process(ServicePipelineArgs args)
{
var request = args.Request as SynchronizeProductsRequest;
var productIds = args.Request.Properties["ExternalCommerceSystemProductIds"] as List&lt;string&gt;; //integration guide (page 12)
productIds = productIds ?? new List&lt;string&gt;();

//get products from ECS
IEnumerable&lt;ExternalProduct&gt; externalProducts = ProductConnector.Load(request.Language);

//convert and add to commerce connect list
productIds.AddRange(from product in externalProducts
where product.Code != null
select product.Code);

//persist for next processor
args.Request.Properties["ExternalCommerceSystemProductIds"] = productIds;
}
}
}
[/csharp]

Pipeline synchronizeProductEntity

.config

[xml]
&lt;!– SYNCHRONIZE PRODUCT ITEM –&gt;
&lt;commerce.synchronizeProducts.synchronizeProductEntity&gt;
&lt;processor type="Sitecore.Commerce.Pipelines.Products.SynchronizeProductEntity.ReadProductFromSitecore, Sitecore.Commerce"&gt;
&lt;patch:delete /&gt;
&lt;/processor&gt;
&lt;processor type="Sitecore.Commerce.Pipelines.Products.SynchronizeProductEntity.SaveProductToExternalCommerceSystem, Sitecore.Commerce" &gt;
&lt;patch:delete /&gt;
&lt;/processor&gt;
&lt;processor type="Comspace.Sitecore.CommerceConnect.Hybris.Pipelines.Products.ReadProduct, Comspace.Sitecore.CommerceConnect.Hybris" patch:after="processor[@type=’Sitecore.Commerce.Pipelines.Products.SynchronizeProductEntity.ReadExternalCommerceSystemProduct, Sitecore.Commerce‘]" /&gt;
&lt;/commerce.synchronizeProducts.synchronizeProductEntity&gt;
[/xml]

Processor ReadProduct

[csharp]
using Comspace.Sitecore.CommerceConnect.Entities.Products;
using Comspace.Sitecore.CommerceConnect.Hybris.Connector;
using Comspace.Sitecore.CommerceConnect.Hybris.Connector.Model;
using Sitecore.Commerce.Pipelines;
using Sitecore.Commerce.Services.Products;
using Sitecore.Diagnostics;

namespace Comspace.Sitecore.CommerceConnect.Hybris.Pipelines.Products
{
/// &lt;summary&gt;
/// commerce.synchronizeProducts.synchronizeProductEntity
/// &lt;/summary&gt;
public class ReadProduct : PipelineProcessor&lt;ServicePipelineArgs&gt;
{
public override void Process(ServicePipelineArgs args)
{
SynchronizeProductRequest syncProdRequest = args.Request as SynchronizeProductRequest;

//get product from ECS
ExternalProduct externalProduct = ProductConnector.Load(syncProdRequest.Language, syncProdRequest.ProductId); //TBD
if (externalProduct != null &amp;&amp; IsProductValidForImport(externalProduct))
{
CustomProduct product = new CustomProduct();
product.ExternalId = externalProduct.Code;
product.Name = externalProduct.Name;
product.FullDescription = externalProduct.Summary;
product.ImageUrl = HybrisSettings.Url + externalProduct.ImageUrl; //custom property

//persist for next processor
args.Request.Properties["Product"] = product; //integration guide (page 12)
}
}

protected bool IsProductValidForImport(ExternalProduct product)
{
var result = true;
if (string.IsNullOrEmpty(product.Name)) // = item.Name
{
result = false;
Log.Info("Skip product ‚" + product.Code + "‘: Name not valid.", product); //NOTE System.Messages
}
return result;
}
}
}
[/csharp]

CustomProduct

Wenn auch die Bilder synchronisiert werden sollen, muss das Produkt-Template des Commerce Connect erweitert werden. Konkret müssen dafür folgende Anpassungen vorgenommen werden:

Template
Neues Template “CustomProduct” anlegen, welches vom Standard Commerce Connect Template „Product“ erbt.

Klassen
Erweiterte Produkt-Klasse „CustomProduct“ definieren:

[csharp]
using Sitecore.Commerce.Entities.Products;
using Sitecore.Data.Items;

namespace Comspace.Sitecore.CommerceConnect.Entities.Products
{
/// &lt;summary&gt;
/// Custom product including image field.
/// &lt;/summary&gt;
public class CustomProduct : Product
{
public string ImageUrl { get; set; }

public MediaItem Image { get; set; }
}
}
[/csharp]

Die Klasse „CustomProductRepository“ definiert dann wie das erweiterte Produkt gelesen und geschrieben wird:

[csharp]
using Comspace.Sitecore.CommerceConnect.Entities.Products;
using Comspace.Sitecore.CommerceConnect.Model.sitecore.templates.User_Defined.Comspace.CommerceConnect;
using Sitecore.Commerce.Data.Products;
using Sitecore.Data.Fields;
using Sitecore.Data.Items;
using Product = Sitecore.Commerce.Entities.Products.Product;

namespace Comspace.Sitecore.CommerceConnect.Data.Products
{
/// &lt;summary&gt;
/// Custom product repository including image field.
/// &lt;/summary&gt;
public class CustomProductRepository : ProductRepository
{
/// &lt;summary&gt;
/// Save product data to related item.
/// &lt;/summary&gt;
/// &lt;param name="entityItem"&gt;&lt;/param&gt;
/// &lt;param name="product"&gt;&lt;/param&gt;
protected override void UpdateEntityItem(Item entityItem, Product product)
{
base.UpdateEntityItem(entityItem, product);

using (new EditContext(entityItem))
{
var url = (product as CustomProduct).ImageUrl;

var image = GetMediaItem(url, product); //TBD
ImageField imagefield = entityItem.Fields[IProductConstants.ImageFieldName];
imagefield.Alt = image.Alt;
imagefield.MediaID = image.ID;
}
}

/// &lt;summary&gt;
/// Read product data from related item.
/// &lt;/summary&gt;
/// &lt;param name="entityItem"&gt;&lt;/param&gt;
/// &lt;param name="product"&gt;&lt;/param&gt;
protected override void PopulateEntity(Item entityItem, Product product)
{
base.PopulateEntity(entityItem, product);

ImageField imageField = entityItem.Fields[IProductConstants.ImageFieldName];
(product as CustomProduct).Image = imageField == null ? null : imageField.MediaItem;
}

#region Handle MediaItem
//…
#endregion
}
}
[/csharp]

.config
Angepasste Templates und Klassen in Sitecore.Commerce.Products.config registrieren:

[xml]
&lt;!– PRODUCT REPOSITORY –&gt;
&lt;productRepository type="Sitecore.Commerce.Data.Products.ProductRepository, Sitecore.Commerce"&gt;
&lt;patch:delete /&gt;
&lt;/productRepository&gt;
&lt;productRepository type="Comspace.Sitecore.CommerceConnect.Data.Products.CustomProductRepository, Comspace.Sitecore.CommerceConnect" singleInstance="true"&gt;
&lt;template&gt;{0C589D66-A119-435A-907F-43481CD5199F}&lt;/template&gt;
&lt;branch&gt;{0C589D66-A119-435A-907F-43481CD5199F}&lt;/branch&gt;
&lt;path ref="paths/products" /&gt;
&lt;Prefix&gt;Product_&lt;/Prefix&gt;
&lt;ProductsIndex&gt;commerce_products_master_index&lt;/ProductsIndex&gt;
&lt;ManufacturerRepository ref="productManufacturerRepository" /&gt;
&lt;DivisionRepository ref="productDivisionRepository" /&gt;
&lt;TypeRepository ref="productTypeRepository" /&gt;
&lt;ClassificationsRepository ref="productClassificationsFieldRepository" /&gt;
&lt;ResourcesRepository ref="productResourcesRepository" /&gt;
&lt;RelationsRepository ref="productRelationsRepository" /&gt;
&lt;GlobalSpecificationsRepository ref="productGlobalSpecificationsRepository" /&gt;
&lt;ClassificationsSpecificationsRepository ref="productClassificationsSpecificationsRepository" /&gt;
&lt;TypeSpecificationsRepository ref="productTypeSpecificationsRepository" /&gt;
&lt;/productRepository&gt;

&lt;includeTemplates&gt;
&lt;ProductTemplateId&gt;{0C589D66-A119-435A-907F-43481CD5199F}&lt;/ProductTemplateId&gt;
&lt;/includeTemplates&gt;

&lt;!– Commerce ENTITIES
Contains all the Commerce cart entities.
The configuration can be used to substitute the default entity implementation with extended one. –&gt;
&lt;commerce.Entities&gt;
&lt;Product type="Sitecore.Commerce.Entities.Products.Product, Sitecore.Commerce" &gt;
&lt;patch:delete /&gt;
&lt;/Product&gt;
&lt;Product type="Comspace.Sitecore.CommerceConnect.Entities.Products.CustomProduct, Comspace.Sitecore.CommerceConnect" /&gt;
&lt;/commerce.Entities&gt;
[/xml]

Stolpersteine

In der Klasse „Sitecore.Commerce.Templates“ existiert eine Konstante „ProductTemplateId“, deren Id fest verdrahtet ist und nicht auf die zuvor eingerichteten Konfigurationsdateien verweist. Die Konstante wird u.a. in der Klasse „ItemClassificationService“ verwendet, daher ist dieser auszutauschen:

[xml]
&lt;itemClassificationService type="Sitecore.Commerce.Products.ItemClassificationService, Sitecore.Commerce"&gt;
&lt;patch:delete /&gt;
&lt;/itemClassificationService&gt;
&lt;itemClassificationService type="Comspace.Sitecore.CommerceConnect.Entities.ItemClassificationService, Comspace.Sitecore.CommerceConnect" /&gt;
[/xml]

Resumé

Zuletzt möchte ich ein paar erste Eindrücke und Erkenntnisse zusammenfassen:

  • Der erste Einstieg durch Pipelines in Pipelines in Pipelines ist herausfordernd.
  • Es gibt umfangreiche Dokumentationen.
  • Einige hilfreiche Klassen aus Beispielen im Internet verweisen leider auf die CommerceServer API, z.B. ProductsSearchResult und CommerceConstants. Auch in dem Dynamics AX Demoshop von Sitecore (Commerce.Dynamics.Storefront) sind Verweise auf die CommerceServer API enthalten. Die Trennung bzw. Abstraktion ist m.E. noch nicht ganz sauber erfolgt.
  • Verwunderlich fand ich zunächst, dass die Synchronisation von Bildern nicht im Standard enthalten ist. Aber dem von Sitecore definierten Prinzip “kleinster gemeinsamer Nenner” folgend, ist es verständlich, denn Bild-Quelle und -Ziel sind doch sehr projektspezifisch.
  • Der “Merchandising Manager” ist NICHT Bestandteil des Commerce Connect, sondern des CommerceServer Connect.
  • In einem echten Projekt mit einem umfangreichen Datenmodell wird der größte Aufwand in das Verständnis und das Mapping der Datenmodelle gehen.

Wenn ihr mehr zum Sitecore Commerce Connect wissen wollt, dann schaut mal hier:

Sitecore Commerce Connect – Teil 1: Ein Überblick am Beispiel Hybris

Wie in meinem Vortrag zum Thema “Evaluierung einer Hybris-Anbindung an Sitecore” auf der letzten Sitecore Usergroup in Bielefeld versprochen, möchte ich mit dieser Beitragsserie unsere ersten Eindrücke von der Anbindung eines externen Shopsystems (in diesem Beispiel Hybris) an Sitecore mittels des Commerce Connect Moduls mit euch teilen.

In diesem Artikel geht es mir darum, euch einen ersten Überblick über das Marketing-Potenzial und Funktionsumfang des Moduls zu verschaffen. In den nächsten Beträgen wird es dann technischer mit konkreten Ausschnitten aus Konfigurationsdateien und Quellcode.

Warum sollten WebCMS und E-Commerce Platform verbunden werden?

Bevor wir an die technischen Details gehen, erlaube ich mir zunächst einige Gedanken aus Sicht von Produkt-Management, Marketing und Vertrieb auf Betreiberseite:

Webnutzer erwarten immer mehr eine einheitliche User-Experience, die sich über alle Kanäle und Plattformen eines Unternehmens erstrecken soll. Zudem  bringen auch Online-Shop Systeme kleinere CMS-Funktionalitäten mit und damit wird auch die Darstellung von Inhalten immer besser. Warum sollten dann CMS und Shop miteinander verbunden werden?

Sitecore bietet bereits in seiner eigenen Suite ein umfangreiches Bundle an Funktionen, um verschiedenste Touchpoints (Webseite, Newsletter, Social Media, Offline-Kanäle am POS usw.) zu einem Nutzererlebnis aus einem Guss zu verschmelzen.

Mit diesem Beispiel möchte ich Möglichkeiten aufzeigen, mit denen Besuchern auch auf Unternehmenswebseiten die Kernfunktionalitäten eines Online-Shops angeboten werden können (wie bspw. Produkte in den Warenkorb legen) und wie diese kombinierten Webseiten- und E-Commerce-Daten dann von der Unternehmenswebseite automatisch an das Shopsystem übergeben werden.

Ein Beispiel für eine Customer Journey mit Optimierungspotenzial sähe beispielsweise so aus:

Der Kunde schaut auf einer Webseite nach einem Produkt, muss sich das Produkt merken und im separaten Online-Shop danach suchen um zu bestellen. 

Das bedeutet:
Durch die zwei separaten Technologien Webseite und Shop entsteht für den Kunden Fehler- und Frustrations-Potenzial. Für Unternehmen und Shop-Anbieter kann das bedeuten: Erhöhte Abbruchgefahr und damit niedrigere Conversion-Rate.

Mit Lösungen wie dem Commerce Connect arbeitet die Technologie im Hintergrund für den Kunden, nimmt ihm Arbeitsschritte ab und erhöht damit die Wahrscheinlichkeit, dass es zu einem Verkauf kommt.

Der Endkunde bemerkt so den Technologiewechsel aus dem WebCMS in den Online-Shop überhaupt nicht und hat ein nahtloses Nutzererlebnis im Bestellprozess.

Kurzvorstellung Sitecore Commerce Connect

Sitecore Commerce Connect sieht sich als Framework und API zur nahtlosen Integration von 3rd-Party Commerce Systemen in Sitecore. Das Ziel ist die Überführung der Experience Marketing Features in die Commerce Welt:

  • Einheitliche Darstellung:  Produktkataloge, “normale” Inhalte und Bilder aus einem Guss
  • Bearbeitung von Produktkatalogen, Seiteninhalten und Bildern in einen System
  • Nutzung der Sitecore Facettensuche über ALLE Inhalte.
  • Personalisierung auch über das Kaufverhalten der Besucher
  • Tracking von Conversions und Values rund um den Einkauf
  • Identifizierung von und Einblick in die wertvollsten Kunden
  • Reaktion auf Änderungen im Geschäft, in Echtzeit

Konkreter Umfang des Commerce Connect Moduls

Das Sitecore Modul bietet die Möglichkeit Produktkataloge mit dem externen Commerce System zu synchronisieren, d.h. es stellt entsprechende Templates, Klassen, Repositories, Import-Pipelines etc. zur Verfügung:

Sitecore-Commerce-Connect-Modul

Erste Engagement-Pläne zu Warenkorb-Abbrüchen, neuen Aufträgen und Wiederverfügbarkeit von Produktbeständen werden mitgeliefert und genutzt:

Sitecore-Commerce-Connect-Engagement-Plan

Selbstverständlich kommen auch Erweiterungen für die Sitecore Rule Engine mit:

Sitecore-Commerce-Connect-Rule-Engine

Das Framework des Sitecore Commerce Connect 

Die Architektur wird von Sitecore wie folgt skizziert, wobei der Commerce Server Connector und der Dynamics AX Connector fertige Connectoren von Sitecore selbst sind und der Hybris Connector von uns im Rahmen der Evaluierung entwickelt wurde.

Service Layer:

Folgende Bereiche deckt das Modul ab:

  • Warenkorb
  • Preise
  • Kunden und Benutzer
  • Bestände
  • Produkte
  • Aufträge
  • Geschenkkarten
  • Wunschlisten
  • Bezahlung
  • Versand
  • Treueprogramme

Die einzelnen Layer sind optional und unabhängig voneinander. Ein Layer umfasst ein Datenmodell und Pipelines mit ggf. zugehörigen Service Providern. Die farblich markierten Service Layer wurden im Rahmen des PoC näher beleuchtet. Wenn ihr einen Eindruck haben möchtet was sich dahinter verbirgt, habt etwas Geduld – die zugehörigen Artikel folgen.

Prinzipien

Weil sie mir so gut gefallen haben, hier eine kurze Zusammenfassung und Übersetzung der Prinzipien welche dem Modul von Sitecore selbst auferlegt wurden:

  • Simplicity – kleinster gemeinsamer Nenner
  • Extensibility – Domain Model erweiterbar
  • Independently – keine Abhängigkeit zwischen Service Layern
  • Abstraction – keine Sitecore oder Shopsystem Abhängigkeit in Service Layern
  • Pipelines – jeder Service Layer benutzt Sitecore Pipelines
  • Fallback – fehlende Implementierungen im Shopsystem können überbrückt werden

Erstes Resumé

Mein Eindruck nach der Evaluierung des Commerce Connect anhand einer Hybris-Anbindung:

  • Der erste Einstieg ist herausfordernd, kurz stand ich davor wie “der Ochs vorm Berg”. Auf dem Partnertag in Frankfurt wurde von Sitecore eine Schulung zu dem Modul angekündigt. Die kann ich dann nur empfehlen.
  • Das bringt mich zu den zur Verfügung stehenden Materialien:
    • Es gibt umfangreiche Dokumentationen über das Modul im Developer Netzwerk.
    • Cookbooks gibt es leider keine, diese helfen sonst häufig die erste Hürde zu nehmen.
    • Wenn die Dokumentation nicht weiter hilft, gibt es im Internet aktuell leider noch wenig Material zum Commerce Connect.
    • Geholfen haben immer wieder die herunterladbaren Beispiel-Implementierungen für AX und CommerceServer und natürlich dotPeek.
  • Customizing gehört zum Grundkonzept. Durch eine gute Abstraktion ist fast alles flexibel anpassbar. Das gefällt, auch wenn es manchmal nicht einfach ist, im Pipeline-Dschungel den Überblick zu bewahren.
  • Für eine solide und benutzerfreundliche Integration ist eCommerce-KnowHow unumgänglich. Die dahinterliegenden Modelle und Prozesse müssen durchdrungen werden.
  • Die Komplexität einer Commerce Integration bringt auch höhere Konzeptions- und Abstimmungsaufwände mit sich als vielleicht sonst im CMS-Umfeld üblich.
  • Das Modul umfasst keine Layout-Komponenten und keine speziellen Applikationen.
  • Der “Merchandising Manager” ist  NICHT Bestandteil des Commerce Connect, sondern des CommerceServer Connect.
  • Eine gute Einsatzmöglichkeit für das Modul ist m.E. eine PIM-Integration.
  • Zu guter Letzt: Die Arbeit mit dem Modul hat mir Spaß gemacht!

Die Präsentation zum Vortrag:

In den kommenden Tagen werde ich diese Serie mit den folgenden Artikeln fortführen:

 

 

Sitecore Usergroup Deutschland: Ein Rückblick auf das Treffen in Bielefeld

Christopher Wojiciech Agentur netzkern

Vor kurzem waren wir Ausrichter des 3. Sitecore Usergroup (SUG) Deutschland Treffens in Bielefeld. Rund 30 Entwickler, Anwender und Projektmanager aus Sitecore-Agenturen und Unternehmen, die ihre Website auf Sitecore-Basis betreiben, konnten wir im Vortragssaal des Historischen Museums Bielefeld begrüßen. Die meisten waren “Wiederholungstäter” und schon bei einem der beiden ersten Treffen dabei gewesen, aber es gab auch einige neue Gesichter.

SUG Deutschland Treffen in Bielefeld

 

Nach einem ersten Kennenlernen und Small Talk bei Brötchen und Kaffee haben als offizielle Vertreter der Sitecore Usergroup Deutschland unser Account Manager Johannes Tappmeier und Christopher Wojciech von der Agentur netzkern das Treffen eröffnet. Danach starteten die Fachvorträge.

Evaluierung einer Anbindung von Hybris an Sitecore mittels Commerce Connect

So lautete das erste Thema, über das unsere Sitecore-Expertin Friederike Heinze referierte. In ihrer dreiwöchigen Evaluierungsphase hat sie sich intensiv damit beschäftigt, einen fiktiven Hybris-Shop mit Sitecore Commerce Connect an die Sitecore Experience Platform anzubinden. Dabei wurden folgende Anforderungen umgesetzt:

  • Produkte synchronisieren
  • Preise darstellen
  • Artikel in den Warenkorb legen.

 

Präsentation Friederike bei dem SUG Deutschland Treffen in Bielefeld

 

Friederikes Fazit:

Die Entwicklung und Arbeit mit dem Sitecore Commerce Connect macht Spaß. Customizing gehört zum Grundkonzept des Moduls, dadurch ist alles ist flexibel anpassbar, das bringt aber natürlich auch Komplexität mit sich. Durch die nahtlose Integration des Shopsystems in Sitecore werden die umfangereichen Personalisierungs-Features mit in die eCommerce Welt genommen. Für eine gute Anbindung eines Shopsystems ist E-Commerce Knowhow unbedingt empfehlenswert und man sollte einen hohen Konzeptions- und Abstimmungssaufwand einplanen.

Die gesamte Präsentation können Sie hier nachlesen.

The good, the bad and the ugly modul

Der nächste Vortrag kam von Sitecore-Entwickler Maksym Ponomarenko von der Agentur netzkern und beschäftigte sich mit dem Thema “The good, the bad and the ugly modul”.

Präsentation Maksym Ponomarenko Agentur netzkern

 

Dabei ging es um Design- und Architektur-Spezifika bei der Entwicklung von Sitecore Modulen. Neu entwickelte Module sollten über eine durchdacht gestaltete, flexible Architektur verfügen, die zukünftige Weiterentwicklungen unterstützt. Die Präsentation beinhaltete einige Architektur Tricks und Tipps, sowie Best Practices bei der Modul-Entwicklung.

Weitere Entwicklung der Sitecore Usergroup Deutschland

Nach einer Kaffeepause berichtete Chris von netzkern über die angedachte Weiterentwicklung der Sitecore Usergroup Deutschland und stellte die geplante Vereinsgründung vor. Über die grob skizzierte Satzung wurde lebhaft diskutiert. Anvisiert wird, den Verein im Rahmen des nächsten SUG Treffens zu gründen.

Christopher Wojiciech Agentur netzkern

 

Erfahrungen mit Sitecore 8 und Möglichkeiten zur CRM-Anbindung

Zum Abschluss gab es zwei Kurzvorträge mit anschließender Diskussions- und Fragerunde.

Chris von netzkern gab den Teilnehmern Praxis-Einblicke in die Experience Management Features von Sitecore 8 mit Schwerpunkt auf die xDB und die Entwicklung und den API-Zugriff auf die jeweiligen Features. Diese führte zu intensiven Diskussionen über die noch bestehenden Bugs von Sitecore 8. U.a. waren sich die meisten Teilnehmer einig, dass das Arbeiten im Experience Editor momentan sehr langsam und zeitaufwändig ist.

Unserer Sitecore-Expertin Friederike stellte das Sitecore Modul “Dynamics CRM Campaign Integration” vor. Sie berichtete über mögliche Integrationslevel und über ihre Erfahrungen aus einem PoC mit MS Dynamics 2015. Näheres dazu werden Sie demnächst in einem eigenen Beitrag hier im Blog lesen können.

Ausklang mit Führung im Museum Wäschefabrik

Nach dem offiziellen Programm, das von allen Teilnehmern als sehr informativ und bereichernd empfunden wurde, stand eine interessante Führung durch das Museum Wäschefabrik auf dem Programm, dem einzigen im Originalzustand verbliebenen Bielefelder Zeitzeugnis von ehemals über 250 Wäschefabriken der Stadt im 20. Jahrhundert. Wir konnten uns glücklich schätzen, vom Vorsitzenden des Fördervereins des Museums selbst durch die Räume der damaligen Fabrik und des Wohnhauses der Unternehmer geführt zu werden. Er brachte uns die damalige Zeit mit zahlreichen spannenden Anekdoten und Details nahe, so dass es keine der rund 90 Minuten langweilig wurde.

Museum Wäschefabrik Bielefeld

Bei gutem Essen und anregenden Gesprächen haben die noch verbleibenden Teilnehmer die Veranstaltung im numa Restaurant ausklingen lassen.

Fazit

Die engagierten Teilnehmer sowohl von Agentur- wie auch Kunden-Seite mit ihrem unterschiedlichen Sitecore-Hintergrund und die interessanten Vorträge zu aktuellen Themen und Weiterentwicklungen haben das Treffen zu einer erfolgreichen Veranstaltung gemacht, aus der sicherlich jeder Teilnehmer etwas für seine Arbeit mitnehmen konnte.

Sie haben ebenfalls Interesse an Sitecore-Themen?

Wir freuen uns auf die Weiterentwicklung der Sitecore Usergroup Deutschland und viele weitere regelmäßige Treffen mit konstruktivem Austausch. Wenn auch Sie mit Sitecore arbeiten und Interesse an den kommenden SUG-Veranstaltungen haben, melden Sie sich gerne unter sugde@comspace.de. Dann schreiben wir Sie an, wenn das nächste Treffen in Planung ist.

Von Rasensprengern, steten Tropfen und Gartenschläuchen im Social Media Marketing

Summertime by Eric Sonstroem (CC BY 2.0)

Summertime by Eric Sonstroem (CC BY 2.0)

Qualität ist und bleibt für uns bei comspace immer einer der Hauptwerte im Online-Business. Doch im Einsatz von Content im Social-Media-Umfeld werden immer mehr Stimmen laut, dass Quantität wichtiger und wichtiger wird, um sich Aufmerksamkeit und Gehör zu verschaffen. Die Qualität der Inhalte darf selbstverständlich nicht leiden, doch sowohl die Anzahl der Inhalte, wie auch die Anzahl der Verbreitungs-Plattformen und -Häufigkeit spielt eine immer stärkere Rolle.

tl;dr: Qualitativ exzellente Beiträge sollten zukünftig mit hoher Frequenz, in verschiedenen Formen und Längen über mehr Kanälen verbreitet werden, um durchs Aufmerksamkeitsfenster der Zielgruppe zu flattern.

Bei comspace sprechen wir eine sehr spitze B2B-Zielgruppe an und gingen darum immer eher den Weg von qualitativ exzellenten und sehr spezifisch auf die Zielgruppe abgestimmten Inhalten.
Seit einigen Monaten stellen wir jedoch fest, dass wir mit Inhalten, die weniger zielgruppenspezifisch sind, deutlich mehr Menschen erreichen, als (nur) mit den auf unser Alltagsgeschäft abgestimmten Inhalten.

Ein Beispiel:
Die Themen Human Relations und Unternehmenskultur finden in unseren Kanäle derzeit deutlich mehr statt als Web-Technologie und Content Management Systeme. Warum? Weil wir zu diesen Themen momentan mehr Geschichten erzählen können und das über sämtliche Kanäle hinweg: Von Presse, Mail-Newsletter, persönliche Kontakte, hin zu Blog und Social Media. Auch wenn es sich bei den Themen nicht um unsere wertschöpfenden Kernkompetenzen handelt, hört man uns da draußen zu, nimmt uns wahr und es entwickeln sich wertvolle Kontakte, die dann plötzlich auch wieder für das Kerngeschäft interessant werden.

Durch einen Vortrag von Jay Bear, wurde mir das Potenzial, das in unseren eigenen Erfahrungen steckt plötzlich klar, als Jay den Vergleich zwischen Schrotflinte und Scharfschützengewehr zieht und zum Schluss kommt, dass wir zukünftig deutlich mehr auf Schrotflinten zurückgreifen sollten.

Im reinen B2B-Kosmos mag die Problematik noch nicht so ernst sein, doch im Endkunden-Umfeld, in dem sich einige unserer Kunden bewegen, wird es schwerer und schwerer, sich in den unzähligen Social Media Meldungen pro Tag hervorzuheben und die Aufmerksamkeit der Kunden zu wecken.

Digitale Strategien müssen her.

Dazu möchte ich Jays eher amerikanisch-pragmatische Metapher umdeuten. Ziehen wir doch passend zum überraschend guten Sommerwetter den Vergleich zwischen Rasensprenger und Gartenschlauch:

Erreichen statt Reichweite

Jahrelang haben wir in Social Media auf die Reichweite geschaut. An wie viele Follower, Fans, Besucher kann ich Nachrichten aussenden? Dabei haben wir uns wenig Gedanken darüber gemacht, was denn tatsächlich bei den Empfängern ankommt. Social Media war ein Selbstläufer. Die Inhalte wurden besser und besser. Corporate Publishing und Content Marketing haben eine ganz neue Qualität erreicht. (Dabei ist das Thema nicht neu, hier erklärte ich u.a. dass Content Marketing durch Dr.Oetker in Bielefeld bereits 1891 zum Einsatz kam).

Super Inhalte in einem spezifischen Kanal sind wie ein Gartenschlauch mit hohem Druck, mit dem sich Wasser schnell und gezielt an einen bestimten Punkt im Garten transportieren lässt. Doch wenn Sie diesen Wasserstrahl zu lange auf eine Stelle halten, zerstören Sie erstens die Pflanzen und spülen den Boden fort und zweitens bekommen Pflanzen in der breiten Fläche nicht genug Wasser.

Die Darstellung und Durchdringung von Inhalten in Social Media Kanälen wandelt sich immer stärker. Denn Facebook, Google, Twitter, YouTube usw. wollen Geld verdienen. Damit wird es immer schwieriger, die Kunden zu erreichen, ohne mit gezielten Kampagnen (und Budgets) Inhalte in den Fokus der Zielgruppen zu pushen.

Menschen zu erreichen wird immer schwerer. Denn mit der ständig steigenden Reichweite von Social Media Kanälen wurde auch die Konkurrenz innerhalb der Kanäle immer größer. Wir ringen um die Aufmerksamkeit unserer Zielgruppen.

Aufmerksamkeit erregen bei Menschen, die sich für unsere Inhalte interessieren

Natürlich wollen wir exzellente Inhalte anbieten. Das ist die Pflicht – 10 historische Beispiele für Content Marketing habe ich Ihnen hier zusammen gestellt. Doch damit dieser aufwändig produzierte Content einen Effekt erzielt,  muss er erst einmal in den Fokus der Zielgruppe kommen. Das ist dann die Kür. Ein durchschnittlicher Facebook-User hatte bereits im Jahr 2013 ungefähr 1500 Meldungen! pro Login in seiner Timeline.

Wenn wir die Aufmerksamkeit unserer Zielgruppen als auf großer Fläche, eng gesetzte Pflänzchen betrachten, dann wird uns schnell klar, dass hier ein starker Wasserstrahl aus dem oben erwähnten Gartenschlauch ineffektiv und Ressourcenverschwendung ist.

Übrigens ist die durch die schwer zu erreichende Aufmerksamkeit und breite Streuung der Zielgruppen die Gefahr des Langweilens oder Überfrachtens meiner Meinung nach relativ gering.

Garden-Sprinkler by Thangaraj Kumaravel (CC BY 2.0)
Garden-Sprinkler by Thangaraj Kumaravel (CC BY 2.0)

Quantität meets Qualität

Das revolutionäre an Social Media war das Wahrwerden von Brechts RadiotheorieJeder kann Sender sein. Unternehmen treten in Dialog mit Kunden und aus der typischen eins zu vielen Einbahnstraßenkommunikation wurde eine Viele-zu-viele-Kommunikation.

Insbesondere für exzellente Inhalte ist es tragisch, wenn sie zwischen all den konkurrierenden Inhalten untergehen. Schließlich stehen sie mit Ihren Inhalten im direkten Wettbewerb zu Klatsch und Tratsch, Nachrichten, Sport, andere Unternehmen, Ihre Wettbewerber, Kollegen, Freunde und Familie Ihrer Kunden.

Mindestens genauso wichtig wie hohe Qualität – wenn nicht gar wichtiger – ist es also, regelmäßig Aufmerksamkeit für die hohe Qualität zu erreichen. Dazu bedarf es aber deutlich kleineren Content-Häppchen, die zueinander passen und in zahlreichen verschiedenen Kanälen gespielt werden und auf ein strategisches Ziel einzahlen.

Merken Sie was? Hier kommt der Rasensprenger zum Einsatz. Der dauerhaft kleine Mengen Wasser durch seine vielen Kanäle über eine große Fläche mit Pflänzchen verteilt.

Das Telefonbuch wird wichtiger als die Freundeliste auf Facebook

Haben Sie noch das Gefühl, die Kontrolle darüber zu behalten, was Sie in Ihrer Facebook-Timeline sehen? Oder in Ihrem Twitter-Feed? Oder in den Suchergebnissen bei Google? Selbst im E-Mail-Postfach wird es schon schwierig die Trennlinie zwischen den gewünschten und angeforderten und den ungefragten Informationen zu unterscheiden.

Das ist der Grund, warum immer weniger junge Digital Natives auf Facebook oder Twitter aktiv sind. Viele wollen gar keine brechtschen Sender sein und große Reichweite aufbauen. Besonders junge Menschen wollen sich einfach nur mit Ihren Freunden und Bekannten austauschen. Über sichere, exklusive Verbindungen. Und dort kann man nicht einfach so reinplatzen, sondern hier höhlt steter Tropfen den sprichwörtlichen Stein.

Das persönliche Adressbuch der Nutzer ist dabei der Gartenzaun, der die echten Kontakte schützt. Wir kennen das alle: Twitter, Facebook, XING, LinkedIn: Überall haben wir verschiedenste Verbindungen zu anderen Menschen. Verbindungen, die Mark Granovetter in seinem über 40 Jahre alten Essay Weak Ties (hier als PDF-Dokument) nannte. Die strong ties – also starken Verbindungen – finden sich digital am ehesten in den persönlichen Telefonbüchern auf Smartphone oder Computer.

Grass and sidewalk - Blake Burkhart - (CC BY 2.0)
Grass and sidewalkBlake Burkhart – (CC BY 2.0)

Kanäle gezielt miteinander verbinden

Schauen wir noch einmal auf unser Beispiel der Gartenbewässerung: Das Wurzelwerk unserer Pflanzen stellen ein ebenso engmaschiges Netzwerk dar, wie unsere Kommunikationskanäle. Und sie beeinflussen sich gegenseitig.

Ein Tweet kann zu einem Bild auf Instagram führen, das wiederum auf Facebook geteilt wird, gemeinsam mit einem Verweis auf  eine Landingpage, die das eigentliche Produkt anteasert. Dort findet der Nutzer wiederum ein YouTube-Video des Produkts usw.

Doch auch verschiedene Unternehmens-Kanäle können gezielt mit einander verbunden werden und sich gegenseitig unterstützen. Die Karriere-Kanäle verweisen auf Produkt-Kanäle und umgekehrt. Internationale Tochtergesellschaften greifen gegenseitige Themen auf und sorgen dadurch für Social Signals, die wiederum Interaktionen, Sichtbarkeit und Reichweite erzeugen.

Was bedeutet das nun alles?

Sie fragen sich jetzt sicher, was Sie mit diesen Informationen für Ihr Unternehmen anfangen sollen? Mit Recht.

Letzten Endes bedeutet ein breiterer Einsatz von feiner strukturierten Inhalten natürlich immer eins: Mehr Arbeit.

Dem lässt sich auf unterschiedliche Weise begegnen: Sie können sich Verstärkung holen und Teams vergrößern. Sie können externe Unterstützung beauftragen um Sie bei der operativen Arbeit zu entlasten. Und sinnvoller Weise strategische Prozesse entwickeln, mit denen die Arbeit automatisierbar oder zumindest einfacher ausführbar wird.

So können Sie vorgehen:

  • Content Audit durchführen
  • Inhalte feiner aufteilen
  • Mehr Kanäle noch gezielter bespielen
  • Ähnliche Aussagen häufiger wieder aufgreifen
  • Technische Lösungen zur automatischen Verbreitung und Auswertung einsetzen

Auch steter, kleiner Tropfen aus dem Rasensprenger höhlt den Stein – beziehungsweise: Lässt die Social Media Landschaft wachsen und aufblühen 😉

Derzeit ist die Qualität in Social Media so hoch, dass ein Herausstechen und Aufmerksamkeit erregen durchaus über Quantität möglich ist.

Watering-201410-02 by eosdude (CC BY-SA 2.0)
Watering-201410-02 by eosdude (CC BY-SA 2.0)

Und wenn das alle machen?

Auch das ist eine berechtigte Frage. Lassen Sie es mich abschließend so sagen:
Natürlich steigt das Grundrauschen durch ein mehr an (qualitativ hochwertigen) Einzelmeldungen auf noch mehr Kanälen deutlich an. Solange dadurch eine messbar höhere Aufmerksamkeit erreicht werden kann und durch Mehrfachverwertung bereits bestehender Inhalte der Aufwand gering bleibt, ist es eine Methode, die in Betracht gezogen werden sollte.

Spätestens wenn ein kritisches Maß an Grundrauschen von hoher Qualität erreicht ist, wird vermutlich wieder die Qualität eine Stellschraube sein, mit der wir ein Alleinstellungsmerkmal erzielen können.

Dann kommt auch wieder der Gartenschlauch zum Einsatz 😉

Übrigens gibt es ja auch noch die gute, alte Gießkanne, ganz ohne Automatisierung. Aber das ist nochmal ein ganz anderes Thema.

* Artikelbild Summertime by Eric Sonstroem (CC BY 2.0)

8 Tipps für eine entspannte Urlaubsvorbereitung und den Wiedereinstieg ins Arbeiten

Urlaubsvorbereitung-Schreibtisch

Damit die Erholung nach dem Urlaub nicht gleich nach 2 Stunden wieder verpufft, gibt es einige Tricks um bereits vorm ersten Urlaubstag vor zu sorgen. Passend zum Beginn der Urlaubszeit haben wir hier einige davon zusammen gestellt:

Informieren Sie Kunden und Kollegen

Zwei Wochen vor Urlaubsantritt ist eine gute Zeit um vor allem diejenigen zu informieren, dass Sie bald einige Zeit nicht erreichbar sein werden, die möglicherweise noch offene Punkte zu klären haben.

Beginnen Sie den Urlaub einen Tag früher

Allen Menschen, mit denen Sie nicht direkt zusammen arbeiten sagen Sie, dass Ihr Urlaub bereits einen Tag früher beginnt. So schaffen Sie sich einen kleinen Sicherheitspuffer für diejenigen, die immer auf den letzten Drücker kommen. Nichts ist fehleranfälliger, als eine hektisch erledigte Aufgabe, die kurz vor knapp noch auf den Tisch kommt.

ToDo-Liste anlegen bzw. aufräumen

Zwei Wochen vor dem Start in den Urlaub ist ebenfalls der passende Zeitpunkt, um die noch offenen Aufgaben zu sammeln und zu kategorisieren:

  • Was muss dringend noch vorm Urlaub erledigt werden?
  • Welche wichtigen Aufgaben können an die Vertretung delegiert werden
  • Welche unangenehmen Tasks können Sie noch direkt vor den Ferien erledigen?
  • Welche angenehmen Aufgaben können für nach dem Urlaub aufgespart werden? (siehe Abschnitt: “bergab parken”)

Vertretung / Übergabe

Haben Sie alle notwendigen Informationen für Ihre Vertretung(en) zusammen gestellt? Führen Sie die Übergabe in einem persönlichen Gespräch statt in einer E-Mail durch. Nur so ist gewährleistet, dass mögliche offenen Fragen direkt geklärt werden können.

  • Kontaktdaten von wichtigen Kollegen, Dienstleistern, Kunden
  • Termine
  • Checklisten für Routineaufgaben
  • Kurzinfos zu laufenden Projekten
  • Links zu wichtigen Dokumenten, Webseiten und Ordnern

“Bergab Parken”

Dieser Artikel im Harvard Business Review sprcht vom Bergab-Parken, damit Sie Ihre Arbeit nach den Ferien gleich mit richtig Schwung und Spaß wieder aufnehmen können. Das Prinzip ist einfach und effektiv:

Sie hinterlassen sich selbst eine positive Notiz mit dem nächsten logischen Schritt je Projekt, wo Sie am ersten Arbeitstag wieder in Ihre Aufgaben einsteigen wollen. Der psychologische Trick dahinter ist, dass es leichter fällt, in einen laufenden Prozess wieder einzusteigen, als den Tag auf der grünen Wiese anzufangen. Hierfür eignen sich insbesondere die Aufgaben, die Sie besonders gerne erledigen, um nach dem Urlaub gleich wieder Spaß an der Arbeit zu haben.

Mir ist die Methode zum ersten Mal im Zusammenhang mit Ernest Hemingway über den Weg gelaufen, der seine schriftstellerische Arbeit immer dann für den Tag beendet hat, wenn ihm hundert Pprozentig klar war, wie es im nächsten Satz weiter gehen würde. Der Blogger und Autor Shawn Blanc beschreibt das Prinzip in seinem Artikel The Note im Detail. Die Arbeit Bergab parken funktioniert also auch jeden Feierabend und nicht nur vorm Urlaub 😉

Der Kalender

Setzen Sie Erinnerungen in den Kalender für die wichtigsten Todos in der ersten Woche nach dem Urlaub., So befreien Sie sich vom unguten Gefühl etwas vergessen zu haben.

Blocken Sie sich vorher bereits einige größere Zeitblöcke nach Ihrer Rückkehr zum wieder einarbeiten. Warum? Damit Ihnen nicht gleich an den ersten zwei Tagen nach dem Urlaub Termine in den Kalender gesetzt werden.

Die Abwesenheitsmeldung

Bleiben Sie professionell und höflich. Wer Ihnen in Ihrer Abwesenheit eine Mail schickt möchte nicht unbedingt wissen, an welchem Pool Sie gerade liegen, sondern vermutlich ein Problem gelöst bekommen. Weisen Sie in Ihrer Abwesenheitsnotiz also ruhig auf Lösungsquellen hin – bsw. auf der Unternehmenswebseite, im Unternehmensblog oder einer FAQ-Section.

Führen Sie auf, wer in dringenden Fällen ansprechbar ist – inkl. Durchwahl und Mail-Adresse. Leiten Sie eingehende Mails aber nicht automatisch weiter und weisen Sie darauf auch in Ihrer Abwesenheitsmeldung hin. So vermeiden Sie Mißverständnisse.

Es ist auch durchaus möglich, die Absender darum zu bitten ihre Mail nach Ihrer Rückkehr noch einmal zu senden. Dieser kleine psychologischen Trick hilft ein Stück weit, allzu hartnäckige Mail-Absender davon abzuhalten, tägliche Todos zu verteilen und damit die unbeaufsichtigte Mailbox unnötig zu füllen.

Setzen Sie in Ihrer Abwesenheitsmeldung ein Datum 2 Tage nach Ihrer Rückkehr und einen Tag vor Ihrem Urlaubsbeginn ein, um Ihnen genug Zeit geben, sich in den ersten zwei Tagen durch die bisher angefallenen Mails zu arbeiten.

Social Media Kanäle

Ein kurzer Hinweis in den regelmäßig genutzten Social Kanälen beugt etwaigen Vermissenmeldungen vor, wenn plötzlich einige Wochen kein Tweet oder Instagram-Foto von Ihnen kommen sollte 😉

Alternativ lassen sich natürlich einige Einträge vorbereiten und automatisch veröffentlichen.

ABER: Wenn Sie die einzige Person sind, die ggf. auf Reaktionen über Social Web Kanäle reagieren kann, raten wir ausdrücklich davon ab, einen Kanal per Autopilot mit Inhalten zu füttern.

Genießen Sie Ihren Urlaub und erholen Sie sich gut!

Je entspannter Urlaubsbeginn und -Ende ablaufen, desto mehr haben sich die Ferien gelohnt. In diesem Sinne:

Schönen Urlaub!

 

Weitere Tips finden Sie hier:

Harvard Business Review

Urlaubs-Checkliste Karrierebibel

 

 

Tips vom Steuerausblick Blog http://www.steuerausblick.de/wordpress/?p=2071