The upcoming new Dynamics 365 Business Cenral 2023 Wave 1 (v22) release inroduces a feature requested from a very long time: Master Data Management.
Master Data Management permits you to synchronize data between companies and maintain them in synch after the initial synchronization. Master data management is intended for scenarios where you want to move the setup in one company to another company in the same environment. It’s also built as a data synchronization engine that lets you keep data in the companies synchronized after the initial move.
The following capabilities are added for managing master data:
- Moving master data works when a company subscribes to data from another company (please remember this! It’s not handled in a push way, but it’s based on a pull).
- You can define the tables and fields to synchronize. For more control over the synchronization, you can filter on table records. You can also set up more advanced synchronization couplings.
- Changes in the main company are immediately pulled to the receiving companies by the job queue.
- Users in the receiving company can review synchronization logs.
How does it work?
To start using the new Master Data Management feature, from a company where you want to have data synchronized with a master company, open the Master Data Management Setup page and here select the Source Company and turn on Enable Data Synchronization:
The tables that will be synchronized from the Master company can be specified by using the Synchronization Tables page:
Here you can speicfy what are the tables to synchroniza and for each table you can specify the fields and the filters to apply on records:
Now click on Start Initial Synchronization to start the first data synch:
The Master Data Initial Synchronization page opens. Here you can see the list of tables that are synchronized and the relative Synchronization Mode:
- Full Synchronization: creates a new record based on the record in the soiurce company
- Match-Based Coupling: existing records are matched with records from the source company accordingly on the criteria that you can set:
When you specify the fields to synchronize for each table, you can also specify if the field must be validated or if you need to overwrite local changes:
From the Master Data Initial Synchronization page you can select all the records you want to synch and then click Start All to start the first synchronization:
A job for scheduling data starts and you can see the results directly from the Master Data Initial Synchronization page:
If you have synchronization errors (like in VAT Posting Setup table in my case) you can click and inspect the error details:
For each synchronized tables you can check the Synchronization logs:
If you search for the Integration Synchronization Jobs page you can see the list of synchronization jobs executed and its corresponding details in terms of records synched:
Do you like it?
I think it’s a very powerful addition, often requested on ERP projects. Now you can rely on it without custom implementations or apps. Please remember that this Master Data Manaagement feature is based on a pull mechanism, push is not supported at the moment (proposed but not sure if it will be taken into consideration in a near future).
What could be better?
I love this feature(congrats!), but there’s also something that I don’t like too much. I tink that many of you knows that I’m not a huge fan of the Job Queue. I think it’s not scalable at all and on a SaaS environment we have strict operational limits (max 3 concurrent tasks across environments).
This MDM feature relies on the Job Queue under the hood. When you start a synch process, a Job Queue Entry is created:
Can this be a problem on certain environment, where Job Queue is abused? Maybe…
I’m always waiting for a complete redesign of the Job Queue engine (I would like to have something totally decoupled from the BC instance, expecially on SaaS where we have Azure services for that) and for tasks like this (integration tasks) I always prefer to have something decoupled from the standard BC instance where the users run. Microsoft owns the “box” where a tenant run, why not start thinking on creating more scalable and performant services under the hood to do these integrations?
I’m sure that talking with someone on the Server and Azure teams could help on planning a more modern, scalable and robust solution…