The Kanban method used in Azure Boards originated in Toyota's manufacturing plants in the 1940s. Toyota workers used physical cards (kanban = "visual signal" in Japanese) to signal when parts needed replenishment. Software teams adopted this visual workflow management in the 2000s, and it's now one of the most popular agile practices worldwide.
Azure Boards & Agile Project Management
Plan, track, and discuss work across your entire development team using Azure Boards — work items, sprints, Kanban boards, backlogs, queries, dashboards, and full traceability from idea to production deployment.
🧒 Simple Explanation (ELI5)
Imagine you're planning a huge birthday party. There are lots of things to do — buy decorations, bake a cake, send invitations, set up the music. If you just keep it all in your head, you'll forget things and nobody else will know what needs doing.
So you get a big whiteboard and divide it into three columns: To Do, Doing, and Done. You write each task on a sticky note and stick it in the right column. When someone starts working on "bake the cake," they move it from To Do to Doing. When the cake is ready, they move it to Done. Everyone can see the board and immediately know what's happening.
- Azure Boards = the digital whiteboard — it's where your team organizes all the work that needs to happen
- Work items = sticky notes — each one describes a single piece of work (a feature, a bug fix, a task)
- Kanban board = the columns on the whiteboard (To Do → Doing → Done) — you drag work items across as they progress
- Sprint = a time-boxed mini-party-planning session — "in the next 2 weeks, we'll finish these 10 sticky notes"
- Backlog = the full pile of sticky notes you haven't started yet — your prioritized to-do list
- Dashboard = a summary poster on the wall — charts showing how much work is done, what's behind schedule, and who's working on what
Without a board? Tasks live in people's heads, emails, and scattered spreadsheets. Nobody knows what's in progress, things get forgotten, two people accidentally work on the same thing, and the "party" (your software release) is chaos.
🔧 Technical Explanation
Work Item Types & Hierarchy
Azure Boards organizes work in a hierarchy. Each level adds granularity, from the highest-level business goals down to individual developer tasks.
| Work Item Type | Level | Purpose | Example |
|---|---|---|---|
| Epic | Portfolio | Large business initiatives spanning multiple sprints or months. Tracks high-level progress for stakeholders. | "Implement User Management System" |
| Feature | Portfolio | A deliverable capability within an Epic. Decomposed into User Stories. Typically maps to a release milestone. | "User Registration & Login" |
| User Story | Requirement | A user-facing requirement written from the user's perspective: "As a [user], I want [capability] so that [benefit]." Completable in a single sprint. | "As a user, I want to reset my password via email so I can recover my account" |
| Task | Activity | A specific developer activity within a User Story. Typically takes hours, not days. Assigned to one person. | "Create password reset API endpoint" |
| Bug | Requirement | A defect in existing functionality. Tracked at the same level as User Stories. Has repro steps, expected vs. actual behavior. | "Password reset email sent to wrong address when account has multiple emails" |
The hierarchy flows: Epic → Feature → User Story → Task. Bugs sit alongside User Stories. This structure lets stakeholders track progress at the Epic/Feature level while developers work at the Task level.
The available work item types depend on the process template you chose when creating the project. The hierarchy above applies to the Agile process. The Scrum process uses "Product Backlog Item" instead of "User Story." The CMMI process uses "Requirement" instead of "User Story." You cannot change the process template after project creation without migrating to a new project or using the inherited process model.
Process Templates
When you create an Azure DevOps project, you choose a process template that determines the available work item types, workflow states, and board configurations. Azure DevOps offers four built-in processes.
| Process | Work Item Types | Workflow States | Best For |
|---|---|---|---|
| Basic | Epic, Issue, Task | To Do → Doing → Done | Small teams, startups, minimal overhead. Simple and lightweight — no distinction between stories and bugs. |
| Agile | Epic, Feature, User Story, Task, Bug | New → Active → Resolved → Closed | Most common choice. Teams practicing Agile/Scrum-like workflows who want flexibility without strict Scrum rules. |
| Scrum | Epic, Feature, Product Backlog Item, Task, Bug, Impediment | New → Approved → Committed → Done | Teams practicing formal Scrum with Sprint Planning, Daily Standups, Reviews, and Retrospectives. |
| CMMI | Epic, Feature, Requirement, Task, Bug, Change Request, Risk, Review | Proposed → Active → Resolved → Closed | Regulated industries (finance, healthcare, government) requiring formal change management and audit trails. |
If you're unsure, pick Agile. It's the most versatile process — flexible enough for Scrum-style sprints, Kanban flows, or hybrid approaches. You can always customize it later using the Inherited Process model (Organization Settings → Process) to add custom fields, states, and work item types.
Sprints (Iterations)
A sprint (also called an iteration) is a fixed time period (typically 1–4 weeks) during which the team commits to completing a set of work items. Sprints provide rhythm and predictability.
- Sprint Planning: The team selects User Stories from the backlog, breaks them into Tasks, estimates effort, and commits to a sprint goal.
- Sprint Backlog: The subset of backlog items assigned to the current sprint. Visible on the Sprint board.
- Sprint Board: A Kanban-style board scoped to the current sprint iteration — shows only the items committed for this sprint.
- Sprint Burndown: A chart tracking remaining work over time. Ideally, the line trends downward toward zero by sprint end.
- Velocity: The average number of story points (or work items) completed per sprint. Used for future sprint planning and release forecasting.
Kanban Boards
The Kanban board provides a visual representation of work flowing through your process. Each column represents a workflow state, and cards move left to right as work progresses.
- Columns: Map to workflow states (New → Active → Resolved → Closed). You can add custom columns like "Code Review" or "Testing."
- WIP Limits: Set a maximum number of items per column. When a column hits its limit, the header turns red — a signal to stop starting and start finishing. WIP limits prevent overloading the team and expose bottlenecks.
- Swimlanes: Horizontal rows that group work items by category (e.g., "Expedite" lane for urgent items, "Maintenance" lane for tech debt).
- Card customization: Add fields to cards (assignee avatar, story points, tags, parent feature) for at-a-glance context on the board.
- Cumulative Flow Diagram (CFD): A stacked area chart showing how many items are in each state over time. The width of each band reveals cycle time and bottlenecks.
Backlogs
The backlog is the prioritized list of all work items — ordered from highest priority at the top to lowest at the bottom. Azure Boards provides three backlog levels:
- Epics backlog: Portfolio-level view for leadership and product managers.
- Features backlog: Mid-level view showing deliverable capabilities.
- Stories backlog (or PBI backlog in Scrum): Sprint-level view for the dev team. Drag-and-drop to reorder priorities.
Queries
Queries let you find, filter, and organize work items using structured criteria. They're the SQL of Azure Boards.
- Flat queries: Return a flat list of matching work items (e.g., "All active bugs assigned to me").
- Tree queries: Return items and their children in a hierarchy (e.g., "All User Stories and their Tasks for Sprint 5").
- Direct links queries: Return items linked to each other (e.g., "All PRs linked to a Bug").
- Shared queries: Saved in the project's Shared Queries folder — visible to all team members. Used as data sources for dashboard widgets.
Dashboards
Dashboards are customizable pages with widgets that visualize project status. Each team can have multiple dashboards.
- Built-in widgets: Burndown chart, Velocity, Cumulative Flow Diagram, Query Results, Query Tile (count badge), Sprint Overview, Assigned to Me, Code Tile (repo stats).
- Marketplace widgets: Extend dashboards with third-party widgets from the Visual Studio Marketplace.
- Auto-refresh: Dashboards refresh automatically — ideal for wall-mounted monitors in team rooms.
Linking Work Items to Code
One of Azure Boards' most powerful features is full traceability — linking work items to commits, pull requests, and builds so you can trace any production change back to a user story.
- Commit linking: Include
AB#1234in your commit message to auto-link the commit to work item #1234. The link appears in the work item's "Development" section. - PR linking: Link work items to PRs when creating the PR (or in the PR details). Branch policies can require linked work items.
- Build linking: Pipelines automatically link builds to the work items referenced by commits included in the build.
- Release linking: Release pipelines link deployed artifacts to work items — you can see which user stories shipped in each deployment.
The AB#1234 syntax only works in commit messages pushed to Azure Repos. If you're using GitHub repos with Azure Boards, you'll need to configure the Azure Boards app for GitHub in GitHub Marketplace and use AB#1234 in commit messages or PR descriptions. The linking works cross-platform but requires the integration to be set up.
Work Item Type (WIT) Customization
Azure Boards supports deep customization through the Inherited Process model (for Azure DevOps Services) or XML Process (for Azure DevOps Server on-premises).
- Custom fields: Add text, numeric, date, picklist, identity, or boolean fields to any work item type (e.g., "Risk Level" dropdown on Bugs).
- Custom states: Add workflow states like "In Review," "QA Testing," or "UAT" to match your team's actual process.
- Custom work item types: Create entirely new types (e.g., "Technical Debt," "Spike," "Design Review") with their own fields and workflows.
- Custom rules: Automate field behavior — e.g., "When State changes to Active, set Activated Date to current date" or "When Priority is 1, require the Severity field."
- Layout customization: Rearrange fields, groups, and pages on the work item form.
📊 Work Item Hierarchy & Sprint Board
3 pts
5 pts · Sarah
2 pts · Mike
3 pts · Alex
5 pts · Sarah
8 pts · Mike
📋 Agile vs Scrum vs CMMI Process Templates
| Aspect | Agile | Scrum | CMMI |
|---|---|---|---|
| Requirement Type | User Story | Product Backlog Item (PBI) | Requirement |
| Workflow States | New → Active → Resolved → Closed | New → Approved → Committed → Done | Proposed → Active → Resolved → Closed |
| Bug Tracking | Bugs at same level as Stories | Bugs at same level as PBIs or Tasks (configurable) | Bugs at Requirement level with formal triage |
| Extra WIT | — | Impediment | Change Request, Risk, Review |
| Estimation | Story Points | Effort (numeric) | Size (points), Original/Remaining/Completed Work |
| Change Management | Informal | Informal — handled in Sprint Review | Formal — Change Request WIT with approval process |
| Audit Trail | Basic history | Basic history | Full audit — every field change logged, review trails |
| Ideal Team Size | 5–50 | 3–9 (Scrum Guide recommendation) | Any size — especially regulated environments |
| Best For | Most software teams wanting Agile flexibility | Teams strictly following Scrum framework | Finance, healthcare, government, defense — compliance required |
You can combine approaches. Many teams use the Agile process template but run Scrum ceremonies (Sprint Planning, Daily Standup, Review, Retro). The process template defines the work item types — it doesn't force you into a specific methodology.
🛠️ Hands-on: Setting Up Azure Boards
Follow these steps to configure Azure Boards from scratch and run a complete sprint cycle.
Prerequisites
- An Azure DevOps project using the Agile process template (created in Lesson 1)
- Azure CLI installed with the
azure-devopsextension - Project Administrator or Contributor permissions
Step 1: Configure Sprints (Iterations)
Sprints must be defined before you can assign work to time periods.
- Navigate to Project Settings → Boards → Project configuration → Iterations
- Create a root iteration with your project name
- Add child iterations for each sprint:
MyProject ├── Sprint 1 (Apr 21 – May 2, 2026) ├── Sprint 2 (May 5 – May 16, 2026) ├── Sprint 3 (May 19 – May 30, 2026) ├── Sprint 4 (Jun 2 – Jun 13, 2026) └── Sprint 5 (Jun 16 – Jun 27, 2026)
Then go to Boards → Team configuration → Iterations and check the sprints your team will use. Only checked iterations appear on your Sprint board.
Step 2: Create an Epic and Feature
# Sign in and set defaults
az login
az devops configure --defaults organization=https://dev.azure.com/{org} project={project}
# Create an Epic
az boards work-item create \
--type "Epic" \
--title "User Management System" \
--description "Complete user registration, authentication, and profile management" \
--assigned-to "your-email@company.com"
# Note the returned ID (e.g., 100)
# Create a Feature under the Epic
az boards work-item create \
--type "Feature" \
--title "User Registration & Login" \
--description "Implement sign-up, login, password reset, and OAuth integration"
# Link the Feature to the Epic (parent-child)
az boards work-item relation add \
--id 101 \
--relation-type "System.LinkTypes.Hierarchy-Reverse" \
--target-id 100
Step 3: Add User Stories to the Backlog
# Create User Stories az boards work-item create \ --type "User Story" \ --title "As a user, I want to sign up with email so I can create an account" \ --fields "Microsoft.VSTS.Scheduling.StoryPoints=5" \ --assigned-to "sarah@company.com" \ --iteration "MyProject\Sprint 1" az boards work-item create \ --type "User Story" \ --title "As a user, I want to log in with my credentials so I can access the app" \ --fields "Microsoft.VSTS.Scheduling.StoryPoints=3" \ --assigned-to "mike@company.com" \ --iteration "MyProject\Sprint 1" az boards work-item create \ --type "User Story" \ --title "As a user, I want to reset my password via email so I can recover my account" \ --fields "Microsoft.VSTS.Scheduling.StoryPoints=5" \ --assigned-to "sarah@company.com" \ --iteration "MyProject\Sprint 1" # Link each story to the parent Feature az boards work-item relation add --id 102 --relation-type "System.LinkTypes.Hierarchy-Reverse" --target-id 101 az boards work-item relation add --id 103 --relation-type "System.LinkTypes.Hierarchy-Reverse" --target-id 101 az boards work-item relation add --id 104 --relation-type "System.LinkTypes.Hierarchy-Reverse" --target-id 101
Step 4: Break Stories into Tasks
# Create Tasks for "Sign up with email" (User Story #102) az boards work-item create \ --type "Task" \ --title "Create sign-up REST API endpoint" \ --fields "Microsoft.VSTS.Scheduling.RemainingWork=4" \ --assigned-to "sarah@company.com" \ --iteration "MyProject\Sprint 1" az boards work-item create \ --type "Task" \ --title "Build sign-up form UI component" \ --fields "Microsoft.VSTS.Scheduling.RemainingWork=6" \ --assigned-to "alex@company.com" \ --iteration "MyProject\Sprint 1" az boards work-item create \ --type "Task" \ --title "Write unit and integration tests for sign-up" \ --fields "Microsoft.VSTS.Scheduling.RemainingWork=3" \ --assigned-to "sarah@company.com" \ --iteration "MyProject\Sprint 1" # Link Tasks to parent User Story az boards work-item relation add --id 105 --relation-type "System.LinkTypes.Hierarchy-Reverse" --target-id 102 az boards work-item relation add --id 106 --relation-type "System.LinkTypes.Hierarchy-Reverse" --target-id 102 az boards work-item relation add --id 107 --relation-type "System.LinkTypes.Hierarchy-Reverse" --target-id 102
Step 5: Move Items Across the Board
You can move work items by dragging on the board UI, or update state via CLI:
# Move a Task to "Active" (developer starts working) az boards work-item update --id 105 --state "Active" # Move a Task to "Closed" (work complete) az boards work-item update --id 105 --state "Closed" # Move a User Story to "Resolved" (all tasks complete, ready for review) az boards work-item update --id 102 --state "Resolved" # Move a User Story to "Closed" (accepted by product owner) az boards work-item update --id 102 --state "Closed"
In the web UI, drag work items between columns on the board. The column a card is in corresponds to its State field. Moving a card to the "Active" column sets State = Active. You can also move items between sprints by dragging from the backlog to a sprint on the left panel.
Step 6: Link a Work Item to a Pull Request
Create a commit that references a work item, then open a PR:
# Include AB#102 in the commit message to auto-link git checkout -b feature/sign-up echo "def sign_up(email, password): pass" > signup.py git add . git commit -m "feat: implement sign-up endpoint AB#102" git push -u origin feature/sign-up # Create a PR linked to the work item az repos pr create \ --source-branch feature/sign-up \ --target-branch main \ --title "feat: implement sign-up endpoint" \ --description "Implements the sign-up API. Resolves AB#102" \ --work-items 102
Using AB#102 in commit messages creates an automatic link. Using Fixes AB#102 or Resolves AB#102 in the PR description will also automatically transition the work item to "Resolved" or "Closed" (depending on your branch policy settings) when the PR is merged.
Step 7: Create a Query
Create a shared query to track active work for the current sprint:
# Create a flat query for active Sprint 1 items az boards query create \ --name "Sprint 1 Active Items" \ --wiql "SELECT [System.Id], [System.Title], [System.State], [System.AssignedTo], [Microsoft.VSTS.Scheduling.StoryPoints] FROM WorkItems WHERE [System.IterationPath] = 'MyProject\Sprint 1' AND [System.State] <> 'Closed' ORDER BY [Microsoft.VSTS.Common.Priority]" # Run any query inline az boards query --wiql "SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.AssignedTo] = @Me AND [System.State] = 'Active'"
Step 8: Use Azure CLI for Board Queries
The Azure CLI is powerful for scripting board operations and automating workflows:
# List all work items assigned to you az boards query --wiql "SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.AssignedTo] = @Me ORDER BY [System.ChangedDate] DESC" # Get details of a specific work item az boards work-item show --id 102 --fields "System.Title,System.State,System.IterationPath,Microsoft.VSTS.Scheduling.StoryPoints" # Bulk update: move all "New" items in Sprint 1 to "Active" az boards query --wiql "SELECT [System.Id] FROM WorkItems WHERE [System.IterationPath] = 'MyProject\Sprint 1' AND [System.State] = 'New'" --output table # List all iterations (sprints) az boards iteration team list --team "MyProject Team" # Show sprint capacity az boards iteration team show-backlog-iteration --team "MyProject Team" # Add a tag to a work item az boards work-item update --id 102 --fields "System.Tags=high-priority;sprint-1"
The az boards commands require the azure-devops CLI extension. Install it with az extension add --name azure-devops. Make sure you've set defaults with az devops configure --defaults organization=... project=... before running board commands.
Step 9: Build a Dashboard
Dashboards are created in the web UI:
- Navigate to Overview → Dashboards
- Click "+ New Dashboard" — name it "Sprint 1 Overview"
- Add widgets by clicking the ⚙️ Edit button:
- Sprint Burndown — tracks remaining work vs. time
- Velocity — shows story points completed per sprint
- Cumulative Flow Diagram — shows items in each state over time
- Query Results — point to your "Sprint 1 Active Items" shared query
- Query Tile — shows a count badge (e.g., "5 Active Bugs")
- Assigned to Me — personal widget for your current items
- Arrange widgets by dragging and resizing. Click "Done Editing" to save.
🐛 Debugging Scenarios
Scenario 1: "Sprint Not Showing Work Items"
Symptom: You open the Sprint board but it's empty, even though you created work items and assigned them to the sprint.
Root Causes & Fixes:
- Iteration path mismatch: The work item's Iteration Path must exactly match the sprint name configured for your team. Check the work item's Iteration Path field — it must be something like
MyProject\Sprint 1, not justSprint 1. Navigate to the backlog, right-click the item, and use "Move to iteration" to fix. - Sprint not enabled for team: Go to Project Settings → Boards → Team configuration → Iterations. Ensure the sprint is checked (selected) for your team. Unchecked sprints won't appear in the Sprint board navigation.
- Wrong team context: If your project has multiple teams, you may be viewing Team B's sprint board while the items are assigned to Team A's iteration. Switch teams using the team selector in Boards.
- Sprint date range expired: If the sprint's end date has passed, it moves to the "Past" section. Check the sprint date range in Project Settings → Iterations.
# Verify a work item's iteration path az boards work-item show --id 102 --fields "System.IterationPath" # Fix the iteration path az boards work-item update --id 102 --iteration "MyProject\Sprint 1"
Scenario 2: "Cannot Move Work Items on the Board"
Symptom: Dragging a work item on the Kanban or Sprint board does nothing, or you see a permission error.
Root Causes & Fixes:
- Insufficient permissions: You need Edit work items in this node permission on the Area Path the item belongs to. Ask a Project Administrator to grant your security group this permission in Project Settings → Boards → Areas → Security.
- Area Path restriction: Your team might only be configured to see specific Area Paths. If the item's Area Path doesn't match your team's allowed areas, you can't interact with it. Check Project Settings → Team configuration → Areas.
- Work item rules blocking the transition: Custom rules may prevent state transitions (e.g., "Cannot move to Resolved unless the Severity field is set"). Check the work item form for validation errors — a red banner at the top will describe the issue.
- Board column mapping mismatch: If the board's column configuration doesn't map to valid states, drag-and-drop fails. Go to Board Settings (⚙️) → Columns and verify each column maps to a valid workflow state.
Scenario 3: "Build Link Not Appearing in Work Item"
Symptom: You committed with AB#102 in the message and merged the PR, but the work item's "Development" section shows no linked build.
Root Causes & Fixes:
- Commit message format: The syntax must be exactly
AB#<id>with no space between AB and #. Wrong:AB #102,AB-102,#102. Correct:AB#102. - Repository not linked to Azure Boards: If using GitHub repos, ensure the Azure Boards app for GitHub is installed and connected to your Azure DevOps organization.
- Pipeline not connected: The CI pipeline must be in the same Azure DevOps project as the work item. If your pipeline is in a different project, cross-project linking needs to be enabled in Organization Settings.
- Build hasn't completed yet: Links appear after the pipeline run finishes. Check Pipelines → Runs to see if the build is still in progress or queued.
# Verify the correct AB# format in your commit git log --oneline -5 # abc1234 feat: implement sign-up endpoint AB#102 ← correct # def5678 fix login AB #103 ← WRONG (space) # ghi9012 close #104 ← WRONG (missing AB) # Fix: amend the commit message (only if not yet pushed) git commit --amend -m "fix: login validation AB#103"
Scenario 4: "Dashboard Not Updating"
Symptom: Dashboard widgets show stale data — the Sprint Burndown doesn't reflect today's work, or Query Results show items that have already been closed.
Root Causes & Fixes:
- Auto-refresh interval: Dashboards auto-refresh every 5 minutes by default. If you need real-time data, manually refresh the browser page (F5) or configure the auto-refresh interval in dashboard settings.
- Query is stale: If a widget is backed by a Shared Query, ensure the query itself is correct. Open the query in Boards → Queries and run it to verify the results match expectations.
- Widget configuration pointing to wrong sprint: Open the widget's settings (⚙️) and verify it's pointing to the current sprint iteration, not a past sprint.
- Burndown chart uses "remaining work" field: The Sprint Burndown widget tracks the Remaining Work field on Tasks (measured in hours). If your team uses Story Points on User Stories but doesn't fill in Remaining Work on Tasks, the burndown chart will be empty. Solution: use the Sprint Burndown (Analytics) widget, which supports Story Points on the backlog level.
- Browser cache: Hard-refresh with Ctrl+Shift+R to clear cached dashboard data.
- Analytics latency: Widgets powered by the Analytics service (Burndown, Velocity, CFD) may lag behind real-time data by up to 30 minutes. If you need instant accuracy, use query-based widgets instead — they run live WIQL queries against the work-tracking store.
Checklist when dashboard widgets show stale data: ✅ Refresh browser (F5 / Ctrl+Shift+R) ✅ Verify widget points to the correct sprint/query ✅ Confirm the Remaining Work or Story Points fields are populated ✅ Check the Analytics service status at https://status.dev.azure.com ✅ Wait up to 30 minutes for Analytics-backed widgets to sync
🎯 Interview Questions
Beginner
Azure Boards is the work-tracking service within Azure DevOps that lets teams plan, track, and discuss work. It provides Kanban boards, backlogs, sprint planning tools, queries, and dashboards. It solves the problem of visibility and coordination — without a centralized work-tracking system, tasks live in emails, spreadsheets, and people's heads. Azure Boards gives every team member a single source of truth for what needs to be done, who's doing it, and what's blocked. It also provides traceability — linking work items to commits, PRs, and builds so you can trace any production change back to a business requirement.
The Agile process template provides five core work item types in a hierarchy: Epic — large business initiatives spanning months (e.g., "Build User Management System"). Feature — a deliverable capability within an Epic (e.g., "User Registration"). User Story — a user-facing requirement following the "As a [user], I want [X] so that [Y]" format. Completable in one sprint. Task — a specific developer activity within a User Story, typically measured in hours. Bug — a defect tracked at the same level as User Stories, with repro steps, expected vs. actual behavior, and severity/priority fields. The hierarchy is: Epic → Feature → User Story → Task, with Bugs alongside User Stories.
A Kanban board shows all work items in the backlog regardless of time period. It emphasizes continuous flow — items move from left (New) to right (Done) with WIP limits on columns to prevent overloading. There are no time boundaries. A Sprint board is scoped to a specific iteration (e.g., Sprint 1: Apr 21–May 2). It only shows items assigned to that sprint. It's used during sprint execution to track daily progress. Both boards use the same column-based visualization, but the Sprint board adds a focus on time-boxed commitment and shows a burndown chart. Teams using Scrum typically use Sprint boards; teams using Kanban methodology use the Kanban board; many teams use both.
There are three ways: 1. Commit message syntax: Include AB#1234 (where 1234 is the work item ID) in your Git commit message. Azure DevOps automatically creates a link between the commit and the work item. 2. PR linking: When creating a pull request, use the "Link work items" field to select work items. You can also include Fixes AB#1234 in the PR description to auto-close the item on merge. 3. Manual linking: Open the work item, go to the "Development" section, and click "Add link" to manually link a commit, branch, or PR. The AB# syntax is the most efficient and widely used approach. Note: there must be no space between AB and #.
A backlog is the prioritized list of all pending work items, ordered from highest priority (top) to lowest (bottom). Azure Boards provides three backlog levels: Epics backlog (portfolio-level for leadership), Features backlog (mid-level for product managers), and Stories backlog (sprint-level for developers). You reorder items by dragging them up or down. During Sprint Planning, the team pulls items from the top of the Stories backlog into the sprint. The backlog ensures that the team always works on the highest-priority items first. It's also where you estimate items (Story Points), assign owners, and set iteration paths.
Intermediate
Agile: Uses User Stories as the primary requirement type with states New → Active → Resolved → Closed. Most flexible — works with Scrum, Kanban, or hybrid approaches. Best for most software teams. Scrum: Uses Product Backlog Items (PBIs) with states New → Approved → Committed → Done. Adds "Impediment" work item type. Best for teams strictly following the Scrum framework with formal ceremonies. CMMI: Uses Requirements with states Proposed → Active → Resolved → Closed. Adds Change Request, Risk, and Review work item types. Includes formal change management and detailed audit trails. Best for regulated industries (finance, healthcare, government, defense) where compliance and traceability are mandatory. Rule of thumb: If unsure, pick Agile. If auditors require formal change management, pick CMMI. If you practice strict Scrum and want the vocabulary match, pick Scrum.
WIP (Work in Progress) limits are maximum counts set on Kanban board columns that cap how many items can be in a given state simultaneously. For example, setting an "Active" column WIP limit of 3 means only 3 items should be in progress at the same time. When the limit is exceeded, the column header turns red as a visual warning. WIP limits are important because they: 1. Prevent team members from context-switching by starting too many items at once — multitasking reduces productivity. 2. Expose bottlenecks — if "Testing" column is always at its limit while "Development" has capacity, you know testing is the bottleneck. 3. Force a "stop starting, start finishing" culture — finish existing work before pulling new items. 4. Reduce cycle time — fewer items in progress means each individual item finishes faster. This is a core Kanban principle derived from lean manufacturing.
Azure DevOps Services uses the Inherited Process model for customization. Go to Organization Settings → Boards → Process. Create an inherited process from a built-in one (e.g., "My Custom Agile" inherited from Agile). Then customize: Custom fields: Add text, numeric, date, picklist, identity, or boolean fields to any work item type. Custom states: Add workflow states like "In Review" or "UAT." Custom work item types: Create new types like "Technical Debt" or "Spike" with their own fields and layouts. Custom rules: Automate behavior — e.g., when State = Active, auto-set Activated By to current user. Layout customization: Rearrange fields, groups, and pages on the work item form. After customizing, change your project to use the inherited process in Project Settings. Azure DevOps Server (on-prem) uses XML-based process customization, which is more powerful but also more complex.
The Cumulative Flow Diagram (CFD) is a stacked area chart that shows the count of work items in each state (New, Active, Resolved, Closed) over time. Each state is a colored band. How to read it: The vertical distance between two bands at any point in time shows how many items are in that state. The horizontal distance between two bands shows cycle time — how long items spend in that state. Identifying bottlenecks: If the "Active" band is widening over time (growing vertically), items are entering Active faster than they're leaving — work is piling up. This means development is a bottleneck. If the "Testing" band is widening, QA can't keep up. Healthy CFD: Bands should be roughly parallel with steady widths. Action: If a band widens, either increase capacity in that area (add testers), reduce incoming work (lower WIP limits), or remove blockers.
Queries let you search and filter work items using structured criteria (similar to SQL WHERE clauses). Three types: Flat query: Returns a flat list — e.g., "All active bugs assigned to me." Tree query: Returns parent-child hierarchies — e.g., "All User Stories and their child Tasks for Sprint 3." Direct links query: Returns items with specific link relationships — e.g., "All work items linked to a PR." Queries use the WIQL (Work Item Query Language) syntax for advanced filtering. You can save queries as My Queries (personal) or Shared Queries (team-visible). Shared queries are especially powerful because they're used as data sources for dashboard widgets (Query Results widget, Query Tile for counts). You can also subscribe to query-based email alerts — get notified whenever a new item matches the query.
Scenario-Based
Diagnosis: A flat burndown means no work items are moving to "Done" — the team is either blocked, scope-crept, or not updating work items. Investigation steps: 1. Check if items are actually being completed but not moved on the board — remind the team to update states. 2. Check if new items were added mid-sprint (scope creep) — the burndown line stays flat when work added equals work completed. Use the "Scope" line on the burndown chart to detect this. 3. Check for blockers — look for items stuck in "Active" for days. Raise blockers in Daily Standup. 4. Check if stories were too large — if a 13-point story can't be finished in 2 weeks, it should have been split. Action: Hold a mid-sprint check-in. Remove scope that was added. Escalate blockers. If the sprint can't be recovered, discuss with the Product Owner about descoping items to the next sprint. In the retrospective, address why estimation or scope management failed.
Use data-driven forecasting: 1. Open the Feature work item and check its child User Stories — see how many are Closed vs. remaining. 2. Check team Velocity (Dashboards → Velocity widget) — if the team averages 30 story points per sprint, and there are 60 points remaining, that's roughly 2 sprints. 3. Use the Forecast feature on the backlog — toggle "Forecasting On" to see which sprint each item is predicted to land in based on velocity. 4. Check the Cumulative Flow Diagram for cycle time — how long items typically take from Active to Closed. 5. Factor in risks: are any stories unestimated? Are there dependencies on other teams? Are there blockers? Answer format: "Based on our current velocity of 30 points/sprint and 60 remaining points, the feature should be complete by Sprint 7 (around June 27). However, there are 2 unestimated stories that could add 1 sprint of risk." Never give a date without data.
Solution — team-per-squad model: 1. Create 3 teams in Azure DevOps (Project Settings → Teams) — one per squad (e.g., Auth Squad, Payments Squad, Platform Squad). 2. Configure Area Paths per squad: MyProject\Auth, MyProject\Payments, MyProject\Platform. Assign each team to its Area Path. 3. Each team gets its own board, backlog, and sprint cadence. Items are automatically filtered by Area Path. 4. Create a "Program" team at the top that can see all Area Paths — this gives leadership a portfolio-level view of Epics and Features across all squads. 5. Use Delivery Plans (an Azure DevOps extension) to show all three teams' sprints on a single timeline view — useful for identifying cross-team dependencies. 6. Set swimlanes on each board for item types (Features, Bugs, Tech Debt) to reduce visual clutter. This scales Azure Boards from a single-team tool to a multi-team program management tool.
Troubleshooting steps: 1. Check commit message format: The syntax must be AB#1234 — no space between AB and #. Common mistakes: AB #1234, AB-1234, #1234. Inspect with git log --oneline. 2. Check the PR's work item link: Open the PR in Azure DevOps and verify the work item appears in the "Work Items" section. If not, the developer may have typed the wrong ID. 3. Check repo location: If the repository is on GitHub rather than Azure Repos, the Azure Boards GitHub app must be installed. Go to Project Settings → GitHub connections and verify the connection. 4. Check project boundaries: The work item and the repository must be in the same Azure DevOps organization. Cross-organization linking isn't supported. 5. Check if the PR was completed: Build/deployment links appear after the pipeline triggers. If the PR hasn't been merged or the pipeline hasn't run, the build link will be missing. 6. Check caching: Refresh the work item page — link propagation can take a few seconds.
Phase 1 — Assessment: Export the Jira backlog (issues, epics, sprints, custom fields, links, attachments). Map Jira concepts to Azure Boards: Jira Issue → User Story, Jira Epic → Epic, Jira Sprint → Iteration, Jira Component → Area Path, Jira custom fields → custom fields in inherited process. Document workflow states and transition rules. Phase 2 — Process setup: Create an Inherited Process in Azure DevOps matching the Jira workflow. Add custom fields, states, and work item types that match the Jira configuration. Phase 3 — Data migration: Use the Azure DevOps Migration Tools (open-source by nkdAgility) or the OpsHub Integration Manager for automated bulk migration. These tools migrate work items, history, links, and attachments. Phase 4 — Validation: Compare counts and spot-check items — verify story counts, sprint assignments, parent-child links, and custom field data. Phase 5 — Training & cutover: Run a 30-minute walkthrough for each team. Set Jira to read-only. Go live on Azure Boards. Keep Jira accessible for 30 days for reference, then decommission.
🌍 Real-World Use Case
A Healthcare Startup Bringing Order to Sprint Chaos
Consider a healthcare startup building a patient portal — 15 developers across 2 squads, regulated by HIPAA, and shipping biweekly to production.
The problem:
- Work tracked in a mix of Jira, spreadsheets, and Slack messages — no single source of truth
- No sprint planning — developers picked random tasks with no prioritization. High-priority compliance fixes were delayed while low-impact features were built.
- No traceability — when an auditor asked "which user story led to this production change?" nobody could answer within 24 hours
- Bugs reported by QA were lost in email — no formal tracking, no severity, no SLAs
- Stakeholders had zero visibility into progress — the "when will it be done?" question had no data-driven answer
What they implemented in Azure Boards:
- CMMI process template — chosen for HIPAA compliance; Change Requests require documented approval, every field change is audited
- Two teams with separate Area Paths: "Patient Portal\Frontend" and "Patient Portal\Backend" — each squad has its own board, backlog, and sprint cadence
- Program-level team: A leadership team sees all Epics and Features across both squads in a single portfolio backlog
- Sprint cadence: 2-week sprints with formal Sprint Planning, Daily Standups, Sprint Review (with stakeholder demo), and Retrospective
- Commit linking enforced: Branch policy on
mainrequires linked work items — every PR must reference a Requirement or Bug viaAB# - Dashboard for leadership: Sprint Burndown, Velocity trend, Bug count by severity (Query Tile), Cumulative Flow Diagram — auto-refreshing on a wall-mounted monitor
- Custom query for compliance: "All Change Requests approved in the last 30 days" — ready for HIPAA audit at any time
Results after 3 months:
- Audit response time: from 24+ hours to under 5 minutes — any change is traceable to a work item, PR, build, and deployment
- Sprint completion rate: 85%+ (up from ~40% when tasks were untracked)
- Bug escape rate to production: reduced 60% — formal bug tracking with severity and SLAs ensured high-priority bugs were fixed first
- Stakeholder satisfaction: dramatically improved — real-time dashboards replaced "any updates?" email chains
- Developer morale: improved — clear priorities, no conflicting requests, visible progress
Azure Boards isn't just a project management tool — it's the connective tissue between business requirements and production deployments. When combined with Azure Repos (commit linking) and Azure Pipelines (build/release linking), it creates end-to-end traceability that satisfies compliance auditors, informs stakeholders, and keeps developers focused on the right work.
📝 Summary
| Concept | Key Takeaway |
|---|---|
| Azure Boards | Work-tracking service in Azure DevOps: Kanban boards, backlogs, sprints, queries, and dashboards for Agile project management. |
| Work Item Hierarchy | Epic → Feature → User Story → Task (Agile). Bugs sit alongside User Stories. Hierarchy enables portfolio-level and sprint-level views. |
| Process Templates | Basic (simple), Agile (most common), Scrum (formal), CMMI (regulated). Choose Agile unless compliance requires CMMI. |
| Sprints | Time-boxed iterations (1–4 weeks). Sprint Planning → execution → Review → Retro. Burndown and Velocity charts track progress. |
| Kanban Board | Visual workflow: columns = states, cards = work items. WIP limits prevent overloading and expose bottlenecks. |
| Backlogs | Prioritized work item lists at three levels: Epics, Features, Stories. Drag to reorder. Top items are worked on first. |
| Queries | Structured filters (flat, tree, direct links) using WIQL. Shared queries power dashboard widgets and email alerts. |
| Dashboards | Customizable pages with widgets: Burndown, Velocity, CFD, Query Results. Auto-refresh for real-time visibility. |
| Traceability | Link work items to commits (AB#ID), PRs, builds, and releases. Full traceability from idea to production. |
| Customization | Inherited Process model: add custom fields, states, work item types, and rules to match your team's workflow. |