Sitecore OrderCloud – Einstieg in die Commerce-Plattform

In den letzten Wochen hatte ich endlich die Gelegenheit mir die neue eCommerce-Plattform von Sitecore näher anzusehen – Sitecore OrderCloud aka. Four51 Ordercloud. Four51 wurde bereits 1999 gegründet und erst letztes Jahr im Frühjahr von Sitecore übernommen

Mit diesem Blogartikel möchte ich allen, die noch nicht die Zeit dafür gefunden haben, sich das neue Produkt im Sitecore Universum anzusehen, einen ersten Überblick verschaffen. 

Sitecore selbst platziert OrderCloud als Enterprise-Lösung für eCommerce und Auftragsmanagement, flexibel anpassbar auf das jeweilige Geschäftsmodell, ob B2B, B2C, B2X oder als Marktplatz-Lösung.

Was bedeutet Enterprise für Sitecore OrderCloud?

In den Vordergrund stellt Sitecore diesbezüglich die moderne MACH-Architektur (Microservices-based, API-first, Cloud-native and Headless): 

Sitecore OrderCloud - MACH-Architectur
Schaubild Headless OrderCloud Architektur

Cloud Hosted

OrderCloud ist eine native SaaS-Lösung d.h. Monitoring, Backup, Geo-Redundanz, Scaling, Updates etc. werden von Sitecore selbst übernommen. Sitecore setzt dafür auf Microsoft Azure und gewährleistet damit insgesamt eine sehr hohe Verfügbarkeit. 

API-First

OrderCloud agiert definitiv API-First, ich würde sogar fast sagen: OrderCloud ist API-Only. Obwohl es zumindest das OrderCloud-Portal als Administrationsoberfläche für Entwickler zur Konfiguration der Marktplätze und zum Aufruf der RESTful API über die API-Konsole gibt:

Sitecore OrderCloud - API Console
OrderCloud API Console

Und nicht nur die Daten werden über APIs verwaltet, sondern auch die Konfigurationen und Skripte, um verschiedene Umgebungen zu verwalten (Stichwort Infrastructure as a Service).

Headless

OrderCloud bringt keine Frontend-Applikation mit, auch keine für Shop-Redakteure zur Verwaltung von Kunden, Kataloge, Produkten, etc. OrderCloud selbst stellt lediglich eine sog. Headstart Solution als GitHub-Repository zur Verfügung, auf dessen Basis die Implementierung eines neuen eCommerce-Projektes gestartet werden kann, das ist aber nicht Bestandteil des Produktes. 

B2C, B2B, B2X – ja was denn nun?

Wenn man sich so durch die Dokumentationen von OrderCloud arbeitet, dann wird offensichtlich, dass OrderCloud B2B-First entwickelt wurde. Aber durch die insgesamt eher generischen und anpassbaren Konzepte und auch die Erweiterbarkeit der OrderCloud kann OrderCloud problemlos für unterschiedliche Geschäftsmodelle bzw. unterschiedliche Organisationsstrukturen zum Einsatz kommen. Ein Beispiel:

Quelle (orange Ergänzung stammt von mir): https://ordercloud.io/images/discover/792_oc_define_marketplace-5.png

Das Mantra der OrderCloud-Roadmap lautet “Feature over Flexibility” und das spürt man:

Die zentralen Bausteine

Organization & User

Ob Verkäufer (Seller), Lieferant (Supplier) oder Käufer (Buyer) – in OrderCloud handelt es sich erstmal immer um eine Organisation mit Adressen; für Privatkunden würde eine zentrale Platzhalter-Organization angelegt werden. Der Verkäufer ist insofern etwas Besonderes, als dass es sich hier um den zentralen Shop-Betreiber handelt, dem mehrere Käufer- und optional Verkäufer-Organisationen zugeordnet werden können. Seit letztem Jahr können auch direkte Beziehungen zwischen Lieferanten und Käufern modelliert werden, im Sinne einer Marktplatz-Lösung – damit einhergehend wurde aus dem Seller ein Marketplace Owner

Benutzer und Benutzergruppen sind ein wichtiger Bestandteil der Organisationskonfiguration, denn sie geben über Zuordnung und Vererbung eine granulare Möglichkeit, die Sichtbarkeit von Katalogen, Kategorien, Adressen etc. zu konfigurieren (mittels Assignments), aber auch Berechtigungen zu vergeben (mittels Security Profiles), angepasst auf die Strategie und Struktur im jeweiligen Projekt.

OrderCloud-Platform Overview - Vivaldi
Quelle: https://ordercloud.io/learn/ordercloud-basics/building-blocks

Products & Catalogs

Ein Produkt in OrderCloud hält Out-of-the-box im Wesentlichen beschreibende Informationen, den Lagerbestand und Informationen rund um den Versand (Gewicht und Abmessung) vor. Aber es kann wie alle Entitäten in OrderCloud einfach mittels sog. Extended Properties (siehe unten) projektspezifisch erweitert werden.

Produktvarianten wie Farben und Größen werden über dem Produkt zugeordnete Product Specs bzw. daraus generierte Product Variants abgebildet. Das Konzept wird, denke ich, an einem Beispiel klarer:

  • Wenn folgende Specs und ihre Spec Options konfiguriert wurden:
    • Farbe: grün, gelb, blau
    • Größe: S, M
  • Dann werden daraus 6 Product Variants kombiniert: “grün, S”, “grün, M”, “gelb, S”, ”gelb, M”, “blau, S”, “blau, M”

Auch Produkt-Customizing wie z. B. die Beschriftung von T-Shirts würde über Product Specs abgebildet, bei Interesse schaut euch mal hier in der KnowledgeBase um.

Die Sichtbarkeit von Produkten für Käufer wird in OrderCloud durch die Zuordnung von Produkten und Käufern zu Katalogen gesteuert. Im Detail gibt es noch weitere Stellschrauben, schaut bei Interesse gern hier in der Doku von OrderCloud nach.

Kategorien sind optional und dienen vor allem der Strukturierung von Katalogen bzw. Gruppierung von Produkten. 

Sitecore OrderCloud - Catalog & Pricing

Ein Katalog in OrderCloud hat aber keinen Einfluss auf den Preis für einen Käufer. Preise in OrderCloud können über folgende Konzepte abgebildet werden:

  • Price Schedule: Am Price Schedule wird der Preis (genau: Preis X ab Menge Y) eines Produktes festgelegt. Die Zuordnung erfolgt entweder direkt am Produkt als Standardpreis oder über ein sog. Product Assignments vom Produkt auf einen Käufer, bei Bedarf sogar auf eine Benutzergruppe bzw. einen Benutzer eines Käufers. Das macht mir einen granularen aber auch sehr flexiblen Eindruck, den es dann im echten Projekt zu beweisen gilt.
  • Spec Markup: Je Spec Option können Preisaufschläge vergeben werden: Prozentual, Fixbetrag pro Stück, fixer Betrag. Das ermöglicht es beispielsweise dass das rote T-Shirt  mehr kostet als das schwarze

Order Management

Die Order ist ein zentrales Konzept im OrderCloud. Es gibt keinen klassischen Warenkorb bzw. keine Cart, dieser wird von Anfang an als Bestellung im Status “Unsubmitted” abgebildet. 

Exkurs: Order Status

  • Unsubmitted: Initialer Status einer Bestellung, die noch nicht aufgeben wurde.
  • Open: Die Bestellung wurde aufgeben (der Checkout war erfolgreich).
  • Awaiting Approval: Die Bestellung muss manuell überprüft werden (siehe unten).
  • Declined: Die Bestellung wurde abgelehnt.
  • Completed: Submitted and all the line items on the order have been shipped
  • Canceled: Nach Ablauf einer konfigurierbaren Frist, wenn die Bestellung nie submitted wurde

Auch Bestellungen des Verkäufers beim Lieferanten werden als Order abgewickelt. Ob es sich um eine Lieferanten- oder Käufer-Bestellung handelt, wird nur von der sog. Order DirectionIncome oder Outcome – abhängig gemacht.

Checkout

  • Steuern: OrderCloud selbst bringt keine Steuerberechnung mit, da diese regional doch sehr unterschiedlich und komplex ist, bietet aber Integrationsmöglichkeiten zur Anbindung entsprechender Dienstleister.
  • Promotions: Promotions können basierend auf der Rule Engine konfiguriert werden. Das bietet eine mächtige und flexible Möglichkeit, Rabatte auf die gesamte Bestellung oder einzelne Posten im Checkout zu geben, z. B. 
    • Keine Versandkosten bei einer Bestellwert über 50 EUR
    • 10 % Rabatt ab einer Bestellmenge von 10 Artikeln
  • Bezahlung: In OrderCloud werden zwar die Zahlarten und Beträge festgehalten, die Abwicklung, also die Anbindung eines Zahlungsproviders, ist aber nicht Bestandteil des Produktes und erfolgt erst im Projekt.
  • Versand: Hier gilt das Gleiche, die Versandaufträge werden festgehalten, es werden auch Funktionen angeboten um beispielsweise die Bestellung nach Lieferanten zu splitten, aber die Anbindung eines Versanddienstleisters ist nicht Bestandteil des Produktes. 

Freigabe-Workflow

Für den Fall, dass Bestellungen im Anschluss an den Checkout noch (nach bestimmten Regeln) manuell überprüft und freigegeben werden sollen, gibt es in OrderCloud die Approval Rules. Das heißt, es wird eine Bedingung mit Hilfe der Rule Engine konfiguriert und eine Benutzergruppe hinterlegt, die dann für die Überprüfung zuständig ist.

SDKs

Last but not least möchte ich hier auch noch die von Sitecore zur Verfügung gestellten Bibliotheken erwähnen. Denn wir müssen zukünftig natürlich nicht alle Zugriffe auf die OrderCloud API selbst implementieren.

  1. Es existiert ein JavaScript SDK welches sowohl TypeScript- als auch JavaScript-Entwicklung mit einem UI-Frameworks eurer Wahl ermöglicht. Die Headstart-Projekte basieren auf AngularJS, aber es gibt auch Beispiel-Implementierungen mit Next.js
  2. Es gibt ein NET SDK zur Entwicklung mit C# oder einer anderen .NET-Sprache. 
  3. Außerdem gibt es noch die .NET Catalyst Middleware, eine Bibliothek zur Implementierung einer OrderCloud Middleware für Plugins und Erweiterungen mit .NET. Diese enthält Funktionen zur Authentifizierung, Caching, Bulk-Requests, Fehlerbehandlung, etc.

Gut finde ich, dass diese Bibliotheken aktuell alle unter der MIT-Lizenz sind. Ihr könnt sie hier im Developer Portal von OrderCloud finden.

Projektspezifische Erweiterbarkeit

Neben der flexiblen Konfigurierbarkeit, liegt OrderCloud natürlich auch die Erweiterbarkeit am Herzen:

Extended Properties (XP)

Über die sog. Extended Properties können alle Entitäten in OrderCloud flexibel erweitert werden. Konkret heißt das, unterhalb der Property “xp”  können beliebige projektspezifische Attribute definiert werden – und das Beste ist, auch nach diesen Attributen kann explizit gesucht und gefiltert werden. In folgendem Beispiel wurde beispielsweise das Produkt um ein Attribut “is_new” ergänzt:

{
	"DefaultPriceScheduleID": "BAG1_PRICE",
	"ID": "BAG4",
	"Name": "A product with same colors.",
	"Description": "A very long description for a product with same colors.",
…
	"xp": {
		"is_new": true
}
}

Webhooks

Wir können in OrderCloud für alle schreibenden API-Aufrufe/ HTTP-Requests (z. B. Produkt in den Warenkorb gelegt, Bestellung submitted) WebHooks konfigurieren und dann in unserer Projektlösung nutzen. Diesen Weg würde man z. B. auch für die automatische Synchronisation von neuen Produkten, Bestellungen etc. in ein Drittsystem nutzen.

Integration Events

Hierbei handelt es sich um dedizierte Plugin-Points, um in den Checkout-Prozess einzugreifen. Man kann eigene Integration Events implementieren und in OrderCloud konfigurieren, es gibt aber auch vordefinierte Events:

  • Select a ship method
  • Estimate Shipping
  • Order Calculate (enthält Steuerberechnung)

Hier bin ich selbst noch nicht tiefer eingestiegen, empfehle aber für den Einstieg folgenden Artikel der Knowledge Base.

Sicherheit & Datenschutz

Die Sicherheit der Daten spielt im Enterprise-Umfeld natürlich eine große Rolle, Sitecore sichert diesbezüglich folgendes zu:

  • GDPR-Konformität 
  • Unterstützung des PCI Data Security Standards – ein Regelwerk zum Umgang mit Kreditkartentransaktionen
  • Jährliche Überprüfung nach SOC 2 Typ 2 – ein  Rahmenwerk um Dienstleister bzw. Serviceorganisationen zu prüfen

Aber Obacht: Letztlich müssen die kundenspezifischen Erweiterungen diese Kriterien auch noch berücksichtigen.

Einstieg in Order Cloud

Wenn ihr bis hierher durchgehalten habt, dann habt ihr schon ganz schön viel geschafft. Mein Vorschlag für die nächsten Schritte wäre:

  1. Macht mit dem Getting Started Tutorial eure ersten praktischen Gehversuche.
  2. Schaut euch anschließend die Headstart-Solutions an und verschafft euch selbst einen Eindruck. Für den schnellen pragmatischen Einstieg habe ich euch meine Forks auf Github zur Verfügung gestellt (Sinn und Zweck könnt ihr dort im Readme nachlesen):

Fazit: “We’re no longer a car; we’re an engine.” 

Dieses Zitat von Todd Menier, Senior Architekt bei OrderCloud, trifft es in meinen Augen eigentlich ganz gut. Mit Sitecore OrderCloud bekommen wir eine Plattform, auf dessen Basis  eCommerce-Projekte implementiert werden können. 

Mir gefallen grundsätzlich die Konzepte und die Ideen dahinter. Und Dank der MACH-Architektur kann der DevStack im Projekt frei gewählt werden, es gibt keine technischen Abhängigkeiten. Das ist insbesondere für die Integration in Bestandsprojekte interessant.

Aber dass es so gar keine Frontend-Applikation gibt, nichtmal eine Administrationsoberfläche, damit bin ich nicht ganz glücklich. Das macht die Arbeit im OrderCloud-Projekt doch recht umständlich und den initialen Projektaufwand sicherlich im Vergleich recht hoch. Inwieweit uns die Headstart-Lösung dabei hilft, bin ich mir noch sicher bzw. habe ich noch Bedenken.

Die Dokumentation ist noch im Aufbau, aber was ich wirklich lobend erwähnen muss: Der Support ist stark, weil sehr responsiv und hilfsbereit!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Dieses Formular speichert Deinen Namen, Deine E-Mail-Adresse sowie den Inhalt, damit wir die Kommentare auf unserer Seite auswerten und anzeigen können. Weitere Informationen findest Du in unserer Datenschutzerklärung.