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

# Configure Cross-Project Linking

> Display and link Siemens Polarion ALM work items from other projects in your Nextedy RISKSHEET by configuring `project` parameters in column type properties and data type definitions.

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

## Configure Upstream Cross-Project Columns

To display linked items from another Polarion project in an `itemLink` or `multiItemLink` column, add the `project` parameter to the column's `typeProperties`:

```yaml theme={null}
columns:
  - header: System Requirement
    bindings: sysReq
    type: itemLink
    typeProperties:
      linkTypes: systemRequirement
      linkRole: refines
      project: RequirementsProject
```

For items from multiple projects, specify a space-separated list. The `$projectId` runtime variable resolves to the current project ID:

```yaml theme={null}
typeProperties:
  linkTypes: systemRequirement
  linkRole: refines
  project: $projectId RequirementsProject EngineeringProject
```

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/-Icoak49xQVOW38R/risksheet/diagrams/guides/advanced/cross-project-linking/diagram-1.svg?fit=max&auto=format&n=-Icoak49xQVOW38R&q=85&s=0566056c6d57ba4edb915b3138172664" alt="diagram" style={{ maxWidth: "620px", width: "100%" }} width="620" height="160" data-path="risksheet/diagrams/guides/advanced/cross-project-linking/diagram-1.svg" />
</Frame>

### typeProperties Sub-Properties Reference

The `typeProperties` object on an `itemLink` or `multiItemLink` column accepts the following sub-properties. Use the correct names — `linkTypes` (plural, comma-separated string) and `linkRole` (not `type` or `role`):

| Sub-property    | Type    | Description                                                                                                                                 |
| --------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `linkRole`      | string  | Link role ID that connects the risk item to the linked item (e.g., `refines`, `verifies`). Required.                                        |
| `linkTypes`     | string  | Comma-separated work item type IDs allowed in this column (e.g., `systemRequirement` or `systemRequirement,softwareRequirement`). Required. |
| `linkDirection` | string  | Set to `back` to traverse links in the reverse direction (link points from the target item to the risk item).                               |
| `backLink`      | boolean | Enable back-link rendering for reverse-direction display.                                                                                   |
| `itemTemplate`  | string  | Velocity template for custom item display in the column cell.                                                                               |
| `queryFactory`  | string  | Reference to a named function in the top-level `queryFactories` section that returns a Lucene query for filtering autocomplete suggestions. |

In addition to these six core sub-properties, cross-project columns commonly use `project` (cross-project loading) and `createInCurrentDocument` (control where new items are saved). The `document` sub-property restricts the autocomplete to a specific upstream library document.

## Configure Downstream Cross-Project Tasks

To display and create downstream tasks in another project, use `project` or `projects` in the `dataTypes.task` section:

**Single target project:**

```yaml theme={null}
dataTypes:
  task:
    type: mitigationAction
    role: mitigates
    project: TasksProject
```

**Multiple target projects** (requires v23.7.0+):

```yaml theme={null}
dataTypes:
  task:
    type: mitigationAction
    role: mitigates
    projects:
      - TasksProject
      - VerificationProject
```

<Warning title="Use `project` for single and `projects` for multiple">
  Use the `project` parameter for a single target project. Use `projects` (plural, array, v23.7.0+) when loading tasks from multiple projects. For `itemLink` and `multiItemLink` columns loading from multiple projects, the system saves new items to the first listed project by default.
</Warning>

## Save New Items in the Current Project

When a column loads items from multiple projects, new items created from that column are saved in the first listed project. To force new items into the current project, add `createInCurrentDocument`:

```yaml theme={null}
typeProperties:
  project: $projectId ProjectA ProjectB
  linkTypes: systemRequirement
  linkRole: refines
  createInCurrentDocument: true
```

<Tip title="Control Target Project for New Items">
  When `createInCurrentDocument` is not set, the system uses the first project listed in the `project` parameter for saving new items. Reorder the project list — or place `$projectId` first — to control the default save target.
</Tip>

## Dynamic Configuration via Configuration Properties

For portable configurations that work across different project environments, use Risksheet configuration properties to dynamically resolve project IDs, link roles, and types in the sheet configuration:

```yaml theme={null}
typeProperties:
  linkRole: $config.getRisksheetProjectProperties().getProperty('taskLinkRole', 'mitigates')
  linkTypes: $config.getRisksheetProjectProperties().getProperty('taskLinkTypes', 'mitigationAction')
  project: $config.getRisksheetProjectProperties().getProperty('taskProject', 'DefaultProject')
```

This pattern reads values from the project's Risksheet configuration properties with fallback defaults, eliminating hardcoded project IDs. It makes the sheet configuration portable when deploying the same Risksheet template across multiple projects.

## Cross-Project Work Item Operations

Risksheet supports full CRUD operations on cross-project items. All data lives in Polarion work items — Risksheet does not store anything separately, so cross-project links resolve through Polarion's standard work item APIs:

| Operation         | Behavior                                                                                        |
| ----------------- | ----------------------------------------------------------------------------------------------- |
| **Display**       | Items from configured projects appear in columns with their project-qualified IDs               |
| **Create**        | New items saved to the first listed project or current project (with `createInCurrentDocument`) |
| **Update**        | Editing cross-project items updates them in their home project                                  |
| **Delete/Unlink** | Unlinking removes the relationship; deletion removes the item from its home project             |

<Warning title="Clustered Polarion Limitation">
  Items from different Polarion server instances cannot be displayed in the same Risksheet. Cross-project linking requires all projects to reside on the same Polarion server.
</Warning>

## Limitations

| Limitation                 | Details                                                                                                                                                   |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Direct links only**      | Cross-project display works for directly linked items. Indirect links through intermediary work items in other projects require additional configuration. |
| **Same server required**   | All linked projects must be on the same Polarion server instance.                                                                                         |
| **Assignee field context** | The `userRole: 'project_assignable'` property fetches users from the Risksheet project, not the task's project. Use a global role as a workaround.        |

## Verify Your Configuration

After setting up cross-project linking:

1. Open the Risksheet document and confirm that linked items from other projects appear in the configured columns
2. Create a new linked item and verify it is stored in the expected project
3. Confirm that autocomplete suggestions show items from all configured projects
4. Check that unlinking and deletion work correctly for cross-project items

You should now see work items from other Polarion projects displayed in your Risksheet grid with full linking, creation, and editing capabilities.

## See Also

* [Manage Cross-Project Resources](/risksheet/guides/advanced/cross-project-resources) — shared resources across projects
* [Configure Target Document Creation](/risksheet/guides/advanced/target-document-creation) — controlling where new items are stored
* [Configure Multi-Project Setup](/risksheet/guides/configuration/multi-project-setup) — project-level settings
* [Configure Downstream Tasks](/risksheet/guides/risk-management/downstream-tasks) — task configuration
* [Configure Upstream Traceability Columns](/risksheet/guides/columns/upstream-traceability) — upstream column setup

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