ml-connector
Oracle NetSuiteMicrosoft Teams

Oracle NetSuite and Microsoft Teams integration

Oracle NetSuite manages your general ledger, vendors, purchase orders, and invoices. Microsoft Teams coordinates your finance team's communication and approvals. Connecting the two keeps your team informed about key financial transactions without context switching. Purchase order approvals, vendor bill alerts, and payment notifications flow from Oracle NetSuite into Teams channels where your team can see them, comment, and act. ml-connector handles the OAuth 2.0 handshake on both sides and posts on a schedule you control.

How Oracle NetSuite works

Oracle NetSuite exposes vendors, purchase orders, vendor bills, invoices, invoice lines, GL accounts, employees, departments, classifications, and locations through the SuiteTalk REST Web Services API, authenticated with OAuth 2.0 client credentials (the recommended modern method) or token-based authentication (legacy, deprecated 2026.1). OAuth tokens are valid for 60 minutes with no refresh token, so each request may require a fresh auth call. Event Subscriptions provide webhooks for record create, edit, and delete on supported types including vendor bills and purchase orders, without native HMAC signature validation. Alternatively, ml-connector polls via SuiteQL for bulk or historical reads. Sandbox accounts require the underscore-SB suffix in the account ID.

How Microsoft Teams works

Microsoft Teams is accessed through Microsoft Graph REST API and authenticated via OAuth 2.0 client credentials in Azure AD, requiring a tenant ID, client ID, and client secret. Teams exposes teams, channels, chat messages, users, and chat as resources, but contains no native invoice, purchase order, or vendor objects. Change notifications are available via Graph webhooks that expire in 3 days and must be renewed. Webhook validation requires returning a token within 10 seconds; subscription validation uses clientState matching rather than HMAC signature. All application permissions require Azure AD admin consent. Teams serves as a notification and approval surface only, not a data source.

What moves between them

The main flow runs from Oracle NetSuite into Microsoft Teams. New vendor bills, purchase orders, and invoices in Oracle NetSuite are read on a schedule and posted as messages into specified Teams channels with a summary of key fields: vendor name, amount, account code, and due date for bills; vendor, line-item totals, and delivery date for purchase orders. Employee and department records can also trigger notifications when they change. The flow is read-only into Teams; Microsoft Teams is not queried for financial data, only written to for alerts and approvals.

How ml-connector handles it

ml-connector stores both the Oracle NetSuite OAuth 2.0 client credentials and Microsoft Entra ID tenant credentials encrypted in its database. On the Oracle NetSuite side, it exchanges client credentials for a 60-minute OAuth token and validates it is still fresh before each API call, re-authenticating if needed. It polls SuiteQL for vendor bills, purchase orders, and invoices at intervals you define. For each new or updated record, it extracts the fields needed for a Teams message: vendor or customer name, amount, due date, account, and line items. It then authenticates to Microsoft Graph using the Entra ID client credentials, identifies the target Teams channel by its team ID and channel ID, and posts the message via the chatMessage REST endpoint. If a Teams API call returns a rate-limit or transient error, ml-connector backs off and retries. Every record read from Oracle NetSuite and every message posted to Teams is logged with timestamps and payloads for auditing.

A real-world example

A mid-market B2B services company runs Oracle NetSuite for procurement and finance, with a finance team of five people across two offices. Before the integration, the accounts payable person approved vendor bills in Oracle NetSuite, then had to message the team lead on Teams or send an email to notify them of approval. Purchase order receipts were not communicated to operations, leading to delivery delays and invoice mismatches. With Oracle NetSuite and Microsoft Teams connected, approved vendor bills and new purchase order receipts appear automatically in a dedicated Teams channel, visible to the whole team. The approvals stay in Oracle NetSuite, but the team's workflow is faster because they see alerts where they already collaborate, reducing manual notifications and context switching.

What you can do

  • Post new vendor bills and purchase orders from Oracle NetSuite to Microsoft Teams channels as summaries with amount, vendor, and due date.
  • Route invoice notifications to Teams based on invoice status or GL account, keeping finance teams informed.
  • Notify Teams when employee records are added or changed in Oracle NetSuite, supporting workflow approvals.
  • Authenticate Oracle NetSuite via OAuth 2.0 client credentials and Microsoft Teams via Azure AD with automatic token refresh.
  • Audit every record read from Oracle NetSuite and every message posted to Teams with full payload history.

Questions

What Oracle NetSuite records can be sent to Microsoft Teams?
ml-connector reads vendor bills, purchase orders, invoices, customers, and employee records from Oracle NetSuite and posts summaries to Teams channels. The specific fields included (vendor name, amount, due date, GL account, line items) are configurable per customer. Only read-only operations are performed on Oracle NetSuite; no updates flow from Teams back to the ERP.
How does authentication work for the two systems?
ml-connector stores Oracle NetSuite's OAuth 2.0 client credentials and refreshes the token before each API call, since Oracle NetSuite tokens are valid for 60 minutes only. For Microsoft Teams, it uses Azure AD client credentials to authenticate to Microsoft Graph. Both credential sets are encrypted in the database and never logged.
How often do messages appear in Microsoft Teams?
ml-connector polls Oracle NetSuite on a schedule you define, typically every 15 minutes, 1 hour, or 4 hours depending on your approval velocity. When new or updated records are found, messages appear in Teams within seconds. You can adjust the polling interval and choose which record types trigger notifications.

Related integrations

Connect Oracle NetSuite and Microsoft Teams

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

Get started