Retail software development kit (SDK) extensibility samples
The Retail SDK includes extensibility samples. These samples are a good way to learn about different ways to customize Retail.
The Retail software development kit (SDK) includes extensibility samples. You can also use these projects as boilerplate projects to get started with a specific customization. For example, to start a new commerce runtime (CRT) extension, you can just copy one of the CommerceRuntime sample projects into a new folder, adjust the project import paths, and then start working in the project. For most of the samples, additional step-by-step instructions are available in the Retail SDK\Documents folder. The following table provides a high-level list of the samples.
|Sample name||Description||Tasks that are demonstrated|
|CrossLoyalty||This sample includes two retailers, AdventureWorks and Contoso. The Contoso retailer accepts loyalty points that customers earn from AdventureWorks. The sample shows how to create a simple new CRT service and call it when a button in Retail Modern POS is clicked. It simulates the cross-loyalty scenario. There are changes to the configuration, CRT, Retail Server, Retail Proxy, and point of sale (POS) (both Modern POS and Cloud POS). This sample supports offline mode for Modern POS.||
|EmailPreference||This sample shows how to use extension properties to extend an entity. The extended entity is persisted in both the Microsoft Dynamics 365 Retail and channel databases, and the POS client enables access to the value. The new value is written synchronously to Retail via the RetailRealtimeTransaction service. No customization is required in the CRT or Retail Server, because extension properties flow automatically. There are changes to pages, tables, the Real-time Service (RTS) client, Commerce Data Exchange (CDX), the channel database, and the POS (both Modern POS and Cloud POS). This sample doesn't support offline mode.||
|StoreHours||This sample shows how to create a new business entity (StoreHours) across both Retail and the channel. There are changes to tables, CDX, the channel database, the CRT, Retail Server, and the POS (both Modern POS and Cloud POS). This sample supports offline mode for Modern POS.||
|HealthCheck||This sample shows how to expand an existing CRT service by adding functionality. In this case, the health of some other system can be checked as part of the RunHealthCheckServiceRequest service that already exists. There are changes to the CRT and CRT Test Host.|
|ExtensionProperties||This sample shows the following customization strategies for the CRT:
||Use extension properties to store custom field values in a database.|
|CommerceRuntime Test Host||This tool mimics a typical CRT host that resembles Retail Server. It supports simple testing of CRT extensions that doesn't require changes in Retail Server or UI clients. You just register the services that are required for the CRT and run it.
Note: RealTimeTransaction service calls that might be part of a CRT extension won't work correctly. To test these service calls, use the RetailServer Test Client sample instead.
|RetailServer Test Client||You can use this simple application to make Retail Server calls, offline mode calls through the Retail Proxy, or both. This sample application acts as a client. It resembles the POS clients but requires no UI changes. Therefore, it supports rapid testing and development. You can use this tool to verify customizations of the channel database, RTS, CRT, and/or Retail Server before you hand them off to the UI team.|
|OnlineStore||This sample is an ASP.NET implementation that showcases the use of the Ecommerce SDK. It includes both a store front and a publishing job.|
|OpenIdConnectUtility||This sample lets you call Retail Server in a customer context (C2) by using a Google Identity.|
|CashDispenser (HardwareStation)||This sample shows how to customize Retail Hardware Station so that a cash dispenser can be integrated.||Create a new Hardware Station project and support for new peripherals.|
|Rambler (HardwareStation)||This sample shows how to customize Hardware Station so that a Rambler Mobile Card Reader can be integrated.||Create a new Hardware Station project and support for new peripherals.|