Project for the Web Integration with Azure DevOps

Project for the Web Integration with Azure DevOps

Connecting project planning in Dynamics 365 to day-to-day delivery tracking in Azure DevOps.


INDUSTRY Professional Services / ITPLATFORM D365 Project Ops + Azure DevOpsENGAGEMENT TYPE Systems IntegrationDELIVERY MODEL Power Automate Flow

TECH STACK   Dynamics 365  Power Automate  Azure DevOps REST API 

Client Overview

The client delivers technology projects where planning happens in Dynamics 365 Project for the Web, but the actual engineering work is tracked day-to-day in Azure DevOps. Project managers scoped and scheduled work in D365, while developers logged progress against sprints and work items in DevOps — two systems, two audiences, and, until now, no connection between them.

What Were the Business Challenges?

  • Manual Re-Entry Between Systems — Every task, bucket, and sprint created in D365 had to be manually re-created in Azure DevOps by hand.
  • Plans Drifted Out of Sync — Once a project plan changed in D365, there was no guarantee DevOps would be updated to match, and no easy way to check.
  • Duplicate Work Items — Repeated manual entry occasionally created duplicate tasks or sprints in DevOps, adding cleanup work for the engineering team.
  • Delayed Visibility for Engineering — Developers sometimes started a sprint before the latest project plan had been reflected in their DevOps board.
  • No Single Source of Truth — Project managers and engineers were often working from two different versions of “the plan” at the same time.

Business Demands

  • Automatic, Real-Time Sync — Project structure changes in D365 needed to reach Azure DevOps without anyone re-typing them.
  • No Duplicate Work Items — The integration needed to recognize existing DevOps work items and avoid creating duplicates on repeat runs.
  • Full Structural Coverage — Tasks, buckets, and sprints all needed to be represented correctly in DevOps, not just top-level task names.
  • Trigger on Demand — Project managers wanted to control when a sync happened rather than relying purely on a fixed schedule.
  • A Reliable, Auditable Flow — Any automation needed to be transparent enough that the team could see exactly what it did on each run.

Objectives

  • Build a Bi-System Data Bridge — Design Power Automate flows capable of reading D365 project structure and translating it into Azure DevOps’ bucket and sprint model, using the Azure DevOps REST API.
  • Preserve Existing DevOps Data — Query DevOps for existing work item IDs before creating anything new, so the flow never duplicates work.
  • Automate the Full Hierarchy — Cover buckets, sprints, and tasks in a single flow run, not just individual work items.
  • Sync on Relevant Events — Trigger updates automatically whenever a relevant project or task event occurs, rather than relying on a person to remember to run a sync.
  • Design for Failure — Build in error handling and retry logic up front, so a transient API failure doesn’t leave the two systems out of sync.
  • Leave the Client Self-Sufficient — Document the integration architecture clearly enough that the client’s own team could maintain and extend it after handover.

Solution Implemented

We built a set of Power Automate flows, backed by the Azure DevOps REST API, that push project structure from Dynamics 365 straight into Azure DevOps and keep it there — so both systems stay aligned without manual re-entry.

  • Automated Fetch & Update Flows — Built Power Automate flows that automatically fetch and update task, bucket, and sprint details between Azure DevOps and Dynamics 365 via the Azure DevOps REST API.
  • Event-Triggered Sync — Configured the flows to trigger on relevant project and task events in D365, so status and record updates in Azure DevOps happen in real time instead of on a fixed schedule.
  • Variable Initialization & Mapping — Initialized a sprint-name object and composed the variables needed to map D365 project data onto Azure DevOps’ bucket and sprint structures.
  • Duplicate Prevention — Queried Azure DevOps for existing work item IDs to avoid creating duplicates on repeat runs.
  • Automated Structure Creation — Automated creation of the correct Area/Iteration bucket, added the matching sprint, and pushed each task from the D365 project plan into Azure DevOps as a linked work item.
  • Error Handling & Retry Logic — Designed error handling and retry logic directly into the flows, so a transient API failure or timeout doesn’t silently break the sync — the flow retries and surfaces failures instead of failing quietly.
  • Architecture Documentation & Knowledge Transfer — Documented the full integration architecture — triggers, data mapping, and error handling — and walked the client’s team through it, so they can support and extend the integration without depending on us.
  • End-to-End Validation — Validated the flows against a live DevOps board, confirming tasks, sprints, and assignments land correctly and are visible to the engineering team immediately.

Power Automate flow: syncing D365 Project for the Web tasks, buckets, and sprints into Azure DevOps.

Benefits of Implementation

  • One Source of Truth — Project managers and engineers now work from the same up-to-date plan, in the tool each team already uses.
  • No More Manual Re-Entry — Tasks, buckets, and sprints created in D365 appear in Azure DevOps automatically.
  • No Duplicate Work Items — The flow checks existing DevOps work item IDs before creating anything, keeping the board clean.
  • Faster Handoff from Planning to Delivery — Engineering can start work as soon as a project plan is finalized, without waiting on manual setup.
  • Full Structural Fidelity — Buckets, sprints, and tasks all sync correctly, preserving the shape of the original project plan.
  • Resilient to Failures — Built-in retry logic means a temporary API hiccup doesn’t leave Dynamics 365 and Azure DevOps out of sync.
  • Client Team Is Self-Sufficient — With full architecture documentation and a knowledge-transfer session complete, the client’s own team can maintain and extend the integration going forward.

Case Highlight: Closing the Gap Between Planning and Delivery

  • Two Systems, One Plan — D365 project data and Azure DevOps work items now stay aligned automatically.
  • Zero Manual Setup — What used to be a manual re-entry task is now a set of automated flows triggered by real project events.
  • Immediate Engineering Visibility — Developers see the latest project structure in DevOps as soon as it’s finalized in D365.
  • Built to Last — Error handling, retry logic, and full documentation mean the integration keeps working — and stays maintainable by the client’s own team — long after handover.