Combining Microsoft Dynamics 365 for Retail with Sitecore Commerce 9 provides a seamless omnichannel experience, from brick-and-mortar point of sales systems to cloud e-commerce. Learn about the latest version of the connector for Sitecore Commerce 9 – including its features, architecture, performance, and scalability – from two developers who are responsible for one of the largest in-production e-commerce implementations in the world. We took everything we learned about prior generations of Microsoft D365's retail module and reworked the integration from the ground up for Sitecore Commerce 9. We’ll share the limitations and constraints of the old approach, describe the new connector in detail, and outline our vision for what’s next.
Microsoft D365 for Finance and Operations is the cloud-hosted version of Dynamics AX.
It is a separate product from Microsoft D365 for Sales, the cloud-hosted version of Dynamics CRM.
Avoid integration: Don't use 2 enterprise systems to do what 1 system can do. Only integrate if there's no other way to meet your business objectives.
Complex inventory: when you need information about inventory sources and origin of product.
Omnichannel commerce includes: Online, physical stores, call center, etc.
Omnichannel scenarios:
Buy online, pick up in store
Buy in call center, pick up in store
Buy in store A, pick up in store B
Buy in store A, ship to customer
… and order visibility online regardless of channel
While Sitecore Experience Commerce alone can meet the needs of the web channel -- and to a lesser extent print and email as well – D365 is required for brick-and-mortar experiences.
Sitecore manages the digital experiences of customers (web/mobile/app/email/print) while D365 handles in-store experiences (kiosk, PoS, and call center operations).
Sitecore XC handles 3 of 4 quadrants in this diagram. D365 handles the 4th.
Based on a diagram from an older Sitecore 8.1 presentation for SCpbMD, but it is still relevant.
Includes a "demo-ready" example covering a comprehensive set of typical B2C retail scenarios.
• Fully functional storefront integrated with D365 out of the box
• Includes catalog, cart, checkout, orders, address book, payments, profile, loyalty, store locator, wishlists
• Search fully integrated with faceted navigation built in
• Features promotional areas for carrousel, featured products, sale items, and more
• Supports buy online, pickup in store
• Fully responsive, mobile device ready
Unlike Sitecore XC, the D365 connector still uses the non-SXA version of the storefront.
Many of the Sitecore Business Tools have been disabled, apart from catalog. We expect customers to maintain orders, pricing, etc. in D365.
Analytics is fully instrumented in the D365 connector, exactly as it is in Sitecore XC
Requirement for Retail Server implementation (real-time cart operations)
Three channel types: retail (physical), online, call center
Channel databases are different from headquarters databases
Online channels use a combination of calls to the channel database and the headquarters database (for example, inventory calls)
Omnichannel scenarios are possible – when the order lifecycle can start online and then go through physical channel
The integration is based on Sitecore XC, Sitecore Commerce Connect and...
Sitecore powered by Microsoft Dynamics connector (a set of assemblies and configurations, responsible for interaction with the Retail Server for async catalog synchronization and transactional user interactions for order fulfillment)
Slide taken from:
https://docs.microsoft.com/en-us/dynamics365/unified-operations/retail/dev-itpro/retail-server-architecture
Product catalog data is imported into Sitecore as a batch process.
Catalog data is imported read-only, but it can be enhanced with additional Sitecore fields.
Can be used with one or more storefronts.
All other commerce operations are delegated to D365 Retail Server transactional APIs
Real-time operations:
Account Profile – leverages federated identity management
Basket (Shopping Cart) Tax, Shipment, Payment, Discounts
Inventory/Availability
Detailed Pricing
Orders
Wishlist
Gift Card
Loyalty Entities
Using the abstract service layers in Commerce Connect allows external commerce systems to plug into Sitecore XP in well-defined ways.
This also enables us to gather analytics data in Sitecore, regardless of the external commerce system used.
A copy of the product catalog is staged in the Sitecore Commerce database.
The sync tool (a standalone executable) will fetch the catalog using the D365 Retail Server APIs.
The sync tool handles the Extract and Transform parts of “ETL”. We’ll discuss Load on the next slide.
Remember that the latest catalog must be published and distributed from the D365 HQ database to the online channel database.
A look into the import process.
We created a plugin for the Commerce Authoring service that adds a new API endpoint.
The new endpoint handles delta catalog imports and improves the media import process.
There are actually 2 processes illustrated here: Order Placement and Get Order Details.
We’re showing them together because reveals some interesting aspects of how order sync works within D365.
The interaction between the D365 HQ database and the online channel database affects what information is available when.
An alternate explanation of how authentication works. This one is in the form of a sequence diagram.
The "e-commerce frontend server" corresponds to the Sitecore server in the previous diagram.
The Identity Management Service can be anything that supports Oauth 2 and its OpenID Connect profile. Examples: Azure AD B2C, Akamai Identity Cloud, Identity Server 4
From the Microsoft D365 documentation.
https://docs.microsoft.com/en-us/dynamics365/unified-operations/retail/dev-itpro/configure-authentication-providers
What's new, apart from compatibility with Sitecore Commerce 9?
No DEF
Scales better
Executes on standalone servers or using Azure functions
Supports multi-file catalog import process using JSON, rather than a single XML file (the batch size is configurable)
Uses an import-specific file format – not the standard Sitecore Commerce import format -- because:
This eliminates another dependency on Sitecore
It's more efficient than the simple serialization used by OOTB Sitecore Commerce
It allows us to support deltas
Uses Sitecore XC plugin model to extend Commerce Authoring service