Wednesday, September 5, 2018

Retail Architecture


Retail Architecture

Note: Retail SDK contains samples for customizing the individual retail component.
Microsoft Dynamics 365 provides a large range of solutions for MNC and SME daily operational tasks, among these Retail is one module that is used for retail store and operations management in a simplified and unified manner. Dynamics 365 for Retail is comprised of multiple parts which combined together forms up a complete retail solution which are:



Retail Headquarter:
                Retail headquarter handles processes including but not limited to retail stores and channels management, Catalog management, Store wise assortments, Sales transactions, Pricing etc. It acts as a communication point between the retail stores, ecommerce stores and the head office. It is D365 for finance and Operations.

Channels:
                Channels are the retail stores which can be a physical entity or an ecommerce online store. Channels are the main end point for the retail operations. They are composed of retail point of sale (pos) and hardware stations. A channel may contain a retail server as well but not necessary.

Retail POS:
                Retail POS is the point of sale for the end to end business operations. Dynamics 365 for Retail offers two type of POS
                Modern Point of Sale (MPOS)
                Cloud Point of Sale (CPOS)
MPOS is a device based point of sale which can be deployed on a supported PC, tablet or phone. CPOS is a cloud based solution which is deployed on the cloud and accessed through a browser.




Retail store scale unit:
                Retail Store Scale Unit (RSSU) is comprised of attributes which provide retail operations capabilities to the stores where constant internet connectivity is not available. RSSU keeps in sync with the retail headquarter when internet connectivity is available.

Hardware Station:
                Hardware station is a server that provides centralized connectivity between the POS and hardware peripherals devices (printers, cash drawers etc). Hardware station can also be dedicated, which are peripherals directly connect to the MPOS without an 
intermediate server. 

Retail Server:
                Retail Server is comprised of a set of APIs which can be accessed in order to perform operations through POS or online stores.




The main component of retail server are
Entity Type
                An entity is just like an oop class it has a state which is to be monitored example a Customer
Complex Type
                A complex type is an ODATA concept which groups related information into one that can be reused by multiple entity types.
Controller
                A controller is a Web Api which contains actions which control the CRUD operations for the entities. A controller must be related to only one entity type.
Metadata
                Defines a contract between the client and server.

We can customize a controller or create new controller, entity type and complex type as per our need in the retail server.

Commerce Runtime (CRT):

                Commerce Runtime is the core engine which performs all the core business operations and contains the business logic for retail. It is comprised of multiple layers that are data access layer, workflow layer, service layer and API layer.




Commerce Data Exchange (CDX):
                          Performs the synchronization between the retail store and head quarter. It is comprised of real time services and async services. The real-time services are responsible for performing task such as issuing and redeeming a gift card, make payment through loyalty card, Inventory Lookup, while the async services are responsible for data exchange between the channel database and the retail head quarter.


Reatil Request Life Cycle:
                When an operation request is generated by the POS it calls a retail server Web Api which then based on the request type calls the required service, workflow, trigger or any CRT api. Which then generates a response and provides it back to the POS.



check out introduction to retail sdk here.

MERGING RETAIL SDK VERSIONS MANUALLY


MERGING RETAIL SDK - MANUALLY
Task: To merge customized Retail SDK version 7.2.11792.64377 to 7.2.11792.65099.
In order to merge code between the different versions of the Retail SDK first off open both SDK folders.




open both version files and compare changes while following the steps discussed.

Step 1:

In the “RetailSDK->Code->Assets” folder.Declare all commerce runtime (CRT) customized libraries in commerceruntime.ext.config from the previous version.




    Declare all Commerce Runtime customized libraries which are required for    offline support in CommerceRuntime.MPOSOffline.Ext.config from the          previous version.



  Declare all Dedicated hardware station customized libraries in  HardwareStation.Dedicated.config from the previous version.


  Declare the Commerce.RetailProxy customized library in dllhost.config  from the previous version. And any other library in the designated config file as required.
          

Step 2:

In the “RetailSDK->Code->BuildTools” Folder in customization.config.


    Provide the following details:
·        AssemblyNamePrefix.
·        CustomAssemblyVersion.
·        CustomVersion.
·        CustomName.
·        CustomDescription.
·        CustomPublisher.
·        CustomPublisherDisplayName.
·        CustomCopyright.

From the previous version file and update the version only.



  Declare all CRT customized libraries where the ISV_CommerceRuntime_CustomizableFile  are declared.
     


Declare all Retail Server customized libraries where the                                  ISV_RetailServer_CustomizableFile are declared.




    Declare all Hardware Station customized libraries where the                ISV_HardwareStation_CustomizableFile are declared.



       
    Declare all Custom Database scripts where the ISV_CustomDatabaseFile_Upgrade_Custom are declared.



Declare the required libraries for proxy generation in                                        RetailServerLibraryPathForProxyGeneration.



As required. Your Final File should contain all changes.




Step 3:

Place all the channel database upgrade files from previous version to newer    version in “RetailSDK->Code->Database->Upgrade->Custom”.




Step 4:

In “RetailSDK->Code->Packages->RetailServer->Code” in web.config file  declare all retail server customized libraries in the extension compositions    section.






Step 5:

           Paste all the required customization files from the previous version of   RetailSDK in “RetailSDK->Code->POS->Extensions” folder. Also, delete   any unnecessary extension folder except the bin and debug folder.



  Open ModernPOS.sln of newer version as administrator.




Select Extension project show all files in solution explorer include the                customization folders in the project and the files as displayed.




Also, include all the marked files as below.



 Open the extension.json file and include the baseurl element as displayed.



Step 6:

Paste all the extension libraries defined in step 1 in the “RetailSDK->Code-      >References” folder from the previous Retail version.




Step 7:

Run Visual Studios Developer Command Prompt as administrator and        change directory to the newer Retail SDK root.




And run the following commands





·    Msbuild /t:rebuild







Your deployable package is built, it can be access for deployment                    in  “RetailSDK->Code->Packages->RetailDeployablePackage” folder          you    can   also verify if the package is correctly built by looking in the              content            folder. You   can use the RetailDeployablePackage.zip file      for   deployment.