# How to connect Microsoft Teams to Dynamics 365 Finance and Supply Chain

> Source: https://netray.co/integrations/dynamics-365-fscm-microsoft-teams
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Integrations

## Short answer

Teams is the easiest chat channel to add because both products share Entra ID. Business events or workflow triggers feed Power Automate or a bot, which posts adaptive cards with approve and reject actions and calls back into the ERP through data entities or custom services.

## System

Microsoft Dynamics 365 Finance and Supply Chain

## Capability

microsoft-teams

## Intro

A company on Dynamics 365 Finance and Supply Chain usually already pays for Microsoft 365, so Teams is where approvals, escalations and cross-department questions already happen. The friction is that the ERP workflow inbox lives in a separate browser tab, and approvers tend to look at it once a day or less.

Microsoft provides some of this out of the box: collaboration features that link records to Teams, Power Automate templates for approvals, and Dataverse-based integration through dual-write or virtual entities where deployed. What you still design is which events deserve a message, who sees them, and how a card action becomes a safe write.

This page focuses on what to build around the finance and operations surface, where the cloud and on-premises deployments differ, and where Power Automate is enough versus where a custom bot is justified.

## Use Cases

### Workflow approvals in a chat

**Description:** Send purchase requisition, PO change and journal approval work items to the assigned approver as an adaptive card with key fields and Approve, Reject and Open in ERP actions.

### Planning and MRP exception channel

**Description:** Post planned order exceptions, late supplier confirmations and shortage alerts to a planners channel with a deep link to the master planning workspace for the item.

### Production and quality alerts

**Description:** Business events on production order stoppage, failed quality orders or a held batch notify the right shift channel with the order number and responsible resource.

### Finance close checklist

**Description:** Post a daily summary of unposted journals, unmatched vendor invoices and open bank reconciliations to a close channel, with owners tagged.

### Customer order escalation

**Description:** When a sales order line is at risk (credit hold, backorder), notify the account owner and let them reply with an action card that places or releases a hold under their own permissions.

### Ask-the-ERP in a Teams channel

**Description:** A bot answers read-only questions such as on-hand by warehouse or order status, calling the same entities the user can already see.

## System Surface

Workflow framework: work item assignment can be observed through the workflow tables or surfaced as business events (workflow work item events exist in the catalogue, with names varying by release), then completed through the workflow APIs or a custom service.

Business events for domain actions, delivered to Azure Service Bus, Event Grid, Event Hubs, a generic HTTPS endpoint or Power Automate triggers.

Power Platform: the Finance and Operations connector in Power Automate, plus Dataverse virtual entities and dual-write where your environment has them. Connector action coverage depends on the entities you enable.

OData v4 data entities and custom services for reads and writes, authenticated by an Entra ID app registration mapped to a service user.

Deep links: the client supports URLs with the company (cmp), form name (mi) and filter values, so a card can open the exact record.

In an on-premises deployment, Power Automate reaches the system only through the on-premises data gateway or your own exposed endpoint, and authentication is AD FS rather than Entra ID.

## How It Works

### Pick the trigger per use case

**Detail:** Use a business event where one exists, a workflow assignment hook for approvals, and a scheduled OData delta for everything else. Avoid polling the whole table.

### Choose Power Automate or a bot

**Detail:** Power Automate with the Teams Adaptive Card actions covers one-way alerts and simple approvals. A Bot Framework or Teams SDK bot is needed when you want slash commands, conversational Q&A or multi-step forms.

### Identity and permissions

**Detail:** Use an Entra ID app for system calls, but execute approvals on behalf of the actual approver where the action must be attributed. Map the Teams user principal name to the ERP user and refuse unmapped users.

### Design the card

**Detail:** Show only the fields needed for a decision (vendor, amount, account, requester, due date). Keep the card payload free of attachments and include a link for detail.

### Write back safely

**Detail:** On button press, re-read the record, confirm it is still pending, then call the workflow completion or custom service. Update the card to show the outcome so nobody approves twice.

### Route by organisation

**Detail:** Post to a channel or chat based on legal entity, cost center or warehouse, with a fallback owner so alerts are never orphaned.

### Monitor

**Detail:** Log each card, the decision and latency, and alert when the flow fails so approvals do not silently stop.

## Example Flows

### Purchase requisition approval card

**Trigger:** A requisition workflow task is assigned to a department head.

**Steps:**

- Flow detects the new work item and reads the requisition header and lines.
- It posts an adaptive card to the approver with total, requester and budget check result.
- The approver taps Approve and may add a comment.
- The flow re-checks the work item status and completes it with the comment.
- The card is updated to show Approved by name and time.

**Result:** The requisition moves on without opening the ERP client, and the workflow history shows the same decision.

### Late supplier shipment alert

**Trigger:** A scheduled read finds confirmed PO lines whose delivery date has passed without a receipt.

**Steps:**

- Flow groups late lines by buyer.
- Each buyer gets one summary card, not one message per line.
- Buttons allow Email supplier or Snooze 2 days.
- Email supplier drafts a message through Outlook for review.

**Result:** Buyers act on a daily digest rather than scanning a report.

## On Prem

Teams is a cloud service, so an on-premises ERP needs an outbound path. For Local Business Data, run the integration service inside your network, authenticate to the ERP with AD FS, and make only outbound HTTPS calls to Microsoft Graph and the bot endpoint. Strip cards down to references if the data policy forbids order values leaving the site. If you want natural-language questions in Teams over sensitive data, the bot can call a model hosted on your own infrastructure so prompts and ERP results are not sent to a public AI service.

## Security

- Use least-privilege roles for the service user and review them whenever new entities are added.
- Never complete an approval on a button press without verifying the Teams user maps to the assigned approver or a valid delegate.
- Treat channel membership as data access: do not post pricing or payroll-adjacent values in broad channels.
- Sign or expire action tokens carried in card payloads to prevent replay.
- Log every write initiated from Teams with the Teams user, ERP user and document.

## Options

### Power Automate approvals and notifications

**Fit:** Standard alerts and approvals with a small number of flows.

**Effort:** Days per flow, plus Power Platform licensing review.

### Custom Teams bot

**Fit:** Conversational lookups, slash commands and richer cards.

**Effort:** Several weeks, including identity mapping and testing.

### Partner build with Netray

**Fit:** When answers must be grounded in ERP data on a private model, or approvals need policy checks.

**Effort:** Scoped after a review of your workflows and security roles.

## Pitfalls

- Flows that run as one shared user break audit trails; attribute decisions to the real approver.
- Alert noise: one message per exception trains people to mute the channel, so digest by owner.
- Work item IDs change meaning after delegation or reassignment; always re-read before acting.
- Connector throttling and the ERP service limits both apply, so heavy flows need concurrency limits.
- Cards that duplicate the whole form invite wrong approvals; keep them to decision data.

## Faq

### Is there native Teams integration in Dynamics 365 Finance and Supply Chain?

**Answer:** There are collaboration features that link records to Teams and Power Automate approval templates, but a tailored experience with adaptive cards and write-backs is configured or built. Exact built-in features depend on your release.

### Can approvers approve from their phone in Teams?

**Answer:** Yes. The Teams mobile app renders adaptive cards, and the action calls the workflow completion path in the ERP. Your flow must verify the user and the task state before it writes.

### Do I need a custom bot?

**Answer:** Not for alerts and approvals; Power Automate is usually enough. A bot is worth it when users want to ask questions, run commands or fill multi-step forms inside Teams.

### What licensing should I check?

**Answer:** Review Power Automate licensing for the connectors you use and any Dataverse capacity if you add virtual entities or dual-write. Terms change, so confirm with your Microsoft partner.

### Can this work with on-premises Finance and Operations?

**Answer:** Yes, through the on-premises data gateway or your own service, with AD FS authentication. Expect fewer built-in event options, so polling and custom endpoints are more common.

## Search terms

dynamics 365 teams integration, microsoft teams for dynamics 365 finance and operations, dynamics 365 approval in teams, d365 fo adaptive card, dynamics 365 supply chain teams bot, power automate dynamics 365 finance teams, dynamics 365 workflow approval teams, teams notifications from dynamics 365 f&o

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
