ml-connector
Microsoft Dynamics NAVMicrosoft Dynamics 365 Sales

Microsoft Dynamics NAV and Microsoft Dynamics 365 Sales integration

Your finance team manages customers and credit limits in Microsoft Dynamics NAV, and your sales team tracks opportunities and accounts in Microsoft Dynamics 365 Sales. Without integration, changes in either system require manual updates in the other, and your account data drifts. ml-connector keeps them aligned by syncing customer master records, account hierarchies, and key financial attributes between the two systems. Your sales team always sees current credit status and terms, and your finance team sees exactly which customers your sales pipeline is working.

How Microsoft Dynamics NAV works

Microsoft Dynamics NAV (the cloud product Dynamics 365 Business Central online or on-premises) exposes customers, vendors, sales orders, sales invoices, purchase orders, GL accounts, dimensions, and employees through OData v4 REST endpoints, with a base URL per tenant or server instance. Authentication uses OAuth 2.0 via Microsoft Entra ID or legacy web service access keys. Webhooks are available for push notifications and expire every 3 days, requiring renewal. Key constraints: GL accounts are read-only, GL entries cannot be modified once posted, and if more than 1000 records change within a 30-second window, a single batch notification fires instead of per-record notifications. On-premises deployments require firewall access to port 7048.

How Microsoft Dynamics 365 Sales works

Microsoft Dynamics 365 Sales is a cloud-only CRM built on Microsoft Dataverse, exposing accounts, contacts, leads, opportunities, quotes, sales orders, and invoices through OData v4 REST. Authentication is OAuth 2.0 via Microsoft Entra ID using client credentials. Webhooks are supported through the Dataverse Event Framework and support create, update, delete, and custom actions with a 60-second timeout and one automatic retry for 502/503/504 errors. Key constraint: Microsoft Dynamics 365 Sales has no GL accounts, AP/AR ledger entries, or vendor records; those require Dynamics 365 Finance or Business Central. Webhook payloads are limited to 256 KB, and tokens expire in approximately 60 minutes.

What moves between them

The primary flow moves customer records from Microsoft Dynamics NAV into Microsoft Dynamics 365 Sales, keeping account names, credit limits, terms, and tax identifiers aligned. As accounts are created or updated in NAV, ml-connector pushes those changes to the Sales account and contact entities so your sales team has current master data. Reference dimensions (such as customer groups or markets) can be synced to support sales territories and account segmentation. The connection is primarily uni-directional from NAV to Sales because NAV is the system of record for customer financial data, though custom mappings can enable two-way sync for specific fields if needed.

How ml-connector handles it

ml-connector authenticates to both systems using OAuth 2.0 client credentials. On the Microsoft Dynamics NAV side, it makes calls using your tenant or server instance URL and retrieves customer records via the OData REST endpoint. On Microsoft Dynamics 365 Sales, it maps NAV customers to Dataverse accounts and contacts, preserving key fields like account name, credit limit, payment terms, and tax registration. Because NAV webhooks expire every 3 days, ml-connector manages the subscription lifecycle and renews before expiry to avoid missed updates. It also polls on a regular schedule to catch any changes that webhooks may have missed due to the 30-second batching window or network issues. Sales webhook delivery requires ample timeout handling since Dynamics can queue and deliver notifications asynchronously. ml-connector tracks token expiry for both systems (OAuth tokens are good for approximately 60 minutes) and refreshes automatically before they become stale.

A real-world example

A mid-market manufacturing distributor runs Microsoft Dynamics NAV for accounting and order fulfillment, and Microsoft Dynamics 365 Sales for pipeline management across a field sales team. Before integration, the sales team would create accounts in Dynamics 365 Sales but had no visibility into credit limits or payment terms from NAV, leading to deals quoted without checking if the customer had exceeded their credit line. Finance would discover the problem during order entry and send notes back to sales, delaying deal closure. With NAV and Dynamics 365 Sales connected, each new or modified customer in NAV appears in Sales within minutes, complete with their credit limit and standard terms. The sales team can now see in the opportunity form whether they are approaching a customer's limit, and credit hold exceptions are caught before the quote is sent.

What you can do

  • Sync customer master records and account hierarchies from Microsoft Dynamics NAV into Microsoft Dynamics 365 Sales on a schedule or in near-real-time via webhook.
  • Keep credit limits, payment terms, and customer groups aligned between the two systems so sales has accurate financial context.
  • Map NAV dimensions and customer attributes to Dynamics 365 Sales account segmentation and account classification.
  • Authenticate both systems with OAuth 2.0, manage token refresh, and renew NAV webhooks before their 3-day expiry.
  • Track changes via NAV webhooks and polling backfill so no customer update is missed due to subscription lapse or batching windows.

Questions

What customer data moves from Microsoft Dynamics NAV to Microsoft Dynamics 365 Sales?
Customer name, account number, credit limit, payment terms, tax registration, customer group, and financial rating all flow from NAV into Dynamics 365 Sales as account and contact records. This ensures your sales team always has current master data and can see the credit exposure on each opportunity. Custom fields in either system can be mapped if needed.
Why does NAV webhook management matter if ml-connector also polls?
NAV webhooks expire every 3 days and must be renewed, or they stop sending notifications. ml-connector tracks the subscription lifecycle and renews automatically before expiry so you get near-real-time updates. Polling fills in the gaps for any changes that the 1000-record batching window or network hiccups may have missed, ensuring no customer update is ever lost.
How does this handle OAuth token expiry and the Dynamics 365 Sales 60-minute token window?
ml-connector refreshes OAuth tokens from Microsoft Entra ID automatically before they expire. Both Microsoft Dynamics NAV and Dynamics 365 Sales token expiry is monitored and new tokens are obtained proactively, so no live sync request ever fails due to a stale credential.

Related integrations

Connect Microsoft Dynamics NAV and Microsoft Dynamics 365 Sales

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

Get started