ml-connector
Infor CloudSuiteMicrosoft Teams

Infor CloudSuite and Microsoft Teams integration

Infor CloudSuite manages suppliers, invoices, purchase orders, and general ledger in a single cloud ERP. Microsoft Teams is where your finance team collaborates. Connecting the two brings approval workflows into the channel where your team already works. Invoice and payment notifications appear instantly in Teams, approvers respond in-channel, and their decisions flow back into CloudSuite without re-entry.

How Infor CloudSuite works

Infor CloudSuite is a family of cloud ERPs (Industrial, Financials, Distribution, LN, M3) that exposes finance and supply chain data through the ION API Gateway. All CloudSuite products authenticate with OAuth 2.0 Resource Owner Password Credentials, and each customer instance has a unique base URL extracted from a .ionapi credentials file. Key entities include suppliers, AP invoices, purchase orders, GL accounts, and payments. CloudSuite has no self-service webhooks; integrations poll the API on a schedule or use ION BOD document subscriptions configured by an admin in ION Desk. Rate limits typically range from 100 to 500 requests per minute per client.

How Microsoft Teams works

Microsoft Teams is accessed through the Microsoft Graph REST API using Entra ID OAuth 2.0 client credentials. Teams itself has no invoice, purchase order, or GL objects; it is purely a messaging and collaboration platform. The relevant entities are channels and chat messages. Teams supports Microsoft Graph change notifications via webhooks, which can trigger on message creation or team updates, with subscriptions expiring in 3 days and requiring renewal. All Graph application permissions require Azure AD admin consent.

What moves between them

The integration runs from Infor CloudSuite into Microsoft Teams. When an invoice or purchase order reaches an approval milestone in CloudSuite, ml-connector reads the transaction details from the ION API Gateway and posts a formatted notification card to a designated Teams channel. The card includes amounts, dates, vendor or customer names, and an approval workflow. When an approver responds to the message or card action in Teams, that response is sent to ml-connector's webhook, which updates the approval status in CloudSuite. GL transactions and payments flow as notifications only, with approvers replying in-channel.

How ml-connector handles it

ml-connector stores CloudSuite credentials (OAuth 2.0 client ID, secret, and the .ionapi base URL) and Teams Entra ID credentials encrypted. It polls CloudSuite on a schedule tied to your approval batch cycle, looking for invoices, POs, and payments ready for review. For each record, ml-connector constructs a Teams Adaptive Card with transaction details and approval buttons, posting it to the channel you specify. Teams Graph webhooks validate the notificationUrl with a GET-style POST carrying a validationToken, which ml-connector returns within 10 seconds. When an approver taps Approve or Reject on the card, Teams sends a webhook notification; ml-connector parses the response and updates CloudSuite's approval status via the ION API Gateway. Because CloudSuite's token lifetime is configurable (1 to 24 hours), ml-connector proactively refreshes the bearer token before expiry. It respects rate limits and backs off on 429 responses. Every transaction carries a full audit trail, including the approver's name, timestamp, and the approval decision.

A real-world example

A mid-sized distribution company runs Infor CloudSuite for procurement and finance across three regional offices. Before the integration, the accounts payable team received AP invoice exports by email and held approval calls three times a week. Invoices waited days in a queue for approval, and the team spent time chasing vendors for missing documentation. With Infor CloudSuite connected to Microsoft Teams, invoices post automatically to a dedicated channel the moment they arrive. Approvers see the vendor, amount, invoice date, and PO reference instantly. They approve or request changes in Teams without opening CloudSuite. The vendor documentation is attached to the card, and rejected invoices are flagged for the AP coordinator immediately. Approval cycles drop from days to hours, and the team spends zero time shuffling approvals.

What you can do

  • Post Infor CloudSuite invoices, purchase orders, and payment transactions to Microsoft Teams channels as formatted Adaptive Cards with vendor, amount, and date details.
  • Enable approvers to approve or reject CloudSuite transactions directly from Teams without opening the ERP.
  • Update CloudSuite approval status in real time when an approver responds in Teams, with full audit trail of the decision and approver.
  • Authenticate Infor CloudSuite via OAuth 2.0 and the ION API Gateway, and Teams via Entra ID OAuth 2.0, with proactive token refresh before expiry.
  • Poll CloudSuite on a schedule tied to your approval batch cycle, retry on rate limits, and track every approval transaction end-to-end.

Questions

Does ml-connector pull AP invoice data from Infor CloudSuite or does Teams send data to CloudSuite?
The integration runs primarily from CloudSuite into Teams. ml-connector polls CloudSuite's invoices, POs, and payments on your approval schedule and posts notifications to Teams. When an approver responds in Teams, ml-connector sends the approval decision back to CloudSuite to update the transaction status. CloudSuite data never flows into Teams channels; only formatted approval cards and notifications appear in Teams.
How does the integration handle Infor CloudSuite's per-customer OAuth setup and ION API Gateway base URL?
Each Infor CloudSuite customer receives a .ionapi credentials file with a unique base URL, OAuth token endpoint, client ID, and secret. ml-connector stores these credentials encrypted and uses them to authenticate every request to the ION API Gateway. The token lifetime is configurable per customer (1 to 24 hours), so ml-connector proactively refreshes the bearer token before expiry to avoid sudden 401 errors.
What happens if an approver does not respond to a Teams approval card within a set time?
ml-connector does not enforce a timeout in Teams; instead, your CloudSuite workflow rules determine the escalation. Once an invoice posts to Teams, the approver has unlimited time to respond. If the response never comes, the transaction remains in CloudSuite's approval queue. ml-connector can poll the same transaction again on the next cycle, so a new card can be posted to Teams if you configure that behavior.

Related integrations

Connect Infor CloudSuite and Microsoft Teams

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

Get started