ml-connector
PlexMicrosoft Teams

Plex and Microsoft Teams integration

Plex powers manufacturing finance and operations. Microsoft Teams is where your team collaborates and stays informed. Connecting the two routes Plex procurement events into Teams channels, so purchase orders, received invoices, and payment milestones appear as timely notifications rather than requiring manual email forwarding or spreadsheet updates. Your team stays in sync without leaving Teams.

How Plex works

Plex exposes purchase orders, invoices, payments, suppliers, and general ledger accounts through REST JSON APIs via Plex Connect, authenticated with OAuth 2.0 client credentials. A legacy SOAP Web Services layer with Basic authentication and company code (PCN) provides an alternative. Plex does not offer native webhooks, so connectors poll the REST API on a configurable interval, filtering by modified_date or created_date, or pull bulk extracts through scheduled SFTP DataSources. Role-based access control is enforced, so the integration user must have the correct Plex role assigned to return data rather than 403 errors.

How Microsoft Teams works

Microsoft Teams is accessed via Microsoft Graph REST API, which provides chat messaging and channel management. Authentication uses OAuth 2.0 client credentials with a Microsoft Entra ID tenant, client ID, and client secret. Microsoft Graph webhooks support change notifications with expiry windows (3 days for most resources, 1 hour for presence), and subscriptions must be renewed before expiry. Teams itself has no native invoice, purchase order, or general ledger objects, so the integration posts procurement events as formatted chat messages to channels and direct messages to users.

What moves between them

Data flows one direction: Plex to Microsoft Teams. ml-connector polls Plex REST API every 5 to 15 minutes for newly created or modified purchase orders, invoices, and payment records. For each event, it formats a message card with key details (PO number, supplier, amount, invoice number, payment date) and sends the message to a registered Teams channel. High-priority or exception records can be routed to specific channels or escalated to direct messages to team members.

How ml-connector handles it

ml-connector stores Plex OAuth credentials and Microsoft Entra ID client secrets encrypted, and refreshes tokens when API calls return 401. It polls Plex using the modified_date filter to avoid re-processing records, and uses unique fields like PO number or invoice ID to deduplicate within Teams. Microsoft Graph subscriptions are tracked and renewed every 2 days to ensure webhook notifications stay active, though polling is the primary mechanism for Plex changes since Plex does not offer webhooks. When Plex rate-limits a poll request with HTTP 429, ml-connector backs off exponentially before retrying. Every record includes an audit trail and can be replayed to Teams if a message fails to post.

A real-world example

A mid-sized automotive parts supplier runs Plex for manufacturing finance and purchasing, and uses Microsoft Teams for daily collaboration across procurement, quality, and operations. Before the integration, the procurement team manually reviewed Plex daily to find new purchase orders and invoice receipts, then copied the details into Teams to keep operations informed. With Plex and Teams connected, new POs and invoices appear automatically in the procurement channel as message cards, including supplier name, amount, and promised delivery date. The operations team sees status updates in real time without waiting for daily emails or spreadsheets.

What you can do

  • Poll Plex purchase orders, invoices, and payments on a schedule you control, and send them as formatted messages to Teams channels.
  • Route high-priority or exception records like past-due invoices to specific channels or escalate them to direct messages.
  • Deduplicate records within Teams using unique Plex IDs so the same PO never triggers duplicate messages.
  • Authenticate Plex with OAuth 2.0 client credentials and Microsoft Teams with Entra ID client credentials, and handle token refresh automatically.
  • Keep Microsoft Graph webhook subscriptions fresh with automatic renewal every 2 days to maintain event delivery.

Questions

Does this integration move financial data into Teams, or just send notifications?
It sends notifications only. Teams has no native objects for invoices, purchase orders, or general ledger accounts, so ml-connector formats Plex procurement records as message cards and posts them to channels. Your team sees the data in Teams, but Teams remains a collaboration and messaging platform, not a data store.
How does ml-connector handle Plex not having native webhooks?
ml-connector polls the Plex REST API on an interval you set, typically every 5 to 15 minutes, filtering by modified_date to find new and updated records. This ensures Teams messages are sent within minutes of a Plex event without requiring Plex to push notifications, and the polling approach works around Plex's poll-only architecture.
What happens if the Microsoft Graph webhook subscription expires?
Microsoft Graph subscriptions expire every 3 days and must be renewed to keep receiving webhook notifications. ml-connector renews subscriptions automatically every 2 days, so the connection stays active. If a renewal fails, polling continues to bridge the gap and ensure Teams messages still send.

Related integrations

Connect Plex and Microsoft Teams

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started