ml-connector
Microsoft Dynamics GPSlack

Microsoft Dynamics GP and Slack integration

Microsoft Dynamics GP holds your financial records. Slack holds your team conversations. Connecting the two brings purchase and invoice events directly into the channels where purchasing and finance teams work, without requiring anyone to log into Dynamics GP or manually copy-paste approval details. New invoices, approved purchase orders, and GL journal entries post to Slack as they change state, with full details attached so the team can review and act without leaving Slack.

How Microsoft Dynamics GP works

Microsoft Dynamics GP is an on-premises ERP that serves small to mid-sized businesses for financials, payables, receivables, purchasing, and inventory. It exposes vendors, payables invoices, purchase orders, GL accounts, GL journal entries, and customers through REST Service Based Architecture (SBA) endpoints at https://<server>:<port>/GPService/Tenants(<TenantName>)/Companies(<CompanyName>)/<Module>/<Resource>, or through SOAP Web Services at http://<server>:<port>/Dynamics/GPService/GPService?singleWsdl. Authentication requires a Windows domain account created by the customer, as Dynamics GP uses Negotiate/Kerberos or NTLM authentication tied to Active Directory and supports no OAuth2 or cloud auth methods. Dynamics GP does not support webhooks, so data is read by polling with ModifiedDate filters; postings are advisory only once a document is posted to the general ledger, making GL journal entries immutable.

How Slack works

Slack is a cloud messaging platform that delivers workspace communication through REST and Events APIs at https://slack.com/api/{method}. Authentication uses OAuth2 with non-expiring bot tokens (xoxb- prefix) and optionally user tokens (xoxp- prefix), passed via Bearer header on each request. Slack can receive event push notifications at a registered HTTPS endpoint, with signature verification required via HMAC-SHA256 on the X-Slack-Signature header and a 5-minute timestamp window. Slack enforces rate limits of 1 message per second per channel and expects all webhook endpoints to return HTTP 2xx within 3 seconds; unacknowledged requests are retried up to 3 times with exponential backoff.

What moves between them

The integration polls Dynamics GP on a configurable schedule (typically daily or on-demand) for payables invoices, purchase orders, GL journal entries, and vendor records. For each new or modified record, ml-connector posts a structured message to a designated Slack channel with the key details (vendor name, invoice number, amount, due date for invoices; PO number, line count, total amount for purchase orders). Messages include an approval status or posting state so the team knows what action, if any, is needed. No data flows from Slack back to Dynamics GP; all writes are read-only pull from the ERP.

How ml-connector handles it

ml-connector stores the Windows domain credentials for Dynamics GP in encrypted vault and presents them on each REST or SOAP call using Negotiate authentication. For Slack, it stores the OAuth2 bot token encrypted and passes it as a Bearer header on every api.postMessage or conversations.list call. The connector polls Dynamics GP at the customer-defined interval using the SBA REST endpoint with ModifiedDate filters to find only records that have changed since the last poll, respecting the requirement that posted GL journal entries are read-only and unposted transactions are excluded from the visibility check. On the Slack side, it constructs rich message blocks with vendor details, posting state, and linked references, then posts to the target channel while respecting the 1-post-per-second rate limit by queuing multiple invoices or orders into a single message when necessary. If Dynamics GP returns a 401 (auth failure), ml-connector refreshes the domain session; if Slack returns 429 (rate limit), it backs off and retries. Every record move carries an audit trail with the timestamp, source record ID, and Slack message reference ID.

A real-world example

A mid-sized manufacturing company runs Dynamics GP for accounts payable and general ledger on Windows Server, and uses Slack as the team communication hub. The AP team receives hundreds of invoices per week from dozens of vendors, and before the integration, someone had to check Dynamics GP manually to find invoices awaiting approval, then message the team in Slack with the details. With Dynamics GP and Slack connected, each new invoice automatically posts to the accounts-payable channel as soon as it is received and unposted, showing the vendor, amount, due date, and approval hold status. The team now sees all pending invoices in their chat window, can discuss issues or questions right there, and never miss an approval deadline because it was buried in the ERP.

What you can do

  • Post new and updated payables invoices to Slack with vendor, amount, due date, and posting status.
  • Notify the team when purchase orders are created, approved, or receipt is complete, with line count and total amount.
  • Send GL journal entries to designated Slack channels when they are posted, for financial audit trails and real-time ledger visibility.
  • Authenticate Dynamics GP using Windows domain credentials and Slack using OAuth2 bot tokens, both stored encrypted.
  • Poll Dynamics GP on a schedule, handle rate limits, and maintain a full audit trail of every message posted to Slack.

Questions

Does Slack receive all Dynamics GP records or just specific document types?
The integration polls Dynamics GP for payables invoices, purchase orders, GL journal entries, and vendors, posting messages only for the document types you configure. You choose which channels receive which types and can filter by vendor, amount threshold, or posting status. Slack does not receive internal notes or unposted drafts unless you explicitly enable them.
What happens if the Windows domain account used for Dynamics GP authentication fails or expires?
If Dynamics GP returns a 401 error, ml-connector logs the failure and skips that poll cycle while alerting you via the audit log. The Windows domain account must be created and maintained by your IT team; ml-connector will resume polling once the account is restored or credentials are updated in the encrypted vault.
Can Slack send data back into Dynamics GP or trigger approvals?
No. The integration is read-only from Dynamics GP to Slack. Slack messages are notifications only; approvals and updates must be made in Dynamics GP itself. This design keeps the ERP as the system of record and avoids complex two-way sync issues.

Related integrations

Connect Microsoft Dynamics GP and Slack

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

Get started