# How to add Microsoft Teams to Sage X3

> Source: https://netray.co/integrations/sage-x3-microsoft-teams
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Integrations

## 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.

## System

Sage X3

## Capability

microsoft-teams

## Intro

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.

## Use Cases

### Purchase order approval cards

**Description:** 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

**Description:** 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

**Description:** 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

**Description:** 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

**Description:** 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.

## System 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

### Pick the pattern

**Detail:** Power Automate with HTTP actions suits simple alerts. A Bot Framework or Teams app suits interactive approvals and chat lookups.

### Register an Entra ID app

**Detail:** 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.

### Map identities

**Detail:** Keep a table linking Entra user principal names to X3 user codes. Refuse actions from unmapped users.

### Publish narrow X3 services

**Detail:** Expose one service for read-document-summary and one for record-decision, scoped to the right X3 folder and function profile.

### Send adaptive cards

**Detail:** Build cards with facts, line preview, and Action.Submit buttons carrying the document key and a one-time token.

### Handle the callback and update the card

**Detail:** 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.

**Steps:**

- 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.

**Steps:**

- 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.

## 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

- 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.

## Options

### Power Automate flows with HTTP calls

**Fit:** Alerts and simple approvals with a Microsoft-skilled admin.

**Effort:** A few days per flow; limited for complex identity mapping.

### Custom Teams bot built in-house

**Fit:** Teams with .NET or Node developers and an X3 developer.

**Effort:** Typically 3 to 6 weeks for approvals and lookups.

### Partner build such as Netray with an X3 partner

**Fit:** Approvals plus grounded Q&A over X3 on-prem.

**Effort:** Scoped by workflow; read-only lookups first.

## 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.

## Faq

### Is there a standard Sage X3 and Teams connector?

**Answer:** 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?

**Answer:** 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?

**Answer:** 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?

**Answer:** 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?

**Answer:** 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.

## Search terms

sage x3 microsoft teams integration, teams for sage x3, sage x3 teams bot, sage x3 approvals in teams, sage x3 adaptive cards, sage x3 power automate, sage x3 entra id sso, sage x3 teams notifications, sage x3 workflow teams

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
