Build a board across several teams' sprints
Claims Intake is three days into Sprint 41; Regulatory Reporting is halfway
through Cycle 17. Two teams, two different current sprints, one program, and
a delivery manager who wants a single view of what is in flight right now. A
native board belongs to exactly one team, so no board shows both. A query with
one @CurrentIteration clause per team has no such boundary.
This is the short version. One board across several teams' sprints covers the query variants and the troubleshooting in full.
Before you start
Every team the query names must have a current iteration scheduled. The union stands on that, and the Notes below cover what happens when one does not. Both teams here live in Claims Platform; teams from different projects work too, with the cross-project switch from Build a board across several projects.
Steps
- In the query editor, add one Iteration Path = @CurrentIteration clause
per team, each with its team as the parameter,
as
@CurrentIteration('[Claims Platform]\Claims Intake'), and join the clauses with Or. Keep the type Flat list of work items, with noORDER BYor sorted by your process's order field ascending. - Save it in Shared Queries.
- Open Boards → AnyKanban and select New board, then Use existing query in the gallery. Name it, pick the query, and pick Product Backlog Item under Work item type.
- On the Fields tab, add Iteration Path to Fields shown on cards. On a board where every card belongs to some team's sprint, the sprint is the context a card cannot do without.
- Select Create, then open the board. In Settings, on the
Swimlanes tab, type
System.IterationPathinto the lane field box. That gives one row per sprint, and the union reads at a glance.
What you should see
Four columns, New, Approved, Committed and Done, and two swimlanes, one per
current sprint: Claims Platform\Intake\Sprint 41 with ten cards above
Claims Platform\Regulatory\Cycle 17 with nine. Committed holds two cards
from each team; give it a WIP limit of 4 and its header in each lane reads
2 beside 4/4: the lane's own two, then one number for work two different
sprint plans put in flight.
The union is live, not a snapshot: Parse vet invoices for pet claims sits in Sprint 42 and Prepare the year-end solvency pack in Cycle 18, so the query returns neither. When the sprints roll, the board follows without anyone editing a filter.

Notes
Azure DevOps enforces the current-iteration requirement the hard way: a named team with no scheduled current sprint does not return fewer rows. It fails the whole query, so one team between sprints takes the other team's cards with it. The board degrades by name rather than by mystery: opening it tells you which team has no scheduled current iteration and that no cards can be shown, and a board already open keeps the cards it last read and warns that refreshing has stopped, and why. The fix belongs to the named team's iteration settings; the warning clears on the next successful refresh.
If a team's sprints have gaps by design, the macro is the wrong tool.
Name iteration paths with UNDER instead. The full
guide shows that variant, and one by team
areas with no sprint dependency at all.
Related
- One board across several teams' sprints: the full guide
- Build a board across several projects
- Get one row per work item type: the same swimlane mechanism, by type instead of sprint
- Create a named board