Viva Engage Leadership Announcement Broadcaster
When a leadership announcement is published to a SharePoint news list (or approved via an approval), the flow posts it to a Viva Engage community, cross-posts a summary to a Teams channel, and tracks engagement. Centralizes one-to-many internal comms so a single approved message fans out to all employee channels consistently.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This solution turns a single approved leadership message into a coordinated internal broadcast. When a leadership announcement is created in a SharePoint news/announcements list, the Broadcaster flow routes it through a Power Automate approval, then publishes it to a Viva Engage community and cross-posts a summary to a Microsoft Teams channel — logging every broadcast to a Dataverse ledger. A companion Engagement Tracker flow runs weekly to refresh Viva Engage reaction counts on the ledger and posts an engagement rollup back to Teams. Why it matters: Internal comms fragment when someone manually reposts the same message to Viva Engage, Teams, and the intranet. One approved source that fans out keeps messaging consistent, adds a governance gate, and leaves a reporting trail.
Use Case
A comms/leadership team authors one announcement in SharePoint and wants it (1) approved by a designated owner, (2) published to the all-company Viva Engage community, (3) echoed into a Teams channel, and (4) tracked for engagement — automatically, from a single governed source. Audience: Executives, All Business Users.
Flow Architecture
When an Announcement Is Published (Broadcaster)
SharePoint — GetOnNewItems (When an item is created)Fires once per new announcement item on the SharePoint announcements list (site + list from env vars).
Initialize config
Initialize VariableMint @guid() correlation id, capture announcement title, body (Title fallback) and source item id.
Start Announcement Approval
Approvals — StartAndWaitForAnApproval (Basic)Route to the configured approver and wait for the outcome.
Approved branch
Viva Engage — PostMessage + Microsoft Teams — PostMessageToConversation + Microsoft Dataverse — CreateRecordOn Approve: publish to the Viva Engage community, cross-post a summary to Teams, and log a Posted ledger row (whole-object bind).
Rejected branch
Microsoft Dataverse — CreateRecord + Microsoft Teams — PostMessageToConversationOn Reject: log a Rejected ledger row and notify the Teams channel.
Run Weekly Engagement Check (Tracker)
Recurrence (weekly)Scheduled refresh of engagement counts; reads a configurable lookback window (default 7 days).
Get Recent Broadcasts + Community Messages
Microsoft Dataverse — ListRecords + Viva Engage — GetMessagesInGroupV3Read Posted ledger rows and community messages with reaction counts.
Apply To Each Broadcast
Foreach (concurrency 1) + Filter + Compose + Microsoft Dataverse — UpdateRecordMatch each ledger row to its Viva message, read the liked_by count, and write engagement count + last-checked (whole-object bind).
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_SharePointSiteURL | String | https://your-tenant.sharepoint.com | Site of the announcements list (reused). |
| flowlibs_AnnouncementsListID | String | <configure> | GUID of the SharePoint announcements list the Broadcaster watches. |
| flowlibs_AnnouncementApprover | String | you@yourcompany.com | Email (UPN) of the approver who gates announcements. |
| flowlibs_VivaCommunityGroupId | String | <configure> | Numeric Viva Engage community/group id (used via @int()) (reused). |
| flowlibs_TeamsGroupId | String | <your-team-id> | Teams team (group) id for the cross-post channel (reused). |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Teams channel id for the cross-post / rollup (reused). |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| SharePoint | shared_sharepointonline | GetOnNewItems |
| Approvals | shared_approvals | StartAndWaitForAnApproval |
| Viva Engage | shared_yammer | PostMessage GetMessagesInGroupV3 |
| Microsoft Teams | shared_teams | PostMessageToConversation |
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Approver routing
- Set flowlibs_AnnouncementApprover, or extend the approval to a group / multi-stage chain.
- Body column
- The Broadcaster reads the item Body (with a Title fallback); point it at your list's rich-text column if named differently.
- Cadence
- Adjust the Engagement Tracker Recurrence (e.g. daily) and flowlibs_VivaCommunityGroupId / Teams ids for your channels.
- Scheduling
- Hold and post announcements at a set time by adding a delay before the broadcast branch.
- Richer engagement
- Viva Engage exposes reactions (liked_by) only; for replies/views, extend with the Viva thread ops or Graph.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Approval gate
Branch on whether the announcement was approved.
EXPR.02Viva community id (numeric)
Coerce the Viva community id to a number for the post action.
EXPR.03Reaction count
Read the liked_by count for the matched community message (0 if not found).
EXPR.04HTML rollup unwrap (Select object-form)
Unwrap the Select object-form output into a single HTML table.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.