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

# Capacity

> Common questions about how Nextedy PLANNINGBOARD tracks effort, calculates capacity, and displays load across Plans and swimlanes.

***

## What does "capacity" mean on the Planningboard?

Capacity refers to the total effort available for a Plan or swimlane compared with the effort already allocated to work items within it. Planningboard visualizes this as a **capacity bar** per swimlane, giving planners an at-a-glance indicator of how loaded each resource or team is. When allocated effort approaches or exceeds total capacity, the bar signals overallocation.

***

## How do I enable the capacity bar?

Enable the `capacityLoad` widget parameter in the **Parameters for Plans (Columns)** section. Set **Show Capacity Load** to `true`. Once enabled, a capacity bar appears for each Plan column showing the load relative to available capacity.

```text theme={null}
Widget Parameter: capacityLoad = true
```

See the [Reference](/planningboard/reference/index) for the full list of capacity-related parameters.

***

## How is allocated capacity calculated?

Allocated capacity is the sum of the `remainingEstimate` values (or `initialEstimate` if remaining is not set) of work items assigned to a given user or swimlane within a Plan. If you configure a custom `capacityField` (for example, story points), Planningboard uses that field's values instead of time-based estimates. Resolved items are treated as fully done: their `effortDone` equals the full estimate and `effortTodo` equals zero.

```text theme={null}
Widget Parameter: capacityField = <your-custom-field-id>
Widget Parameter: hoursPerDay = 8   (default, for time-based modes)
```

***

## What is the difference between `capacityLoad` and `multiCapacityLoad`?

`capacityLoad` shows a single capacity bar per Plan column — useful when all swimlanes share the same total capacity budget. `multiCapacityLoad` enables per-swimlane (per-resource) capacity bars, so each row shows its own allocated vs. available capacity independently. Use `multiCapacityLoad` when different team members or resources have different capacities within the same Plan.

```text theme={null}
capacityLoad = true          → column-level bar (shared budget)
multiCapacityLoad = true     → per-swimlane bar (individual budgets)
```

***

## What is `userCapacityLoad` and when should I use it?

`userCapacityLoad` enables per-user capacity tracking when the **Teams Service** integration is active (`useTeamsService = true`). In this mode, total capacity comes from the team calendar rather than a fixed configuration, so each user's available hours reflect their actual calendar availability for the Plan period. Users without a calendar or team entry default to 0.0 total capacity.

```text theme={null}
Widget Parameter: useTeamsService = true
Widget Parameter: userCapacityLoad = true
```

***

## Can I see capacity for individual users in a Plan?

Yes, when `userCapacityLoad` is enabled together with `useTeamsService`, the board computes a per-user capacity breakdown for each Plan. Each user entry shows:

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/zUlmOSLBIQ0HyaAX/planningboard/diagrams/faq/capacity/diagram-1.svg?fit=max&auto=format&n=zUlmOSLBIQ0HyaAX&q=85&s=ed0482428be768d43c539f5d8e273c09" alt="Per-user capacity breakdown table for a Plan showing Allocated, Total, and Available hours for three users, with Dana Lead's negative Available value flagged as overallocated" width="600" height="268" data-path="planningboard/diagrams/faq/capacity/diagram-1.svg" />
</Frame>

Values are rounded to one decimal place. A negative `availableCapacity` is a warning of overallocation — the capacity bar will visually exceed its maximum.

***

## What is normalization, and how does it affect capacity display?

Normalization adjusts how capacity is presented when Plans have different durations (for example, a two-week sprint vs. a one-week sprint). With normalization enabled, effort values are scaled proportionally so that Plans are visually comparable side by side. See the **Normalization** option under **Parameters for Plans (Columns)** in the widget parameters panel.

<Tip title="When to enable normalization">
  Enable normalization if your board shows Plans of different lengths and you want capacity bars to be comparable across columns rather than reflecting raw hours.
</Tip>

***

## Does Planningboard support multi-assignee capacity tracking?

Not currently. Capacity load is calculated per single assignee. If a work item has multiple assignees, the effort is not automatically distributed across them. This is a known gap relative to Nextedy GANTT, which supports multi-assignee effort distribution.

<Warning title="Known limitation">
  Multi-assignee capacity distribution is not supported in the current release. Workaround: assign each work item to a single primary assignee for accurate capacity accounting.
</Warning>

For related information see [Multiple Assignees](/planningboard/faq/multiple-assignees).

***

## Why does a user show 0.0 total capacity?

A total capacity of `0.0` means the user has no calendar entry in the Teams Service for the current Plan period, or `useTeamsService` is disabled. Verify that:

1. `useTeamsService = true` is set in the widget parameters.
2. The user is a member of the selected team (`selectedTeam` parameter).
3. The team calendar has an entry covering the Plan's date range.

Users without a calendar entry fall back to `0.0` by design (see the zero-fallback behavior in `NPT-1211`).

***

## How does the `hoursPerDay` parameter affect capacity?

`hoursPerDay` (default `8`) converts time-based capacity values from hours to days and back. It is used when capacity is tracked in time units (remaining/initial estimates). If your team works a different number of hours per day, adjust this parameter to keep capacity calculations accurate.

```text theme={null}
Widget Parameter: hoursPerDay = 7.5
```

<Warning title="Whitespace sensitivity">
  Capacity configuration parameters including `hoursPerDay` and `capacityField` are whitespace-sensitive. Do not add leading or trailing spaces when entering values in the widget parameters panel.
</Warning>

***

## Where can I learn more?

* [Swimlanes FAQ](/planningboard/faq/swimlanes) — how swimlane assignment types affect capacity grouping
* [Configuration FAQ](/planningboard/faq/configuration) — general widget parameter setup
* [Reference](/planningboard/reference/index) — full parameter reference including all capacity properties
* [Guides](/planningboard/guides/index) — step-by-step capacity configuration guides

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

  * Swimlane Assignment Types
  * Planningboard Widget Parameters
  * Introduction to Planningboard

  **Support Tickets**

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

  **Source Code**

  * `PlanningBoardWidget.java`
  * `PlanningBoardDataService.java`
  * `planningboard.js`
  * `UserCapacityInfo.java`
  * `licenseReadonly.cy.ts`
</Accordion>
