Microsoft Dynamics 365 Business Central and Procore integration
Microsoft Dynamics 365 Business Central runs finance and accounts payable. Procore runs construction project costs, commitments, and field invoices. Connecting the two means committed costs and subcontractor billings captured on the job site flow into the ledger without re-keying, and approved vendors stay consistent in both systems. ml-connector reads purchase order contracts, requisitions, direct costs, and change orders from each Procore project and posts them into Business Central as purchase invoices and journal entries on the right vendor and GL account. It handles the different APIs and authentication on each side and moves the data on a schedule you control.
What moves between them
The main flow runs from Procore into Microsoft Dynamics 365 Business Central. As project costs are committed and billed, ml-connector reads purchase order contracts, subcontractor requisitions, direct costs, and approved change orders per project and posts them into Business Central as purchase invoices and journal lines on the matching vendor and GL account. Vendors flow from Business Central into Procore so project teams select from approved subcontractors. Cost codes and cost types in Procore are aligned with Business Central GL accounts and dimensions in a reference mapping so every posted line references an account that already exists. Posted financial entries are not written back into Procore, which stays the system of record for field and project data.
How ml-connector handles it
ml-connector stores both credential sets encrypted and acquires an Entra ID bearer token for Business Central using the tenant ID, client ID, and client secret against the tenant token endpoint, plus a Procore service-account token, refreshing each before it expires and on a 401. On the Business Central side it accepts the environment name per customer to build the company-scoped URL, and it posts purchase invoices as drafts before calling the Microsoft.NAV.post bound action, since creating a draft does not post it. Procore commitments, requisitions, and direct costs are read per project, with company_id supplied on every call, and Procore cost codes map to Business Central GL accounts and dimensions before any line is posted. Procore webhooks carry no signature, so the inbound shared-header token is verified on receipt, and because Procore does not guarantee webhook delivery the connector also runs reconciliation polls. Business Central webhooks signal change only and expire every three days, so the connector renews subscriptions ahead of expiry and fetches the changed record after each notification, and polls purchaseOrders since they are not webhook-enabled. Procore enforces an hourly and a ten-second rate window and Business Central returns 429 when throttled, so calls back off with retries, and every record carries a full audit trail and can be replayed.
A real-world example
A general contractor with about two hundred staff runs Microsoft Dynamics 365 Business Central for accounts payable and the general ledger, and runs Procore on its job sites for commitments, subcontractor billings, and change orders. Before the integration, project accountants exported committed costs and subcontractor invoices from each Procore project and re-keyed them into Business Central, which delayed the books and left the ERP out of step with what crews had actually committed and billed in the field. With the two systems connected, every purchase order contract, requisition, and approved change order posts into Business Central against the right vendor and cost code, and approved vendors stay consistent across both systems. Job-cost reporting in the ERP reflects current field activity, and the manual export-and-re-enter step is gone.
What you can do
- Post Procore purchase order contracts, subcontractor requisitions, and direct costs into Microsoft Dynamics 365 Business Central as purchase invoices and journal lines on the matching vendor and GL account.
- Bring approved commitment and prime contract change orders into the Business Central ledger as project costs are revised.
- Push Business Central vendors into Procore so project teams select from approved subcontractors.
- Map Procore cost codes and cost types to Business Central GL accounts and dimensions so every posted line references a valid account.
- Bridge the Entra ID token for Business Central and the Procore service-account token, renew both before expiry, and reconcile by polling where webhooks fall short.
Questions
- Which direction does data move between Microsoft Dynamics 365 Business Central and Procore?
- The main flow is Procore into Business Central. Purchase order contracts, subcontractor requisitions, direct costs, and approved change orders move from each Procore project into Business Central as purchase invoices and journal lines, while vendors flow from Business Central into Procore. Posted financial entries are not written back into Procore, which stays the system of record for project and field data.
- How does the integration map Procore cost codes to Business Central accounts?
- Procore has no standalone GL accounts endpoint, so its cost codes and cost types serve as the accounting dimension. ml-connector aligns those Procore cost codes and cost types with Business Central GL accounts and dimensions in a reference mapping before any line is posted, so every commitment or invoice lands on an account that already exists in the ledger.
- How are webhooks and polling handled across the two systems?
- Procore webhooks carry no cryptographic signature, so the connector verifies the shared header sent with each delivery, and because Procore does not guarantee retries it also runs reconciliation polls. Business Central notifications only signal that a record changed and expire every three days, so the connector renews each subscription ahead of expiry, fetches the changed record afterward, and polls purchase orders since they are not webhook-enabled.
Related integrations
More Microsoft Dynamics 365 Business Central integrations
Other systems that connect to Procore
Connect Microsoft Dynamics 365 Business Central and Procore
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started