# Teams Incoming Webhook to Workflows Migration Checklist

> Source: https://netray.co/tools/teams-incoming-webhook-to-workflows-migration-checklist
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Free Tools

## Short answer

Checklist for replacing legacy Teams connector webhooks with Workflows based webhooks in ERP and monitoring integrations.

## Category

microsoft-dynamics

## Audience

- IT administrator
- Integration developer
- ERP administrator

## Tool

**Kind:** checklist

**Scoring Note:** Tick each item as done. Items marked critical block go-live; a migration with unticked critical items should not replace the old webhook yet.

**Groups:**

#### 1. Inventory

**Items:**

**Text:** List every system posting to a Teams incoming webhook URL (ERP, monitoring, CI, ticketing, scripts)

**Critical:** true

Record for each webhook the team, channel, owner and the sending system

**Text:** Search source code, config files and scheduler jobs for outlook.office.com/webhook and similar URLs

**Critical:** true

Identify which senders use MessageCard format and which use Adaptive Cards

Flag webhooks with no known owner and decide whether to retire them

**Text:** Check Microsoft's current retirement timeline for Office 365 connectors in your tenant

**Critical:** true

#### 2. Build replacements

**Items:**

**Text:** Create a Workflow from the template that posts to a channel when a webhook request is received

**Critical:** true

**Text:** Set the workflow owner to a service or shared account, not a leaver prone individual

**Critical:** true

**Text:** Record the new HTTP POST URL in your secret store, not in source control

**Critical:** true

Confirm the new endpoint's expected body schema (attachments array with Adaptive Card content)

Convert MessageCard payloads to Adaptive Card payloads wrapped in the expected envelope

Test with a sample payload using curl or a REST client before touching production senders

Add a co-owner to each workflow so it survives staff changes

#### 3. Payload and behaviour

**Items:**

Validate each card renders correctly in desktop, web and mobile Teams

Check card size stays well under the message size limit

Replace unsupported actions (such as legacy OpenUri behaviours) with Action.OpenUrl

Verify @mentions and links still work in the new flow

**Text:** Decide who is notified when the workflow itself fails and set that alert up

**Critical:** true

Confirm the workflow run history is retained long enough to troubleshoot

#### 4. Security and governance

**Items:**

**Text:** Treat the workflow URL as a secret because anyone holding it can post to the channel

**Critical:** true

**Text:** Check DLP policies in Power Platform do not block the HTTP trigger or Teams actions

**Critical:** true

Confirm the connection used by the workflow has only the permissions it needs

Rotate the URL if it was ever pasted into chat, tickets or screenshots

Document the business purpose and owner of each workflow

Check licensing: confirm which Power Automate licence covers the flows you run

#### 5. Cutover

**Items:**

Switch the lowest risk sender first and watch one full business cycle

Run old and new endpoints in parallel briefly where duplicate alerts are acceptable

**Text:** Update the sending system's configuration and retest its failure handling

**Critical:** true

**Text:** Remove the old connector webhooks after confirming no sender still uses them

**Critical:** true

Update runbooks and on call documentation with the new URL location and owner

Close out the inventory with the final status of every webhook

## Content

**Intro:** Microsoft has been retiring Office 365 connectors in Teams, including the classic incoming webhook that many ERP alert jobs, monitoring tools and scripts still post to. This checklist walks through finding every sender and moving it to a Workflows based webhook without losing alerts.

**Sections:**

#### How to use this checklist

**Body:** Start with the inventory group, because the main risk is a forgotten sender that silently stops posting when the old connector is switched off. Work through the groups in order, and keep the critical items for last review before cutover. Export the completed list as evidence for change control.

**Bullets:**

- Assign an owner to each webhook before changing it.
- Keep a copy of the old payload next to the new one.
- Migrate one sender at a time rather than all at once.

#### What changes technically

**Body:** The old incoming webhook accepted a MessageCard or a simple JSON body at a connector URL. The Workflows replacement uses a Power Automate flow with an HTTP request trigger and a Teams action that posts a message or card. Payloads commonly need to be Adaptive Cards inside an attachments array. The URL, authentication model and failure behaviour are different, so test each sender rather than assuming a drop-in swap.

#### Worked example

**Body:** An ERP job posts a low stock alert every morning to a purchasing channel through an old webhook. You create a workflow with a webhook trigger, paste the new URL into the job's configuration, change the body from MessageCard to an Adaptive Card envelope, and test with a sample. You set the job owner and a shared service account as workflow owners, and add an email alert if the flow fails.

#### Common mistakes

**Body:** The usual failure is building the workflow under one person's account and losing the alert when that person leaves. Another is committing the new URL to a code repository. A third is forgetting that tenant DLP policy can block the HTTP trigger until an administrator allows it.

**Cta:** If your ERP and monitoring alerts need a reliable, owned path into Teams, Netray can help design and test the replacement integration.

**Faq:**

#### Why do Teams incoming webhooks need migrating?

**Answer:** Microsoft has announced the retirement of Office 365 connectors in Teams, which includes the classic incoming webhook. Senders that still post to those URLs will stop working once retirement is enforced in your tenant, so they need a supported replacement.

#### What replaces the Teams incoming webhook?

**Answer:** The recommended replacement is a Workflow built in Power Automate, usually from the template that posts to a channel or chat when a webhook request is received. It gives you a new HTTP endpoint you point your sender at.

#### Do I need to change my payload format?

**Answer:** Often yes. Legacy MessageCard payloads are not the target format. Plan to send Adaptive Cards in the envelope the workflow expects, and test it with a sample before switching production senders.

#### Is the new webhook URL secret?

**Answer:** Treat it as one. Anyone with the URL can trigger the flow and post to the channel, so store it in a secret manager, avoid chat and screenshots, and rotate it if it leaks.

## Search terms

teams office 365 connector retirement, teams incoming webhook workflows, migrate teams webhook to power automate, teams workflows webhook adaptive card, teams connector deprecation checklist, post to a channel when a webhook request is received

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