Sometimes when you customize a mapping (in this example DV Released Products), you will get an error similar to Project validation failed. [DIPV1004]… this error comes from Data Integrator in Dataverse, which is the engine that drives DualWrite.
“Integration key field isn’t bi-directionally mapped“
The entitiy in my case was DV DV Released products, where I had added a field for Search Name.
Lets first look at the Integration Keys for the DV Released Products / msdyn_sharedproductdetails
The fields that are Integration Keys in DualWrite are ItemNumber and Company and when we look at those fields in the DW mapping, ItemNumber is mapped 1-way, this means that no other fields, inte mapping profile, can be mapped 2-way. (The company Code is almost always in the mapping due to the concept of Legal Entities).
In my case, the SearchName field was accidentally mapped two way. When I fixed it, the error went away and I was able to do an Initial Sync
When you map products between Dyanmics 365 for Finance and Supply Chain and Dynamics 365 for Sales there are a couple of basic concepts that are important to think about.
Products
Product in FnO contains master data. It is also a global table, available in all Legal Entities. To sell a “product” we first need to release it in a Legal Entity. Dualwrite syncs these to the table msdyn_globalproducts.
Released Products
A Released Products, also known as an Item is a product that is released to a Legal Entity. In D365FO, Microsoft has created a custom entity that is used for syncing Released Products to CRM, called DV Released products. In the Dualwrite mapping, it is syncing to the table called msdyn_sharedproductdetails.
Released Distinct Products
As you notice, none of the dataverse tables above, are native CRM tables for products (the hint here is the prefix msdyn_). Du to the difference in data structure between ERP and CRM, Microsoft created and additional Data Entity in FnO that we can sync more easily to CRM. DV Released distinct products is basically a copy of Released Products, with some added metadata such as Configuration, Color and Size.
Sometimes when you set up Dualwrite, lines in the databases does not sync correctly in the Initial Sync and then you need to help them along a bit. In order to “touch” (edit them to force a sync) Products and Released Products in FnO you simply go to the UI for these in Product information management. There is no “workspace” for Distinct Released Products.
In order to trigger a sync of a Released Distinct Product to Products, you need to touch one of these fields:
The easiest is to go to Products (not the Released Product) in FnO and edit the Description Field. That will trigger a sync.
When setting up Dualwrite for orders and quotes and doing initial sync, sometimes all order/quote lines do not sync over correctly. Especially if you have historical orders that are already delivered.
If an order is delivered i FO and the head of the quote/order is synced to CE, the lines will not sync. The result is that whenever you try to do something to that order (for instance invoice it), there is logic in CE, that sees that is Delivered and thus sets it to read-only. Depending on if this happens during initial sync or during Live sync, there are different methods to fix this.
Initial Sync
While you are initial syncing quotes/orders you can use a workaround in order to correctly sync lines to an invoices/delivered order/quote.
The trick is to manipulate the sync mapping for the order/quote header and set all headers, temporarily, to open. NOTE: this is only temporary in order to get the lines to sync correctly.
1. Open the DualWrite workspace and go the mapping for Dynamics 365 Sales order headers (salesorders).
2. If it is started, stop the mapping.
3. Find the SALESORDERPROCESSINGSTATUS line and change delivered and invoiced to 192350000 (this will set them to active in CRM).
4. Click Save as to save the mapping. Give it a good description so you don´t use it by mistake.
5. Perform the initial sync for Dynamics 365 Sales order headers (salesorders).
6. Sync Dynamics 365 Sales order lines (salesorderdetails)
7. Set the mapping for Dynamics 365 Sales order headers (salesorders) back to the correct mapping and perform a new initial sync.
8. Start the mappings for Dynamics 365 Sales order headers (salesorders) and Dynamics 365 Sales order lines (salesorderdetails) without syncing it again.
Live Sync
When you are already live with the solution and you find an order that is missing lines, the issue is that you can not run initial sync, because that would destroy the data.
To figure out if this is your issue, open the order in FnO and CE and compare them. If the order is missing lines or the entire order is missing from CE, go through these steps:
1. Open the order in FnO 2. Select the first line in the order and click Update line – Deliver remainder
3. Set the Sales Quantity and Inventory Quantity to 1 and click OK
4. The status of the order is not set to Open Order and the order should exist in CE with the line you made the change for.
5. If there are more lines on the order in FnO which have not synced to CE, make a small edit to the line (add a . to the Text field). This will force it to sync. 6. When the order is correct in CE, go back to the first line in FnO and click Update Line – Deliver remainder. Click Cancel quantity.
We are working with a a couple of customers that are running Dualwrite to sync between ERP and CRM.
Today one of my colleagues called me and told me he could not create an account in an environment at one of these customers… he got a Dualwrite error 😮
Dual Write core application error-SecureConfig Organization (XXXX) does not match actual Dataverse Organization (YYYY)
(the names have been changed to protect the innocent)
The weird thing is that this particular environment is not even connected with Dualwrite. It does not even have a D365FO app installed. It has however been refreshed from an environment that has Dualwrite active.
The best practice, when refreshing environments with Dualwrite is that you reset the Dualwrite configuration and activate all of the mappings again. The reset is done from within the FnO Dualwrite configuration screen:
Since this environment does not have a FnO app, there is no way to reset the configuration. We need to do this the hard way 🙂
To fix this, do the following:
1. Browse to https://make.powerapps.com and select the correct environment
2. Go to Tables, view all tables and find the table called Dual Write Runtime Configuration. This table contains the Dualwrite configuration. Usually when you are resetting the Dualwrite connection after a refresh this table is emptied.
3. Open the table, select all the rows and delete them.
Currently I am in the middle of installing Project Operations for a customer. In order to provide data to Project Operations we need to use Dualwrite to move data from Dynamics 365 for Finance and Supply Chain into Dataverse, which Project Operations uses as its database.
Yesterday I found a weird Dualwrite issue. In order to sync Customers, we also need to sync the entity CDS Contacts V2 (contacts). I started the initial sync… after running for around 6 (!!) hours it failed with the following error.
Type=Microsoft.Dynamics.Integrator.Exceptions.IntegratorClientException, Msg=Type=Microsoft.Dynamics.Integrator.Exceptions.IntegratorClientException, Msg=FinOps export encountered an error.(Type=Microsoft.Dynamics.Integrator.Exceptions.IntegratorClientException, Msg=Export failed, Please check execution for project DWM-d91cec93-bcf1-4a8e-a7fa6b0615e195c45fb9bb52d8690665b9c_0 and execution id ExportPackage-9/2/2025 7:23:39 AM-a41d84f0-e619-4a43-83db-d4f6a4855b97 in FnO. Error details Type=Microsoft.Dynamics.Integrator.Exceptions.IntegratorClientException, Msg=F&O export encountered an error. Please check project and execution ExportPackage-9/2/2025 7:23:39 AM-a41d84f0-e619-4a43-83db-d4f6a4855b97 in F&O)
I updated mappings and refreshed the entity list (as you do) and reran it, with the same issue.
Initial sync uses the Data Management Framework (DMF) to move the data to Dataverse so I thought I should look at the execution logs, for the DMF project. Then I filtered the list, it did not exist (!?!?!?!)
The next step, I tried to manually export CDS Contacts V2 (contacts) from DMF. I finally got a useful error!!
That lead me to go to the Entity List in DMF… there I found something strange:
Normally the status for the entity should be enabled… it was not. I then went to the License page in FnO
Turns out the customer has disabled a lot (!) of configuration keys and one of them is CDS Integrations… After entering Maintenence Mode and Enabling the key, the entities were still disabled. To see the correct status, you need to do a Entity List Refresh from DMF – Framework Parameters
After that the sync went through just fine
Todays learnings is around Configuration Keys… Do not disable them if you are not able to oversee the full consequence of doing so
I am setting up Dualwrite at a customer and I got an issue the other day. The customer wants to be able to create customers from Dynamics 365 CE and syncing them to Dynamics 365 for FO. We had done all of the initial syncs and done multiple test for creating Accounts in CE and the synced perfectly to FO.
When I was trying to figure out a way to manage Financial Dimension population while creating accounts I tried creating the customer directly in FO, just to test a thing… and it failed!!
I tried again from CE and it worked… but not from FO. We had been so focused on testing one direction but not the other… Doh!
So, what was the issue? I got this error:
Unable to write data to entity accounts.Writes to CustCustomerV3Entity failed with error message Request failed with status code BadRequest and CDS error code : 0x80048d19 response message: Error identified in Payload provided by the user for Entity :'accounts', For more information on this error please follow this help link https://go.microsoft.com/fwlink/?linkid=2195293 ----> InnerException : Microsoft.OData.ODataException: Cannot convert the literal '' to the expected type 'Edm.Int32'. ---> System.FormatException: Input string was not in a correct format.
and then it continued with a stack trace… Hmmm…
So I started brainstorming with a colleague: It is obviously a data type missmatch and when I turn off the mapping for Account, it works. Going through the mapping we had added a few transform mappings so we started there. It turns out that all of these we 1 to 1 mappings. The problems was that there three fields were not on the initial “customer creation sidebar”. In CE these were made mandatory but in FO, they were not.
I took a look at the mappings for these 3 fields and one stood out. It had no mapping for the empty value.
This meant that when going from FO to CE I tried to convert and empty string to an integer and since there was no transform for the empty field and no default it could not be written to CE.
The easiest way to add an empty mapping to null is to edit the JSON version of the mapping (I did not know this was possible until a short while ago)
As I have mentioned before I am currently involved in implementing DualWrite with a customer and in this case there is data in CRM and FnO that we need to work around.
One example is a “single” contact that is used in multiple companies as an EDI adress. The reason I wrote “single” is that since we in FnO use the Global Adress Book, the contact is one Party that is instancuated as a contact in each of the Customers that are using it. This means that if you look in All Contacts there are a whole bunch of Duplicates.
These contacts are then synced, using DualWrite, to CRM… much to the annoyance of my CRM colleagues. This contact is of no use in CRM and I was asked to create a filter for them.
What i did was to set the field “Profession” in FnO (this was not being used) to EDI end then I added the following to the filters for Customer Contacts in DualWrite
FnO: (AssociatedContactType = 0) && (EMPLOYMENTPROFESSION != “EDI”) CRM: msdyn_contactfor eq ‘Customer’ and msdyn_sellable eq false and msdyn_contactpersonid ne null and jobtitle ne ‘EDI’
As you notice, the syntax for the FnO and CRM sides is very different and that was the main reason I wrote this post. I needed a place to document the syntax 🙂
I am currently working on a project where we are implementing DualWrite in existing Dynamics 365 Environments. Since we do not have huge data volumes we decided to use Initial Sync in DualWrite to migrate some data from D365 Finance and Supply Chain over to D365 for Sales.
When we verified the data we noticed and issue with addresses. It turns out that the customers had all addresses set to purpose Business and as it turns out the addresses that are configured in the default mapping for DualWrite are Delivery and Invoice addresses. Once the customer fixed the addresses, I thought: “Lets just resync the Customer V3 entity using Initial Sync!”. Well… turns out is was not that easy.
When the sync har run it synced 3 customers instead of around 1800…
When I looked at the Data Management Project (after ALOT of troubleshooting) which Initial Sync generates I could see that the project was set to “Incremental Push Only”… I wanted it to do a complete sync… why is this happening?? What do I do know? There are 3 different ways that “might” solve this.
Disable and Enable Change Tracking
Your first option is to turn, change tracking off and then on again. You do this in the Data Management workspace, in Data Entities.
Reset DualWrite in FnO
In the DualWrite section of the Data Management workspace, click Reset Link. This will let you setup the link again; as well as purging all of the settings, it will also reset historical configuration. Since we already synced most of the data, we did not have to run initial sync for most of the entities… we only re-ran the Customers V3 entity
Deleting the DMF Project
Every initial sync created a DMF project and when run the Initial sync for the second time, Dataverse tried to be smart and reuse the DMF project which meant. Deleting the project meant that it had to be created again. (Thanks Nathan Clouse for this insight)
At the moment I am involved in a DualWrite implementation between FnO and CE. The goal is eventually to be able to generate Quotes from CE and have them sync to FnO. As you might know there are a lot of entities required to get to the point where we can sync Quotes and one of the is Vendors V2 and another is Released Procucts. In order to sync Release Products we first need to have Vendors.
At this customer they are buying a lot of their products from an internal vendor (aka another Legal Entity of the same FnO instance. When we first synced Vendors, everything worked perfectly, with 100% completion, (as far as we could see) but when we tried to synd Released Products we were missing Vendors
Quite a lot… So digging into this we found that these Vendor were never synced, which we found a bit strange (remember 100 % completion.
Turns out there is a filter in DualWrite that looks like this and apparently internal Vendors are not of the type Organizations… They are LegalEntity
So with some modifications… it looks like this
But there is another thing we need to fix… We need to add the following line in the tranform rule
Once that is done, I force another Initial Sync of Vendors and once that is completed I could successfully sync Products… Yay !!
I am doing some experimenting with Synapse Links for Dataverse and to do that I need my FnO data in Dataverse. The way I do it, is using Dualwrite. When I try to sync Sales Order Lines V2 to salesorderdetails I get the following error:
Reason: Bad Request, Header x-ms-client-request-id f1004256-8a98-42fe-86a9-02b8e64a81a9, Produkten kan inte läggas till eftersom den inte är aktiv
(for those of you, not fluent in Swedish it says “The product cannot be added because it is not active)
This means that the product is synced but it is not active. To activate the product it needs to be published. To do this go through the following steps:
In Sales open products
Select a product and click Publish
The problem was I had a couple of thousand products. So I googled and found this forum thread helping me to write a workflow to automate it (this is way beyond my knowledge in CRM).