Skip to main content
diagram

Structure

Relationships are defined as a top-level array in the domain model YAML, alongside domainModelTypes:
relationships:
  - from: UserNeed
    to: SystemRequirement
    cardinality: many-to-many
    storage: linkedWorkItems
    linkRole: decomposes
    direct:
      name: systemRequirements
    back:
      name: userNeeds
Each entry connects a source entity type (from) to a target entity type (to), specifies a cardinality, a storage mechanism, a link role, and two navigation properties that allow traversal in both directions.

Relationship Properties

PropertyTypeDefaultDescription
fromstringRequiredSource entity type name. Must match a key in domainModelTypes.
tostringRequiredTarget entity type name. Must match a key in domainModelTypes.
cardinalitystringRequiredRelationship multiplicity. One of one-to-one, many-to-one, one-to-many, many-to-many. See Cardinality.
storagestringRequiredPersistence mechanism. Only linkedWorkItems is supported. See Storage.
linkRolestringRequiredPolarion link role ID used to implement this relationship. Must exist in the project’s link role configuration. See Link Roles.
directobjectRequiredForward navigation property configuration (from source to target). See Navigation Properties.
direct.namestringRequiredNavigation property name for forward traversal. Used in expansion paths and column bindings.
backobjectOptionalReverse navigation property configuration (from target back to source). See Navigation Properties.
back.namestringRequired (if back provided)Navigation property name for reverse traversal.
The from and to fields must reference names defined in domainModelTypesnot Polarion work item type IDs. For example, use UserNeed (the entity type name), not user_need (the Polarion type ID).
Every relationship creates navigation properties on the participating entity types. These properties enable:
  • Expansion paths in sheet source configurations
  • Column bindings using dot-notation in sheet column definitions
  • Query traversal across related entity types
Navigation properties are defined using the direct and back objects:
DirectionObjectCreated OnPurpose
ForwarddirectSource (from) entityNavigate from source to target
ReversebackTarget (to) entityNavigate from target back to source
relationships:
  - from: UserNeed
    to: Chapter
    cardinality: many-to-one
    storage: linkedWorkItems
    linkRole: parent
    direct:
      name: chapter
    back:
      name: userNeeds
In this example:
  • UserNeed gains the navigation property chapter (forward, to the Chapter entity)
  • Chapter gains the navigation property userNeeds (reverse, back to UserNeed entities)

Naming Conventions

CardinalityDirect NameBack NameRationale
many-to-oneSingular (chapter)Plural (userNeeds)Direct points to one target; back returns many sources
one-to-manyPlural (userNeeds)Singular (chapter)Direct points to many targets; back returns one source
many-to-manyPlural (systemRequirements)Plural (userNeeds)Both sides are collections
one-to-oneSingularSingularBoth sides reference a single entity
Navigation property names follow camelCase convention. Use singular names for scalar references and plural names for collection references. This naming directly maps to source expand entries and column binding paths.

Cardinality Options

The cardinality property determines how many entities can participate on each side of the relationship:
ValueFrom SideTo SideDirect PropertyBack Property
one-to-oneSingle referenceSingle referenceScalarScalar
many-to-oneSingle referenceCollectionScalarCollection
one-to-manyCollectionSingle referenceCollectionScalar
many-to-manyCollectionCollectionCollection (via association)Collection (via association)
Cardinality affects three layers of configuration:
  1. Domain model — determines navigation property type (scalar vs. collection)
  2. Sheet sources — determines expand pattern (single-level vs. two-level for M:N)
  3. Sheet columns — determines binding syntax and UI behavior (picker vs. child rows)
See Cardinality for complete documentation on each option.

Storage

The storage property specifies how the relationship is persisted in Polarion.
ValueDescription
linkedWorkItemsUses Polarion’s native work item link mechanism. Requires linkRole to specify which link role implements the association.
The linkedWorkItems storage mechanism is the only supported option. It leverages Polarion’s built-in linked work items infrastructure, which stores relationships as typed links between work items using the configured linkRole.
The linkRole value must correspond to a link role defined in the Polarion project configuration. Common link roles used in domain models:
Link RoleTypical Usage
parentHierarchical parent-child relationships (e.g., Chapter to UserNeed)
decomposesDecomposition relationships (e.g., SystemRequirement to UserNeed)
refinesRefinement relationships (e.g., DesignRequirement to SystemRequirement)
mitigatesRisk relationships (e.g., RiskControl to Hazard)
verifiesVerification relationships (e.g., test cases to requirements)
See Link Roles for detailed documentation on configuring and using Polarion link roles.

Permission Control

Relationships support permission flags that control CRUD operations through the sheet:
PropertyTypeDefaultDescription
createablebooleanSee applicationWhether new relationship instances can be created through the sheet.
readablebooleanSee applicationWhether relationship instances are visible in queries and the sheet UI.
Permission flag behavior may depend on your Polarion project permissions and Powersheet version. Test in your environment to confirm the exact behavior.
Navigation property names created by relationships flow directly into sheet configuration. The three configuration layers — domain model, sheet sources, and sheet columns — are connected through these navigation property names. The cardinality of the relationship determines the expand pattern and column binding syntax.

Many-to-One (N:1)

A scalar reference from source to a single target entity. Uses the direct navigation property. Domain model:
relationships:
  - from: UserNeed
    to: Chapter
    cardinality: many-to-one
    storage: linkedWorkItems
    linkRole: parent
    direct:
      name: chapter
    back:
      name: userNeeds
Source configuration:
sources:
  - id: user_needs
    query:
      from: UserNeed
    expand:
      - name: chapter
Column bindings:
columns:
  title:
    title: Title
    hasFocus: true
  chapter:
    title: Chapter
    display: title
    list:
      search:
        - title
  chapter.title:
    title: Chapter Title
    isReadOnly: true
  • chapter — single-value reference picker (scalar navigation property, N:1)
  • chapter.title — read-only display of the referenced Chapter’s title via dot-notation

One-to-Many (1:N)

A collection of child entities accessible from a parent. Uses the back navigation property (reverse side of a many-to-one relationship). Source configuration:
sources:
  - id: chapters
    query:
      from: Chapter
    expand:
      - name: userNeeds
Column bindings:
columns:
  title:
    title: Chapter
    hasFocus: true
  userNeeds:
    title: Title
    hasFocus: true
  • userNeeds — expands into child rows, creating a new level in the sheet hierarchy
  • No dot-notation needed; the expand directly opens the child level

Many-to-Many (M:N)

Collections on both sides, navigated through an association entity. Uses a two-level expand. Domain model:
relationships:
  - from: SystemRequirement
    to: UserNeed
    cardinality: many-to-many
    storage: linkedWorkItems
    linkRole: decomposes
    direct:
      name: userNeeds
    back:
      name: systemRequirements
Source configuration:
sources:
  - id: user_needs
    query:
      from: UserNeed
    expand:
      - name: systemRequirements
        expand:
          - name: systemRequirement
Column bindings:
columns:
  title:
    title: Title
    hasFocus: true
  systemRequirements.systemRequirement:
    title: System Requirement
    list:
      search:
        - objectId
        - title
      createNew: true
  systemRequirements.systemRequirement.title:
    title: SysReq Title
    hasFocus: true
  • M:N relationships use an association entity between the two types
  • Source expand is two levels: systemRequirements (association) then systemRequirement (target entity)
  • Column binding uses dot-notation: systemRequirements.systemRequirement
  • Acts as a multi-item reference picker in the sheet UI

Cardinality Summary

CardinalityModelSource ExpandColumn BindingUI Behavior
N:1cardinality: many-to-one, direct.name: chapter- name: chapterchapter, chapter.titleSingle-value reference picker
1:NReverse of N:1, back.name: userNeeds- name: userNeedsuserNeedsChild rows (new sheet level)
M:Ncardinality: many-to-many, back.name: systemRequirements- name: systemRequirements then - name: systemRequirementsystemRequirements.systemRequirementMulti-item reference picker

Complete YAML Example

A full domain model demonstrating all relationship cardinalities across the standard RTM entity types:
domainModelTypes:
  Chapter:
    polarionType: heading

  UserNeed:
    polarionType: user_need
    properties:
      description:
      severity:

  SystemRequirement:
    polarionType: sys_req
    properties:
      description:
      severity:

  DesignRequirement:
    polarionType: des_req
    properties:
      description:

  Hazard:
    polarionType: hazard
    properties:
      description:

  RiskControl:
    polarionType: riskControl
    properties:
      description:

relationships:
  # N:1 -- each UserNeed belongs to one Chapter
  - from: UserNeed
    to: Chapter
    cardinality: many-to-one
    storage: linkedWorkItems
    linkRole: parent
    direct:
      name: chapter
    back:
      name: userNeeds

  # M:N -- UserNeeds decompose into SystemRequirements
  - from: SystemRequirement
    to: UserNeed
    cardinality: many-to-many
    storage: linkedWorkItems
    linkRole: decomposes
    direct:
      name: userNeeds
    back:
      name: systemRequirements

  # M:N -- SystemRequirements refine into DesignRequirements
  - from: DesignRequirement
    to: SystemRequirement
    cardinality: many-to-many
    storage: linkedWorkItems
    linkRole: refines
    direct:
      name: systemRequirements
    back:
      name: designRequirements

  # M:N -- Hazards linked to DesignRequirements
  - from: Hazard
    to: DesignRequirement
    cardinality: many-to-many
    storage: linkedWorkItems
    linkRole: refines
    direct:
      name: designRequirements
    back:
      name: hazards

  # M:N -- RiskControls mitigate Hazards
  - from: RiskControl
    to: Hazard
    cardinality: many-to-many
    storage: linkedWorkItems
    linkRole: mitigates
    direct:
      name: hazards
    back:
      name: riskControls
This model creates a full traceability chain: Chapter > UserNeed > SystemRequirement > DesignRequirement > Hazard > RiskControl. Each relationship uses linkedWorkItems storage with an appropriate Polarion link role, and defines both direct and back navigation properties for bidirectional traversal.
  • Cardinality — detailed rules for each cardinality option
  • Link Roles — configuring Polarion link roles for relationships
  • Domain Model Types — entity type definitions referenced by from and to
  • Navigation Directions — how direction properties work internally
  • Binding Syntax — using navigation properties in column bindings
  • Sources — configuring expand paths that use navigation properties
  • Constraints — filtering constraints applied to entity types in relationships