ADO Work Item to Planner Task Sync
When a work item is created or updated in Azure DevOps with a specific area path, auto-creates or updates a corresponding Planner task in a designated plan.
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
FlowLibs - ADO Work Item to Planner Task Sync is a scheduled automation that bridges Azure DevOps work item tracking with Microsoft Planner task boards. It runs daily, queries ADO for recently modified work items in a specified area path, and creates or updates corresponding Planner tasks — giving non-developer stakeholders (project managers, business analysts) visibility into development progress without needing Azure DevOps access.
Use Case
Development teams track work in Azure DevOps, but project managers and business stakeholders use Microsoft Planner for task oversight. This flow eliminates manual task duplication by automatically syncing work items from a designated area path into a Planner plan. When a work item is created or updated in ADO, a matching Planner task is created or updated with the current title and completion status. A Teams notification summarizes each sync run.
Flow Architecture
Recurrence - Daily ADO Sync
RecurrenceRuns once per day at 8:00 AM. Configurable via the trigger's recurrence settings.
Init varAdoOrganization
Initialize VariableReads ADO org name from env var `flowlibs_AdoOrganization`.
Init varAdoProject
Initialize VariableReads ADO project name from env var `flowlibs_AdoProject`.
Init varAdoAreaPath
Initialize VariableReads ADO area path filter from env var `flowlibs_AdoAreaPath`.
Init varPlannerGroupId
Initialize VariableReads Planner M365 Group ID from env var `flowlibs_PlannerGroupID`.
Init varPlannerPlanId
Initialize VariableReads Planner Plan ID from env var `flowlibs_PlannerPlanID`.
Init varTeamsGroupId
Initialize VariableReads Teams Group ID from env var `flowlibs_TeamsGroupId`.
Init varTeamsChannelId
Initialize VariableReads Teams Channel ID from env var `flowlibs_TeamsChannelId`.
Init varSyncedCount
Initialize VariableInteger counter for synced items (starts at 0).
Init varSyncSummary
Initialize VariableString accumulator for sync summary HTML.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_AdoOrganization | String | <configure> | Azure DevOps organization name (e.g., `your-org`). Set this to your ADO organization slug. |
| flowlibs_AdoProject | String | <configure> | Azure DevOps project name to query work items from. |
| flowlibs_AdoAreaPath | String | <configure> | Area path filter for the WIQL query (e.g., `MyProject\\Team A`). |
| flowlibs_PlannerGroupID | String | <configure> | M365 Group ID that owns the target Planner plan. |
| flowlibs_PlannerPlanID | String | <configure> | Target Planner plan ID where synced tasks will be created/updated. |
| flowlibs_TeamsGroupId | String | <configure> | Teams team (group) ID where the sync summary will be posted. |
| flowlibs_TeamsChannelId | String | <configure> | Teams channel ID where the sync summary will be posted. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Azure DevOps | shared_visualstudioteamservices | HttpRequest (WIQL POST + work item GET) |
| Planner | shared_planner | ListTasks_V3 CreateTask_V3 UpdateTask_V2 |
| Microsoft Teams | shared_teams | PostMessageToConversation (sync summary notification) |
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.
- Area path scope
- Change flowlibs_AdoAreaPath to target different teams or projects.
- State-to-completion mapping
- The condition in "Check If Task Exists" maps ADO states to Planner percent complete (Closed → 100%, Resolved → 50%, other → 0%). Edit the percentComplete expression to adjust.
- Due date sync
- Add body/dueDateTime to CreateTask_V3 using the work item's target date field.
- Assignee mapping
- Use the Office 365 Users connector to resolve the ADO uniqueName to a Planner-compatible user ID for task assignment.
- Recurrence cadence
- Adjust the Recurrence trigger if you want more or less frequent syncing (default: daily at 8 AM).
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.01WIQL Query
WIQL POSTed to the ADO HttpRequest action; pulls work items modified in the last day under the configured area path.
EXPR.02Task Title Pattern
Used for both Planner task creation and duplicate detection so the loop can find prior syncs by ID prefix.
EXPR.03Completion Mapping
Maps ADO state to Planner `percentComplete` on update.
EXPR.04Duplicate Detection
Filter Array expression that finds an existing Planner task for the current ADO work item by ID prefix.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.