> ## 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.

# Resource Fields

> Reference for the resource (swimlane) data model used in Nextedy PLANNINGBOARD. Resources map Polarion users onto swimlane rows and drive capacity calculations.

***

## Overview

In Planningboard a **resource** is the entity that represents one swimlane row when the board uses an assignee-based or teams-based layout. Resources are created automatically from Polarion users and carry the data the board needs to show labels, calculate capacity, and route work items to the correct row.

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/vfRg9jxXRntLqZFW/planningboard/diagrams/reference/fields/resource-fields/diagram-1.svg?fit=max&auto=format&n=vfRg9jxXRntLqZFW&q=85&s=0ff89a3167435d4be8a606d8c3f9668f" alt="Flow from Polarion User to a Resource object holding label, objectId, and multiCapacity fields, to a swimlane row on the board" width="420" height="330" data-path="planningboard/diagrams/reference/fields/resource-fields/diagram-1.svg" />
</Frame>

***

## Resource Fields

| Field           | Type                 | Default              | Description                                                                                                                                                                             |
| --------------- | -------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `label`         | `string`             | User name or user ID | Display name shown in the swimlane header. Derived from the Polarion user's name. Falls back to the user ID when the user cannot be resolved.                                           |
| `objectId`      | `ObjectID`           | —                    | Polarion object identity of the resource. Contains the project ID and item ID (user ID). Used internally to route work item assignments.                                                |
| `multiCapacity` | `Map<string, float>` | `{}`                 | Map of named capacity values for this resource. Keys are capacity type names; values are numeric capacity amounts (typically hours). Populated when multi-capacity tracking is enabled. |

***

## Label Resolution

The `label` field is set at resource creation time from the Polarion user object.

| Condition                                  | Label value                                               |
| ------------------------------------------ | --------------------------------------------------------- |
| User is resolvable and has a display name  | User's display name (full name as configured in Polarion) |
| User is resolvable but has no display name | User ID string                                            |
| User is **unresolvable**                   | User ID string (fallback)                                 |

<Warning title="Unresolvable users">
  When a Polarion user account is deactivated or removed, the corresponding resource becomes unresolvable. Planningboard falls back to displaying the user ID as the swimlane label. Work items assigned to that user remain on the board but the swimlane label loses the human-readable name. Remove or reassign such work items to keep the board clean.
</Warning>

***

## `multiCapacity` Map

The `multiCapacity` field is a map that supports storing more than one capacity value per resource. This is used when `multiCapacityLoad` is enabled in the widget configuration.

| Map key                       | Map value type | Meaning                                         |
| ----------------------------- | -------------- | ----------------------------------------------- |
| Capacity type name (`string`) | `float`        | Capacity amount for that type (typically hours) |

**When populated:** `multiCapacity` entries are written when the board loads capacity data in multi-capacity mode. With `multiCapacityLoad = false` (the default), the map is empty and capacity is tracked at the plan level only.

**Units:** capacity values are floating-point numbers. The unit depends on your project configuration — typically hours, derived from the `hoursPerDay` parameter and the plan date range.

<Note title="Capacity mode interaction">
  `multiCapacity` is only meaningful when `multiCapacityLoad = true` is set in the widget parameters. See [Capacity Parameters](/planningboard/reference/widget-parameters/capacity-parameters) for the full capacity configuration reference.
</Note>

***

## Item-Level Resource Fields

Work items on the board carry resource assignment fields that connect them to a resource (swimlane row). These fields live on the `Item` model, not on the `Resource` model itself, but they are the link between a card and its swimlane.

| Field         | Type           | Description                                                                                  |
| ------------- | -------------- | -------------------------------------------------------------------------------------------- |
| `resourceId`  | `string`       | ID of the single resource (user) assigned to this item. Used for single-assignee assignment. |
| `resourceIds` | `List<string>` | List of resource IDs when an item is assigned to multiple resources.                         |

### Single vs. Multiple Resource Assignment

| Scenario           | Field used    | Notes                                                |
| ------------------ | ------------- | ---------------------------------------------------- |
| Single assignee    | `resourceId`  | Standard case. Item appears in exactly one swimlane. |
| Multiple assignees | `resourceIds` | Item may appear in more than one swimlane row.       |

<Info title="Verify in application">
  Multi-resource assignment (`resourceIds`) is present in the data model. Confirm behavior in the live Planningboard application for your version — specifically how an item with multiple resource IDs is displayed across swimlanes.
</Info>

***

## Resource Creation from Polarion Users

Resources are not configured manually. Planningboard creates them automatically by reading the Polarion user list for the project, filtered by the role configured in the widget's **User Role** parameter.

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/vfRg9jxXRntLqZFW/planningboard/diagrams/reference/fields/resource-fields/diagram-2.svg?fit=max&auto=format&n=vfRg9jxXRntLqZFW&q=85&s=9447d9755a080cd09804e9089805e51c" alt="Flow from Widget Parameter User Role project_user, to Polarion querying users with that role, to creating one Resource per user, to one swimlane row per Resource on the board" width="480" height="380" data-path="planningboard/diagrams/reference/fields/resource-fields/diagram-2.svg" />
</Frame>

The `Resource(IUser user)` constructor sets `label` from `user.getName()` (or falls back to `user.getId()` when `isUnresolvable()` is true).

A separate constructor `Resource(ObjectID objectId)` exists for deserialization and programmatic creation via the scripting API.

***

## Assignment Modes That Use Resources

Resources (and their fields) are active only when the board's `assignmentMode` routes items through user-based or enum-based swimlanes. The table below shows which modes create resource objects.

| Assignment Mode   | Resources created from                  | Resource label source |
| ----------------- | --------------------------------------- | --------------------- |
| `ASSIGNEE`        | Polarion users with the configured role | User display name     |
| `ENUM`            | Enum field values on work items         | Enum value label      |
| `PARENT`          | Parent work items                       | Parent item title     |
| `PROJECT`         | Polarion projects                       | Project name          |
| `SAFE_TEAM`       | SAFe team work items                    | Team name             |
| `SAFE_TRAIN_TEAM` | SAFe Agile Release Train teams          | Team name             |
| `SAFE_PROGRAMS`   | SAFe Programs                           | Program name          |
| `none`            | — (no swimlanes)                        | —                     |

For the full assignment mode reference, see [Assignment Modes](/planningboard/reference/assignment-modes/index).

***

## Capacity Fields on Resources

When capacity tracking is active, resource-level capacity data flows from the Teams Service into the `multiCapacity` map. The following configuration properties control this behavior.

| Configuration property | Default | Effect on resource capacity                                                                |
| ---------------------- | ------- | ------------------------------------------------------------------------------------------ |
| `capacityLoad`         | `false` | Enables effort tracking. Without this, capacity bars are not shown.                        |
| `multiCapacityLoad`    | `false` | Enables per-swimlane capacity breakdown via `multiCapacity`.                               |
| `userCapacityLoad`     | `false` | Enables individual user capacity loading from the Teams Service.                           |
| `useTeamsService`      | `false` | Activates the Teams Service integration that provides per-user and per-team capacity data. |
| `capacityField`        | `None`  | Custom field ID to use as the capacity value instead of time-tracking fields.              |
| `hoursPerDay`          | `8`     | Working hours per day used in capacity calculations.                                       |

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

***

## Report Link Parameterization

The swimlane **Report Link** widget parameter can embed the resource's identity into a URL. Use the `${r.objectId.itemId}` placeholder to insert the user ID of the resource associated with a swimlane.

**Example report link value:**

```text theme={null}
/polarion/#/project/PlanningBoard/wiki/SOME_REPORT?user=${r.objectId.itemId}
```

This opens a Polarion Wiki report filtered to the user whose swimlane was clicked. Configure this in **Widget Parameters > Swimlanes (Rows) > Report Link**.

***

## Configuration Example

The example below shows a board using **Users (Assignee)** (`ASSIGNEE`) mode with capacity tracking enabled via the Teams Service.

**Widget parameters (relevant excerpt):**

```properties theme={null}
# Swimlane assignment
assignmentMode=ASSIGNEE
userRole=project_user

# Capacity
capacityLoad=true
userCapacityLoad=true
useTeamsService=true
hoursPerDay=8
```

**Result on the board:**

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/vfRg9jxXRntLqZFW/planningboard/diagrams/reference/fields/resource-fields/diagram-3.svg?fit=max&auto=format&n=vfRg9jxXRntLqZFW&q=85&s=f9868c3cf30f0af43d8ebac1f4f87e82" alt="Board result with two swimlanes: Alex Seller at 24h of 40h capacity with cards WI-101 and WI-205, and Carl User at 40h of 40h capacity with card WI-310" width="560" height="220" data-path="planningboard/diagrams/reference/fields/resource-fields/diagram-3.svg" />
</Frame>

Each swimlane label (`Alex Seller`, `Carl User`) comes from the resource's `label` field. The capacity bar reads from the resource's capacity data loaded by the Teams Service.

***

## Limitations

* **Single-assignee only in standard modes:** The `resourceId` (single resource) is the primary assignment path. Multi-resource assignment via `resourceIds` is present in the data model but capacity aggregation behavior across multiple resources should be verified in the live application.
* **No multi-assignee capacity distribution:** Effort for a work item is not automatically split across multiple assignees. This is a known capacity-load limitation compared to Nextedy GANTT. See the capacity documentation for current behavior.
* **User role drives swimlane membership:** Only users who hold the configured role in the project appear as swimlane rows. Users outside that role are not shown even if they are assigned to work items on the board.
* **Unresolvable users:** Deactivated Polarion users cause a label fallback to user ID. There is no automatic cleanup of swimlane rows for removed users.

***

## Related Pages

* [Work Item Fields](/planningboard/reference/fields/work-item-fields) — fields on cards (including `resourceId`, `resourceIds`, effort fields)
* [Plan Fields](/planningboard/reference/fields/plan-fields) — fields on Plan columns
* [Assignment Modes](/planningboard/reference/assignment-modes/index) — how items map to swimlane rows
* [Swimlanes (Rows) Parameters](/planningboard/reference/widget-parameters/swimlanes-parameters) — widget parameters controlling swimlane behavior
* [Capacity Parameters](/planningboard/reference/widget-parameters/capacity-parameters) — widget parameters for capacity tracking
* [Capacity Properties](/planningboard/reference/configuration-properties/capacity-properties) — system-level capacity configuration
* [Teams Service Properties](/planningboard/reference/configuration-properties/teams-properties) — Teams Service configuration

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

  * Planningboard Widget Parameters
  * Swimlane Assignment Types
  * Planningboard interface & basic interactions

  **Support Tickets**

  * [#5960](https://support.nextedy.com/helpdesk/tickets/5960)
  * [#6496](https://support.nextedy.com/helpdesk/tickets/6496)
  * [#6523](https://support.nextedy.com/helpdesk/tickets/6523)

  **Source Code**

  * `Resource.java`
  * `PlanningBoardWidgetDependenciesProcessor.java`
  * `Config.java`
  * `PlanningBoardWidget.java`
  * `PlanningBoardDataService.java`
</Accordion>
