Dynamics 365 Business Central integration

ModernMES reads items and customers from Microsoft Dynamics 365 Business Central through the standard API v2.0, and sends finished work and scrap as item journal lines. One condition: the standard API has no item journal, so output is booked through a small API page your Business Central partner publishes.

Last updated: 20 October 2026

Why an extra API page is needed

Business Central's standard API v2.0 exposes items, customers and sales documents, but not the Item Journal Line table (table 83) that output and adjustments are posted through. The usual way to open it is a custom API page published by your partner, a small piece of AL development.

ModernMES sends these fields to that page, and your partner writes the page against this contract:

FieldContent
itemNumberItem no. (the ModernMES part code, or the mapped BC code)
postingDateThe day the job was finished
entryTypeOutput for good quantity (Positive Adjmt. if you do not use production orders); Negative Adjmt. for scrap
quantityQuantity
locationCodeThe location chosen in the settings
documentNumberThe ModernMES work order number
description, externalReferenceThe project and the record's unique ModernMES reference

Whether a line is posted at once or left in the journal for review is up to the page your partner writes. Without the page the connection still works for pulling items and customers.

What comes from Business Central

  • Items: number, display name and base unit of measure; blocked items are skipped. They become parts in ModernMES.
  • Customers: number, name, tax registration number, email, phone and city.

Records are pulled with a button in the settings screen, nothing is deleted, and differing codes are mapped per part.

Authentication and requirements

  • An app registered in Microsoft Entra ID (client ID and secret), entered on Business Central's Microsoft Entra Applications page with suitable permission sets. The connection uses service-to-service OAuth, not a user's password.
  • The Entra tenant ID, the environment name (production by default), the company name and a location code.
  • The path of the item journal API page your partner published.

Business Central runs in Microsoft's cloud, so the cloud version of ModernMES connects to it directly; no network changes are needed. The client secret is stored encrypted.

Setting it up

  1. We send your partner the field contract above and they publish the API page.
  2. We set up the connection together and send trial lines to a sandbox environment, then check them with your partner.
  3. Once they are right we switch to production. You choose when to send: when the part's last operation finishes (the default), after every operation, or only manually.

Lines are sent in the background. If Business Central does not answer, ModernMES tries 8 times at intervals growing from 1 minute to 12 hours, and the transfer log shows the outcome of each record.

What it does not do

  • It does not bring Business Central production orders or sales orders into ModernMES.
  • It does not post component consumption against a bill of materials.
  • It does not read inventory levels back into ModernMES.

Frequently asked questions

Can we use it without the custom API page?

Partly. Items and customers are pulled through the standard API; sending output and scrap needs the item journal API page.

Who writes the API page?

It is written in AL and published in your Business Central, usually by your Business Central partner. We supply the field contract and work with them during testing.

How is scrap booked?

With "Send scrap" on, the scrap quantity is sent as a Negative Adjmt. item journal line for the same location.

Does it work with Business Central on-premises?

The connection is written for Business Central online's API endpoints and Entra ID. If you run Business Central on your own servers, talk to us before setting it up.