Monday, 19 October 2020

Dual Write

Reference: https://www.powerazure365.com/blog-1/bring-dynamics365-erp-and-crm-together-with-cds 

Dual-write is an out-of-box infrastructure that provides near-real-time interaction between model-driven apps in Microsoft Dynamics 365 and Finance and Operations apps. When data about customers, products, people, and operations flows beyond application boundaries, all departments in an organization are empowered.

Dual-write provides tightly coupled, bidirectional integration between Finance and Operations apps and Common Data Service. Any data change in Finance and Operations apps causes writes to Common Data Service, and any data change in Common Data Service causes writes to Finance and Operations apps. This automated data flow provides an integrated user experience across the apps.

dual-write-overview.jpg


INFRASTRUCTURE

The dual-write infrastructure is extensible and reliable, and includes the following key features:

  • Synchronous and bidirectional data flow between applications

  • Synchronization, together with play, pause, and catchup modes to support the system during online and offline/asynchronous modes.

  • Ability to sync initial data between the applications

  • Consolidated view of activity and error logs for data admins

  • Ability to configure custom alerts and thresholds, and to subscribe to notifications

  • Intuitive user interface (UI) for filtering and transformations

  • Ability to set and view entity dependencies and relationships

  • Extensibility for both standard and custom entities and maps

  • Reliable application lifecycle management

  • Out-of-box setup experience for new customers

APPLICATION

Dual-write creates a mapping between concepts in Finance and Operations apps and concepts in model-driven apps in Dynamics 365. This integration supports the following scenarios:

  • Integrated customer master

  • Access to customer loyalty cards and reward points

  • Unified product mastering experience

  • Awareness of organization hierarchy

  • Integrated vendor master

  • Access to finance and tax reference data

  • On-demand price engine experience

  • Integrated prospect-to-cash experience

  • Ability to serve both in-house assets and customer assets through field agents

  • Integrated procure-to-pay experience

  • Integrated activities and notes for customer data and documents

  • Ability to look up on-hand inventory availability and details

  • Project-to-cash experience

  • Ability to handle multiple addresses and roles through the party concept

  • Single source management for users

  • Integrated channels for retailing and marketing

  • Visibility into promotions and discounts

  • Request-for-service functions

  • Streamlined service operations

Figure-1-Functional-Roadmap.png


Top reasons to use dual-write

Dual-write provides data integration across Microsoft Dynamics 365 applications. This robust framework links environments and enables different business applications to work together. Here are the top reasons why you should use dual-write:

  • Dual-write provides tightly coupled, near-real-time, and bidirectional integration between Finance and Operations apps and model-driven apps in Dynamics 365. This integration makes Microsoft Dynamics 365 the one-stop shop for all your business solutions. Customers who use Dynamics 365 Finance and Dynamics 365 Supply Chain Management, but who use non-Microsoft solutions for customer relationship management (CRM), are moving toward Dynamics 365 for its dual-write support.

  • Data from customers, products, operations, projects, and the Internet of Things (IoT) automatically flows to Common Data Service through dual-write. This connection is very useful for businesses that are interested in Microsoft Power Platform expansions.

  • The dual-write infrastructure follows the no-code/low-code principle. Minimal engineering effort is required to extend the standard table-to-table maps and to include custom maps.

  • Dual-write supports both online mode and offline mode. Microsoft is the only company that offers support for online and offline modes.

What does dual-write mean for users and architects of CRM products?

Dual-write automates the data flow between Finance and Operations apps and Common Data Service. In future releases, concepts in model-driven apps in Dynamics 365 (for example, customer, contact, quotation, and order) will be scaled to mid-market and upper-mid-market customers.

In the first release, most of the automation is handled by dual-write solutions. In future releases, those solutions will become part of Common Data Service. By understanding the upcoming changes to Common Data Service, you can save yourself effort in the long term. Here are some of the crucial changes:

  • Common Data Service will have new concepts, such as company and party. These concepts will affect all apps that are built on Common Data Service, such as Dynamics 365 Sales, Dynamics 365 Marketing, Dynamics 365 Customer Service, and Dynamics 365 Field Service.

  • Activities and notes are unified and expanded to support both C1s (users of the system) and C2s (customers of the system).

  • Here are some of the upcoming changes in Common Data Service:

    • The decimal data type will replace the money data type.

    • Date effectivity will support past, present, and future data in the same place.

    • There will be more support for currency and exchange rates, and the Exchange Rate application programming interface (API) will be revised.

    • Unit conversions will be supported.



So… now let’s go ahead and let’s do just setup as NoCode/LowCode #PowerAddicts users :)

You can set up a dual-write connection between a Finance and Operations environment and a Common Data Service environment.

  • Finance and Operations environment provides the underlying platform for Finance and Operations apps (for example, Microsoft Dynamics 365 Finance, Dynamics 365 Supply Chain Management, Dynamics 365 Retail, and Dynamics 365 Human Resources).

  • Common Data Service environment provides the underlying platform for model-driven apps in Dynamics 365 (Dynamics 365 Sales, Dynamics 365 Customer Service, Dynamics 365 Field Service, Dynamics 365 Marketing, and Dynamics 365 Project Service Automation).

The setup mechanism varies, depending on your subscription and the environment.

  • For new instances of Finance and Operations apps, the setup of a dual-write connection begins in Microsoft Dynamics Lifecycle Services (LCS). If you have a license for Microsoft Power Platform, you will get a new Common Data Service environment if your tenant doesn't have one.

  • For existing instances Finance and Operations apps, the setup of a dual-write connection begins in the Finance and Operations environment. (In the Data Management Workspace)

For the FinOps part, now you can go to LCS Dynamics if you want to deploy a new environment, you can setup CDS directly (for NEW INSTANCE) :


Set up a dual-write connection


Follow these steps to set up the dual-write connection.

  1. In LCS, go to your project.

  2. Select Configure to deploy a new environment.

  3. Select the version.

  4. Select the topology. If only one topology is available, it's automatically selected.

  5. Complete the first steps in the Deployment settings wizard.

  6. On the Common Data Service tab, follow one of these steps:

    • If a Common Data Service environment is already provisioned for your tenant, you can select it.

      1. Set the Configure Common Data Service option to Yes.

      2. In the Available environments field, select the environment to integrate with your Finance and Operations data. The list includes all environments where you have admin privileges.

      3. Select the Agree check box to indicate that you agree to the terms and conditions.

lcs_setup_1.png

If your tenant doesn't already have a Common Data Service environment, a new environment will be provisioned.

  1. Set the Configure Common Data Service option to Yes.

  2. Enter a name for the Common Data Service environment.

  3. Select the region to deploy the environment in.

  4. Select the default language and currency for the environment.

     Note

    You can't change the language and currency later.

  5. Select the Agree check box to indicate that you agree to the terms and conditions.

lcs_setup_2.png


  1. Complete the remaining steps in the Deployment settings wizard.

  2. After the environment has a status of Deployed, open the environment details page. The Common Data Service environment information section shows the names of the Finance and Operations environment and the Common Data Service environment that are linked.


lcs_setup_3.png
  1. An admin of the Finance and Operations environment must sign in to LCS and select Link to CDS for Apps to complete the link. The environment details page shows the admin's contact information.

    After the link is completed, the status is updated to Environment linking successfully completed.

  2. To open the Data integration workspace in the Finance and Operations environment and control the templates that are available, select Link to CDS for Apps.

lcs_setup_4.png

If you are like me with already instances of FinOps deployed, you can go directly to your instance on the Data Management Workspace !

03 (1).png

Click on Dual-Write and New Link to Environment.

Capture.PNG

Choose your CDS environment.

Capture2.PNG

Select all legal entities for FinOps that you want to be sync.

Capture3.PNG


After you will have a checklist… and here you will have some errors like me… :)

Capture4.PNG

So… now how to resolve all these errors ?

Well, I’m happy to share with you how to do so in just few minutes (really challenging to discover so you will save a lot of times to not search everywhere, believe me.

First of all, you will need to download this solution “msdyn_DualWriteCore” here :

After you have to go to your Power Platform Admin Center to import this solution to your CRM instance.

Error4.png

After, you will need to deploy some others solutions that are mandatory to sync correctly FinOps entities to CRM entities / Field Services entities and so on.

So, for that, download this package first :

You will need also the CRM package deployer in order after to deploy theses packages to your CDS.

Here is the link to achieve that : https://docs.microsoft.com/en-us/power-platform/admin/deploy-packages-using-package-deployer-windows-powershell#PD_tool

·       Extract the package zip file and copy all the below files from the folder Dynamics365FinanceAndOperationsCommon.PackageDeployer.2.0.438.

Error4.1.PNG

·       Paste all the copied files into the ‘Tools’ folder of the package deployer tool installed (the package deployer tool version can be anything latest). Run the ‘PackageDeployer.exe’ to select the CDS environment and install the solutions.

Now everything are now installed correctly. Last steps are to solve security issues.

For this problem that you had before :

Error3.PNG

You will just need to launch this LINK, connected with an Administration Rights account in your tenant

o   Launch URL below with your admin credentials which should prompt you for consent. https://login.microsoftonline.com/common/oauth2/authorize?client_id=33976c19-1db5-4c02-810e-c243db79efde&response_type=code&prompt=admin_consent

o   Click ‘Accept’. This would mean that you are providing the consent to install the app (with id =33976c19-1db5-4c02-810e-c243db79efde) in your tenant.

o   This app is required for CDS to talk to F&O Note: If this doesn't work, open browser in incognito mode for chrome and private mode of Edge.

After all done, you will be redirected on this website, and it will be OK, you can close it.

Error3.2.PNG


Now, go to your FinOps tenant again and we will need to create Azure Application User. This step is here to solve this problem :

Error1.PNG

In order to resolve that, you have to go this menu item in FinOps :

1.       Launch your Dynamics 365 for Finance and Operations instance with this URL https://<<BaseAXURL>>/?cmp=DAT&mi=SysAADClientTable (substitute <BaseAXURL> with your instance)

After create 2 inputs with theses App users ID that we have just before.

Error1.1.PNG


Last step, go your CRM instance to solve this last issue :

Error2.PNG

1.       Go to Settings/Security and click on Users

2.       Switch to Application Users and create new Users (don’t forget to switch after the form to : Application user)

Error2.1.PNG

1.       Add Application id - 00000015-0000-0000-c000-000000000000 and follow prompts to fill additional fields and save user account This Application Id is for F&O , this will allow F&O application to connect to Sales/CDS.

2.       Provide any email id (it doesn’t matter if it’s valid or not)

3.       Provide ‘System Administrator’ rights to Application User via Manage Roles

Error2.2.PNG

Also don’t forget also to go to your Team Security in the CRM and add “Administrative roles” to your Business Unit Team.

And here we are, finish :) if you want I have also a Word documentation to summarize the HowTo ; step by step.


Remember we were before on FinOps to setup the Dual Write. You can go back there now and re-run the check list.

Click after on Create and you will be redirected to here after :

Click after on Create and you will be redirected to here after :

Good2.PNG

Before going to setup now the Entity mapping between CRM and the ERP, you can also check before the part Environment Details, Health Check and also a good feature is Alert settings in order to send email when something went wrong.

Alert.PNG


Before jumping to the mapping between CRM and ERP apps, here is a good article from Microsoft that you have to understand and read carefully about the architecture behind the scene, since the ERP and the CRM structure are not bascially the same thing on each entity (like Legal Entity versus Business Unit, Products and so on)

Now, go to the button “Apply solution”

ApplySolution.PNG
EntityMapping.PNG

Like below you will see all the entities mapping you have from Microsoft solutions packages you had imported before in your CDS. Of course this is the standard one, and you can customize it on your own. Change the standard one, create new one (thing of : custom entities from FinOps & CRM you want maybe to sync in the CDS)

You can go also on one of entity mapping like this one “Invoice” :

EntityMapping2.PNG

You can put your custom fields in the mapping, change the order (bi-directional or uni-directional : map type) , remove a field mapping etc….

Now, to launch your first SYNC, select one entity like Products (master data) and click on “RUN”

EntityMapping3.PNG


The initial write open, and click on “Show Related Entity map(s)” , so that CDS will sync also related entity based on the product. Don’t forget also to check your Master for Initial Sync. Like me my FinOps is my MASTER source of my Data so I prefer to set it like this. Of course it won’t erase previous data from your CRM instance if you had some before.
Click after on “RUN” and wait some minutes !

EntityMapping4.PNG

Of course, now after the initial SYNC the goal is to check if I update an account on the CRM doest it change automatically on FinOps and vice-versa.

Before you had to check if your entity is on “Running” state after the completion of the first initial SYNC. You can also pause & stop any Running state entity sync.

Sync.PNG


Here we are in my CRM, I’ve got the same accounts - contacts of my FinOps system.

If I change like the phone number & email address of a Contact in my CRM system like this

ContactCRM.PNG

In FinOps we’ve got in a matter of a second, my contact updated !

PartyFO.PNG


Now that all your DATA are on the CDS, you can achieve a lot more !!! Like this central master entity : CURRENCY

CDS1.PNG

Indeed, ,now you can like of course setup a Datalake export of your CDS entities, it will be a good point to start analyze your CENTRAL data / unique database coming from all other your Dynamics 365 Apps like here the CRM and the ERP together. (aka Project Athena)

You can also setup some FLOW with PowerAutomate on your CDS entities, and also setup a Dataflow for PowerBI on your datalake of CDS.

On your CDS click “Export Link to Datalake”

Datalake.PNG

And after few minutes check your Datalake in Azure :

Datalake2.PNG

No comments:

Post a Comment

POSTMAN D365

  Postman is useful to test the behavior of different OData class from/to D365FO. In this post we will see the steps to setup Postman with D...