Accelerators

Accelerator · Microsoft Teams

Every Fuuz Event, In The Right Teams Chat

A Fuuz® flow renders an Adaptive Card and posts it to a Power Automate workflow. The workflow delivers it to a channel or to one person — creating the team and channel when they do not exist yet, and installing the bot that posts into them, with no manual step for anyone.

Channel posts Direct messages Adaptive Cards 1.4 Power Automate Workflows Data-change driven No manual bot install
Tested for Andon, built for any event. This pattern was built and tested end to end in production for an Andon (production alert) scenario: alerts raised on equipment post to a channel per work unit and as direct messages to named people. Your team can implement the same approach for any type of event in the Fuuz platform — a model data change, a flow step, a schedule, a threshold, an integration message. Anything not yet proven in production is marked TO VERIFY in the guide; test it in your tenant before you rely on it. Microsoft Teams and Power Automate behaviour, limits and licensing can change, so validate them in your own tenant before go-live.

How it works

Two Halves, One Secret URL

Fuuz never holds a Microsoft credential. The only secret is the workflow's trigger URL, and it lives in a Fuuz Connection.

1. Something happens

A record is inserted or changes state. A dataChanges trigger fires after the commit and hands the flow the record before and after.

Fuuz · event

2. A detector decides

Is this worth a message, and to whom? Send directly from the event flow, or enqueue to a queue that dedupes, honours per-person preferences and retries.

Fuuz · rule

3. A card is rendered

One renderer turns a small spec into an Adaptive Card with a severity colour, facts and deep links back to the Fuuz screen — tenant always on the link.

Fuuz · card

4. A quiet post flow sends it

Reads the Connection and POSTs the card with a small fuuz routing object. The URL is never logged; the workflow answers 202 Accepted.

Fuuz → Microsoft 365

5. The workflow routes it

dm posts to one person. channel finds or creates the team and channel by exact name. ensure provisions without posting.

Power Automate

6. The bot is installed for you

A new team gets the Workflows app through a Microsoft Graph request inside the same workflow, then the card posts as the Flow bot — so Teams notifies the channel.

Microsoft Teams

What lands in Teams

Cards People Act On Without Opening Fuuz

Severity reads from the colour before a word is read. Every button opens the exact Fuuz screen and record.

A Teams channel post from Workflows: a red-banded card reading SEV1 ANDON, Machine breakdown, with facts for work unit, line, area, site, severity and who raised it, and Open Andon and Acknowledge buttons.
Raised. A critical alert posts to the work unit's own channel.
An amber-banded escalation card: SEV2 Andon, material shortage, open 30 minutes and not acknowledged.
Escalated. Still open and unacknowledged after the threshold.
A green-banded resolution card with who resolved it, when, and the resolver's note.
Resolved. Closes the loop with the resolver's note.
An amber card in a Quality Alerts channel: a nonconformance moved from In progress to On hold, with who changed it and the reason.
Any record, any state. A nonconformance put on hold posts to a fixed Quality channel.
A direct message from Workflows: a nonconformance was assigned to you, with due date, priority, status and an Open record button.
Direct message. The assignee hears about it, with a line saying why.

Rendered from the card templates in this repository with the Adaptive Cards renderer and a Teams-like host configuration. Plant, people and record values are fictional.

Inside the workflow

The Router, Step By Step

The tested router workflow in the Power Automate designer. A direct message takes the short branch; a channel post finds or creates the team and channel first.

Power Automate designer: the webhook trigger, two variables, then a condition. True posts a card in a chat; False lists joined teams, filters by name, and when no team matches creates one, waits, and installs the Workflows app with a Microsoft Graph HTTP request.
Find or create the team. dm posts straight away; otherwise the team is matched by exact name, or created and given the Workflows app.
Power Automate designer, lower half: list channels, filter by name, create the channel when missing and wait, then a final condition that posts the card in the channel.
Find or create the channel, then post. The waits give Teams time to finish provisioning before the first card lands.
The Send a Microsoft Graph HTTP request step: URI built with concat, method POST, and a body binding the Workflows app from the Teams app catalog.
No manual bot install. One Graph request adds the Workflows app to every team the workflow creates.
The Post card in a chat or channel step: post as Flow bot, in a chat with Flow bot, recipient from the fuuz routing object, and the Adaptive Card from the request body.
Post as the Flow bot. Recipient and card come from the request Fuuz sent, so Teams notifies people normally.

Captured from a working tenant. Account, environment and tenant details are removed; the app id shown is Microsoft's public catalog id for Workflows.

Choose a pattern

Start From What You Need

Three workflow shapes cover every case in the guide.

You needUse
One fixed channel for a whole function — Quality Alerts, Maintenance AlertsThe fixed-channel workflow. The team and channel exist already; the workflow only posts.
A message to a named personThe direct-message workflow (dm).
Channels derived from your data — one per work unit, line or siteThe router workflow (dm / channel / ensure) with find-or-create, plus pre-provisioning before go-live.
Immediate alerts with recipients from a routing tableDirect send from the event flow — the tested Andon pattern.
Filtering, dedupe, per-person preferences or retriesDetector, then a notification queue, then a data-change-triggered sender.
Buttons that write back to Fuuz in placeNot available through Workflows webhooks. Open a Fuuz screen with Action.OpenUrl, or build a Teams bot.

Field notes

Learned In Production

Mistakes that fail quietly. Each one is covered in the guide, with the fix.

Post as the Flow bot

A card posted "as User" appears as that person, and Teams never notifies anyone about their own message, so whoever owns the workflow's connection silently stops getting alerts. The Flow bot notifies everyone.

Chapters 01, 06

Team from the variable, not the list

Filling Team from the "List joined teams" output makes the designer wrap the post in a hidden For each: one attempt per team, failed runs, and new teams never posted to. Use the teamId variable and check Code view.

Chapters 02, 08

Delivery methods add up

Teams should be added to e-mail, never swapped for it. An "instead" rule made a recipient lose e-mail without anyone noticing. Keep one sender per method, so a second platform switch cannot send duplicates.

Chapters 04, 08

Quick start

A First Card In About An Hour

You need a Microsoft 365 tenant with Teams and Power Automate, and a Fuuz tenant you can build in. VS Code with the Fuuz extension is the recommended way to build the Fuuz side.

  1. Learn the vocabulary

    Read 01 Concepts — about ten minutes.

  2. Build two workflows

    The direct-message workflow and one fixed-channel workflow, following chapter 02. Copy each trigger URL — it is a secret.

  3. Connect Fuuz

    Create a Connection, paste the URL into it in the Fuuz UI, and build the post flow (chapter 03).

  4. Send the test card

    Post templates/fuuz/test-request-body.json and confirm it lands, following walkthrough 04.

    # the test body, with a placeholder recipient
    git clone https://github.com/Fuuz-Platform/teams-chat-accelerator
    cat teams-chat-accelerator/templates/fuuz/test-request-body.json
  5. Wire your first event

    Add a detector on the model you care about (chapter 04, walkthrough 02).