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.

Catch Up AI

How to Measure Cycle Time per Workflow State in Azure DevOps

How to Measure Cycle Time per Workflow State in Azure DevOps

Your team's cycle time went up. The number on the dashboard tells you that work is slower. It doesn't tell you where. Is it code review? QA? Waiting for a product decision?

That's the gap this article covers: how to go from one overall cycle time number to a view of where work actually waits, using what Azure DevOps gives you out of the box, and where its built-in tools stop.

At Catch Up AI, the useful question is not only whether cycle time rose, but which workflow state created the delay.

What Azure DevOps means by cycle time

Azure DevOps defines two related metrics:

  • Lead time is the time from when a work item is created until it reaches a Completed state.
  • Cycle time is the time from when a work item first enters an In Progress state until it reaches a Completed state.

If an item is reopened, cycle time runs from the first time it entered In Progress (or Resolved) to the final time it reached Completed. That means rework is included, which is what you want.

Both metrics depend on state categories. Every workflow state in your process belongs to a category such as Proposed, In Progress, Resolved or Completed. Cycle time only works as well as that mapping does. If a custom state like "Ready for Release" sits in the wrong category, your numbers will be wrong without any warning.

Step 1: Add the Cycle Time widget

On any dashboard, add the Cycle Time widget from the Analytics widgets. Choose the team, the work item types (usually your backlog items and bugs), and a time period.

You'll get a control chart: each dot is a completed work item, plotted by how long it took. Look for:

  • The moving average. Is it trending up?
  • Outliers. A handful of items that took three times longer than the rest usually share a cause.
  • Spread. A wide scatter means your process is unpredictable, even if the average looks fine.

This tells you how long work takes end to end. It doesn't tell you which stage is slow.

Step 2: Use the Cumulative Flow Diagram to find the slow stage

The Cumulative Flow Diagram (CFD) widget shows how many items sit in each board column over time. Two things to look at:

  • A band that keeps getting wider. Work is arriving in that column faster than it leaves. That's your bottleneck.
  • The horizontal distance across a band. This roughly shows how long items spend in that stage.

The CFD is the closest thing Azure DevOps has to "cycle time per state." It's good for spotting a trend. It's harder to get a precise number from it, like "items spend a median of 2.1 days in Code review."

A light-mode workflow model showing where cycle time accumulates between delivery states

Step 3: Check which items are stuck right now

Trends show you the past. To act this week, you need the items currently sitting in the slow state. Create a query:

FieldOperatorValue
Work Item TypeInProduct Backlog Item, User Story, Bug
State=your slow state, e.g. Code review
State Change Date<=@Today - 5

Sort by State Change Date, oldest first. The top of this list is where to start your next standup.

Adjust the number of days to your team's normal pace. If items usually clear review in a day, five days is a real warning.

Where the built-in tools stop

Between the Cycle Time widget, the CFD and a query, you can piece together a picture. What's hard to get natively:

  • Median and p85 time per state. The average hides a lot. The p85 ("the slowest 15%") tells you what your worst normal case looks like, which is what stakeholders actually experience.
  • Entered vs. exited per week, per state. If 26 items entered Code review in a week and only 19 left, you know WIP will keep climbing before the CFD makes it obvious.
  • One view per state without rebuilding widgets for each column.

A faster way: flow per state in Azure DevOps Insights

Azure DevOps Insights is a free Azure DevOps extension that includes a Flow view for any workflow state. Pick a state, and you see:

  • How many items are in it now
  • Typical time (median), average time, and the slowest 15% (p85)
  • Items entered, exited and in state, by week or day

It reads your data live from Azure DevOps when you open the view. Nothing is copied or stored outside your organization, and there's no setup.

Key takeaways

  • Azure DevOps cycle time measures from first In Progress to Completed, and depends on correct state categories.
  • Use the Cycle Time widget for the trend, the CFD to find the slow stage, and a State Change Date query to find today's stuck items.
  • For median and p85 time per state, you'll need more than the built-in widgets.

Install Azure DevOps Insights free →