SYSPRO and Microsoft Teams integration
SYSPRO runs purchasing, invoicing, and accounting. Microsoft Teams runs team communication. Connecting them puts critical financial notifications in front of the right people at the right time. Invoice approvals, outstanding purchase orders, and payment deadlines flow from SYSPRO into Teams channels without a separate manual step. Your accounting team sees what needs attention without switching windows, and the full audit trail lives in SYSPRO.
What moves between them
The main flow moves from SYSPRO into Teams. ml-connector polls SYSPRO OData for new or recently modified invoices, purchase orders, and postings on a schedule tied to your accounting calendar. When a payable reaches a target status (ready to approve, overdue, scheduled to pay), ml-connector sends a formatted message to a designated Teams channel with the invoice number, supplier name, amount due, and due date. The message includes a link back to SYSPRO for full details. Optionally, ml-connector can watch for Teams message replies to mark invoices as acknowledged in SYSPRO via e.net Business Objects, creating a light approval loop. Supplier and cost center data can flow in both directions so Teams approvers see the right context.
How ml-connector handles it
ml-connector stores the SYSPRO server URL and credentials encrypted and presents them on each OData poll, managing the session token lifecycle. It stores the Microsoft Graph OAuth client ID and secret encrypted and refreshes the Bearer token before expiry. On the SYSPRO side, it polls the ApInvoice and PorMasterHdr tables with $filter on date fields (InvoiceDate, PostDate) and maintains a high-water mark to avoid duplicate notifications. When new invoices are found, ml-connector formats them into Teams chatMessage objects with supplier, amount, and due-date fields, then POST to the target channel via Graph. Teams subscriptions are renewed automatically before the 3-day expiry. SYSPRO session tokens are short-lived and renewed on each poll cycle. Because SYSPRO OData is read-only, approvals flow back through e.net Business Objects writes (if enabled), not through Teams message parsing.
A real-world example
A mid-sized distributor runs SYSPRO for purchasing, invoicing, and accounts payable, with plants in three states. The AP team works remotely and checks SYSPRO daily to find invoices ready for approval and to catch overdue suppliers. Before the integration, the AP manager would email a daily list of action items; invoices were easy to miss, and the team wasted time logging into SYSPRO. Now, ml-connector posts each invoice to a Teams channel the moment it becomes approvable, with the amount, due date, and a direct link to SYSPRO. The team sees alerts in the flow of their daily chat, approvals happen faster, and the days-to-pay metric has improved by 3 to 5 days.
What you can do
- Post payable invoices from SYSPRO to Teams channels when they reach approval status or approach their due date.
- Send purchase order notifications to Teams with PO number, supplier, line count, and status from SYSPRO.
- Authenticate SYSPRO via session token to e.net Business Objects and OData, and Microsoft Teams via OAuth 2.0 Client Credentials.
- Poll SYSPRO on a schedule with automatic token lifecycle management and timestamp filtering to avoid duplicate messages.
- Route notifications to the right Teams channel based on supplier category, cost center, or invoice amount, with full audit trail in SYSPRO.
Questions
- Does ml-connector send messages to Teams based on SYSPRO changes, or only on a schedule?
- ml-connector polls SYSPRO OData on your defined schedule (typically 5 to 15 minutes for payables) rather than relying on outbound webhooks from SYSPRO, which are not available. It tracks timestamps on invoices and purchase orders to find new or modified records and post them to Teams. Microsoft Teams subscriptions can also receive push notifications from Graph when a message is sent, allowing Teams to act as a reply surface if approval feedback is needed.
- What are the authentication requirements on each side?
- SYSPRO requires a server URL, operator code, and password issued through Operator Maintenance; ml-connector exchanges these for a session token on each polling cycle. Microsoft Teams requires OAuth 2.0 Client Credentials (tenant ID, client ID, and client secret) from Azure AD; ml-connector requests and caches Bearer tokens and refreshes them before expiry.
- Can approvals in Teams flow back to SYSPRO as marked invoices?
- SYSPRO OData is read-only, so ml-connector cannot update invoice status from Teams message replies. If approval feedback is needed, ml-connector can post a message with a link back to SYSPRO, and the approver opens SYSPRO to mark the invoice. Alternatively, if e.net Business Objects write access is enabled and SYSPRO permissions allow, ml-connector can POST approval status updates to e.net as a separate action triggered by a Teams message.
Related integrations
More SYSPRO integrations
Other systems that connect to Microsoft Teams
Connect SYSPRO and Microsoft Teams
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started