Microsoft Dynamics 365 Business Central and Microsoft Dynamics 365 Sales integration
Microsoft Dynamics 365 Business Central runs finance, inventory, and order fulfillment, and is the system of record for posted invoices and the general ledger. Microsoft Dynamics 365 Sales runs the front of the sales pipeline: leads, opportunities, quotes, and the accounts and contacts behind them. Connecting the two means a deal that closes in the CRM becomes a real customer and sales document in the ERP without anyone re-keying it. ml-connector reads the closed and accepted records from Sales and creates the matching customer and order in Business Central, then keeps the customer and product masters in agreement. Because Sales has no general ledger or vendor records, the accounting stays in Business Central where it belongs.
What moves between them
The main flow runs from Microsoft Dynamics 365 Sales into Microsoft Dynamics 365 Business Central. When an opportunity is won, a quote is accepted, or a sales order is created in Sales, ml-connector reads it along with its account and contacts, and creates the matching customer and sales order or sales invoice in Business Central, mapped to the right items and dimensions. Account and contact records flow the same direction so the Business Central customer master reflects CRM-won buyers. Product references are aligned so each order line resolves to a real Business Central item number. Posted invoice numbers and status can flow back into the related Sales invoice or order so reps see the billing outcome. General ledger postings stay in Business Central, since Sales has no GL resource, so ml-connector never writes ledger entries into the CRM.
How ml-connector handles it
ml-connector stores two credential sets encrypted, one Entra ID app registration per system, and requests a separate bearer token for each because the OAuth scope differs: a fixed Business Central scope versus a per-organization Dataverse scope built from the environment URL. On the Sales side it acts as the Application User the app is bound to, and it reads changed records with Dataverse change tracking delta tokens, or takes a Win, ConvertQuoteToSalesOrder, or SetState webhook as a trigger where those are registered. Products and accounts are mapped first, so every Business Central order line references an item and customer that already exist. Neither API offers an idempotency-key header, so ml-connector dedupes on the Sales record GUID and a BullMQ jobId before it creates anything in Business Central, which avoids a duplicate customer or order on a re-read. A new sales invoice is created as a draft in Business Central and only posted through the Microsoft.NAV.post bound action once it is confirmed, since posting a draft is a separate state change. Business Central rate limits return HTTP 429 and Dataverse returns HTTP 429 with a Retry-After header, so ml-connector backs off and retries, and every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized equipment distributor with about 200 staff runs Microsoft Dynamics 365 Sales for its field sales team and Microsoft Dynamics 365 Business Central for finance, inventory, and shipping. Before the integration, when a rep marked a deal won in the CRM, an order entry clerk re-typed the customer, the line items, and the quantities into Business Central from a quote PDF, which meant orders waited a day to reach the warehouse, item numbers were sometimes wrong, and the customer list in the ERP drifted from the CRM. With the two systems connected, each won opportunity and accepted quote creates the customer and sales order in Business Central within minutes, mapped to real item numbers, and the posted invoice number flows back so the rep sees the billing status. Orders reach fulfillment the same day, the keying errors are gone, and the customer master stays in step on both sides.
What you can do
- Create Business Central customers and sales orders from won Microsoft Dynamics 365 Sales opportunities and accepted quotes.
- Map Microsoft Dynamics 365 Sales products to Business Central item numbers so every order line lands on a real item.
- Keep the Business Central customer master aligned with Sales accounts and contacts.
- Bridge two Microsoft Entra ID app registrations, a fixed Business Central scope and a per-organization Dataverse scope.
- Read changes with Dataverse delta tokens or Win and quote-conversion webhooks, with GUID and jobId dedup, retries, and a full audit trail.
Questions
- Which direction does data move between Microsoft Dynamics 365 Business Central and Microsoft Dynamics 365 Sales?
- The main flow is Sales into Business Central. Won opportunities, accepted quotes, sales orders, and the accounts and contacts behind them move from Sales into Business Central as customers and sales documents. Posted invoice numbers and status can flow back to the related Sales record, but the general ledger stays in Business Central because Sales has no GL resource.
- Both systems use Microsoft Entra ID, so is this one login?
- No. Each system needs its own Entra ID app registration, and the OAuth scopes are different: Business Central uses the fixed scope https://api.businesscentral.dynamics.com/.default, while Dataverse uses the per-organization environment URL plus /.default. ml-connector stores both credential sets encrypted and requests a separate bearer token for each, and the Dataverse app must also be added as an Application User with a security role.
- Does the integration use webhooks or polling?
- It uses both, depending on the side. On Sales it can take a Win, ConvertQuoteToSalesOrder, or SetState Dataverse webhook as a trigger, or read changes with change-tracking delta tokens. Business Central notifications carry only a change signal and the subscriptions expire every three days, so most Business Central reads page through OData with a lastModifiedDateTime filter rather than relying on a push.
Related integrations
More Microsoft Dynamics 365 Business Central integrations
Other systems that connect to Microsoft Dynamics 365 Sales
Connect Microsoft Dynamics 365 Business Central and Microsoft Dynamics 365 Sales
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started