ml-connector
Microsoft Dynamics 365 Business CentralAdobe Commerce

Microsoft Dynamics 365 Business Central and Adobe Commerce integration

Microsoft Dynamics 365 Business Central runs finance, inventory, and order management. Adobe Commerce runs the online store. Connecting the two keeps the storefront catalog priced from the ERP and lands every placed order back in finance without re-keying. Item and price changes in Business Central flow out to the Adobe Commerce product catalog, and orders customers place on the store come back into Business Central as sales orders ready to fulfill and invoice. ml-connector handles the very different APIs and auth on each side and moves the data on the cadence you set.

How Microsoft Dynamics 365 Business Central works

Microsoft Dynamics 365 Business Central exposes customers, items, sales orders, sales invoices, GL accounts, and dimensions through Business Central API v2.0, a REST surface built on OData v4 where every resource nests under a company id. It authenticates with an Entra ID OAuth 2.0 client credentials token scoped to the Business Central API, with the environment name carried in the URL. Items, customers, sales orders, and sales invoices all support change subscriptions, so the connector can register a webhook and be told what changed, though the notification is a signal only and the record must then be read back. Subscriptions expire after three days and must be renewed before they lapse.

How Adobe Commerce works

Adobe Commerce exposes orders, invoices, products, customers, and credit memos through the Commerce Web APIs over REST, with list endpoints paged by searchCriteria parameters and a total_count for paging math. PaaS and on-premises instances authenticate with OAuth 1.0a integration credentials signed HMAC-SHA256, while the Cloud Service uses IMS OAuth 2.0 client credentials with a token that expires in about twenty-four hours. Adobe Commerce can push synchronous webhooks signed with HMAC-SHA256 when events such as an order placement or product save fire, and Adobe I/O Events offers an async path. Adobe Commerce has no GL account resource, so chart-of-accounts logic stays in the ERP.

What moves between them

Catalog data flows from Microsoft Dynamics 365 Business Central into Adobe Commerce: items and their prices and stock create or update the matching products on the store. Transaction data flows the other way: orders placed in Adobe Commerce come back into Business Central as sales orders, matched on the order increment_id. Customer records are aligned across both sides so a buyer on the store maps to a Business Central customer. Catalog pushes run on the schedule you set or as item change subscriptions fire, and order pulls run as Commerce order webhooks arrive, with a scheduled poll as backfill.

How ml-connector handles it

ml-connector stores both credential sets encrypted and mints an Entra ID client credentials token for Business Central, refreshing it when a call returns 401, while signing each Adobe Commerce request with OAuth 1.0a on PaaS or sending the IMS bearer token on the Cloud Service and renewing that token before its roughly twenty-four hour expiry. On the ERP side it registers Business Central change subscriptions for items and prices, completes the validationToken handshake, and renews each subscription before the three-day window closes so catalog updates keep arriving. Because the change notification carries no payload, the changed item is read back from the company-scoped endpoint and then written to the Adobe Commerce product by SKU. Inbound orders arrive as HMAC-SHA256 signed Commerce webhooks that are verified before processing; the order is read by entity_id and posted into Business Central as a sales order, with its increment_id used as the dedup key so a redelivered webhook never doubles the order. Sales orders are created as drafts that a later flow can post to a sales invoice through the bound post action. Item, customer, and SKU keys are mapped first so every order line references a Business Central item and customer that already exist. Adobe Commerce webhooks are synchronous, so the endpoint acknowledges fast and queues the ERP write to avoid stalling checkout.

A real-world example

A mid-sized consumer goods company with roughly one hundred and fifty staff runs Microsoft Dynamics 365 Business Central for inventory and finance and sells direct to shoppers on an Adobe Commerce store. Before the integration the merchandising team edited prices in the ERP and then re-typed them into the store, and the finance team exported each day's orders from Commerce and keyed them into Business Central as sales orders, which delayed fulfillment and left the two systems out of step on stock. With Business Central and Adobe Commerce connected, price and item changes publish to the store automatically and every placed order lands in the ERP as a sales order within minutes, so the warehouse picks from accurate numbers and finance stops re-keying.

What you can do

  • Publish Microsoft Dynamics 365 Business Central items, prices, and stock to the Adobe Commerce product catalog by SKU.
  • Pull placed Adobe Commerce orders into Business Central as sales orders, matched on the order increment_id.
  • Keep customer records aligned so a storefront buyer maps to a Business Central customer.
  • Bridge the Entra ID client credentials token on the ERP side with OAuth 1.0a signing or the IMS token on the storefront side.
  • Renew Business Central change subscriptions before their three-day expiry and dedupe redelivered Commerce webhooks.

Questions

Which direction does data move between Microsoft Dynamics 365 Business Central and Adobe Commerce?
Catalog data moves from Business Central out to Adobe Commerce, so items, prices, and stock keep the store priced from the ERP. Orders move the other way, from Adobe Commerce back into Business Central as sales orders matched on the order increment_id. Customer records are aligned across both systems so each storefront buyer maps to a Business Central customer.
How does the integration handle Business Central webhooks that carry no data and expire?
Business Central change subscriptions are signal-only, so ml-connector reads the changed item back from the company-scoped endpoint after each notification rather than trusting the payload. Subscriptions also expire after three days, so the connector completes the required validationToken handshake on creation and renews each subscription before it lapses. That keeps catalog updates flowing without a gap when a subscription would otherwise drop.
Does Adobe Commerce send accounting data like GL accounts into Business Central?
No. Adobe Commerce has no GL account resource and does not expose a chart of accounts, so all GL logic stays in Business Central. What Adobe Commerce provides is order, invoice, product, customer, and credit memo data, and ml-connector maps the order data into Business Central as sales documents while the ERP applies its own GL rules on posting.

Related integrations

Connect Microsoft Dynamics 365 Business Central and Adobe Commerce

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started