- The out of the box process for Dynamics 365 Customer Engagement Sales Process is that an Quote can be converted to an Order, and an Order can be converted to an Invoice.
- There is a little known feature called “Is Sales Order Integration Enabled” that can change the behavior of this process such that an Order can instead be “Submitted” (to an ERP system) instead of being directly converted to an Invoice.
- The feature “Is Sales Order Integration Enabled” cannot be enabled or disabled via the User Interface or during Setup.
“Is Sales Order Integration Enabled” Feature
I was working with a customer the other day who has been using Dynamics 365 CE Online since the beginning (CRM Live in 2009-ish). They have been using the Quote functionality for years but only recently have begun to investigate working with Orders and Invoices as part of their business process.
While working through some proof of concept scenarios, we discovered that the Order record appeared strange as there was no “Create Invoice” button but rather a “Submit Order” button in Dynamics 365.
Note that out of the box, there is a specific flow or operations for Quote to Invoice. While I was familiar with the “out of the box” quote to invoice, I had totally forgotten about the long lost “integration mode” (more below)
Usually when I see strange buttons on forms I suspect that a developer or an ISV has created their own custom process.
I launched the Ribbon Workbench and investigated the Order form and found that there were not customized buttons or functions.
I did some investigation and found a couple of useful links that talked about an SOP Integration Mode in CRM. Note that these articles covered older versions of CRM but still held the answer. Sometimes you need to act like Indiana Jones to find the answers.
You can check out the articles yourself. There is no reference (that I could find anyway) to the SOP Integration Mode on the current Microsoft Docs sites. I recall this being a “thing” in early versions of CRM (1.2 and 3.0).
Essentially, the SOP Integration Mode is a way to allow Orders created in Dynamics 365/CRM to be flagged to be integrated to an accounting system, using an integration tools (Scribe, SmartConnect, etc). The idea is the process will then create the invoice from the ERP system back in Dynamics 365.
The mystery is how to turn on or off this feature as there is nothing in the current system settings user interface.
The setting itself is stored as a boolean on the Organization table in the Dynamics 365 database. For on-premise systems, changing this is as simple as SQL Update statement (which, of course is technically unsupported). For Dynamics 365 Online, we cannot update the database directly.
A way to view the setting is via a FetchXML query in a tool like the FetchXML Builder:
There is no user interface for this setting. Sonoma Partners used to have a tool that you could download to turn this feature on or off, but the tool is no longer available. The other option is to write some custom code, and one of the articles listed above has a C# class that you could run to set the value.
What I ended up doing was using Kingswaysoft SSIS Integration Toolkit and created an integration using the Dynamics 365 system as both the source and destination and used a Derived Column Transformation Step to convert the issopintegrationenabled value to FALSE.
Note that you could use this method to turn the mode on if you wanted.
The Is SOP Integration Enabled setting was now off, so the “Create Invoice” button returned.
In further investigation, we found that an earlier attempt had been made to setup an integration to QuickBooks years ago, and the tool used likely set the integration mode on. Mystery solved.
The Powershell Rabbit Hole
While I was looking to fix this, I also considered using Powershell. With Powershell you can perform some basic CRUD options from Powershell Commandlets as well set System Settings.
The tools and documentation are here:
I would recommend that knowing how to use this be in every Dynamics 365 Admin’s Toolkit.
What I found is the following;
The “issopintegrationenabled” setting cannot be set with the “Set-CrmSystemSettings” command.
You can turn on the setting via these commands:
$org = Get-CrmRecord -conn $conn -EntityLogicalName organization -Id <<org guid>> -Fields issopintegrationenabled $org.issopintegrationenabled = $true Set-CrmRecord -conn $conn -CrmRecord $org
But for some reason, the following did NOT work for me:
$org = Get-CrmRecord -conn $conn -EntityLogicalName organization -Id <<org guid>> -Fields issopintegrationenabled $org.issopintegrationenabled = $false Set-CrmRecord -conn $conn -CrmRecord $org
So that is why I went to the SSIS method.
Seeing Weird buttons doesn’t always mean a weird customization or ISV. It could very well be a forgotten or unknown feature of Dynamics 365.
There are a plethora of community tools that can help you diagnose and fix these types of issues. For something simple as this particular issue, here are the following tools used:
The other thing to note is that there are some blog articles that refer to CRM 2011 (or older) but the answer may still be hidden. Don’t always discount the old stuff!
Nick Doelman is a Microsoft Business Applications MVP who has worked with CRM since version 1.0 and still learns new things every day.