Viva Engage Event Announcement from Calendar
On a schedule, the flow reads upcoming company events from an Outlook calendar or SharePoint events list and posts timely announcements (and day-before reminders) to the relevant Viva Engage communities, with the join/registration link. Keeps the organization aware of events without manual posting.
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 flow automatically announces upcoming company events on Viva Engage. On a daily schedule it reads upcoming events from an Outlook calendar, posts a timely announcement (with the join/registration link) to the configured Viva Engage community, sends a Teams day-before reminder when an event is within 24 hours, and records each announced event in a Dataverse ledger so the same event is never announced twice.
Why it matters: Events get under-attended when announcements are inconsistent or manual. Auto-posting from the calendar keeps the whole organization aware with zero manual effort, while the dedup ledger keeps the community feed clean.
Use Case
A communications team maintains a single Outlook calendar of company events (town halls, webinars, training). They want each event announced to the relevant Viva Engage community ahead of time, plus a Teams nudge the day before — without anyone remembering to post.
Flow Architecture
Daily Announcement Check
Recurrence (Day/1 at 09:00)Daily scan for events to announce.
Initialize run variables
Initialize variableMint a guid() correlation ID and load calendar id, target Viva community, lead-days window, and Teams group/channel ids from env vars.
Get Upcoming Events
Office 365 Outlook GetEventsCalendarViewRead events between now and the lead-days window.
For each upcoming event
Foreach + ConditionLook up the dedup ledger (Dataverse ListRecords); for new events compose the announcement and post it to the Viva Engage community (PostMessage), then write the ledger row (Dataverse CreateRecord).
Day-before reminder
Condition + Teams PostMessageToConversationWhen the event starts within 24 hours, post a day-before reminder to the Teams channel.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_CalendarId | String | <configure> | Outlook calendar to read events from |
| flowlibs_VivaCommunityGroupId | String | — | Viva Engage community/group id to announce into |
| flowlibs_AnnounceLeadDays | String | 7 | Days ahead to scan the calendar |
| flowlibs_TeamsGroupId | String | <configure> | Teams team (group) id for the reminder |
| flowlibs_TeamsChannelId | String | <configure> | Teams channel id for the reminder |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Viva Engage | shared_yammer | PostMessage |
| Office 365 Outlook | shared_office365 | GetEventsCalendarView |
| Microsoft Teams | shared_teams | PostMessageToConversation |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords CreateRecord |
All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
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.
- Community routing
- Point flowlibs_VivaCommunityGroupId at the right community; for multiple event types, extend the loop with a Switch to route to different communities.
- Announcement window
- Change flowlibs_AnnounceLeadDays to scan further ahead (e.g. 14).
- Reminder timing
- The day-before reminder uses a 24-hour window; adjust the Condition Day Before addDays(utcNow(), 1) to a different lead time.
- RSVP / registration
- The announcement uses the event's online-meeting URL or web link; swap in a Bookings/Eventbrite registration link if desired.
- Source swap
- Replace Get Upcoming Events with a SharePoint events-list GetItems to drive announcements from a SharePoint calendar instead.
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.01Announcement window (Outlook)
Scan from now to the lead-days window.
EXPR.02Ledger lookup filter
Find the event in the dedup ledger.
EXPR.03New-event test
True only when no ledger row matches.
EXPR.04Day-before test
Event starts within 24 hours.
EXPR.05Viva post parameters
Viva PostMessage body props use the input/ wrapper prefix.
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.