Microsoft Dynamics GP and Microsoft Teams integration
Microsoft Dynamics GP handles your financials, payables, and inventory on-premises. Microsoft Teams keeps your team in constant communication. Connecting the two sends invoice and purchase order notifications to Teams channels, routes approvals to the right people, and logs those decisions back into Dynamics GP so your financial records reflect who approved what and when. No manual email forwarding, no lost approvals, no disconnected audit trail.
What moves between them
Records flow from Dynamics GP to Teams. ml-connector polls Dynamics GP on a schedule (typically daily or on-demand) for unposted payables invoices, purchase orders, and invoices pending approval, then posts formatted summaries to designated Teams channels. When a team member approves or rejects an item in Teams (or via a thread reply), ml-connector reads that response and updates the transaction status back in Dynamics GP, marking it as approved or rejected. GL journal entries and GL accounts are read from Dynamics GP to provide cost center and account context in the Teams notification.
How ml-connector handles it
ml-connector stores the Windows domain account credentials encrypted and presents them on every Dynamics GP call using Negotiate or NTLM authentication. For Teams, it authenticates using OAuth2 client credentials against Microsoft Entra ID and obtains a bearer token that refreshes when it expires. The integration polls Dynamics GP's REST SBA endpoint (or SOAP Web Services if SBA is not available) using ModifiedDate filters to retrieve only changed records since the last poll. Each record is formatted into a Teams message and posted to a pre-configured channel. ml-connector tracks which records have been notified and stores the Dynamics GP document number and line number in the Teams message as metadata, so when a team member replies with an approval code or status, ml-connector can match the response back to the exact invoice or PO. Write operations return to Dynamics GP only if the target is unposted; if a record transitions to posted status while waiting for approval, ml-connector logs the rejection and does not write. Polling intervals and channel mappings are customer-configurable.
A real-world example
A mid-market manufacturing company runs Dynamics GP for AP and inventory. Each week, hundreds of supplier invoices and purchase orders arrive and queue for approval by regional plant managers and the finance director. Before the integration, approvers forwarded invoices through email, replies were scattered across inboxes, and finance had no reliable way to know which invoices were approved and which were still pending. Month-end close involved pulling approval emails from six months of archive and matching them manually to POs and invoices. With Dynamics GP and Teams connected, new invoices appear automatically in dedicated Teams channels sorted by plant and cost center. Approvers see the full invoice image and cost details in a single thread, reply with Approve or Reject, and their decision is instantly recorded in Dynamics GP. Finance runs month-end close from a complete and audited approval list in Dynamics GP, with no email archive to search.
What you can do
- Poll Dynamics GP for unposted payables invoices, purchase orders, and receivables invoices on a schedule and post summaries to Teams channels.
- Route approvals from Teams back to Dynamics GP, recording approver identity and timestamp on each transaction.
- Authenticate to Dynamics GP using Windows domain credentials and to Teams using OAuth2 client credentials, bridging on-premises and cloud identity models.
- Organize notifications by Teams channel, cost center, and vendor so approvers see only the items relevant to their role.
- Maintain a full audit trail of who approved what, when, and from which channel thread, all queryable in Dynamics GP GL and audit logs.
Questions
- What if my Dynamics GP instance does not have Service Based Architecture (SBA) enabled?
- ml-connector can use SOAP Web Services instead. SBA is available in GP 2015 and later, but many installations run SOAP-only. Verify with your customer or GP administrator which endpoint is available before deployment, and ml-connector will route to the appropriate one. SOAP calls use the same Windows Authentication as SBA.
- Can I approve invoices directly from Teams without logging back into Dynamics GP?
- Yes. ml-connector reads approval replies from the Teams channel thread and writes the approval status back to Dynamics GP automatically. Approvers reply in Teams with Approve, Reject, or a hold code, and ml-connector matches the response to the invoice and updates it. Once approval is recorded, the invoice is ready for payment processing in Dynamics GP with no extra steps.
- What happens if an invoice is posted in Dynamics GP after I send it to Teams for approval?
- Dynamics GP does not allow writes to posted (historical) records. If ml-connector detects that an invoice moved from unposted to posted status while waiting for approval in Teams, it rejects the approval write and logs the status change. You can configure the integration to notify approvers that the record was locked and route it to a different workflow.
Related integrations
More Microsoft Dynamics GP integrations
Other systems that connect to Microsoft Teams
Connect Microsoft Dynamics GP and Microsoft Teams
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started