> ## 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 Team Mode

> SAFe Team Mode is a swimlane assignment type for the Nextedy PLANNINGBOARD that groups board rows by **SAFe teams within the current program**.

<Note title="SAFe Solution required">
  SAFe Team Mode requires a configured Polarion SAFe Solution project hierarchy. The board must reside in a program-level project that is part of a SAFe portfolio structure. Contact Nextedy support for initial setup guidance.
</Note>

***

## Overview

When `assignmentMode` is set to **Program / Solution Teams (SAFe)** (`SAFE_TEAM`), Planningboard discovers all team-level projects within the current SAFe portfolio and renders one swimlane per team. Work items are assigned to swimlanes based on the value of the `safeTeam` custom field (configurable via `safeTeamField`).

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/vfRg9jxXRntLqZFW/planningboard/diagrams/reference/assignment-modes/safe-team-mode/diagram-1.svg?fit=max&auto=format&n=vfRg9jxXRntLqZFW&q=85&s=ff1f94ec1c369533daa9547823214b7d" alt="Hierarchy diagram: SAFe Portfolio contains the Program Project (ART), where the board lives, with Team Alpha, Team Beta, and Team Gamma as swimlane rows, alongside other programs" width="760" height="300" data-path="planningboard/diagrams/reference/assignment-modes/safe-team-mode/diagram-1.svg" />
</Frame>

Dragging a card to a different swimlane updates the work item's `safeTeam` field to the target team.

***

## Widget Parameters

Configure SAFe Team Mode in the **Swimlanes (Rows)** section of the widget parameters panel. See [Swimlanes (Rows) Parameters](/planningboard/reference/widget-parameters/swimlanes-parameters) for the full swimlane parameter reference and [SAFe Parameters](/planningboard/reference/widget-parameters/safe-parameters) for SAFe-specific parameters.

### Assignment Mode Parameter

| Name             | Type     | Default    | Description                                                                                        |
| ---------------- | -------- | ---------- | -------------------------------------------------------------------------------------------------- |
| `assignmentMode` | `string` | `ASSIGNEE` | Set to `SAFE_TEAM` to enable SAFe Team Mode. Determines how work items are grouped into swimlanes. |

### SAFe Team Mode Parameters

| Name                   | Type      | Default        | Description                                                                                                                   |
| ---------------------- | --------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `safeTeamField`        | `string`  | `safeTeam`     | Custom field ID that stores the SAFe team assignment on work items. Must reference a valid Polarion enumeration custom field. |
| `showEmptySwimlanes`   | `boolean` | `false`        | When `true`, swimlanes for teams with no assigned work items are still displayed. When `false`, empty team rows are hidden.   |
| `swimlaneSort`         | `string`  | `alphabetical` | Sort order of team swimlanes. Controls the vertical ordering of rows on the board.                                            |
| `collapsibleSwimlanes` | `boolean` | `true`         | Allows users to collapse or expand individual team swimlanes to reduce visual clutter on boards with many teams.              |

### Swimlane Sort Values

| Value          | Description                              |
| -------------- | ---------------------------------------- |
| `alphabetical` | Teams sorted A–Z by team name (default). |

<Info title="Verify in application">
  Additional `swimlaneSort` values beyond `alphabetical` may be available. Verify the full set of accepted values in the widget parameter panel of the running application.
</Info>

***

## Relationship to Other SAFe Assignment Modes

Planningboard provides three SAFe-specific assignment modes. Choose the correct mode based on the planning level:

| Mode                                                                                   | `assignmentMode` value | Swimlane source                                 | Typical planning level           |
| -------------------------------------------------------------------------------------- | ---------------------- | ----------------------------------------------- | -------------------------------- |
| SAFe Team Mode                                                                         | `SAFE_TEAM`            | All teams in the current program (ART)          | Program / ART level              |
| [SAFe Train Team Mode](/planningboard/reference/assignment-modes/safe-train-team-mode) | `SAFE_TRAIN_TEAM`      | Teams within a specific ART, filtered by ART ID | Multi-ART / Solution Train level |
| [SAFe Programs Mode](/planningboard/reference/assignment-modes/safe-programs-mode)     | `SAFE_PROGRAMS`        | Programs within a solution train                | Portfolio level                  |

Use SAFe Team Mode when the board is embedded in a **program-level project** and you want all teams in that program to appear as rows. Use [SAFe Train Team Mode](/planningboard/reference/assignment-modes/safe-train-team-mode) if you need to scope rows to a specific ART by ID.

***

## Configuration Example

The following example shows a Planningboard widget configured with SAFe Team Mode for program-level sprint planning. Plans columns display SAFe sprints (`plansMode = SAFE_SPRINTS`) while rows show teams in the current ART.

```properties theme={null}
# Swimlane assignment
assignmentMode=SAFE_TEAM
safeTeamField=safeTeam
showEmptySwimlanes=false
swimlaneSort=alphabetical
collapsibleSwimlanes=true

# Plans mode (columns) — SAFe sprints at program level
plansMode=SAFE_SPRINTS
```

In the widget parameters panel, navigate to **Swimlanes (Rows)** and select **Program / Solution Teams (SAFe)** from the **Assignment Type** dropdown.

<Tip title="Empty swimlanes during sprint planning">
  Enable `showEmptySwimlanes=true` during initial sprint planning so that teams with no items assigned yet appear on the board and can receive cards by drag-and-drop.
</Tip>

***

## How Team Discovery Works

When SAFe Team Mode is active, Planningboard uses the Polarion SAFe Solution project hierarchy to identify teams:

1. The board's host project is identified as a program-level project within a SAFe portfolio.
2. All team-level projects (`getTeamProjects()`) within the same portfolio are retrieved.
3. One swimlane is created per team.
4. Work items are matched to team swimlanes via the `safeTeamField` custom field value.

Only projects that are **readable** by the current user appear as swimlanes. Projects the user cannot read are excluded silently.

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/vfRg9jxXRntLqZFW/planningboard/diagrams/reference/assignment-modes/safe-team-mode/diagram-2.svg?fit=max&auto=format&n=vfRg9jxXRntLqZFW&q=85&s=f9e98824f21ba2976e28554966483a07" alt="Flow diagram: Board host project leads to SAFe Portfolio detection, then getTeamProjects() returning Team Alpha, Team Beta, Team Gamma, then one swimlane per team, then work items matched via the safeTeam field value" width="500" height="380" data-path="planningboard/diagrams/reference/assignment-modes/safe-team-mode/diagram-2.svg" />
</Frame>

***

## Work Item Assignment Behavior

| Action                                                           | Result                                                         |
| ---------------------------------------------------------------- | -------------------------------------------------------------- |
| Drag card to a team swimlane                                     | Updates the work item's `safeTeam` field to the target team.   |
| Drag card to the **Not Assigned/Other** row                      | Clears the `safeTeam` field value.                             |
| Alt+drag card to a second team                                   | Creates a multi-team assignment (comma-separated field value). |
| Drop card onto an incorrect swimlane (if field validation fails) | Card returns to its original swimlane.                         |

### SAFe Parent Sync

When a work item's team assignment changes (by drag-and-drop), Planningboard automatically syncs the User Story to the correct Team Program Increment plan. This `syncSAFEParentsFromChildren` behavior ensures that plan membership stays consistent with team assignment without requiring manual updates. Plan IDs are remapped based on the new team assignment.

<Warning title="Capacity and multi-assignee limitations">
  SAFe Team Mode does not support multi-assignee capacity distribution. Capacity bars reflect per-team totals only; effort is not split across individual team members. This is a known gap versus Nextedy GANTT's capacity model.
</Warning>

***

## Capacity Behavior

When capacity tracking is enabled alongside SAFe Team Mode, capacity bars appear per team swimlane. Capacity is aggregated at the team level across the displayed Plan columns.

| Parameter           | Relevance to SAFe Team Mode                                                                                 |
| ------------------- | ----------------------------------------------------------------------------------------------------------- |
| `capacityLoad`      | Enables effort/capacity tracking. Uses `remainingEstimate` / `initialEstimate` or a custom `capacityField`. |
| `multiCapacityLoad` | Enables per-swimlane (per-team) capacity tracking with individual progress bars per cell.                   |
| `useTeamsService`   | Integrates with the Teams Service to supply team capacity data, overriding plan-level capacity values.      |

See [Capacity Parameters](/planningboard/reference/widget-parameters/capacity-parameters) and [Teams Service Properties](/planningboard/reference/configuration-properties/teams-properties) for full parameter details.

***

## Filtering Active Teams by Plan Range

When swimlanes are derived from Team Assignments via the Teams Service, you can restrict displayed team rows to those with active assignments within the time range of the currently shown Plans.

Enable this in **Administration > Configuration Properties**:

```properties theme={null}
nextedy.planningboard.activeTeamAssignmentsInPlanRangeOnly=true
```

When enabled:

* Teams with no assignments overlapping the displayed Plans' date range are hidden.
* Work items assigned to hidden teams move to the **Not Assigned / Other** swimlane.

This behavior is available from version **25.12.0**.

<Info title="Deprecated predecessor">
  `nextedy.planningboard.activeTeamAssignmentsOnly=true` was the earlier variant (introduced in 25.3.0). It filtered only past assignments, independent of the shown Plans' scope. It was deprecated in version 25.12.0 in favor of `activeTeamAssignmentsInPlanRangeOnly`.
</Info>

See [Teams Service Properties](/planningboard/reference/configuration-properties/teams-properties) for the full property reference.

***

## Required Data Structure

For SAFe Team Mode to function correctly, the Polarion environment must have:

* A SAFe Solution project hierarchy (portfolio → program → team projects).
* The board's host project configured as a program-level project within that hierarchy.
* A custom enumeration field (default: `safeTeam`) present on the work item types shown on the board.
* Work items populated with `safeTeam` field values matching the team project identifiers.

If using the Teams Service integration (`useTeamsService=true`), also configure:

* Teams and Team Assignments within each team project.
* The Teams Service properties in **Administration > Configuration Properties** (see [Teams Service Properties](/planningboard/reference/configuration-properties/teams-properties)).

***

## Limitations

* **No sub-item effort distribution:** Capacity is tracked at the team swimlane level only. Effort is not automatically distributed across individual team members or child work items.
* **No multi-assignee capacity:** SAFe Team Mode does not split capacity across multiple team assignments on a single work item.
* **Swimlane sort is fixed to alphabetical:** Only alphabetical sort order is confirmed for team swimlanes. Sort options available for other assignment modes (such as [Assignee Mode](/planningboard/reference/assignment-modes/assignee-mode)) may not apply.
* **SAFe hierarchy required:** The mode produces no swimlanes if the host project is not part of a recognized SAFe portfolio structure. No error is surfaced; the board renders with no rows.
* **Configuration UI changes with Plans Mode:** The widget parameters panel shows different configuration fields depending on the selected Plans Mode. SAFe-specific configuration fields (including PI increment selection) appear only when a SAFe plans mode is active. See [SAFe Parameters](/planningboard/reference/widget-parameters/safe-parameters).

***

## Related Pages

* [Assignment Modes](/planningboard/reference/assignment-modes/index) — Overview of all assignment modes
* [SAFe Train Team Mode](/planningboard/reference/assignment-modes/safe-train-team-mode) — Scope teams to a specific ART by ID
* [SAFe Programs Mode](/planningboard/reference/assignment-modes/safe-programs-mode) — Portfolio-level program swimlanes
* [Swimlanes (Rows) Parameters](/planningboard/reference/widget-parameters/swimlanes-parameters) — Full swimlane parameter reference
* [SAFe Parameters](/planningboard/reference/widget-parameters/safe-parameters) — SAFe-specific widget parameters
* [SAFe Sprints](/planningboard/reference/plans-modes/safe-sprints) — SAFe sprint columns (typical pairing with SAFe Team Mode)
* [SAFe Program Increments](/planningboard/reference/plans-modes/safe-pis) — PI-level columns
* [Teams Service Properties](/planningboard/reference/configuration-properties/teams-properties) — Teams Service configuration
* [Capacity Parameters](/planningboard/reference/widget-parameters/capacity-parameters) — Capacity tracking configuration

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

  * Swimlane Assignment Types
  * What is 'Normalization'
  * Filter user swimlanes by Plan range

  **Support Tickets**

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

  **Source Code**

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