Audience: Power Platform administrators, M365 tenant administrators, DevOps engineers responsible for governance. Version: 1.0 — June 2026 Owner: Sunneteam
Microsoft 365 Message Center publishes thousands of announcements every year. Only a fraction matter for Power Platform — Power Apps, Power Automate, Dataverse, Copilot for Power Platform — but a single missed breaking change can take down a production flow.
This solution runs entirely on Power Platform and:
- Pulls every new MC announcement from a SharePoint mirror list (
MessageCenters, ~86k historical records, ID range 10000–100xxx) - Strips HTML, hands the clean text to AI Builder (GPT-5 reasoning), expects strict JSON back
- Stores the classified record on a second SharePoint list (
AdminList) - Sends an email alert only when the verdict is
Status = Open(action required) - Marks the source record as processed so the trigger does not re-fire
Cost target: ~30 AI credits and ~6.7 s per run. The whole pipeline is one Power Automate cloud flow with 9 named Scopes and a global Try/Catch.
| Item | Requirement |
|---|---|
| Power Platform license | Per-user or per-flow plan with AI Builder capacity |
| AI Builder credits | ~30 credits per run — budget accordingly for backfill of historical data |
| SharePoint sites | Two sites (or one site with two lists) — one for source, one for Admin List |
| Service account | Dedicated account with OAuth 2.0 — used for both SharePoint and Outlook connections |
| Mailbox / Distribution List | powerplatform-admins@[tenant].com (or equivalent) for action-required alerts |
| Environments | Three separate Power Platform environments: DEV, TEST, PROD |
The solution ships as two .zip packages: a managed version for TEST and PROD, and an unmanaged version for DEV.
Create or confirm both lists.
Source list — MessageCenters (probably already exists if the tenant mirrors MC):
| Column | Type | Required |
|---|---|---|
| ID | Integer (PK) | Yes |
| Modified | DateTime | Yes |
| Created | DateTime | Yes |
| FullMessage | Multiline text (HTML, Latin1 encoded) | Yes |
| Processed | Yes/No | Yes (used by deduplication) |
Target list — AdminList:
| Column | Type | Required |
|---|---|---|
| SourceID | Integer | Yes |
| Title | Single line text | Yes |
| Category | Choice: Maintenance | New Feature | Breaking Change | Other | Yes |
| Priority | Choice: High | Medium | Low | Yes |
| Impact | Choice: High | Medium | Low | Yes |
| Summary | Multiline text | No |
| ActionsTaken | Multiline text | No |
| Status | Choice: Open | Closed | Yes |
| CreatedOn_Src | DateTime | No |
| ModifiedOn_Src | DateTime | No |
Set up before importing the solution. Use the dedicated service account.
| Connector | Purpose | Auth |
|---|---|---|
| SharePoint (source) | Read trigger + update source item | OAuth 2.0 |
| SharePoint (target) | Create item in AdminList | OAuth 2.0 |
| Office 365 Outlook | Send "action required" emails | OAuth 2.0 |
| AI Builder | Run a Prompt | Built-in |
| Variable | Example value (DEV) | Description |
|---|---|---|
SP_SourceSiteURL |
https://[tenant].sharepoint.com/sites/[site] |
Site that hosts MessageCenters |
SP_TargetSiteURL |
https://[tenant].sharepoint.com/sites/[adminsite] |
Site that hosts AdminList |
AdminEmailDL |
powerplatform-admins@[tenant].com |
Recipient of action-required alerts |
AI_PromptName |
MC_ClassificationPrompt |
Name of the AI Builder prompt |
- Import the unmanaged solution into DEV.
- Bind environment variables and connection references during the import wizard.
- Activate the
PP MC Auto-Analysis Flow. - Run a smoke test on 5 representative items from
MessageCenters(one per category). - Export the solution as managed, import to TEST, repeat the smoke test, then promote to PROD.
| Signal | Where to look | What it means |
|---|---|---|
| Flow run history | Power Automate > My flows > Run history | Look for failed runs in the last 24h — investigate the Error Handling scope output |
| AdminList growth | SharePoint AdminList | Should grow with each new MC item. No growth in 24h+ on a working tenant = trigger or auth issue |
| Email alerts | Inbox of AdminEmailDL |
Sparse, only for Status = Open items |
| AI credit consumption | Power Platform Admin Center > Capacity | Burn rate should be roughly (new MC items per day) × 30 credits |
Replay a misclassified item:
- Open the AdminList record and note the
SourceID. - Toggle
Processed = falseon the sourceMessageCentersitem. - Edit the source item (no value change needed) to refire the trigger.
- The dedup gate is bypassed since
Processedis now false. - Confirm a new AdminList record is created with the updated classification.
Bulk-backfill historical messages:
- Filter the source list by date range (start small — 100 items).
- Set
Processed = falseon the batch. - Trigger a flow run on each item programmatically (Power Automate Desktop or a one-off script).
- Monitor AI credit burn — 100 items ≈ 3000 credits.
Update the system prompt:
- Open the AI Builder prompt
MC_ClassificationPromptin DEV. - Make changes; test against 10 representative items before saving.
- Export the solution as managed, promote to TEST → PROD.
- Run the smoke-test suite in each environment.
| Symptom | Likely cause | Fix |
|---|---|---|
| Flow fails on Step 5 with "Invalid JSON" | LLM returned Markdown fences or prose around JSON | Tighten the system prompt: "Return ONLY valid JSON, no preamble, no Markdown". Optional: add a JSON-repair Compose step before Parse JSON |
| Trigger fires twice for the same item | Concurrent edits on the source list | Confirm Step 3 (dedup gate) is running and Processed is being set in Step 8 |
| AI credit burn higher than expected | Backfill running or trigger loop | Check flow run history for items processed >1 time; tighten Step 3 condition |
| Email alerts not delivered | Service account license expired or DL changed | Verify AdminEmailDL env variable, test Outlook connection |
| HTML cleanup leaves garbage | Older MC items use legacy HTML | Add a second pass: regex to strip residual <style>/<script> blocks in Step 4 |
- AI Builder may misclassify short/ambiguous messages — run a manual review of
Category = Otheritems weekly. - The 86k historical-record list can stall the first run — filter by date when testing.
- AI Builder is English-optimised; non-English MC items may need a translate step.
- The system identifies and notifies only — there is no auto-remediation. Acting on alerts is the administrator's responsibility.
- All changes go through DEV → TEST → PROD with the managed solution package
- Environment variables are bound at import time — never hard-code values
- Test the regression suite (5 representative items, one per category) after every promotion
- The system prompt is the most volatile asset — version it explicitly and keep the previous version exportable for rollback
| Asset | Location |
|---|---|
| Cloud flow | Power Automate > Solutions > PP MC Auto-Analysis |
| AI prompt | AI Builder > Prompts > MC_ClassificationPrompt |
| Source list | SharePoint > MessageCenters |
| Target list | SharePoint > AdminList |
| Technical doc | PP_MessageCenter_TechDoc_EN.docx |
| Sprint reports | Sunneteam repository / WRO-BOOST share |
- Tier 1 — Flow run failure: Check the Error Handling scope output in the failed run. Most issues resolve here.
- Tier 2 — AI/Prompt regression: Open the prompt in AI Builder, test against the regression set, revert if needed.
- Tier 3 — Architectural changes (new fields, new category, additional connectors): Goes through the change-management process — DEV first, code review, regression suite, then promote.
For questions beyond this guide, reach out to the Sunneteam contact list in the technical documentation.