Overview of the CRT
and POS Extension
with the new Sealed
SDK
Luke Graham
Mugunthan Mani
1
Dynamics 365 Product
guidance
Implementation Guide General Case
guidance studies
Collective experience gained through
thousands of Dynamics 365 implementations
References to Guide Checklists
other guidance Experience
Highlights Recommended
deliverables
Conceptual
graphic
support
Available at: https://aka.ms/d365implementationguide
2
Agenda
❑ Overview of Commerce Extension.
❑ New Commerce SDK Overview.
❑ Setup Commerce Development Environment.
❑ Develop Headless Commerce Extensions.
❑ Extension installers.
❑ Develop POS Extensions.
❑ Session Takeaways
❑ Q & A.
3
Architecture Overview
4
DYNAMICS 365 COMMERCE
COMPONENT ARCHITECTURE
ENVIRONMENT BACK OFFICE/HEAD OFFICE OPERATIONS IN-STORE COMPONENTS E-COMMERCE WEBSITE VISIT SITE DESIGN & ADMINISTRATION
ADMINISTRATION
IT PRO CALL CENTER AGENT BACK OFFICE USER STORE ASSOCIATE CLOUD POS MODERN POS E-COMM CUSTOMER SITE DESIGNER CONTENT AUTHOR
w/OFFLINE
HARDWARE
LCS WEB PORTAL HQ CLIENT: CALL CENTER HQ CLIENT: BACK OFFICE IOS POS ANDROID POS E-COMM WEBSITE E-COMM SITE BUILDER WEBSITE SITE BUILDER WEBSITE
STATION
MOBILE WEB
ENVIRONMENT BACK OFFICE COMMERCE CORE RUNTIME E-COMMERCE WEBSITE SITE DESIGN & ADMINISTRATION
ADMINISTRATION
DYNAMICS 365 COMMERCE WEB SITE BUILDER
COMMERCE HQ SCALE UNIT STOREFRONT
DYNAMICS 365
SUPPLY CHAIN
LIFECYCLE SERVICES
(ADMIN PORTAL)
DYNAMICS 365 COMMERCE AI CLOUD POWERED DIGITAL ASSET
FINANCE SEARCH MANAGEMENT
DYNAMICS 365 CUSTOMER DYNAMICS 365 RATINGS & REVIEWS
HR INSIGHTS FRAUD PROTECTION
POWER BI AZURE DATALAKE COMMON DATA DYNAMICS 365 DYNAMICS 365 DYNAMICS 365 DYNAMICS 365 DYNAMICS 365 POWER APPS
STORAGE SERVICE MARKETING SALES CUSTOMER SERVICE FIELD SERVICE PROJECT OPS.
UNIFIED DATA PLATFORM
5
COMPILATION
EXTENSIBILITY OVERVIEW
COMPILATION DEVELOPER EXPERIENCE
DYNAMICS 365 FIN & OPS EXTENSION E-COMMERCE EXTENSION HEADLESS COMMERCE & POS EXTENSION
FIN & OPS APP E-COMMERCE HEADLESS COMMERCE HEADLESS COMMERCE MODERN POS
DEPLOYMENT EXTENSION PACKAGE EXTENSION PACKAGE EXTENSION PACKAGE ON-PREM INSTALLER ON-PREM INSTALLER
Runtime/Service Extension Modules, Themes, Data Actions POS UI & Runtime Extension Commerce Runtime Commerce Runtime
Database Extension Configuration Runtime / API Extension Channel Database Schema Channel Database Schema
Modules, Themes, Data Actions Database Extension POS UI & Runtime POS UI & Runtime
DEPLOYMENT Runtime / API Extension Runtime / API Extension
Database Extension Database Extension
POS UI & Runtime Extension POS UI & Runtime Extension
DEPLOYMENT & SERVICING EXPERIENCE
DYNAMICS 365 LIFE CYCLE SERVICES ON-PREM MASS DEPLOYMENT INFRASTRUCTURE
MICROSOFT OWNED AND MANAGED CUSTOMER OWNED AND MANAGED
DEPLOYMENT & SERVICING EXPERIENCE
DYNAMICS 365 E-COM STOREFRONT COMMERCE SCALE UNIT COMMERCE SCALE UNIT MODERN POINT OF SALE
FIN & OPS APPS RENDERING <…> CLOUD-HOSTED SELF-HOSTED
Service Fabric / Azure SQL Azure Web App / Node JS Azure Web App / Azure SQL IIS / SQL Server Windows App / SQL Express
DEPLOYMENT
EXTENSIONS EXTENSIONS EXTENSIONS EXTENSIONS EXTENSIONS
6
Commerce SDK Overview
7
Commerce SDK
Packages published to the public feed.
Samples available in GitHub.
Components Commerce SDK Old SDK (Retail SDK available in LCS Dev VM)
Reference libraries Published in the public feed. Published in the Retail SDK\Pkgs
Samples GitHub Retail SDK\Samples
Packaging tools Packages available in the public feed to generate packages. Retail SDK\Packages
Dev Environment Scripts available in GitHub Preconfigured in LCS Dev VM
POS Templates available in GitHub POS.App/Extension project available in Retail
SDK\POS
Installers New Sealed Extension installer framework (packages Retail SDK\Packages (Combined installer).
required to generate the installer are available in public
feed)
Build pipeline Sample scripts available in GitHub Based on the dirs.proj file available in the Retail
SDK
8
Commerce SDK
Why?
❑ Seamless update experience.
❑ Improved performance using the new ASP. Net Core 3.1.
❑ Sample Extensions are published to GitHub
❑ The new Sealed installers are headless.
❑ Automated packaging and configuration of extensions.
❑ Improved build times.
❑ Improved Dev experience, using VS Code for CSU extensions.
9
Setup Commerce Development Environment
10
Setup Local Commerce Development Environment
Pain points
▪ Tightly coupled with LCS VMs.
▪ Requires AOS.
▪ Deployment and Update process takes hours.
▪ VM COGS.
▪ Need Visual Studio 2017 for CSU development.
11
Setup Local Commerce Development Environment
Benefits
▪ New Sealed Installers framework to setup and deploy extensions.
▪ F5 like Developer experience using Visual Studio Code.
▪ Lightweight Scale Unit without AOS, RTS and CDX
▪ Support for full scale CSU.
▪ No dependency with LCS Dev VM, faster updates and deployment.
▪ Reduces COGS.
12
Demo - Setup Commerce Development Environment
13
Headless Commerce Extension
14
HEADLESS COMMERCE
SAMPLE NATIVE APPS HEADLESS SAMPLE THIRD PARTY
AND SERVICES COMMERCE APPS AND SERVICES
AZURE WEB APP / IIS WEB SERVICE
E-COMMERCE ODATA ENDPOINT THIRD-PARTY
STOREFRONT / POS NATIVE APP OR SERVICE
Search Controller Cart Controller Loyalty Controller Shipping Controller Ext
HTML / JavaScript App
Typescript Proxy Payments Controller Pricing Controller … Tax Controller Ext C# Proxy
MIDDLEWARES
Authentication Authorization Exception Handling …
THIRD-PARTY
COMMERCE RUNTIME
SHIPPING SERVICE
Search Service Order Service Loyalty Service Shipping Service Ext
DYNAMICS 365
FRAUD PROTECTION THIRD-PARTY
Fraud Protection Service Pricing Service Customer Service Tax Service Ext
TAX SERVICE
Recommendations Serv. Shifts Service … Gift Card Service Ext
RECOMMENDATIONS
SERVICE THIRD-PARTY
GIFT CARD SERVICE
Transaction Service Caching Service SQL Data Service …
DYNAMICS 365
FIN & OPS APPS
AZURE SQL / SQL SERVER
CHANNEL DATABASE
Commerce Runtime Schema Commerce HQ Schema Extension Schema
15
COMMERCE RUNTIME
COMMERCE SCALE UNIT COMMERCE SCALE UNIT MODERN ARCHITECTURAL
CLOUD-HOSTED SELF-HOSTED POINT OF SALE HIGHLIGHTS
AZURE WEB APP IIS WINDOWS APP Symmetric and portable architecture
1
that is independent from the host.
ODATA ENDPOINT ODATA ENDPOINT UI LAYER
Composable to fit the context of the
OOB Controllers OOB Controllers 2
hosting application.
Extension Controllers Extension Controllers
Highly extensible with request
3
handlers and pre/post triggers.
MIDDLEWARES MIDDLEWARES NATIVE CLIENT BROKER
COMMERCE RUNTIME COMMERCE RUNTIME COMMERCE RUNTIME
OOB Services OOB Services OOB Services
Common Extensions Cloud Extensions Common Extensions On-Prem Extensions Common Extensions Offline Extensions
AZURE SQL SQL SERVER SQL EXPRESS / SQL SERVER
CHANNEL
CHANNEL DATABASE
DATABASE CHANNEL
CHANNEL DATABASE
DATABASE OFFLINE
CHANNEL DATABASE
DATABASE
OOB Schema OOB Schema OOB Schema
Extension Schema Extension Schema Extension Schema
16
COMMERCE RUNTIME
COMMERCE SCALE UNIT COMMERCE SCALE UNIT MODERN ARCHITECTURAL
CLOUD-HOSTED SELF-HOSTED POINT OF SALE HIGHLIGHTS
AZURE WEB APP IIS WINDOWS APP Symmetric and portable architecture
1
that is independent from the host.
ODATA ENDPOINT ODATA ENDPOINT UI LAYER
Composable to fit the context of
OOB Controllers OOB Controllers 2
the hosting application.
Extension Controllers Extension Controllers
Highly extensible with request
3
handlers and pre/post triggers.
MIDDLEWARES MIDDLEWARES NATIVE CLIENT BROKER
COMMERCE RUNTIME COMMERCE RUNTIME COMMERCE RUNTIME
OOB Services OOB Services OOB Services
Common Extensions Cloud Extensions Common Extensions On-Prem Extensions Common Extensions Offline Extensions
AZURE SQL SQL SERVER SQL EXPRESS / SQL SERVER
CHANNEL
CHANNEL DATABASE
DATABASE CHANNEL
CHANNEL DATABASE
DATABASE OFFLINE
CHANNEL DATABASE
DATABASE
OOB Schema OOB Schema OOB Schema
Extension Schema Extension Schema Extension Schema
17
Demo – Headless Commerce Extension
18
Extension installers
19
Extension installers
❑ Headless Extension installers.
❑ Separates Core and extensions.
❑ Multiple extension installer.
❑ Parameters.
❑ Mass deployment.
❑ Extension installer can be generated by consuming the installer packages.
20
Demo – Extension installers
21
Point of Sale Extensions
22
POS Extensions Overview
Extend existing POS functionality
Views –extensions to modify the UI on POS views
Ex. App Bar Buttons, Custom Column Sets, Custom Controls, etc.
Request Handlers – Extensions that replace the handlers for select requests within the POS runtime
Triggers – that add functionality to existing POS business logic workflows
Header –extensions that add custom functionality to the POS header bar
Create new functionality
Controls – that can be re-used throughout the custom UI flows in POS
Dialogs –that look and feel like existing POS dialogs
Operations –that can perform custom business logic
Request Handlers – that enable extensions to re-use business logic throughout the extension package
Views – that look and feel like core POS views
23
POS Extensions Overview
Developed in TypeScript/HTML using the PosApi library
Each POS extension is made up of one or more a TypeScript modules and/or HTML fragments
PosApi is JavaScript module library organized into three parts
Create – These APIs enable extensions to create new user experiences and workflows
Consume – These APIs provide opportunities for extensions to consume existing POS functionality & controls
Extend – These APIs that enable extensions to extend existing POS functionality like Views and Request Handlers
Extensions that combine to enable an end-to-end scenario are
packaged into an ExtensionPackage
Contains a manifest.json file that lists all the extensions in the package
Modeled as a separate project in the Commerce SDK
24
Changes to POS Extensions in the Commerce SDK
25
Improved way to use common POS controls
The PosUISdk control library was replaced with a new APIs in PosApi/Consume/Controls
Retail SDK Commerce SDK
26
Simplified custom View creation
Extensions that create new Views
should use the new base class
CustomViewControllerBase
instead of
ExtensionViewControllerBase
Provides a more maintainable API for
creating custom views and simplifies
extension development
Automatic handling of the spinner and
header bar
27
Configuring POS Extension Packages
POS now loads the list of configured
extension package definitions from the
headless Commerce engine by calling
the GetExtensionPackageDefinitions API
instead of from extensions.json
Removes the need for a code merge in the
extensions.json file
Enables a true independent packaging model for all
extension packages
28
Independent Packaging of Extensions in the
Commerce SDK
Retail SDK Commerce SDK
29
POS Extension Project Types in the Commerce SDK
Pos Extension Package Project – Compiles all extensions in an extension package.
Commerce SDK Nuget Package: Microsoft.Dynamics.Commerce.Sdk.Pos
Project Type: .NET SDK Class Library Project (netstandard2.0, .csproj)
Output: POS extensions web artifacts to be included in a Modern POS Modification Package and/or the Commerce
Scale Unit Deployable Package for CPOS
Modern Pos Extension App Package Project – Creates a package with all the POS, Headless
Commerce & HWS extensions into a Universal Windows Platform App Modification Package.
Commerce SDK Nuget Package: Microsoft.Dynamics.Commerce.Sdk.Pos
Project Type: Universal Windows App Package Project (.jsproj)
Output: The POS Extension Modification Package (.msix)
Modern Pos Extension App Package Installer Project – Generates a ModernPos extension app
package installer.
Commerce SDK Nuget Package: Microsoft.Dynamics.Commerce.Sdk.Installers.ModernPos
Project Type: .NET SDK Console Application Project (net461, .csproj)
Output: The Modern POS Extension Installer Executable (.exe) used to install the Modern POS extension app package
and channel database extensions
30
Demo – Point of Sale Extensions
31
Takeaways
Commerce SDK modernizes the development experience while maintaining compatibility the
most of the existing code extensions from the Retail SDK
Dependencies managed through NuGet simplifying update experience
No dev VM required
Independent packaging of extensions enables streamlined upgrade experience with no code
merge required
Migration to Commerce SDK is required by October 2022 when support for the Retail SDK will
be dropped
We’re hear to help ensure the migration process is a success
Upcoming Tech Talks:
8 am PST November 17th, 2021 - POS Extensions Deep Dive
8 am PST December 8th, 2021 – Migrating a POS Extension to the Commerce SDK
TBD – Packages and Build Automation with the Commerce SDK
TBD – Headless Commerce Engine Extensions Deep Dive
TBD – Hardware Station Extensions Deep Dive
32
Q&A
33