ml-connector
Microsoft Dynamics 365 Business CentralMonday.com

Microsoft Dynamics 365 Business Central and Monday.com integration

Microsoft Dynamics 365 Business Central runs finance, purchasing, and inventory. Monday.com runs the boards your teams work from every day. Connecting the two turns ERP records into rows on a board so people can track and triage them without opening Business Central. New and updated vendors, purchase invoices, sales invoices, and orders appear as items whose columns hold the amount, dates, status, and vendor, and they stay current as the underlying ERP records change. ml-connector handles the very different APIs 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 vendors, customers, purchase invoices, sales invoices, purchase and sales orders, items, employees, GL accounts, and dimensions through its REST API v2.0, built on OData v4 with JSON payloads. Every resource is scoped under a company on an environment-specific base URL, so the environment name and company ID are part of the path. It authenticates with OAuth2 client credentials issued by Microsoft Entra ID using an app registration with application permissions. Most entities support push webhooks through a subscription API, but the notification is only a change signal and carries no record data, so the resource must be fetched after the notification. Purchase orders are not webhook-supported and are read by polling with an OData lastModifiedDateTime filter.

How Monday.com works

Monday.com is a Work OS, not an accounting system, so it has no native invoice, vendor, purchase order, or GL account objects. Its GraphQL Platform API exposes everything as boards that hold items (rows) with typed columns such as numbers, status, date, text, dropdown, and connect_boards. All calls go to a single endpoint over POST, authenticated by a personal API token sent as a raw Authorization header with no Bearer prefix, or by an OAuth2 app token. Writing a column value is a change_column_value mutation whose value argument is a JSON-encoded string, not an object. Board mutations are capped at 40 per minute, and an Idempotency-Key header lets retries avoid duplicate items.

What moves between them

The flow runs from Microsoft Dynamics 365 Business Central into Monday.com. ml-connector reads vendors, purchase invoices, sales invoices, and purchase and sales orders from Business Central and creates or updates the matching item on the configured Monday.com board, setting each column to the mapped ERP field. A BC change notification or a scheduled delta poll triggers the work, the connector fetches the changed record, then upserts the row by its stored Business Central ID so the same invoice is never duplicated. Status, amount, and due date land on their configured columns, and the vendor is set on a dropdown or connect_boards column. Because Business Central is the system of record for finance, ml-connector treats the board as a downstream view and does not post amounts back into the ERP.

How ml-connector handles it

ml-connector stores both credential sets encrypted. On the ERP side it requests an Entra ID client-credentials token, builds the base URL from the stored environment name and company ID, and reads through OData with a lastModifiedDateTime filter for delta sync. On the Monday side it sends the personal token as a raw Authorization header and writes each column with a change_column_value mutation whose value is a JSON-encoded string. Because Monday has no ERP objects, the connector is configured with the target board ID and a map from each Business Central field to a Monday column ID, and the vendor link uses a dropdown or connect_boards column. Business Central webhook subscriptions expire after three days, so ml-connector renews them before expiry and answers the validationToken handshake; the clientState value is verified on each notification since there is no signature. Purchase orders are not webhook-supported, so they are polled. Monday board mutations are capped at 40 per minute and reads return a Retry-After header on 429, so ml-connector honors it and backs off, and an Idempotency-Key on each mutation prevents duplicate rows on retry. Monday cursors expire mid-pagination, so a board scan completes in one pass or restarts. Every record carries a full audit trail and can be replayed if a Monday write fails.

A real-world example

A mid-sized distributor with roughly 200 staff runs Microsoft Dynamics 365 Business Central for purchasing and finance, but its operations and approvals happen on Monday.com boards. Before the integration, an AP clerk re-typed each new purchase invoice into a Monday board so managers could approve it, and the board drifted out of step with Business Central as amounts and statuses changed in the ERP. With the two systems connected, every new or updated purchase invoice appears as an item on the approvals board within minutes, with the vendor, amount, due date, and posting status already filled in. Managers triage from the board they already use, the rows reflect the current ERP state, and the manual re-keying step is gone.

What you can do

  • Push Business Central vendors, purchase invoices, sales invoices, and orders onto Monday.com boards as items.
  • Map each Business Central field to a configured Monday column, including status, amount, due date, and vendor link.
  • Upsert items by their stored Business Central ID so an invoice or order is never duplicated on the board.
  • Bridge the Microsoft Entra ID client-credentials token on the ERP side to the raw Monday.com API token on the board side.
  • Keep boards current from Business Central change notifications plus a delta poll, with retries and a full audit trail.

Questions

Which direction does data move between Microsoft Dynamics 365 Business Central and Monday.com?
The flow runs from Business Central into Monday.com. Vendors, invoices, and orders are read from the ERP and written as items on the matching board. Because Monday.com has no native finance objects and Business Central is the system of record, ml-connector treats the board as a downstream view and does not write amounts back into the ERP.
How does the integration map ERP records onto Monday.com boards?
Monday.com stores everything as boards, items, and typed columns with no built-in invoice or vendor objects, so the connector is configured with the target board ID and a map from each Business Central field to a Monday column ID. An invoice becomes one item, with amount on a numbers column, status on a status column, due date on a date column, and the vendor on a dropdown or connect_boards column. Column values are written as JSON-encoded strings through the change_column_value mutation.
How are Business Central change notifications and Monday.com rate limits handled?
Business Central webhook subscriptions expire after three days and carry no record data, so ml-connector renews them before expiry, answers the validationToken handshake, verifies the clientState, then fetches the changed record. Purchase orders are not webhook-supported, so they are polled with an OData lastModifiedDateTime filter. On the Monday.com side, board mutations are capped at 40 per minute and 429 responses include a Retry-After header, which the connector honors while backing off and retrying.

Related integrations

Connect Microsoft Dynamics 365 Business Central and Monday.com

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

Get started