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

# Task Link Columns

> Task link columns manage downstream linked work items such as mitigation actions, verification tasks, and risk control measures.

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

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/yWl5nA2D0IzEnZC1/risksheet/diagrams/reference/columns/task-link-columns/diagram-1.svg?fit=max&auto=format&n=yWl5nA2D0IzEnZC1&q=85&s=2efc97707cb5574d434b2edea830ccb9" alt="diagram" style={{ maxWidth: "560px", width: "100%" }} width="560" height="290" data-path="risksheet/diagrams/reference/columns/task-link-columns/diagram-1.svg" />
</Frame>

## Column Definition Properties

### Core Properties

| Property     | Type      | Default                  | Description                                                                                                                                                                                                                                                |
| ------------ | --------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bindings`   | `string`  | Required                 | Polarion field ID used to store the task link reference. This field stores the task work item identifier.                                                                                                                                                  |
| `type`       | `string`  | Auto-detected            | Must be `taskLink` for task link columns. Auto-detected from the Polarion field type if not specified. Since v25.3.1, multiple types may be specified as a comma-separated list.                                                                           |
| `header`     | `string`  | Required                 | Display text shown in the column header.                                                                                                                                                                                                                   |
| `id`         | `string`  | Auto-generated           | Unique identifier for the column. Auto-generated from `header` or `bindings` if not specified.                                                                                                                                                             |
| `width`      | `number`  | See application          | Column width in pixels.                                                                                                                                                                                                                                    |
| `level`      | `number`  | Not set for task columns | Hierarchical level at which this column appears. Task-level columns typically do not have a level assigned.                                                                                                                                                |
| `readOnly`   | `boolean` | `false`                  | Controls whether the column is editable. Automatically set to `true` for formula columns and when permissions deny modification.                                                                                                                           |
| `filterable` | `boolean` | `true`                   | Controls whether users can filter the grid by values in this column.                                                                                                                                                                                       |
| `canCreate`  | `boolean` | `true`                   | Column-level toggle controlling whether users can create new task items directly from the cell editor. When `false`, users can only link to or unlink existing items — no inline creation. Applies to `itemLink`, `multiItemLink`, and `taskLink` columns. |

### Binding Patterns

Task link columns and their nested task attribute columns use three binding patterns:

| Pattern              | Example                      | Description                                                                                                         |
| -------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `fieldId`            | `bindings: mitigationTaskId` | Direct field on the risk work item (used by the task link column itself).                                           |
| `linkedItem.fieldId` | `bindings: task.title`       | Field on the linked task item, displayed read-only in a task attribute column.                                      |
| `linkedItem.$item`   | `bindings: task.$item`       | Entire linked task object, exposed to a `serverRender` Velocity template via `$item.fields()` for custom rendering. |

### Link Field Convention

Every task link column has an associated link field identified by appending `_link` to the binding name. This `_link` suffix field stores the hyperlink URL to the linked work item:

| Field         | Purpose                                    | Example                |
| ------------- | ------------------------------------------ | ---------------------- |
| `taskId`      | Stores the task work item identifier       | `MIT-015`              |
| `taskId_link` | Stores the hyperlink reference to the task | Polarion work item URL |

When a new task is created, Nextedy RISKSHEET automatically sets both the `taskColumn` value and the `taskColumn_link` field to maintain synchronized references.

## Task Data Type Configuration

Task link columns depend on the `dataTypes.task` configuration in the sheet configuration. This section defines the work item type, link role, display name, navigation behavior, document scope, and filtering for all task-related operations.

### Core Task Properties

| Property                         | Type      | Default  | Description                                                                                                                                                                                                                                          |
| -------------------------------- | --------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `dataTypes.task.type`            | `string`  | None     | Polarion work item type for tasks (e.g., `action`, `mitigationTask`). Since v25.3.1, a comma-separated list of multiple types is supported. Evaluated through expression evaluation for dynamic values.                                              |
| `dataTypes.task.role`            | `string`  | None     | Link role used when creating relationships between risk items and tasks. Evaluated through expression evaluation.                                                                                                                                    |
| `dataTypes.task.name`            | `string`  | `"Task"` | Display name for the task type shown in the toolbar, context menus, and UI labels (e.g., `"Mitigation Action"`, `"Safety Requirement"`).                                                                                                             |
| `dataTypes.task.zoomColumn`      | `string`  | None     | Column ID that receives focus after a new task is created and serves as the target for task-level zoom/drill-down navigation.                                                                                                                        |
| `dataTypes.task.document`        | `string`  | None     | Restricts loaded task items to a specific LiveDoc path (e.g., `Risks/FHA-SYS-001`). Useful when tasks live in a dedicated downstream document.                                                                                                       |
| `dataTypes.task.query`           | `string`  | None     | Lucene query used to further filter retrieved task items.                                                                                                                                                                                            |
| `dataTypes.task.canCreate`       | `boolean` | `true`   | Task-level toggle that globally enables or disables task creation. When `false`, users cannot create any new task items — they can only link to existing tasks from all `itemLink`, `multiItemLink`, and `taskLink` columns bound to this task type. |
| `dataTypes.task.linkToRisksheet` | `boolean` | `false`  | When `true`, the task link column becomes a clickable hyperlink that navigates to the downstream risksheet specified by `dataTypes.task.document`. Enables subsheet (master-detail) navigation.                                                      |

```yaml theme={null}
dataTypes:
  task:
    type: mitigationAction
    role: mitigates
    name: Mitigation Action
    zoomColumn: taskTitle
    document: Risks/Mitigation Plan
    query: status:open
```

### Two-Level `canCreate` Control

`canCreate` operates at two independent levels and both must permit creation for users to add new items inline:

| Scope              | Property                   | Effect                                                                                                                         |
| ------------------ | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| Global (task type) | `dataTypes.task.canCreate` | When `false`, disables creation of new tasks across every column bound to this task type. Users may still link existing tasks. |
| Per column         | `column.canCreate`         | When `false`, disables inline creation for a single `itemLink`, `multiItemLink`, or `taskLink` column.                         |

A common regulated-industry pattern combines both: `dataTypes.task.canCreate: false` together with per-column `canCreate: false` on link columns forces users to pick tasks from a curated library rather than create new ones inline.

### Task Creation Target Document

| Property                                 | Type      | Default | Version      | Description                                                                                                                    |
| ---------------------------------------- | --------- | ------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------ |
| `dataTypes.task.createInCurrentDocument` | `boolean` | `false` | All versions | When `true`, new task work items are created inside the current LiveDoc.                                                       |
| `dataTypes.task.createInDocument`        | `string`  | None    | v24.8.1+     | Target LiveDoc path where newly created tasks are placed (e.g., `Risks/Mitigation Plan`). Overrides `createInCurrentDocument`. |

### Single vs. Multi-Project Configuration

| Property                  | Type     | Version      | Description                                                                 |
| ------------------------- | -------- | ------------ | --------------------------------------------------------------------------- |
| `dataTypes.task.project`  | `string` | All versions | Single project ID for task items. Use when all tasks belong to one project. |
| `dataTypes.task.projects` | `array`  | v23.7.0+     | Array of project IDs for multi-project task configurations.                 |

<Warning title="Task Project Column Duplication Issue">
  Having a Task project column visible in the Risksheet configuration can cause duplication errors when copy-pasting existing tasks between rows (Ctrl+C / Ctrl+V). The workaround is to remove the Task project column from the configuration. For single-project task configurations, use `project` (singular) instead of `projects` (plural) in the `dataTypes` section.
</Warning>

### Subsheet Navigation Pattern

When `dataTypes.task.linkToRisksheet: true` is combined with `dataTypes.task.document`, the task link column's cell becomes a clickable hyperlink that opens the referenced child risksheet document. This enables hierarchical risksheet architectures, for example:

* **Master risksheet** lists hazards with a task link column (e.g., RC ID).
* **Child risksheets** hold the detailed mitigation analysis for each hazard.
* Clicking the cell opens the matching child risksheet.

```yaml theme={null}
dataTypes:
  task:
    type: risk
    role: relates_to
    name: Detailed Analysis
    linkToRisksheet: true
    document: E_3_Sample_Risk_Analyse
```

### Reverse-Direction Linking

| Property                  | Type      | Default | Description                                                                                                                                                                        |
| ------------------------- | --------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `typeProperties.backLink` | `boolean` | `false` | When `true`, the column traverses the link in the reverse direction (from the linked item back to the risk item). Used for back-link rendering of relationships defined elsewhere. |

## Task Column Identification

The grid identifies which column holds the task identifier through the `taskColumn` property in grid settings:

| Property     | Type     | Default | Description                                                                                                                   |
| ------------ | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `taskColumn` | `string` | None    | Binding name of the column that stores the task identifier. Required for task creation, removal, and autocomplete operations. |

This property is essential for all task management operations. Without it, add task, remove task, and task autocomplete functions will not work.

## Task Creation Behavior

When you create a new task (via context menu or toolbar), Risksheet follows one of two paths depending on whether the risk item already has tasks:

### First Task on a Risk Item

1. A unique task ID is generated automatically using the ID generator.
2. The task ID is stored in the `taskColumn` field.
3. The corresponding `_link` field is populated with the work item reference.
4. The cursor focuses on the `zoomColumn` (if configured) for immediate editing.
5. The operation is recorded for undo support.

### Additional Tasks on a Risk Item

1. The current row record is cloned.
2. Task-level fields are cleaned (task ID, link fields, readonly flags, and all task attribute columns).
3. Multi-enum columns are initialized to empty arrays to prevent undefined values.
4. A unique task ID is generated for the new task.
5. The new row is inserted immediately after all existing sibling tasks (rows sharing the same `systemItemId`).
6. The operation is recorded for undo support.

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/yWl5nA2D0IzEnZC1/risksheet/diagrams/reference/columns/task-link-columns/diagram-2.svg?fit=max&auto=format&n=yWl5nA2D0IzEnZC1&q=85&s=b2b57577447c92ceac2d9058ee100764" alt="diagram" style={{ maxWidth: "560px", width: "100%" }} width="560" height="290" data-path="risksheet/diagrams/reference/columns/task-link-columns/diagram-2.svg" />
</Frame>

## Task Removal Behavior

Task removal operates with context-aware logic based on whether the risk item has single or multiple tasks:

### Single Task Removal

When the risk item has only one task, removing it clears all task-related fields from the work item record rather than deleting the entire row. The risk item row is preserved. Fields cleared include:

* Task column value and its `_link` field
* All task attribute fields on the row
* Task-level link references

### Multi-Task Removal

When the risk item has multiple tasks (detected by checking if adjacent rows share the same `systemItemId`), removing a task deletes the entire row from the grid. The row ID is marked with a `;*` suffix before deletion for processing during save.

### Permission Checks

Task removal validates permissions before executing:

| Permission Check    | Condition                                                       | Effect               |
| ------------------- | --------------------------------------------------------------- | -------------------- |
| Grid readonly       | `readonly` is `true`                                            | Task removal blocked |
| Downstream readonly | `downstreamReadonly` is `true` AND `systemReadOnly` flag is set | Task removal blocked |
| Task readonly       | `systemTaskReadOnly` flag is set on the row                     | Task removal blocked |

All task removal operations are fully undoable.

## Autocomplete and Search

Task link columns provide autocomplete functionality for linking existing tasks:

| Feature               | Behavior                                                                                                                               |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Uniqueness validation | Prevents duplicate task assignments to the same risk item. Displays error: "This item is already linked to selected row."              |
| New task mode         | When the task ID is empty or starts with `*` (unsaved), the nested title column provides task autocomplete for finding existing tasks. |
| Existing task mode    | When a task ID is assigned, nested columns switch to regular text editing mode.                                                        |
| Query factory support | Custom `queryFactory` functions can filter autocomplete suggestions by name reference from the `queryFactories` section.               |

## Nested Task Columns

Task link columns typically have nested sub-columns that display properties of the linked task. Nested task attribute columns use the `linkedItem.fieldId` binding pattern (e.g., `bindings: task.title`) to surface fields from the linked task work item. These columns are automatically cleared when creating new tasks and are subject to task-level readonly permissions (`systemTaskReadOnly` and `systemTaskReadOnlyFields`).

## Readonly Protection

Task link columns respect multiple layers of readonly protection:

| Property                   | Type      | Default                   | Description                                                                                                     |
| -------------------------- | --------- | ------------------------- | --------------------------------------------------------------------------------------------------------------- |
| `systemReadOnly`           | `boolean` | From Polarion permissions | Marks entire items as non-editable based on permissions or item state.                                          |
| `systemReadOnlyFields`     | `array`   | From Polarion permissions | Lists specific field names that are non-editable for an item.                                                   |
| `systemTaskReadOnly`       | `boolean` | From Polarion permissions | Marks linked task items as non-editable. Prevents task editing and removal regardless of other settings.        |
| `systemTaskReadOnlyFields` | `array`   | From Polarion permissions | Lists specific fields that are non-editable in linked task items.                                               |
| `downstreamReadonly`       | `boolean` | `false`                   | Global setting that makes all downstream linked items read-only to prevent edits to items from other documents. |

## Context Menu Actions

Right-clicking a task link cell provides task-specific menu options:

| Menu Action    | Availability                                                                                          | Description                                                                                                              |
| -------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Open Task Item | When cell contains a valid task link                                                                  | Opens the task work item in Polarion's item editor. Menu label uses `dataTypes.task.name` if configured.                 |
| Add Task       | Grid is not readonly; `downstreamReadonly` allows creation; `dataTypes.task.canCreate` is not `false` | Creates a new task for the current risk item. Placement is controlled by `createInCurrentDocument` / `createInDocument`. |
| Remove Task    | Grid is not readonly; task-level permissions allow removal                                            | Removes the task (clears fields or deletes row depending on task count).                                                 |

## Export Behavior

### Excel Export

Task link columns export as plain text, with HTML link markup stripped to produce clean text values. Multi-task rows are exported as separate rows in the Excel output.

### PDF Export

Task link columns render in PDF using the `renderDataCell` function, which resolves the link `label` property for display. Use `exportSubTable` or `exportDownstreamTable` to export task data as separate tables in the PDF output.

## Complete Example

```yaml theme={null}
columns:
  - bindings: mitigationTaskId
    header: Mitigation
    type: taskLink
    width: 120
    canCreate: true
  - id: mitigationTitle
    bindings: task.title
    header: Task Title
    width: 250
  - bindings: task.status
    header: Status
    width: 100
  - bindings: task.assignee
    header: Assignee
    width: 120

dataTypes:
  task:
    type: mitigationAction
    role: mitigates
    name: Mitigation Action
    zoomColumn: mitigationTitle
    document: Risks/Mitigation Plan
    createInDocument: Risks/Mitigation Plan
    canCreate: true
```

This configuration creates a task link column for mitigation actions with three nested columns showing the task title, status, and assignee read from the linked task. New tasks are created as `mitigationAction` work items linked via the `mitigates` role, scoped to the `Risks/Mitigation Plan` document (v24.8.1+).

## Internal Properties

The following flags are managed automatically by the grid engine when a column is configured as a task link or task attribute. They are NOT user-configurable in the sheet configuration:

| Internal Flag  | Set When                                          | Purpose                                                           |
| -------------- | ------------------------------------------------- | ----------------------------------------------------------------- |
| `isTaskLink`   | Column has `type: taskLink`                       | Marks the column as the task identifier column at runtime.        |
| `isTaskAttrib` | Column binds to a task field (e.g., `task.title`) | Marks the column as displaying linked task attributes at runtime. |

Do not set these flags directly — configure `type: taskLink` and use the `linkedItem.fieldId` binding pattern instead.

## Related Pages

* [Item Link Columns](/risksheet/reference/columns/item-link-columns) for upstream traceability columns linking to requirements and hazards
* [Multi-Item Link Columns](/risksheet/reference/columns/multi-item-link-columns) for columns displaying multiple linked items per cell
* [Column Type Reference](/risksheet/reference/columns/column-types) for the complete list of column types
* [Data Types](/risksheet/reference/columns/data-types) for the full `dataTypes` configuration reference
* [Levels Configuration](/risksheet/reference/levels-configuration) for hierarchical level settings that interact with task columns

<LastReviewed date="2026-06-18" />
