
How to Measure Cycle Time per Workflow State in Azure DevOps
Learn how to measure Azure DevOps cycle time per workflow state, identify bottlenecks with cumulative flow, and find where delivery work actually waits.
A practical guide to tracking blocked work items and response expectations in Azure DevOps so blockers are owned, escalated, and resolved before delivery slips.

Blocked work is not just work that cannot move. It is a delivery promise that now depends on a decision, person, system, or another team. Azure DevOps can help teams record blockers, but the real value comes from a consistent operating rule: every material blocker has a reason, owner, expected resolution, and escalation path.
Without that rule, a “Blocked” tag becomes a graveyard of work that everyone has seen and no one owns.
Catch Up AI approaches blocker tracking as an ownership workflow: make the dependency visible, assign the next action, and escalate according to delivery impact.
Define a blocker narrowly enough to remain meaningful. A work item is blocked when the current team cannot make planned progress because it is waiting on something outside the person’s immediate control. Examples include:
“This work is difficult” or “I have not started yet” should not be a blocker. Those are different signals that need different management responses.
Azure DevOps teams may track blocked work with a tag, custom field, board field, state, or linked dependency. The exact configuration matters less than consistency. Choose one primary indicator and document the fields that must accompany it.
| Required field | Why it exists |
|---|---|
| Blocked indicator | Makes work discoverable in a query, chart, and board view |
| Blocker reason | Prevents vague “blocked” status |
| Blocker owner | Names the person responsible for pursuing resolution |
| Date raised | Lets teams measure blocker age |
| Expected resolution or next check | Creates a working deadline, not a passive alert |
| Impact | Identifies whether it threatens a sprint, release, or dependent work |
| Link to dependency or decision | Preserves the evidence and context |
If a custom field adds too much friction, begin with a required tag format and an agreed comment template. Good data habits are more useful than a complicated configuration no one maintains.
Create a shared query for active work marked blocked. Include work-item ID, title, state, owner, priority, iteration, date raised, dependency links, and the latest update. Sort it by delivery impact and blocker age.
Then review it on a fixed cadence:
The review should not become a reporting ceremony. It should result in a decision: remove the blocker, change scope, escalate the owner, sequence work differently, or adjust the release commitment deliberately.

Some organizations call this blocker “SLA tracking.” Be careful: the appropriate response time depends on impact. A production-critical security dependency needs a different escalation than an item blocked during early discovery.
Define response expectations by severity:
| Severity | Example | Response expectation |
|---|---|---|
| Critical | Blocks production, a committed release, or many teams | Named owner and escalation immediately; update daily |
| High | Threatens the current sprint goal or feature milestone | Owner and next step within one working day |
| Standard | Limits progress but has a viable alternative path | Owner and review date in the normal delivery ritual |
Measure whether the team responded and whether the blocker was resolved. Do not reward teams for simply removing the blocked label. Otherwise the reporting system will encourage cosmetic updates instead of real progress.
Over a few weeks, group blockers by reason and workflow stage. You may find that the same environment access, product approvals, review capacity, or cross-team dependency keeps appearing. That pattern is a system problem worth fixing at the portfolio level.
Use this view alongside Azure DevOps workflow analytics. A long time in QA paired with repeated QA blockers points to a flow constraint, not a series of unrelated tickets.
A blocker list is necessary, but it can still hide what matters. Catch Up AI's solution for engineering leaders helps connect blockers with aging work, dependencies, and commitment risk. The Catch Up Azure DevOps extension helps leaders focus on the exceptions that require a decision. The insight should always show the underlying work and context so the team can validate it.
Choose one consistent indicator such as a tag or custom field, then require a reason, owner, date raised, expected resolution, delivery impact, and relevant dependency link. Create a shared query and review material blockers on a fixed cadence.
It can be, but a separate state may distort flow metrics if teams use it inconsistently. Many teams use a tag or field alongside the existing workflow and make the blocker visible on the board. Choose the approach that your team will maintain reliably.
A blocker SLA is a response expectation, such as assigning an owner or escalating within a defined time. It should vary by delivery impact rather than applying one arbitrary resolution target to every blocker.
Read how to find aging work items in Azure DevOps next, then install the free Catch Up Azure DevOps extension to identify which blockers need action before a status meeting reveals the delay.
Continue reading more insights from CatchUp AI