Skip to main content
Plan names containing dashes (e.g. PI-2401, I-2401-1) caused column spans to render incorrectly, capacity to show zero, and plan shortcuts to disappear in versions before 25.3.0. A partial fix shipped in 23.8.0; full support for dashes in plan names requires version 25.3.0 or later. Verify your installed version before adopting dash-based naming.

SAFe hierarchy overview

Planningboard models SAFe planning across four levels. Each level maps to a plansMode value and a corresponding Plan ID pattern:
SAFe hierarchy diagram: Portfolio contains Program Increment (PI) at Plans Type: SAFe Program Increments in Solution (safeSIs) (Solution level), which contains Program Increment (ART) at Plans Type: SAFe Program Increments in Program (safePIs) (Program level), which contains Iteration (Sprint) at Plans Type: SAFe Sprints in Program (safeSprints) or SAFe Sprints in Portfolio (safePflSprints)
The Plan ID (not just the display name) is what Planningboard uses when loading and cross-referencing plans. Using a predictable, level-consistent pattern across all Plans prevents silent mismatches.
1

Choose a naming scheme for each level

Adopt one naming pattern per level and apply it uniformly. The examples below match the patterns used in support tickets for enterprise SAFe deployments:Rules:
  • Use only alphanumeric characters, dashes (-), and underscores (_) in Plan IDs.
  • Dashes are safe from version 25.3.0 onward — do not use them on earlier versions.
  • Keep the delimiter consistent within each level (all dashes or all underscores — do not mix).
  • The Plan ID must be unique within the project; the Plan Name is the display label shown in column headers.
Encoding the year and quarter in the PI name (e.g. PI-2401 = 2024 Q1) makes boards self-documenting and simplifies the Last Plan Query when creating new plans from the board.

2

Create Plan IDs in Polarion

When creating Plans manually in Polarion, set both the ID and the Name fields:
  • ID — enter the pattern ID exactly (e.g. PI-2401). This is the value Planningboard stores internally and uses when syncing SAFe parent plans.
  • Name — enter the human-readable label (e.g. PI 2401). This appears in the board column header.
If you are using Planningboard’s New Plan feature to create Plans from the board, configure the Plan ID Pattern and Plan Name Pattern widget parameters to match your chosen scheme. See Configure Plans (Columns) for parameter details.
3

Configure Plan ID Pattern for board-created plans

Open the widget parameters for your Planningboard widget and locate the New Plan section:
The Plan ID Pattern and Plan Name Pattern fields are pre-filled with Team-aware placeholders when Teams are enabled. If you are not using Teams, replace the defaults with your SAFe pattern — otherwise newly created plans will not match your naming scheme and the Last Plan Query will not find them.

4

Set `plansMode` to match the hierarchy level

The plansMode widget parameter controls which Plans Planningboard loads and how it groups them. Set it to the value that matches the board’s level in the SAFe hierarchy:
In the widget configuration UI, plansMode appears as the Plans Type dropdown. Selecting a SAFe type changes which configuration fields are shown — for example, the Program Increment Parameter ID field appears only for the SAFe Sprints in Program (safeSprints) and SAFe Sprints in Portfolio (safePflSprints) modes, and the plan items section is hidden for SAFe modes (it is available only in Project Plans (PROJECT_PLANS) mode).

5

Verify the `Plan Name Pattern` matches the `Last Plan Query`

When Planningboard creates a new plan, it finds the “last plan” to calculate the next plan’s date range using the Last Plan Query (defaults to the latest plan of the same template type if left empty) and Last Plan Sort (defaults to dueDate descending).If your IDs contain dates or sequence numbers, confirm that the query can still find the correct last plan after renaming. For example, if you use PI-2401, PI-2402, PI-2403, the default sort by dueDate finds the last PI correctly without a custom query.
Comparison of two PIs sorted by the default Last Plan Sort (dueDate descending): PI-2401 with dueDate 2024-03-31 is second-to-last, PI-2402 with dueDate 2024-06-30 is last and correct, with a note that the next PI will be PI-2403
If you add PIs out of chronological order, or your template has mixed types, provide an explicit Last Plan Query to pin the lookup.
6

Validate Plan visibility on the board

After applying your naming scheme:
  1. Open the Planningboard page in Polarion.
  2. Check that the expected Plans appear as columns and that column headers show the display names (not the IDs).
  3. Hover over a capacity bar to confirm the capacity tooltip shows a non-zero value. A zero capacity value is a symptom of Planningboard failing to parse the plan name — upgrade to 25.3.0 if this occurs on a plan with dashes in the name.
  4. Confirm that plan shortcuts (the links in column headers) open the correct Polarion Plan pages.
If you rename existing Plans in Polarion and the board still shows old column headers, use the Refresh data toolbar button (circular arrow icon) to force a reload. The board does not auto-detect Plan renames.

ASCII diagram — SAFe Plan ID hierarchy

Nested hierarchy diagram showing the Solution Train (Plans Type: SAFe Program Increments in Solution, safeSIs) containing PI-2401, which links down to the Program (ART) level (Plans Type: SAFe Program Increments in Program, safePIs) containing its own PI-2401, which fans out into three Team Iterations / IP Sprint plans I-2401-1, I-2401-2, and I-2401-IP under Plans Type: SAFe Sprints in Program (safeSprints)
Each level’s Plan IDs must be unique within their Polarion project. Cross-level references (parent plan assignment, syncSAFEParentsFromChildren) rely on the ID patterns being parseable — consistent dash placement ensures correct parsing.

Common pitfalls

Using PI_2401 in one sprint and PI-2401 in another causes Planningboard to treat them as different hierarchy branches. Pick one delimiter per level and do not mix.
If you rename a PI plan after the board has been used, existing capacity values stored against the old ID will not transfer automatically. Re-enter capacity values via the capacity bar tooltip or the POST /capacity API endpoint after any rename.
Selecting SAFe Sprints in Program (safeSprints) or SAFe Sprints in Portfolio (safePflSprints) shows a Program Increment Parameter ID field that is absent in Project Plans (PROJECT_PLANS) mode. Page Parameters must be explicitly created in the widget configuration and referenced here — they are not created automatically. Missing Page Parameter setup is the most common reason SAFe boards show no columns after configuration.

You should now see

  • All Plans appear as columns with the correct display names from your naming scheme.
  • Hovering over a capacity bar shows a non-zero capacity tooltip (assuming capacity is configured).
  • Plan shortcut links in column headers navigate to the correct Polarion Plan pages.
  • The New Plan button (if enabled) creates plans whose IDs follow your chosen pattern.

See also

KB Articles
  • Introduction to Planningboard
  • Planningboard interface & basic interactions
  • Planningboard Widget Parameters
Support TicketsSource Code
  • PlanningBoardDataService.java
  • Config.java
  • PlansMode.java
  • Item.java
  • PlanningBoardWidgetDependenciesProcessor.java
Last modified on July 10, 2026