ml-connector
Microsoft Dynamics NAVMicrosoft Teams

Microsoft Dynamics NAV and Microsoft Teams integration

Microsoft Dynamics NAV holds your purchase orders, invoices, and general ledger. Microsoft Teams is where your team collaborates. Connecting the two lets you broadcast ERP events into Teams channels in real time so approvers see POs that need sign-off and finance teams get instant alerts when invoices arrive or GL entries post. Notifications flow one way: from Dynamics NAV into Teams, keeping your team in sync without requiring a separate system.

How Microsoft Dynamics NAV works

Microsoft Dynamics NAV exposes vendors, purchase orders, purchase invoices, sales invoices, sales orders, accounts, general ledger entries, dimensions, items, employees, and bank accounts through OData v4 REST APIs (primary) and legacy SOAP web services. Cloud deployments (Dynamics 365 Business Central online) authenticate with OAuth 2.0 via Microsoft Entra ID. On-premises instances use OAuth or basic auth with a web service access key. Dynamics NAV supports both webhooks (3-day subscription expiry, batching within 30 seconds, max 200 subscriptions) and polling to detect changes. GL accounts are read-only, and GL entries are immutable once posted.

How Microsoft Teams works

Microsoft Teams is accessed through the Microsoft Graph REST API and authenticates with OAuth 2.0 client credentials via Microsoft Entra ID. Teams has no native ERP data objects (no invoices, POs, GL accounts, or vendors); it is a communications platform only. Notifications are sent as chat messages posted to channels or direct messages to users. Teams subscriptions via Graph change notifications expire in 3 days and require renewal. Each Azure AD tenant is limited to 10,000 total active Teams subscriptions. Webhook validation requires returning a validation token within 10 seconds and uses clientState matching, not HMAC signatures.

What moves between them

Purchase order headers, purchase invoices, and GL entry batches flow from Dynamics NAV into Teams channels on a schedule you set or when webhooks fire. Each notification includes key details (PO number, amount, vendor name, or GL account affected) formatted as a Teams adaptive card or message. Sales invoices and employee records can also trigger alerts. Data flows one way only: Teams does not send information back into Dynamics NAV, as Teams has no ERP transactional objects to write.

How ml-connector handles it

ml-connector subscribes to Dynamics NAV OData webhooks for purchase orders, invoices, and general ledger entries, receiving batched notifications within 30 seconds of a change. For on-premises deployments or high-volume environments, it can poll the OData REST endpoints instead. On the Teams side, it holds OAuth client credentials for Microsoft Entra ID and posts formatted messages to pre-configured channels using the Microsoft Graph chatMessage endpoint. Webhook subscriptions in Dynamics NAV expire every 3 days, so ml-connector renews them before expiry to avoid missing events. Teams subscriptions also expire in 3 days and must be refreshed. The connector maps Dynamics NAV fields (vendor name, PO amount, invoice status) to human-readable Teams message cards and handles rate limits by retrying with exponential backoff. Each notification carries a full audit trail so approvers can trace an alert back to the source ERP record.

A real-world example

A growing food distribution company runs Microsoft Dynamics NAV for procurement and financial management, with sites in three regions. The purchasing team uses Microsoft Teams for daily coordination. Before the integration, purchase order approvers had to log into Dynamics NAV regularly or wait for an email digest to know which orders were waiting for sign-off. Now, when a manager submits a PO above a threshold, a message appears instantly in the Teams channel for regional approvers, with the PO number, vendor, and amount embedded. Once approved, the GL posting confirmation flows into the finance channel automatically. Approval cycles drop from days to hours, and the team stays coordinated without switching to a separate ERP portal.

What you can do

  • Send purchase order notifications to Teams channels when orders are created or status changes.
  • Post invoice alerts when purchase invoices arrive in Dynamics NAV, including vendor and amount details.
  • Notify finance teams in Teams when GL entries are posted, with account code and posting reference.
  • Subscribe to Dynamics NAV webhooks with automatic renewal before 3-day expiry, or poll on a custom schedule.
  • Format ERP records as Teams adaptive cards with actionable details and full audit trail on every notification.

Questions

Does Microsoft Teams send data back into Dynamics NAV?
No. Teams is a communications platform with no native ERP objects like invoices, POs, or GL accounts. ml-connector sends ERP events into Teams channels as notifications, but approvals and responses are recorded in Dynamics NAV itself, not in Teams. Teams acts as the alert surface, not the source of truth.
How does the integration handle Dynamics NAV webhook expiry?
Dynamics NAV webhook subscriptions expire every 3 days. ml-connector tracks the expiry time and renews the subscription before it lapses, ensuring no events are missed. If an on-premises deployment has high event volume, ml-connector can switch to polling the OData REST endpoints on a schedule you define instead of relying on webhooks.
What Dynamics NAV records can trigger Teams notifications?
Purchase orders, purchase invoices, sales invoices, general ledger entries, and employee records are the most common triggers. Other OData entities like vendors, items, dimensions, and sales orders can also be configured to send alerts if you need approval or visibility into those changes.

Related integrations

Connect Microsoft Dynamics NAV and Microsoft Teams

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

Get started