Microsoft Dynamics NAV and Slack integration
Microsoft Dynamics NAV is the ERP for procurement, sales, and finance. Slack is where your team stays connected. Integrating the two keeps procurement and sales activity visible across the organization without manual notification or a separate portal. Purchase orders, sales orders, and invoice events flow to Slack channels in real time, so the finance team, department leads, and procurement staff see orders and invoice status updates as they happen.
What moves between them
The main flow is Microsoft Dynamics NAV to Slack. Purchase orders and sales orders are polled from NAV every few minutes and posted to Slack channels when they are created or updated. Purchase invoices and sales invoices are read via NAV webhooks when they are posted, and ml-connector posts a summary to the designated Slack channel with vendor or customer name, invoice number, and amount. Employee hire and termination events can also be pushed to Slack. The flow is one-way: Slack messages do not update NAV records.
How ml-connector handles it
ml-connector stores the OAuth 2.0 credentials for both NAV and Slack encrypted, and refreshes the Slack bot token if needed before each API call. Since NAV webhooks expire after 3 days, ml-connector monitors subscription expiry and renews the subscriptions before they lapse to ensure uninterrupted event delivery. For purchase orders, which are not covered by standard NAV webhooks, ml-connector polls the NAV OData API on a schedule you control and detects new or changed records. For invoice events, ml-connector listens for NAV webhook notifications and immediately posts a formatted message to Slack. When posting to Slack, ml-connector respects the chat.postMessage rate limit (1 per second per channel) by queuing messages if needed. Every Slack message is tagged with a trace ID so the audit trail links back to the original NAV record.
A real-world example
A mid-sized distributor runs Microsoft Dynamics NAV for procurement and fulfillment, and uses Slack for daily team communication. Before the integration, the procurement manager reviewed new purchase orders in NAV each morning and manually typed a summary into Slack for the supply chain team. With NAV and Slack connected, each new purchase order appears automatically in the procurement channel with vendor name, line items, and total amount within seconds. The team sees the full procurement pipeline in the flow of their conversation, so surprises at supplier handoff or payment delays are caught faster, and the team always knows what has been ordered.
What you can do
- Post purchase orders from Microsoft Dynamics NAV to Slack channels when they are created or updated, with order number, vendor name, and line item details.
- Deliver purchase invoice and sales invoice events from NAV to Slack as soon as they are posted, including vendor or customer, invoice amount, and due date.
- Renew NAV webhook subscriptions automatically before they expire, ensuring no event is missed.
- Poll NAV for purchase order changes on a configurable schedule, since purchase orders are not covered by standard NAV webhooks.
- Respect Slack's chat.postMessage rate limit (1 per second per channel) and queue messages to prevent throttling.
Questions
- Why do purchase orders need polling when NAV webhooks are available?
- Microsoft Dynamics NAV's standard webhook system does not include purchase orders in its list of supported entities. ml-connector polls the NAV OData API for purchase order changes on a schedule you set (e.g., every 5 minutes) to deliver those events to Slack. Sales orders and invoices are covered by NAV webhooks, so those are pushed as soon as they are created or posted.
- What happens when NAV webhook subscriptions expire?
- NAV webhook subscriptions expire after 3 days. ml-connector monitors the expiry time and renews the subscription automatically before it lapses, so your Slack channels continue to receive invoice and order events without gaps or manual intervention.
- How does ml-connector handle the Slack rate limit for chat.postMessage?
- Slack limits chat.postMessage to 1 call per second per channel. If ml-connector needs to post multiple messages to the same channel within a short window (e.g., multiple invoices posted at once), it queues the messages and delivers them at the rate limit, preventing throttling and ensuring all events reach Slack.
Related integrations
More Microsoft Dynamics NAV integrations
Other systems that connect to Slack
Connect Microsoft Dynamics NAV and Slack
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started