> ## 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 Hierarchy and Identity Properties

> Every configuration property behind the Nextedy GANTT resource breakdown structure: the hierarchy the picker browses, the mapping between a resource and a Polarion user, and the capacity a resource declares for itself.

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>;
};

Set these properties in **Administration > Configuration Properties** of the project holding the Gantt.

The three groups below are independent -- each is opt-in and each is useful on its own. For what they add and why, see [Resource Breakdown Structure](/gantt/concepts/resource-breakdown-structure).

Every property on this page is available since version **26.9.0**.

## Hierarchy Properties

| Name                                                    | Type      | Default | Description                                                                                                                                                                                                                                            |
| ------------------------------------------------------- | --------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `nextedy.gantt.resourceHierarchy.projectId`             | `String`  | *empty* | Polarion project holding the resource work items. Nothing is turned on until this names a project: with it unset the resource field keeps its usual control. Deliberately not defaulted to the current project.                                        |
| `nextedy.gantt.resourceHierarchy.query`                 | `String`  | *empty* | Lucene query narrowing which work items of that project form the hierarchy. Work items outside it are neither shown as nodes nor found by search. Leave unset to take the whole project.                                                               |
| `nextedy.gantt.resourceHierarchy.pickableField`         | `String`  | *empty* | Boolean custom field on the resource work item marking a node as selectable. When set, only nodes whose field is `true` can be picked; the rest can only be opened to show their children. Leave unset and every node can be picked.                   |
| `nextedy.gantt.resourceHierarchy.searchLimit`           | `Integer` | `50`    | Maximum number of search results returned. Raising it makes every search slower.                                                                                                                                                                       |
| `nextedy.gantt.resourceHierarchy.maxDepth`              | `Integer` | `20`    | How far a path is walked upward when a node's breadcrumb is built. Raise it only for a structure genuinely deeper than this; each level costs a step.                                                                                                  |
| `nextedy.gantt.resourceHierarchy.hasChildrenProbeLimit` | `Integer` | `1000`  | Level size above which the Gantt stops checking which rows have children and offers every row as openable. Set `0` to switch the check off entirely. A lower value opens a wide level faster, at the cost of opening a row that turns out to be empty. |

The top of the structure is whatever has no parent, found within the project and query above. The parent link role is read from the project's own link role configuration, and falls back to `parent` where no role is flagged as the parent role -- a hierarchy linked by an unflagged role is still navigable level by level, but its top level comes up empty, because roots are detected from Polarion's own indexed parent back-reference, which only flagged roles fill. Flag the role in `workitem-link-role-enum.xml` where the picker opens on nothing.

Standing the picker up is covered in [Set Up a Hierarchical Resource Picker](/gantt/guides/resources/hierarchical-resource-picker).

<Note>
  **Which Field the Picker Replaces**

  The picker renders on exactly one field: the effective team assignment resource field -- the **Resource Field** widget parameter, or the project default `nextedy.gantt.workitems.default.resource_field` where no widget carries the parameter. Every other field keeps its usual control.
</Note>

## Identity Properties

These map a resource work item to a Polarion user, so a person reached as a resource and as an assignee occupies one row.

| Name                                               | Type     | Default           | Description                                                                                                                                                                                                    |
| -------------------------------------------------- | -------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `nextedy.gantt.resourceIdentity.userIdField`       | `String` | *empty*           | Comma-separated list of resource work item attributes holding a user, including the built-in `assignee`. The first that resolves to a real user wins.                                                          |
| `nextedy.gantt.resourceIdentity.userResourceField` | `String` | *empty*           | Custom field on the Polarion user record pointing back at the resource work item, for the opposite direction. Where both directions are configured, the resource side is tried first and this is the fallback. |
| `nextedy.gantt.resourceIdentity.nodeKeyField`      | `String` | *work item ID*    | Field of the resource work item that `userResourceField` is matched against, instead of the work item ID. Use it where users are keyed by a personnel or resource number.                                      |
| `nextedy.gantt.resourceIdentity.projectId`         | `String` | *see description* | One or more projects (comma- or semicolon-separated) holding the resource work items for identity lookup. Falls back to `nextedy.gantt.resourceHierarchy.projectId`, and then to the current project.          |

<Warning>
  **Identity Mapping Is Opt-In**

  With neither `userIdField` nor `userResourceField` configured, nothing is merged: a person reachable both as a resource and as an assignee occupies two rows and their allocation is counted twice. Where `pickableField` is configured, the picker resolves an identity only for the nodes it offers for selection.
</Warning>

Configuring the mapping is covered in [Map Resources to Polarion Users](/gantt/guides/resources/resource-identity-mapping).

## Declared Capacity Properties

| Name                                      | Type     | Default  | Description                                                                                                                                                                                             |
| ----------------------------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `nextedy.gantt.resourceCapacityField`     | `String` | *empty*  | Field on the resource work item holding its own available capacity. No default -- declared capacity stays off until a field is named, and every resource follows its working calendar.                  |
| `nextedy.gantt.resourceCapacityFieldUnit` | `String` | `perDay` | How the field value is read. `perDay` is hours available on each working day, multiplied by the working days of the period. `perPeriodAbsolute` is the capacity of the whole period, used as it stands. |

A declared figure applies only to a resource that does not resolve to a Polarion user. A resource that does resolve to one takes that user's working calendar and its declared figure is not read. The rule is the same in the resource view and in the [Resource Capacity API](/gantt/reference/api/capacity-api).

Where the figure does apply, the calendar still decides the shape of the week: a non-working day carries no capacity whatever the field says, so schedule exceptions, holidays and vacations keep applying.

The resource view reads a declared figure only under the `perDay` unit. Set `perPeriodAbsolute` and the figure is honoured by the capacity API but ignored on screen, where the resource falls back to its working calendar.

Declaring capacity is covered in [Declare Resource Capacity in Hours per Day](/gantt/guides/calendars/resource-capacity-field).

## Resource Field and Grouping Properties

| Name                                              | Type      | Default    | Description                                                                                                                                  |
| ------------------------------------------------- | --------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `nextedy.gantt.workitems.default.resource_field`  | `String`  | `assignee` | Project default for the **Resource Field** widget parameter -- the field a Team Assignment takes its resource from.                          |
| `nextedy.gantt.teamAssignmentResourceField`       | `String`  | *empty*    | Resource field for callers that have no widget to carry the parameter.                                                                       |
| `nextedy.gantt.resourceView.groupResourcesByTeam` | `Boolean` | `true`     | Starting value of the **Group Resources By Teams** widget parameter, which folds the resource view into one collapsible header row per team. |

Grouping is covered in [Group Resources by Team](/gantt/guides/resources/group-resources-by-team); the resource field itself in [Configure Resource Fields](/gantt/guides/resources/resource-field-configuration).

## Configuration Example

A structure in its own project, with containers that cannot be picked, identities declared on the resource work items, and each resource stating its own hours per day:

```properties theme={null}
nextedy.gantt.resourceHierarchy.projectId=ResourceBreakdown
nextedy.gantt.resourceHierarchy.query=type:resource
nextedy.gantt.resourceHierarchy.pickableField=assignable
nextedy.gantt.resourceIdentity.userIdField=polarionUser,assignee
nextedy.gantt.resourceCapacityField=capacityHours
nextedy.gantt.workitems.default.resource_field=resourceNode
```

## Related Pages

* [Resource Breakdown Structure](/gantt/concepts/resource-breakdown-structure) -- the model these properties configure
* [Team and Resource Properties](/gantt/reference/configuration/team-properties) -- the Team and Team Assignment work item types
* [Resource Capacity API](/gantt/reference/api/capacity-api) -- reading capacity and allocation across projects
* [Resource View Parameters](/gantt/reference/widget-parameters/resource-view) -- widget-level resource view settings
* [Calendar and Working Hours Properties](/gantt/reference/configuration/calendar-properties) -- the calendar layer declared capacity overrides

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