How to add Microsoft Teams to Sage X3
Short answer
Build a Teams bot or Power Automate flow that receives X3 events, posts adaptive cards, and calls X3 REST or SOAP web services when someone clicks Approve. Authenticate Teams users with Entra ID and map them to X3 users so approvals respect X3 rights.
Many Sage X3 sites already run Microsoft 365, so Teams is where managers, buyers and finance staff spend the day. X3 itself still asks them to open Syracuse, find the notification, and act. Approvals sit in inboxes while a PO or an invoice waits.
Teams can be the front door: an adaptive card with the key facts and two buttons, a channel for exceptions, and a bot that answers simple lookups. The hard part is not Teams, it is mapping identities and keeping approval rights identical to what X3 enforces.
This page lays out the integration path with X3's actual surfaces: workflow rules, web services and the Syracuse server.
What teams use it for
Purchase order approval cards
An X3 purchase order that needs approval posts an adaptive card to the approver, showing supplier, total and top lines. Approve or Reject calls back to X3.
Supplier invoice exception channel
Invoices blocked on price or quantity variance from three-way matching are posted to an AP channel with the invoice number and variance, and AP clicks through to resolve.
Production shortage alerts
When a work order (MFGHEAD) is flagged short on components, post an alert to the planner channel with the item and requirement date.
Credit hold release requests
A held sales order generates a card to the credit manager. Release or keep-on-hold is recorded with a reason comment.
Quick lookups in a team chat
Ask the bot for item stock by site or the status of an order. Answers are read-only and shaped by the asker's X3 rights.
Sage X3 integration surface
- Workflow and notification: X3 workflow rules can trigger on events such as a document needing validation; the trigger can call a subprogram that posts to an HTTP endpoint (names and setup vary by version).
- Web services: SOAP through the Syracuse web services pool (CAdxWebServiceXmlCC) and REST/SData for read and update. A Teams card button should call a service you publish for just that action.
- Syracuse authentication: X3 users can be linked to SSO/SAML or OAuth identity providers on current versions, which makes mapping an Entra ID user to an X3 user straightforward in principle.
- Database fallback: tables such as PORDER, PORDERQ, PINVOICE and MFGMAT can be read for lookups, but writes should always go through services.
- Mail-based alerts: X3 can already send notification mail, and a Teams channel email address or Power Automate trigger can catch those while you build the proper path.
How it works
- 1
Pick the pattern
Power Automate with HTTP actions suits simple alerts. A Bot Framework or Teams app suits interactive approvals and chat lookups.
- 2
Register an Entra ID app
Give the bot an app registration. Decide whether card actions run as the clicking user (mapped to an X3 user) or a service account with the decision recorded as a comment.
- 3
Map identities
Keep a table linking Entra user principal names to X3 user codes. Refuse actions from unmapped users.
- 4
Publish narrow X3 services
Expose one service for read-document-summary and one for record-decision, scoped to the right X3 folder and function profile.
- 5
Send adaptive cards
Build cards with facts, line preview, and Action.Submit buttons carrying the document key and a one-time token.
- 6
Handle the callback and update the card
Validate the token, call X3, then update the card to show the outcome so nobody clicks twice.
Example flows
PO approval in Teams
Trigger: A purchase order passes into the approval step.
- Workflow rule notifies the middleware with the PO number.
- Middleware reads PO header and lines and builds an adaptive card.
- Approver clicks Approve; Entra identity is mapped to an X3 user.
- Decision is posted through the X3 service; the card is replaced with a confirmation.
Result: The PO moves forward without anyone opening Syracuse, and X3 holds the audit trail.
Variance alert to AP
Trigger: A supplier invoice fails matching tolerance.
- Middleware polls blocked invoices or receives the workflow event.
- It posts a card with invoice, PO price and received quantity.
- AP uses a link to open the invoice in X3 or replies with a comment.
Result: Blocked invoices surface in minutes rather than at month end close.
Keeping data on-prem
Teams is cloud, X3 may not be. Keep X3 behind the firewall and run a small relay in your DMZ or a private Azure VNet: the bot receives Teams traffic, and an internal connector reaches X3 web services. For on-prem sensitive data, show only identifiers and short summaries in cards and let the user click into X3 for detail. If you add natural-language lookups, run the language model on your own GPUs so order and pricing data are not sent to a public AI service.
Security checklist
- Map Entra ID users to X3 users and enforce X3 function profiles on every action.
- Sign card action payloads with a short-lived token tied to the document key and user.
- Keep sensitive values like cost and margin out of cards unless the channel is restricted.
- Use a conditional access policy for the bot's app registration and rotate secrets or use certificates.
- Log approvals in X3 as well as in Teams.
Ways to get it done
Power Automate flows with HTTP calls
Effort: A few days per flow; limited for complex identity mapping.
Alerts and simple approvals with a Microsoft-skilled admin.
Custom Teams bot built in-house
Effort: Typically 3 to 6 weeks for approvals and lookups.
Teams with .NET or Node developers and an X3 developer.
Partner build such as Netray with an X3 partner
Effort: Scoped by workflow; read-only lookups first.
Approvals plus grounded Q&A over X3 on-prem.
Pitfalls
- !Letting the bot approve as a single super-user hides who actually decided.
- !Cards that include full order detail can leak data into channels with wide membership.
- !Duplicate clicks or retries create double postings unless the callback is idempotent.
- !Workflow rules differ by X3 version; test the trigger on your exact patch level.
Frequently asked questions
Is there a standard Sage X3 and Teams connector?
Not one that covers interactive approvals out of the box in most versions. You typically build with Power Automate or a Teams bot calling X3 web services, or look for a reseller add-on and check version support.
Can approvals in Teams respect X3 permissions?
Yes if you map each Entra ID user to an X3 user and call services under a profile that matches. If you use one service account, record the clicking user as an audit comment and accept the weaker model.
Does Sage X3 need to be in the cloud for this?
No. An on-premises X3 works with a relay in your DMZ or private network. Teams reaches the relay; the relay reaches X3 internally.
Can the bot answer questions about stock or orders?
Yes, with read-only services or a governed query layer. Keep answers scoped to the asker's rights and show which record the answer came from.
How is this different from X3 email notifications?
Email is passive and gets buried. A card puts the decision where the user already works and records the outcome, though the underlying X3 workflow rule is often the same trigger.
Want Microsoft Teams working on your Sage X3?
A free 30 minute assessment: we map the integration path for your version and setup, and where it should run.
Get a free assessment