# How to add Microsoft Teams to Ignition (SCADA/MES)

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

## Short answer

The simplest path is an alarm pipeline Script step that posts an Adaptive Card to a Teams channel through a Workflows webhook. For two-way approvals, a Teams bot registered in Entra ID calls back into a relay that talks to the Ignition Gateway.

## System

Inductive Automation Ignition (MES/SCADA)

## Capability

microsoft-teams

## Intro

Ignition shops often have plant IT on Microsoft 365 and operations on Ignition, with the two barely connected. Alarms go to email, work orders live elsewhere, and the maintenance channel in Teams has nothing from the floor unless someone pastes it. Teams is where managers, quality and planning already talk, so it is the natural place for plant events to surface.

There is an important distinction here between notification and workflow. Posting a card to a channel is an afternoon of work. Letting someone approve a batch release, a changeover or a downtime classification from Teams and have that land in Ignition with the right identity is a real integration with authentication, audit and failure handling.

Because Ignition Gateways usually sit behind the plant firewall, the useful question is which direction connections are allowed to go. Outbound posting works with minimal firewall change. Inbound card actions need either a relay in a DMZ or a polling pattern, and that shapes the whole design.

## Use Cases

### Channel alerts per area

**Description:** Packaging, machining and utilities alarms post to separate Teams channels as cards with priority, source path, time active and a link to the Perspective page.

### Batch or lot release approval

**Description:** A quality engineer approves a lot disposition from a Teams card, and the decision is written to the MES quality table with their Entra identity.

### Changeover checklist sign-off

**Description:** Operators and leads confirm changeover steps in Teams, with each confirmation stored against the work order and line.

### Daily production digest

**Description:** A scheduled Gateway script posts yesterday's output, scrap, top downtime causes and open alarms to the plant leadership channel.

### Maintenance request intake

**Description:** Someone describes a fault in a Teams message to a bot, which creates a maintenance request record and links the asset's recent alarms.

## System Surface

- Alarm notification pipelines with a Script step for outbound posts; exact HTTP helper functions differ between 7.9, 8.1 and 8.3.
- system.net.httpClient or java HTTP classes in Gateway scope for calling a Workflows webhook or a relay URL.
- Perspective session URLs and page configs, which let a card deep-link to the exact asset or alarm page.
- Named Queries and Transaction Groups (SQL Bridge) for writing approval outcomes and reading production summaries from the MES schema.
- Ignition's own identity providers and user sources, including OpenID Connect or SAML with Entra ID for Perspective, which helps align Teams identity with Ignition roles.

## How It Works

### Choose notification only or two-way

**Detail:** For one-way, use a Teams Workflows webhook per channel. For approvals, register a bot or Teams app in Entra ID and plan a relay that can receive its callbacks.

### Define card templates

**Detail:** Build Adaptive Card JSON for alarm, approval and digest cases. Keep fields short and put the Perspective deep link in an action button.

### Wire the pipeline Script step

**Detail:** Call a project library function that picks the channel by alarm area, fills the card and posts it. Return and log the HTTP status.

### Stand up the callback relay

**Detail:** Host a small service in a DMZ that validates Teams tokens and forwards approved actions to the Gateway through a Web Dev endpoint or a SQL queue table the Gateway polls.

### Map identity

**Detail:** Resolve the Entra user to an Ignition user or role before accepting an action. Reject actions from users without the right role.

### Write results back and update the card

**Detail:** Persist the decision via a Named Query, then update the original card to show who approved and when.

## Example Flows

### Lot disposition approval

**Trigger:** An inspection station writes a failed measurement to the quality table.

**Steps:**

- A Gateway tag or DB trigger starts a script that builds an approval card.
- The card posts to the quality channel with lot, station, value and limits.
- The quality engineer chooses Release, Rework or Scrap and adds a note.
- The relay validates the user and the Gateway writes the disposition through a Named Query.

**Result:** A lot disposition with a named approver and timestamp is stored in the MES schema.

### Morning production digest

**Trigger:** A Gateway scheduled script runs at 06:30.

**Steps:**

- It queries the historian and MES tables for the previous shift.
- It formats a card with output, scrap and top three downtime reasons.
- It posts to the leadership channel with a link to the Perspective dashboard.

**Result:** Leaders see the numbers where they already read, without opening a client.

## On Prem

Teams is a cloud service, so the only thing that crosses the boundary is the card content and the callback. Keep the Gateway outbound-only where possible: it posts cards, and a DMZ relay holds the bot endpoint and passes approved actions inward via a queue table or a tightly scoped Web Dev call. Avoid sending recipe values, part numbers under export control or customer names in cards; send identifiers and a deep link that only works on the corporate network or VPN. If you want natural-language Q&A in Teams over plant data, run the model and retrieval layer on-site and expose only the final answer text to the bot.

## Security

- Validate the Teams or Bot Framework token on every callback and check tenant ID.
- Map Entra users to Ignition roles and enforce per-action permissions, not channel membership.
- Never expose the Gateway web port to the internet to receive callbacks; use a relay or polling.
- Do not allow cards to trigger writes to control tags; restrict actions to MES records.
- Log card ID, user, action and result to a SQL audit table.

## Options

### Workflows webhook with Script step for one-way alerts

**Fit:** Teams that want visibility in channels with no approvals.

**Effort:** One to three days.

### In-house Teams bot with relay and Web Dev or SQL queue back to Ignition

**Fit:** Sites with Azure skills and a clear approval process to digitise.

**Effort:** Three to six weeks with security review.

### Partner-delivered bot with optional on-prem assistant behind it

**Fit:** Plants that want approvals plus a question-answering bot over MES and historian data.

**Effort:** Scoped per site; Netray works alongside your Ignition integrator.

## Pitfalls

- Old Office 365 connector webhooks have been retired or deprecated in favour of Workflows, so check the current Microsoft guidance before copying older tutorials.
- Adaptive Card feature support differs between Teams clients, so test on desktop and mobile.
- A card that posts per alarm will flood a channel during an upset. Aggregate and rate-limit in the pipeline.
- Approvals made in Teams without Ignition-side re-validation can approve stale lots; check the record state before writing.

## Faq

### Can Ignition send messages to Teams natively?

**Answer:** Not through a dedicated built-in profile. The usual pattern is a Script step in an alarm notification pipeline that posts JSON to a Teams Workflows webhook or a relay. It is a few lines of Gateway scripting plus a card template.

### How do approvals from Teams get back into Ignition?

**Answer:** A bot or card action calls a relay you host. The relay validates the user, then either calls a Web Dev endpoint on the Gateway or writes to a SQL queue table that a Gateway script reads. The Gateway then updates MES records.

### Does this need the Perspective module?

**Answer:** Not for posting cards. Perspective is useful as the deep-link target so a person can open the asset view from a card, but alerts and approvals work purely through scripting, SQL and the relay.

### Can we do this with Teams but keep data on-prem?

**Answer:** Card text and callbacks go through Microsoft's cloud, so minimise content to identifiers and short text. Heavy data and any AI summarisation can stay on-site, with only the final short message posted to Teams.

### Which Ignition version is needed?

**Answer:** Any version that supports Gateway scripting and HTTP calls can post cards, but helper functions differ between 7.9 and 8.x. Check your version's system.net documentation before writing the library code.

## Search terms

ignition microsoft teams integration, ignition alarms to teams, teams adaptive card ignition, ignition scada teams notification, send teams message from ignition, ignition mes teams approval, inductive automation teams bot, ignition alarm pipeline teams webhook, teams workflows ignition

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