How to add Microsoft Teams to QAD Adaptive ERP
Short answer
Build a Teams bot and incoming workflows that sit between QAD and your Microsoft 365 tenant. QAD events become adaptive cards in plant and department channels, approvals are answered inside Teams, and decisions post back to QAD through QXtend or web services. Entra ID identifies the person so QAD roles still apply.
Most QAD users already spend their day in Teams: planners, buyers, quality engineers and plant managers. Yet the work that matters, such as a PO waiting for approval, a stock-out on a line item or a held lot, sits inside QAD screens that nobody opens until someone chases them.
Teams is a good fit for the alerting and approval layer because it already has identity, mobile apps, channels with history, and adaptive cards that can carry buttons. It is a poor fit for heavy data entry. The right design keeps QAD as the system of record and makes Teams the place where decisions are requested and recorded.
Because QAD Adaptive ERP is often hosted in a different network or by a hosting provider, the practical design question is how the Teams bot reaches QAD without opening the database to the internet.
What teams use it for
Purchase order and requisition approvals
Send an adaptive card to the approver with supplier, amount, cost center and item lines, with Approve, Reject and Ask question actions that return to QAD.
Plant channel alerts
Post late work orders, held lots, failed inspections or negative on-hand into the plant channel, so the right supervisor sees it in the same place as shift chat.
Ask QAD in a chat
A bot that answers questions such as what is open on PO 4500123 or where is lot L2301 using read-only QAD queries and the user's role.
Engineering change and deviation notices
Notify design, quality and purchasing when an item or BOM change is released, and collect acknowledgement with timestamps.
Month-end close nudges
Remind owners of open receipts not invoiced, unposted journals or unreconciled accruals, with a link or button to the right list.
Customer escalation rooms
Create a Teams channel for a critical order, populate it with sales order, shipper and work order status, and refresh it on events.
QAD Adaptive ERP integration surface
- Progress OpenEdge database tables for reads (po_mstr, pod_det, wo_mstr, ld_det, so_mstr and related), reachable through SQL-92 over ODBC or JDBC from a server inside the network.
- QXtend or the QAD Enterprise Platform integration services for writes, so an approval executes the same ABL logic as a screen. Names and endpoint formats vary by release.
- QAD REST and web service endpoints where your version publishes them, useful for item, order and inventory reads that respect business rules.
- QAD workflow and approval features (requisition or PO approval levels, depending on configuration) hold the authoritative approver list. Teams should call into this rather than keep a parallel list.
- Microsoft side: Azure Bot Service or the Teams SDK, adaptive cards, Power Automate Workflows for simple alerts, Microsoft Graph for channel creation, and Entra ID app registrations.
- Network pattern: an on-premises data gateway or a service running in your network that connects out to Azure, so QAD does not accept inbound internet traffic.
How it works
- 1
Decide bot versus workflow
For one-way alerts, a Power Automate workflow posting a card to a channel is enough. For approvals and questions, you need a bot that receives card actions and calls back.
- 2
Register the app in Entra ID
Create the bot and app registration, set single-tenant access, define the Teams app manifest and get tenant admin consent. Decide whether it is personal, channel or both.
- 3
Map Teams users to QAD users
Match Entra ID user principal names or employee IDs to QAD user IDs so the bot can enforce QAD domain and approval rules per person. Keep this mapping in a controlled table.
- 4
Build the QAD connector
A service inside your network with a read-only database login for queries and an integration user for QXtend posts. Wrap each action as a named, narrow function, not free SQL.
- 5
Design the cards
Create adaptive card templates for approvals, alerts and lookups. Keep identifiers in the card payload so the bot can verify that the action matches a pending request.
- 6
Wire events and polling
Use QAD events from QXtend where available, otherwise poll status fields every minute or two. De-duplicate by document number and status so people do not get repeats.
- 7
Pilot with one plant
Start with approvals and two alert types for one site, measure response times, then add more channels once the card design is trusted.
Example flows
PO approval in Teams
Trigger: A purchase order reaches an approval level in QAD.
- The connector reads PO header, lines, supplier and the next approver.
- The bot sends the approver an adaptive card with a PDF link and key lines.
- The approver taps Approve; the bot checks the identity and the pending state.
- The connector posts the approval to QAD and the PO moves to the next status.
- The buyer gets a confirmation message in the buyer channel.
Result: Approval time drops from days waiting for someone to log in, to minutes on a phone.
Late work order alert
Trigger: A work order passes its due date with remaining quantity.
- Scheduled query lists late orders by line and supervisor.
- The bot posts one summary card per line channel each morning.
- Supervisors reply with a reason code from a dropdown.
- Reasons are stored with the work order reference for the weekly review.
Result: Late order causes become data instead of anecdotes.
Inventory question from a buyer
Trigger: A buyer asks the bot about on-hand for an item.
- The bot resolves the item number and the user's QAD site access.
- A read-only query returns on-hand by site and location, plus open POs.
- The bot replies with a short table and the source query.
Result: Quick answers without opening QAD, scoped to what the person may see.
Keeping data on-prem
Teams is cloud, but the QAD side can stay entirely on-premises. Run the connector inside your network, have it make outbound connections to Azure Bot Service or a relay, and avoid inbound firewall openings to the QAD host. Keep card payloads minimal, with identifiers and short summaries, so full order data does not sit in Teams history unless you choose it. If you add a question-answering bot, host the language model in your own environment and let it call the same narrow QAD functions, so no ERP rows go to a public model API.
Security checklist
- Authenticate users through Entra ID and map them to QAD users before any QAD-backed action runs.
- Verify that every card action refers to a pending request and the approver is still the right person.
- Use separate read-only and write integration accounts, and expose named functions, not raw SQL, to the bot.
- Restrict channel posting for sensitive data such as pricing, and use private channels for commercial alerts.
- Retain an audit table of who approved what and when, in addition to QAD's own history.
Ways to get it done
Power Automate workflows with a small QAD API wrapper
Effort: 1 to 3 weeks for a first set of alerts
Alerts and simple approvals with modest volume, and a Microsoft 365 team comfortable with low-code.
Custom Teams bot with in-house connector
Effort: 4 to 8 weeks for approvals and lookups
You need rich cards, per-user role enforcement and a roadmap of many flows.
Partner build with Netray
Effort: Scoped after discovery
You want a Teams bot plus a private, on-prem model for natural-language questions over QAD, delivered with your QAD consultants.
Pitfalls
- !Keeping a separate approver list in Teams that drifts away from QAD authority levels.
- !Posting too many alerts to a shared channel until people mute it. Start with a few high-value events.
- !Letting the bot run broad SQL so a chat question can scan large transaction tables during production hours.
- !Treating a Teams button as sufficient for high-value commitments without the same controls QAD requires.
- !Forgetting guest users and contractors, who may be in the channel but must not see commercial data.
Frequently asked questions
Is there a standard QAD to Microsoft Teams connector?
Not one that we can state exists for every Adaptive ERP release. Check your QAD version and the QAD ecosystem for connectors. Otherwise the pattern is a bot or Power Automate flow on the Microsoft side and a small service using QXtend or web services on the QAD side.
Can approvals in Teams replace QAD approvals?
They can be the interface for them. The decision should still be executed in QAD so authority levels, history and audit stay in one place. The Teams card is a front end, not a second source of truth.
Does our QAD server need to be reachable from the internet?
No. Use a connector inside your network that connects out to Azure. Only the bot endpoint is public, and it contains no QAD credentials. That works for on-premises and hosted QAD environments.
Can the bot answer free-form questions about inventory or orders?
Yes, if you add a language model that calls narrow, read-only QAD functions. Run the model privately if the data is sensitive. Always show the query or source record so people can check the answer.
How long does a pilot take?
Alerts into one channel can be live in about a week. A bot with approvals for one site usually takes a few weeks including Entra setup, card design, user mapping and testing with real approvers. Wider rollout is mostly change management.
Want Microsoft Teams working on your QAD Adaptive ERP?
A free 30 minute assessment: we map the integration path for your version and setup, and where it should run.
Get a free assessment