Appearance
ADO Board Setup — Action Plan ​
Status: setup COMPLETE. The
Heritage Community HubADO project is provisioned — area paths, iterations, columns, and the work-item backlog all exist. This guide is retained as a reference runbook for re-creating the project (e.g. a new tenant) and to document how the board was set up. The area-path array and seed examples below reflect the actual provisioned state (six area paths; decisions already locked in ADRs 0001-0024).
This guide walks through the one-time setup of the Heritage Community Hub ADO project: area paths, iterations, work item types, and board columns. All operations use the Azure CLI (az boards / az devops). Run these steps once when provisioning the project; they do not need to be repeated for normal sprint work.
Prerequisites ​
- Azure CLI installed and authenticated:powershell
az login - Azure DevOps CLI extension installed:powershell
az extension add --name azure-devops AZURE_DEVOPS_EXT_PATset in your session (loaded viaLoad-HCSEnvironment.ps1).- Set defaults for the session:powershell
az devops configure --defaults organization=https://dev.azure.com/hybridcloudsolutions project="Heritage Community Hub"
Step 1 — Verify the ADO project exists (5 minutes) ​
powershell
# List projects in the org — confirm "Heritage Community Hub" appears
az devops project list --output tableIf the project does not exist, create it:
powershell
az devops project create `
--name "Heritage Community Hub" `
--description "Faith-centered community management platform for Heritage Virginia" `
--process Agile `
--visibility privateStep 2 — Create area paths (10 minutes) ​
Area paths reflect the platform's internal structure. Create each path below. The format is <project>\<area> — the project root is created automatically.
powershell
$areas = @(
"Platform",
"Web",
"Mobile",
"Homeschool",
"Marketplace",
"Media"
)
foreach ($area in $areas) {
az boards area project create --name $area
}Verify:
powershell
az boards area project list --depth 2 --output tableExpected output — each area should appear under the Heritage Community Hub root:
Heritage Community Hub
├── Platform
├── Web
├── Mobile
├── Homeschool
├── Marketplace
└── MediaCalendar, Announcements, Messaging, project-management, and documentation work attach to
\Platform(or the most specific feature area) plus the relevant tag — there is no separate\Calendar,\Project Management, or\Documentationarea path. Keep depth ≤ 2.
Step 3 — Create iterations (sprints) (10 minutes) ​
Iterations follow the naming pattern YYYY-Q<n>-S<m>. Each sprint is 2 weeks; 6 sprints per quarter. Create a full year of iterations at project start.
powershell
# Create top-level quarter nodes first, then sprint children
$quarters = @("2026-Q3", "2026-Q4", "2027-Q1", "2027-Q2")
foreach ($q in $quarters) {
az boards iteration project create --name $q
}
# Create sprint nodes under each quarter
# Adjust start/finish dates to your actual calendar
$sprints = @(
@{ path="2026-Q3"; name="S1"; start="2026-07-07"; finish="2026-07-20" },
@{ path="2026-Q3"; name="S2"; start="2026-07-21"; finish="2026-08-03" },
@{ path="2026-Q3"; name="S3"; start="2026-08-04"; finish="2026-08-17" },
@{ path="2026-Q3"; name="S4"; start="2026-08-18"; finish="2026-08-31" },
@{ path="2026-Q3"; name="S5"; start="2026-09-01"; finish="2026-09-14" },
@{ path="2026-Q3"; name="S6"; start="2026-09-15"; finish="2026-09-28" },
@{ path="2026-Q4"; name="S1"; start="2026-10-05"; finish="2026-10-18" },
@{ path="2026-Q4"; name="S2"; start="2026-10-19"; finish="2026-11-01" },
@{ path="2026-Q4"; name="S3"; start="2026-11-02"; finish="2026-11-15" },
@{ path="2026-Q4"; name="S4"; start="2026-11-16"; finish="2026-11-29" },
@{ path="2026-Q4"; name="S5"; start="2026-11-30"; finish="2026-12-13" },
@{ path="2026-Q4"; name="S6"; start="2026-12-14"; finish="2026-12-27" }
)
foreach ($s in $sprints) {
az boards iteration project create `
--name $s.name `
--path "Heritage Community Hub\$($s.path)" `
--start-date $s.start `
--finish-date $s.finish
}Verify:
powershell
az boards iteration project list --depth 3 --output tableStep 4 — Configure board columns (5 minutes) ​
The default Agile board columns map work item states. The recommended column set for this project is:
New → Active → Resolved → ClosedFor visual clarity, rename the columns in the ADO web UI:
- Open
dev.azure.com/hybridcloudsolutions/Heritage Community Hub. - Go to Boards > Settings > Columns.
- Rename to match the flow below:
| Column | Maps to ADO state | WIP limit |
|---|---|---|
| Backlog | New | — |
| In Progress | Active | 5 |
| In Review | Active (sub-state) | 3 |
| Done | Closed | — |
WIP limits enforce focus — adjust to actual team capacity.
Step 5 — Create the standard tag vocabulary ​
Tags cannot be pre-seeded via the CLI; they are created on first use. Apply these tags when creating the first work items in each area so they appear in the tag picker:
| Tag | First use on |
|---|---|
platform | Build Platform Epic (AB#3074) |
identity | Platform auth/RBAC User Story |
pipeline | Platform CI/CD User Story |
infrastructure | Any Bicep / IaC work |
mobile | iOS App Epic (AB#3077) |
calendar | Calendar & Announcements Epic (AB#3075) |
homeschool | Homeschool work under Additional Features (AB#3076) |
marketplace | Marketplace work under Additional Features (AB#3076) |
docs | Any documentation / ADR work item |
security | Any security work |
breaking | Any change breaking an existing interface |
cross-repo | Any item spanning repos |
Step 6 — Seed the delivery Epics (20 minutes) ​
Already done in the live project. Phase 0 is complete (ADRs 0001-0024 all Accepted; the ADR Epic AB#3154 is Closed). The delivery Epics below already exist. This step is retained for re-provisioning; create the Epics, then decompose Features → User Stories → Tasks per the work-items standard.
Create the delivery Epics (revised priority order) to populate the board.
powershell
# Example: create the platform Epic
az boards work-item create `
--type Epic `
--title "Build Platform" `
--area "Heritage Community Hub\Platform" `
--fields "Priority=2" "Tags=platform;identity;infrastructure"Note the returned id — use it as --parent when creating child Features.
powershell
# Example child Feature
az boards work-item create `
--type Feature `
--title "Configure GitHub Actions CI/CD pipeline" `
--parent <epic-id> `
--area "Heritage Community Hub\Platform" `
--fields "Priority=2" "Tags=pipeline;infrastructure"Delivery Epics (these exist in the live project; AB# ids shown for reference):
| Epic title | AB# | Area path | Tags |
|---|---|---|---|
| Build Platform | AB#3074 | Platform | platform;identity;infrastructure |
| Deliver iOS (Apple) App | AB#3077 | Mobile | mobile |
| Deliver Sermons and Music Hub | AB#3137 | Media | platform |
| Deliver Community Calendar and Announcements | AB#3075 | Platform | calendar |
| Deliver Messaging and Notifications | AB#3138 | Platform | platform |
| Deliver Android (Google) App | AB#3139 | Mobile | mobile |
| Deliver Additional Features | AB#3076 | Platform | homeschool;marketplace |
| Deliver Signature Features | AB#3078 | Platform | platform |
Architectural decisions are already locked (ADRs 0001-0024). When re-provisioning, the ADR Epic "Author detailed ADRs (platform and per-feature)" (AB#3154) is recreated as Closed/historical — the stack is GitHub Actions + Azure Container Apps + PostgreSQL + Clerk auth, not an open research fork.
Step 7 — Verify the board ​
Open the ADO board in your browser and confirm:
- [ ] Project
Heritage Community Hubexists atdev.azure.com/hybridcloudsolutions - [ ] All 6 area paths appear under the project root (Platform, Web, Mobile, Homeschool, Marketplace, Media)
- [ ] Iterations are created for at least Q3 + Q4 of 2026
- [ ] Board columns are named (Backlog / In Progress / In Review / Done)
- [ ] The delivery Epics (AB#3074-3078, AB#3137-3139) are visible in the backlog
- [ ] Work items carry correct area paths and priority
Step 8 — Configure GitHub Issues sync labels ​
Apply the 6 standard labels to the GitHub repo so the ADO sync automation can apply them. Run from a session with GITHUB_TOKEN set:
powershell
$labels = @(
@{ name="ado-tracked"; color="0075ca"; description="Issue has a linked ADO work item" },
@{ name="in-progress"; color="e4e669"; description="ADO item is actively being worked" },
@{ name="resolved"; color="0e8a16"; description="ADO item resolved — pending close" },
@{ name="wont-fix"; color="ffffff"; description="ADO item closed as won't fix" },
@{ name="needs-triage"; color="e11d48"; description="Issue received, ADO item not yet created" },
@{ name="cross-repo"; color="7c3aed"; description="Affects more than one repo" }
)
foreach ($label in $labels) {
gh label create $label.name `
--color $label.color `
--description $label.description `
--repo Heritage-Virginia/heritage-community-hub `
--force
}Verification checklist ​
- [ ] ADO project
Heritage Community Hubcreated atdev.azure.com/hybridcloudsolutions - [ ] 6 area paths created (Platform, Web, Mobile, Homeschool, Marketplace, Media)
- [ ] Iterations created for 2026-Q3 through 2026-Q4 (12 sprints minimum)
- [ ] Board columns renamed (Backlog / In Progress / In Review / Done) with WIP limits
- [ ] Delivery Epics and their Features seeded in the backlog with correct area paths and priority
- [ ] 6 standard GitHub labels created on the Heritage-Virginia/heritage-community-hub repo
- [ ]
az devops configure --defaultsset for this project in your dev session