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

# Track Department Capacity

> Make a whole department, test lab, or supplier contribute to team capacity in Nextedy PLANNINGBOARD by assigning it to the team as a resource instead of naming individual users.

export const LastReviewed = ({date, state}) => {
  if (!date) return null;
  const formatted = new Date(`${date}T00:00:00Z`).toLocaleDateString("en-US", {
    year: "numeric",
    month: "long",
    day: "numeric",
    timeZone: "UTC"
  });
  const label = state === "reviewed" ? `Last reviewed and confirmed up to date on ${formatted}` : `Last updated on ${formatted}`;
  return <p className="mt-10 text-sm text-gray-400 dark:text-zinc-500 not-prose">
      {label}
    </p>;
};

Use this guide when part of a team's capacity comes from an organizational unit that has no Polarion user accounts — a validation department, a shared test lab, an external supplier. The unit is assigned to the team as a resource, and the board counts it towards the team's capacity.

For what the board is actually doing with that assignment, see [Department-Level Capacity](/planningboard/concepts/department-level-capacity).

## Prerequisites

* Planningboard is installed and a board is configured on a Polarion Wiki page.
* The Teams Service is set up for the project, with team work items and team assignment work items in place. See [Set Up Teams Service](/planningboard/guides/capacity/teams-service-setup).
* Capacity bars are already showing for the team's named members. See [Track Team Capacity](/planningboard/guides/capacity/team-capacity).
* **The Gantt plugin is installed on the same Polarion.** This is what supplies the capacity calculation.
* Administration access to the project, to add a work item type, a custom field and configuration properties.

<Warning>
  **Without the Gantt plugin, department-level capacity is silently zero.** The board falls back to counting assignees only, so the department contributes nothing and the capacity bar reports no error. A team staffed entirely by departments reads as having no capacity at all.
</Warning>

<Note>
  **A department's size comes from the hours per day field.** The hours a department contributes on each working day are read from an **hours per day** field on the department work item. <br />Although \*\*% Assignments \*\*are supported for department-level items, assignments defined in **% Assignment** are not recommended. <br />A department work item with no value in **hours per day** field falls back to 8 hours per working day, and an assignment with **% Assignment** empty contributes nothing at all. The steps below set the field up before the assignment is made.
</Note>

***

<Steps>
  <Step title="Enable the Teams Service for the project">
    In **Administration → Configuration Properties** for the project, set:

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

    The default is `false`. This one property both enables team assignments on the board and allows the board to obtain its capacity figures from the Gantt teams service. A project that leaves it off is not using team assignments and has no team capacity to delegate.

    This is the main step to enable department capacity on Planningboard. The rest can be done prior as part of Gantt setup.
  </Step>

  <Step title="Create a work item type for departments">
    In **Administration → Work Items → Types**, add a type for the organizational units you want to plan with — a validation department, a test lab, a supplier. The examples on this page use the id `department`.

    This type exists so that departments can be told apart from ordinary work items when the resource field is filled in, and so that the capacity field in the next step applies only to them.
  </Step>

  <Step title="Add the capacity field to the department type">
    On the department type, add a **float** custom field for the hours the unit delivers on each working day. The examples on this page use the field id `capacityHoursPerDay`, with the label:

    **Capacity (hours per working day)**

    Fill it in on every department work item. This value is the base the department is sized from; If the assignment's **% Assignment** is also set, they are ignored, and **hours per day** have priority. Ideally \*\*% Assignment \*\*shall never be set on a department level work item, so everything is always defined in hours. A department work item left with an empty capacity field falls back to 8 hours per working day.
  </Step>

  <Step title="Name the capacity field for the capacity calculation">
    Back in **Administration → Configuration Properties**, tell the capacity calculation which field to read and how to read it:

    ```properties theme={null}
    nextedy.gantt.resourceCapacityField=capacityHoursPerDay
    nextedy.gantt.resourceCapacityFieldUnit=perDay
    ```

    The first property names the custom field added in the previous step. The second says the value is hours **per working day** rather than a total for the whole period.

    Without these two properties the capacity field on the department work item is never read.
  </Step>

  <Step title="Point the team assignment's resource field at departments">
    The team assignment work item needs a field that holds the department. Define it as an enum field scoped to the department type, so the **Resource** picker offers departments and nothing else:

    ```text theme={null}
    enum:@NextedyProjectWorkItems[type:department]
    ```

    Then name that field for the teams service:

    ```properties theme={null}
    nextedy.gantt.workitems.default.resource_field=resource
    ```

    Replace `resource` with the id of the field you defined, if it differs.

    <Note>
      Gantt 26.9.0 also allows the resource field to be named per widget, so a board whose widget configuration names a different field uses that one instead of the project-level default above.
    </Note>
  </Step>

  <Step title="Create the team assignment and point it at the department">
    Create a team assignment work item under the team, exactly as you would for a person, but:

    * **Set the resource field to the department work item.** This is what marks the assignment as department-level.
    * **Leave the assignee empty.** Not because an assignee would take precedence — it would not — but because an assignment that names both is charged on the resource side, so the person named would silently contribute nothing while still appearing as a team member.
    * Set the `from` and `to` dates that bracket the period the department is available to the team.
    * Set **Capacity (hours per working day)**  on the assignment.  Left empty, the assignment contributes nothing.
  </Step>

  <Step title="Size the department with its capacity field">
    A department's size lives in **Capacity (hours per working day)** on the department work item. Eight hours is one full-time person, so at **% Assignment** 100 the field value divided by 8 is the number of full-time equivalents the unit contributes:

    | The department should count as | Capacity (hours per working day) |
    | - | - |
    | Half a person | `4` |
    | Two full-time people | `16` |
    | Five full-time people | `40` |

    The board then works out the contribution over the plan's date range:

    ```text theme={null}
    capacity = working days in range
               × capacity hours per working day
               × (% Assignment ÷ 100)
               × (1 − (capModA + capModB) ÷ 100)
    ```

    The board shows the figure in **working days**, at eight hours to a day; set `nextedy.planningboard.durationUnit=hours` to show raw hours instead. For a named member, their own calendar hours take the place of the declared per-day value. For example, a department at `40` hours per working day and **% Assignment** 100, over a ten-working-day plan on a team carrying `capModA=10` and `capModB=10`, contributes 40 — five times the 8 that a member at 100% contributes over the same period.

    <Tip>
      **Model each department as a single assignment.** One assignment carrying the whole unit is easier to keep correct than several: every extra assignment is another work item to maintain, with the resource field to set on each.
    </Tip>
  </Step>

  <Step title="Reload the board and check the total">
    Reload the board, or press **Refresh data** in the board toolbar. The team's capacity bar should now include the department's contribution.

    Read the number at the **team** level, not the per-user rows: a department-level resource produces no swimlane and no line in the per-user breakdown, so the team total will be larger than the sum of the rows beneath it. That difference is the department's contribution and is expected.

    <Frame>
      <img src="https://mintcdn.com/none-17b4493f/fis_thNCHxTEUuEg/planningboard/assets/images/department-capacity-board.png?fit=max&auto=format&n=fis_thNCHxTEUuEg&q=85&s=a56a3ce0a3ae145287e73c8e0543784f" alt="An iteration board whose column headers each show a team capacity bar, with the per-user swimlanes below showing smaller individual capacities and no row for the department" width="1280" height="844" data-path="planningboard/assets/images/department-capacity-board.png" />
    </Frame>
  </Step>
</Steps>

***

## Applying capacity modifiers (optional)

If the team already uses capacity modifiers, they reduce the department exactly as they reduce a named member — no extra configuration is needed:

```properties theme={null}
nextedy.gantt.useTeamCapacityModifiers=true
```

The two modifier percentages combine additively inside one multiplicative factor:

```text theme={null}
capacity = capacity × (1 − (capModA + capModB) ÷ 100)
```

So `capModA=10` with `capModB=10` reduces capacity by 20% — a factor of 0.8, not 0.81.

The `capModB` term is skipped for dates within `nextedy.gantt.capacityModifierBFieldDayLimit` days of today. See [Teams Service Properties](/planningboard/reference/configuration-properties/teams-properties) for the field names and how to override them.

***

## What department capacity does not do

* **No personal absences.** A department has no Polarion user, so there is no personal leave to subtract from it. Model a known reduction by lowering the **Capacity (hours per working day)** value, or with a capacity modifier.
* **No swimlane.** You cannot drag cards onto a department; work items are still assigned to people.
* **No per-user row.** The department does not appear in the per-user capacity breakdown.
* **Load is unchanged.** This affects the capacity side of the bar only. Effort still comes from work items assigned to individuals.

***

## Troubleshooting

| Symptom | Likely cause |
| - | - |
| The department contributes nothing at all | The Gantt plugin is not installed on this Polarion, or `nextedy.planningboard.useTeamsService` is not `true` for the project. |
| The department contributes nothing, and the Gantt plugin is installed | **Capacity (hours per day)**  or **% Assignment** is empty or `0` on the assignment. |
| The department contributes, but only one full-time day | **Capacity (hours per working day)** is empty on the department work item, so it falls back to 8, or `nextedy.gantt.resourceCapacityField` does not name that field. |
| The department contributes, but not the amount you expect | Check **% Assignment** on the assignment — it scales the declared hours. Then check that `nextedy.gantt.resourceCapacityFieldUnit` is exactly `perDay`; any other value, including a different capitalization, silently falls back to 8 hours per working day. |
| The Resource picker offers no departments | The field's enum is not scoped to the department type — check the `enum:@NextedyProjectWorkItems[type:department]` scoping, and that department work items exist in the project. |
| The named assignee on an assignment shows zero capacity | Expected when the assignment also names a resource. Capacity is charged on the resource side; the assignee stays a team member but contributes nothing. Clear the resource field if the person should be charged. |
| The figure did not change after an edit | Press **Refresh data** in the board toolbar and reload the page. |
| The team total exceeds the sum of the per-user rows | Expected. The difference is the department-level contribution, which has no user row. |

For capacity values that are wrong for reasons unrelated to departments, see [Capacity Calculation Issues](/planningboard/guides/troubleshooting/capacity-issues).

***

## See also

* [Department-Level Capacity](/planningboard/concepts/department-level-capacity) — what the board does with a resource-only assignment
* [Track Team Capacity](/planningboard/guides/capacity/team-capacity)
* [Set Up Teams Service](/planningboard/guides/capacity/teams-service-setup)
* [Teams Service Properties](/planningboard/reference/configuration-properties/teams-properties)
* [Visualize Capacity Load](/planningboard/guides/capacity/capacity-visualization)

<LastReviewed date="2026-09-24" />
