> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nextedy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SAFe Program Increments

> Reference for the SAFe Program Increments plans mode in Nextedy PLANNINGBOARD.

## Overview

Planningboard supports two SAFe Program Increment plans modes:

| Mode Value      | Display Name                           | Level                                     |
| --------------- | -------------------------------------- | ----------------------------------------- |
| `SAFE_PIS`      | SAFe Program Increments (Program mode) | Agile Release Train (ART) — Program level |
| `SAFE_SOLUTION` | SAFe Solution Trains                   | Solution Train — Portfolio level          |

These modes are set via the [`plansMode`](#plansmode-parameter) widget parameter. The active value determines which configuration fields are available in the widget and how Program Increment plans are loaded and displayed.

***

## Plans Mode Values

### SAFe Program Increments in Program (`SAFE_PIS`)

Displays PI-level plans within a single Agile Release Train. Plans are loaded from the current Polarion project using the SAFe Program Increment structure. Columns represent individual Program Increments (typically 8–12 week cadences).

**Use when:** planning at the ART (Program) level, where swimlanes represent SAFe teams, assignees, or enumeration fields within one release train.

### SAFe Program Increments in Solution (`SAFE_SOLUTION`)

Displays PI-level plans at the Solution Train level, coordinating planning across multiple Agile Release Trains. Columns represent Program Increments visible from the solution portfolio project.

**Use when:** planning across multiple ARTs from a portfolio or solution train project in Polarion.

***

## Widget Parameter Reference

### `plansMode` Parameter

| Name        | Type     | Default         | Description                                                                                            |
| ----------- | -------- | --------------- | ------------------------------------------------------------------------------------------------------ |
| `plansMode` | `string` | `PROJECT_PLANS` | Selects the planning model. Set to `SAFE_PIS` for Program level or `SAFE_SOLUTION` for Solution level. |

**Accepted values for Program Increment modes:**

| Value           | Description                                                         |
| --------------- | ------------------------------------------------------------------- |
| `SAFE_PIS`      | SAFe Program Increments in Program (ART) mode                       |
| `SAFE_SOLUTION` | SAFe Solution Trains — PI plans at Solution Train (Portfolio) level |

Other accepted values for this parameter (other modes) are documented in [Plans Modes](/planningboard/reference/plans-modes/index).

***

### Plans (Columns) Parameters

The following parameters control which Program Increment plans appear as columns on the board. These are set in the **Plans (Columns)** section of the widget parameters panel.

| Name         | Type     | Default                                                                          | Description                                                                                                                                  |
| ------------ | -------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `plansQuery` | `string` | `None`                                                                           | Lucene query to filter which PI plans are displayed as columns. When empty, plans are loaded automatically from the SAFe solution structure. |
| `lastPlans`  | `number` | `1`                                                                              | Number of past (completed) Program Increments to include on the board.                                                                       |
| `nextPlans`  | `number` | `5`                                                                              | Number of upcoming Program Increments to include on the board.                                                                               |
| `planLink`   | `string` | `/polarion/#/project/${plan.objectId.projectId}/plan?id=${plan.objectId.itemId}` | URL template for linking card column headers to the corresponding Polarion Plan. Supports `${plan.*}` variables.                             |

<Note title="Plan query in SAFe modes">
  In the SAFe Program Increments in Program (`SAFE_PIS`) and SAFe Program Increments in Solution (`SAFE_SOLUTION`) modes, plans are sourced from the Polarion SAFe Solution structure rather than a freeform Lucene query. The `plansQuery` parameter can further filter which PIs appear, but the base set is determined by the SAFe hierarchy — not an arbitrary project query as in Project Plans mode.
</Note>

***

### Capacity Parameters

| Name                | Type      | Default | Description                                                                                                                                                                        |
| ------------------- | --------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `capacityLoad`      | `boolean` | `false` | Enables capacity/effort tracking. When `true`, capacity bars appear on swimlanes showing planned vs. available effort.                                                             |
| `multiCapacityLoad` | `boolean` | `false` | Enables per-swimlane capacity tracking across multiple plans simultaneously.                                                                                                       |
| `userCapacityLoad`  | `boolean` | `false` | Enables user-level capacity loading when the Teams Service integration is active.                                                                                                  |
| `capacityField`     | `string`  | `None`  | Custom field ID used for effort values (e.g., story points). When not set, time-tracking fields (`remainingEstimate` / `initialEstimate`) are used.                                |
| `hoursPerDay`       | `number`  | `8`     | Working hours per day used in capacity conversions between time-based estimates and day fractions. Whitespace-sensitive — do not include trailing spaces.                          |
| `useTeamsService`   | `boolean` | `false` | Enables integration with the Polarion Teams Service for team capacity, user capacity, and team membership data. When enabled, Teams Service data overrides `plan.capacity` values. |

See [Capacity Parameters](/planningboard/reference/widget-parameters/capacity-parameters) for full capacity configuration reference.

***

### SAFe-Specific Parameters

| Name               | Type     | Default       | Description                                                                                                                                       |
| ------------------ | -------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `selectedTeam`     | `string` | `None`        | ID of the SAFe team to use for filtering and capacity calculations. When set, the board focuses on plans and items relevant to the selected team. |
| `safeTeamField`    | `string` | `safeTeam`    | Custom field ID storing the SAFe Team assignment on work items. Used when assignment mode is `safe` or `safeTrain`.                               |
| `safeProgramField` | `string` | `safeProgram` | Custom field ID storing the SAFe Program assignment on work items. Used when assignment mode is `safePrograms`.                                   |

See [SAFe Parameters](/planningboard/reference/widget-parameters/safe-parameters) for the complete SAFe parameter reference.

***

### Assignment Mode Compatibility

The SAFe Program Increments in Program (`SAFE_PIS`) and SAFe Program Increments in Solution (`SAFE_SOLUTION`) plans modes are designed to work with SAFe-aware swimlane assignment types. The following assignment modes are compatible:

| Assignment Mode                                      | Description                                                                                        | Reference                                                                              |
| ---------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| Program / Solution Teams (SAFe) (`SAFE_TEAM`)        | Swimlanes represent SAFe teams within the current program, sourced from the Polarion SAFe Solution | [SAFe Team Mode](/planningboard/reference/assignment-modes/safe-team-mode)             |
| Agile Release Train Teams (SAFe) (`SAFE_TRAIN_TEAM`) | Swimlanes represent teams within a specific ART, filtered by ART ID                                | [SAFe Train Team Mode](/planningboard/reference/assignment-modes/safe-train-team-mode) |
| Programs (SAFe) (`SAFE_PROGRAMS`)                    | Swimlanes represent SAFe programs within a solution train (portfolio-level planning)               | [SAFe Programs Mode](/planningboard/reference/assignment-modes/safe-programs-mode)     |
| Users (Assignee) (`ASSIGNEE`)                        | Swimlanes grouped by individual assignees                                                          | [Assignee Mode](/planningboard/reference/assignment-modes/assignee-mode)               |
| Enumeration Field (`ENUM`)                           | Swimlanes grouped by enumeration custom field values                                               | [Enumeration Field Mode](/planningboard/reference/assignment-modes/enum-mode)          |

<Warning title="Programs (SAFe) mode requires portfolio-level project">
  The Programs (SAFe) (`SAFE_PROGRAMS`) assignment mode requires a Polarion SAFe Solution configured at the portfolio level. It is not available for standard project-level boards. Contact Nextedy support for setup guidance.
</Warning>

***

## Configuration Fields by Mode

The widget parameters panel shows different fields depending on the selected `plansMode`. This table summarizes which sections appear for Program Increment modes versus Project Plans mode:

| Configuration Section       | Project Plans (`PROJECT_PLANS`) | SAFe Program Increments in Program (`SAFE_PIS`) | SAFe Program Increments in Solution (`SAFE_SOLUTION`) |
| --------------------------- | ------------------------------- | ----------------------------------------------- | ----------------------------------------------------- |
| Plans query (custom Lucene) | Yes                             | Filtered                                        | Filtered                                              |
| Plan items section          | Yes                             | No                                              | No                                                    |
| SAFe PI increment field     | No                              | Yes                                             | No                                                    |
| Sync to parent              | Yes                             | No                                              | No                                                    |
| Plan stemming               | Yes                             | No                                              | No                                                    |
| Plan link field             | Yes                             | Yes                                             | Yes                                                   |
| Capacity parameters         | Yes                             | Yes                                             | Yes                                                   |
| SAFe team/program fields    | No                              | Yes                                             | Yes                                                   |

<Info title="Plan items section not available in SAFe modes">
  The plan items configuration section (which controls which work item types appear as Plan cards in columns) is only available in Project Plans (`PROJECT_PLANS`) mode. In SAFe Program Increment modes, the column structure is derived from the Polarion SAFe hierarchy.
</Info>

***

## SAFe Hierarchy Structure

The following diagram shows how Polarion plans map to Planningboard columns in the SAFe Program Increment modes:

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/vfRg9jxXRntLqZFW/planningboard/diagrams/reference/plans-modes/safe-pis/diagram-1.svg?fit=max&auto=format&n=vfRg9jxXRntLqZFW&q=85&s=07756ae0d449eb2e5acc3616bf4b1dcd" alt="SAFe hierarchy showing a Solution Train Project (SAFe Program Increments in Solution mode) at Portfolio level splitting into Program Projects (SAFe Program Increments in Program mode) at ART level, each expanding into PI columns and Team swimlanes" width="760" height="400" data-path="planningboard/diagrams/reference/plans-modes/safe-pis/diagram-1.svg" />
</Frame>

***

## Plan Naming and Version Requirements

<Warning title="Dash characters in plan names require version 25.3.0+">
  SAFe naming conventions commonly use dash characters in plan names (e.g., `PI-2401`, `I-2401-1`). Planningboard versions prior to 25.3.0 had a parsing bug where dash-containing plan names caused:

  * Incorrect column span rendering
  * Capacity display showing zero
  * Plan shortcuts disappearing from the board

  **Version 23.8.0** included a partial fix. **Version 25.3.0** fully resolved the issue. If your organization uses SAFe naming conventions with dashes, upgrade to 25.3.0 or later before deploying Planningboard for PI planning.
</Warning>

***

## SAFe Parent Synchronization

When a work item's team assignment changes on the board (drag to a different swimlane in Program / Solution Teams (SAFe) (`SAFE_TEAM`) or Agile Release Train Teams (SAFe) (`SAFE_TRAIN_TEAM`) mode), Planningboard automatically synchronizes the SAFe User Story to the correct Team Program Increment plan. This `syncSAFEParentsFromChildren` behavior:

* Triggers when team assignment is updated via drag-and-drop
* Remaps the plan assignment based on the new team assignment
* Updates parent plan links to match the team's Program Increment

This automation ensures that stories remain correctly nested under the appropriate team PI plan after reassignment, without requiring manual plan updates.

***

## Page Parameters and Program Increment Parameter ID

When configuring a Planningboard board for SAFe PI planning, widget parameters can be externalized as **Page Parameters** — Polarion page-level variables that are referenced by the widget instead of being hard-coded per widget instance.

The **Program Increment Parameter ID** field (shown in the widget when SAFe Program Increments in Program (`SAFE_PIS`) or SAFe Program Increments in Solution (`SAFE_SOLUTION`) is active) links the board to a specific Page Parameter that controls which Program Increment is currently selected. This allows a single board page to switch between PIs without reconfiguring the widget.

**Setup steps:**

1. In the Polarion page editor, add a Page Parameter (e.g., `currentPI`) and set its default value to a PI plan ID.
2. In the Planningboard widget, set the **Plans Type** to **SAFe Program Increments in Program** (`SAFE_PIS`) (or **SAFe Program Increments in Solution** (`SAFE_SOLUTION`)).
3. In the SAFe parameters section, enter the Page Parameter name (e.g., `currentPI`) in the **Program Increment Parameter ID** field.
4. The board will load the PI referenced by that page parameter. Changing the parameter value switches the active PI.

<Note title="Configuration UI differs by plans mode">
  The Program Increment Parameter ID field is only visible when SAFe Program Increments in Program (`SAFE_PIS`) or SAFe Program Increments in Solution (`SAFE_SOLUTION`) is selected as the plans mode. When Project Plans (`PROJECT_PLANS`) is active, this field is hidden and replaced by standard plan query and scope fields.
</Note>

***

## Capacity Limitations

The following capacity-related limitations apply specifically to SAFe Program Increment modes:

| Limitation                              | Detail                                                                                                                                                                    |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| No multi-assignee capacity distribution | Capacity is tracked per swimlane as a whole; effort is not automatically split across multiple assignees of a single work item. This differs from Nextedy GANTT behavior. |
| No sub-item effort distribution         | Effort from child work items (e.g., tasks under a story) is not automatically rolled up into the parent's capacity calculation.                                           |
| Parallel PI capacity calculation        | When multiple PIs overlap in time, capacity calculations may not match GANTT behavior for the same work items. This is an ongoing product limitation.                     |
| Swimlane sort order coupling            | Swimlane sort order is coupled to item sort order — reordering items may affect swimlane display sequence.                                                                |

See [Capacity Parameters](/planningboard/reference/widget-parameters/capacity-parameters) for configuration options within these constraints.

***

## Configuration Example

The following example configures a Planningboard widget for Program-level SAFe PI planning with SAFe teams as swimlanes, capacity enabled, and five upcoming PIs displayed:

```properties theme={null}
# Plans (Columns)
plansMode=SAFE_PIS
nextPlans=5
lastPlans=1

# Swimlanes (Rows)
assignmentMode=SAFE_TEAM
safeTeamField=safeTeam

# Work Items
query=type:story
maxItems=500

# Capacity
capacityLoad=true
capacityField=storyPoints
hoursPerDay=8

# SAFe
selectedTeam=
```

For a Solution-level board spanning multiple ARTs:

```properties theme={null}
# Plans (Columns)
plansMode=SAFE_SOLUTION
nextPlans=3
lastPlans=1

# Swimlanes (Rows)
assignmentMode=SAFE_PROGRAMS
safeProgramField=safeProgram

# Work Items
query=type:feature
maxItems=300

# Capacity
capacityLoad=true
multiCapacityLoad=true
```

***

## Related Reference Pages

* [Plans Modes](/planningboard/reference/plans-modes/index) — overview of all plans modes including Project Plans (`PROJECT_PLANS`) and SAFe Sprints
* [SAFe Sprints](/planningboard/reference/plans-modes/safe-sprints) — reference for SAFe Sprints in Program (`SAFE_SPRINTS`) and SAFe Sprints in Portfolio (`SAFE_PFL_SPRINTS`) modes
* [SAFe Solution Trains](/planningboard/reference/plans-modes/safe-solutions) — extended solution-level SAFe configuration
* [SAFe Parameters](/planningboard/reference/widget-parameters/safe-parameters) — complete SAFe widget parameter reference
* [Plans Parameters](/planningboard/reference/widget-parameters/plans-parameters) — all Plans (Columns) widget parameters
* [SAFe Team Mode](/planningboard/reference/assignment-modes/safe-team-mode) — swimlane assignment by SAFe team
* [SAFe Train Team Mode](/planningboard/reference/assignment-modes/safe-train-team-mode) — swimlane assignment by ART team
* [SAFe Programs Mode](/planningboard/reference/assignment-modes/safe-programs-mode) — swimlane assignment by SAFe program
* [Capacity Parameters](/planningboard/reference/widget-parameters/capacity-parameters) — capacity bar configuration

<Accordion title="Sources">
  **KB Articles**

  * Swimlane Assignment Types

  **Support Tickets**

  * [#5879](https://support.nextedy.com/helpdesk/tickets/5879)
  * [#4711](https://support.nextedy.com/helpdesk/tickets/4711)
  * [#6685](https://support.nextedy.com/helpdesk/tickets/6685)

  **Source Code**

  * `PlansMode.java`
  * `PlanningBoardWidgetRenderer.java`
  * `PlanningBoardDataService.java`
  * `Config.java`
  * `PlanningBoardWidgetDependenciesProcessor.java`
</Accordion>
