Planner Task Sync to Outlook Tasks
When a Planner task is created or updated, mirror it as an Outlook Task so users can track work across both systems.
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 polls a Microsoft Planner plan every 30 minutes, retrieves all incomplete tasks (less than 100% complete), and creates a corresponding Outlook Task for each one. After syncing, it sends a summary email with a formatted HTML table showing every task that was synced, its mapped importance level, and due date.
Use Case
Project managers and team members who use Planner for team collaboration but prefer Outlook Tasks for personal task tracking. This flow bridges the gap by automatically mirroring Planner assignments into Outlook so nothing falls through the cracks.
The flow is ideal for teams that:
- Project managers who run team work in Planner but track their own to-dos in Outlook
- Team members who want a single Outlook view of assignments coming from multiple Planner plans
- Teams that need a lightweight cross-system task mirror without buying a third-party sync tool
Flow Architecture
Recurrence - Every 30 Minutes
RecurrencePolls on a 30-minute interval.
Initialize Variable - varPlannerGroupId
Initialize variableReads the Microsoft 365 Group ID from env var flowlibs_PlannerGroupID.
Initialize Variable - varPlannerPlanId
Initialize variableReads the Planner Plan ID from env var flowlibs_PlannerPlanID.
Initialize Variable - varOutlookTaskFolderId
Initialize variableReads the Outlook Task folder identifier from env var flowlibs_OutlookTaskFolderID.
Initialize Variable - varNotificationEmail
Initialize variableConfigurable recipient for the sync summary email (default: you@yourcompany.com).
Initialize Variable - varSyncCount
Initialize variableInteger counter for tasks synced (starts at 0).
Initialize Variable - varSyncSummary
Initialize variableString variable that accumulates HTML table rows for the summary email.
List Planner Tasks
Planner — ListTasks_V3Retrieves all tasks from the configured Planner plan.
Loop Through Planner Tasks
Apply to eachFor each returned Planner task: evaluate completion, map priority, create the Outlook task, increment the counter, and append a summary row.
Check If Task Is Not Complete
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_PlannerGroupID | String | <configure> | Microsoft 365 Group ID that owns the target Planner plan. Find it in Azure AD / Entra under the group's Object ID. |
| flowlibs_PlannerPlanID | String | <configure> | The specific Planner plan to sync tasks from. Copy from the Planner URL after /plans/. |
| flowlibs_OutlookTaskFolderID | String | Tasks | Outlook Tasks folder where mirrored tasks are created. Leave as 'Tasks' to use the default folder. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Planner | shared_planner | ListTasks_V3 (List all tasks from the configured plan) |
| Outlook Tasks | shared_outlooktasks | CreateTaskV2 (Create mirrored Outlook task) |
| Office 365 Outlook | shared_office365 | SendEmailV2 (Send the HTML sync summary email) |
Note — 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.
- Set the three environment variable values
- Set flowlibs_PlannerGroupID to your M365 Group ID, flowlibs_PlannerPlanID to your target Planner plan, and flowlibs_OutlookTaskFolderID to the desired Outlook folder (the default 'Tasks' works for most users).
- Update the notification email recipient
- Open the flow, find 'Initialize Variable - varNotificationEmail', and change the value from the placeholder to the address that should receive the sync summary.
- Authenticate the three connection references
- Ensure all three connections (Planner, Outlook Tasks, Office 365 Outlook) are authenticated in your tenant before turning the flow on.
- Adjust the polling interval if needed
- The Recurrence trigger is set to 30 minutes. Increase or decrease the interval based on how quickly Outlook needs to reflect Planner changes — keep in mind that this flow re-creates tasks each run.
- Turn the flow on after configuration
- The flow ships in Stopped state. Enable it once all variables and connections are configured.
- Prevent duplicate Outlook tasks
- Out of the box this flow creates a new Outlook task each run for every incomplete Planner task and does not deduplicate. To avoid duplicates, add a 'Last Synced' marker to the Planner task notes or filter by createdDateTime against the last run time.
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.01Priority to importance mapping
Used in the Compose step inside the loop — maps Planner priority (1 = Urgent → high, ≤5 → normal, >5 → low) and defaults to 'low' if priority is null.
EXPR.02Null-safe due date
Defaults the Outlook task due date to 7 days out when the Planner task has no due date.
EXPR.03Completion filter
Used in the If condition — only syncs Planner tasks at 0% (Not Started) and 50% (In Progress).
EXPR.04HTML summary row append
AppendToStringVariable inside the loop builds up the body table; the final SendEmailV2 wraps varSyncSummary in a <table> via concat().
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.