Sage X3 and Microsoft Teams integration
Sage X3 runs finance, procurement, and inventory. Microsoft Teams coordinates work across your organization. Connecting the two puts critical procurement and accounting events in front of the teams that act on them. New purchase orders, supplier invoice exceptions, and high-value GL postings notify the right channels immediately, keeping approvers and accounting staff informed without leaving their chat workspace. ml-connector handles the different authentication schemes on each side and ensures notifications are reliable and auditable.
What moves between them
The main flow moves from Sage X3 into Microsoft Teams. ml-connector polls Sage X3 at a regular cadence for new or updated purchase orders, supplier invoices, and high-value GL postings. When records match a configured rule (by supplier, invoice amount, GL account, or posting date), ml-connector composes a notification and posts it to a designated Teams channel. Notifications include key details such as PO number, supplier name, invoice amount, and GL account, formatted to be scannable in chat. The flow is one-directional; Teams is used only for notification, not as a source of data to write back to Sage X3.
How ml-connector handles it
ml-connector stores Sage X3 credentials encrypted and handles token refresh automatically every 5 minutes when calling the GraphQL or REST APIs. On the Teams side, it stores the OAuth2 client credentials and tenant ID encrypted, obtains an Entra ID bearer token at startup and refreshes it when calls return 401. The polling cadence is tunable per customer; a typical configuration polls Sage X3 every 5 to 30 minutes depending on transaction volume. Each poll query filters by updatedDate to capture only new or changed records since the last read, reducing API load. Rules are defined in a configuration that matches purchase orders by supplier or amount threshold, invoices by supplier or due date, and GL entries by account or amount. When a record matches, ml-connector constructs a Teams message card with the transaction details and posts it to the channel. Every notification is audited with a timestamp, the record that triggered it, and the Teams message ID so notifications can be traced if approval or escalation is needed.
A real-world example
A mid-sized distributor with 80 employees uses Sage X3 for procurement and finance and Microsoft Teams for company-wide collaboration. The finance team needs visibility into large supplier invoices and POs that are pending approval, while the procurement team wants alerts on new POs awaiting confirmation. Before the integration, the team manually checked Sage X3 multiple times a day or relied on email forwarding, which created notification lag and scattered communication. With Sage X3 connected to Teams, every PO over a threshold automatically posts to a procurement channel, and every supplier invoice flagged for review posts to the finance channel. The team no longer checks Sage X3 repeatedly; instead, they handle exceptions as they arrive in Teams, and the audit trail captures who saw each alert and when.
What you can do
- Post Sage X3 purchase orders to Microsoft Teams channels when thresholds are met (supplier, amount, date).
- Alert Teams channels on supplier invoice exceptions or invoices due within a specified window.
- Notify Teams on high-value GL postings to critical accounts so the accounting team is kept in the loop.
- Automatically refresh OAuth2 tokens for both Sage X3 GraphQL/REST and Microsoft Entra ID without downtime.
- Maintain a complete audit trail of every notification sent, including the source record, the rule that triggered it, and the Teams message ID.
Questions
- Does ml-connector sync data back from Teams to Sage X3?
- No. The integration is one-directional: ml-connector reads purchase orders, invoices, and GL data from Sage X3 and sends notifications to Teams channels. Teams is used as a notification surface and communication hub, not as a data source. Approvals or decisions made in Teams must be acted upon in Sage X3 directly.
- How does the integration handle the 5-minute token expiry on Sage X3?
- ml-connector automatically refreshes the Sage X3 OAuth2 bearer token every 5 minutes before it expires and caches the new token for the next API call. If a call returns a 401 Unauthorized, the token is refreshed immediately on the next retry. This prevents interruptions and keeps the polling schedule intact.
- What rules can I set up to control which Sage X3 records trigger Teams notifications?
- Rules are configured by record type and criteria. Purchase orders can be filtered by supplier, amount threshold, or creation date. Supplier invoices can be filtered by supplier, amount, or due date window. GL entries can be filtered by account number or posting amount. You can create multiple rules per channel, so different teams receive different alerts based on their responsibilities.
Related integrations
More Sage X3 integrations
Other systems that connect to Microsoft Teams
Connect Sage X3 and Microsoft Teams
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started