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

# Data Model Reference

> The Nextedy POWERSHEET domain model defines the semantic layer between Siemens Polarion ALM's native data structures and the Powersheet sheet interface.

## How the Domain Model Works

The domain model is a YAML configuration file that declares three things:

1. **Entity types** -- what kinds of objects exist (e.g., `UserNeed`, `SystemRequirement`, `Hazard`)
2. **Relationships** -- how entity types connect to each other, with cardinality and link roles
3. **Properties** -- which fields each entity type exposes, mapped to Polarion work item fields

These three layers drive everything downstream: sheet sources determine which entities to query, expansion paths follow relationship definitions, and column bindings resolve against properties.

```
┌─────────────────────────────────────────────────────────┐
│                     Domain Model                        │
│                                                         │
│  ┌──────────────┐     relationships     ┌─────────────┐ │
│  │ EntityType A  ├─────────────────────►│ EntityType B │ │
│  │ - properties  │     cardinality      │ - properties │ │
│  │ - constraints │     linkRole         │ - constraints│ │
│  │ - polarionType│     direct / back    │ - polarionType│
│  └──────────────┘                       └─────────────┘ │
│                                                         │
│         ▼ maps to ▼                 ▼ maps to ▼         │
│    Polarion Work Item Types + Link Roles + Fields       │
└─────────────────────────────────────────────────────────┘
```

## Entity Type Configuration

* **[Domain Model Types](/powersheet-v3/reference/data-model/domainmodeltypes)** -- Entity type definitions: `name`, `polarionType`, nested properties, and plural name generation
* **[Polarion Type Mapping](/powersheet-v3/reference/data-model/polarion-mapping)** -- How `polarionType` maps domain entities to Polarion work item types, including multi-type mappings

## Relationships and Navigation

* **[Cardinality](/powersheet-v3/reference/data-model/cardinality)** -- Relationship multiplicity options (one-to-one, one-to-many, many-to-one, many-to-many) and how each affects source expansion and column binding
* **[Link Roles](/powersheet-v3/reference/data-model/link-roles)** -- Mapping domain model relationships to Polarion link role identifiers
* **[Navigation Directions](/powersheet-v3/reference/data-model/navigation-directions)** -- Forward (`direct`) and reverse (`back`) navigation properties, naming conventions, and how directions drive expansion paths

## Constraints and Access Control

* **[Constraints](/powersheet-v3/reference/data-model/constraints)** -- Load, create, and pick constraint rules that scope which Polarion items an entity type includes, using Lucene query syntax
* **[Permissions](/powersheet-v3/reference/data-model/permissions)** -- Entity-level and property-level access control: `readable`, `updatable`, `createable`, and `isReadOnly` flags
* **[Context Expressions Reference](/powersheet-v3/reference/data-model/context-expressions)** -- Dynamic context expressions for runtime evaluation in constraints and filters

## Quick Orientation

| Concept               | Key YAML Property           | Reference                                                                          |
| --------------------- | --------------------------- | ---------------------------------------------------------------------------------- |
| Define an entity type | `domainModelTypes.TypeName` | [Domain Model Types](/powersheet-v3/reference/data-model/domainmodeltypes)         |
| Map to Polarion       | `polarionType`              | [Polarion Type Mapping](/powersheet-v3/reference/data-model/polarion-mapping)      |
| Add fields            | `properties`                | [Properties](/powersheet-v3/reference/data-model/properties)                       |
| Connect entity types  | `relationships[]`           | [Relationships](/powersheet-v3/reference/data-model/relationships)                 |
| Set multiplicity      | `cardinality`               | [Cardinality](/powersheet-v3/reference/data-model/cardinality)                     |
| Name navigation paths | `direct.name` / `back.name` | [Navigation Directions](/powersheet-v3/reference/data-model/navigation-directions) |
| Assign Polarion link  | `linkRole`                  | [Link Roles](/powersheet-v3/reference/data-model/link-roles)                       |
| Restrict loaded items | `constraints`               | [Constraints](/powersheet-v3/reference/data-model/constraints)                     |
| Control editability   | `isReadOnly`, `updatable`   | [Permissions](/powersheet-v3/reference/data-model/permissions)                     |

<Tip title="Building your first domain model?">
  Start with the [Creating Your First Data Model](/powersheet-v3/getting-started/first-data-model) tutorial for a guided walkthrough, then return here for property-level details. For complete working models, see the [Example Models Reference](/powersheet-v3/reference/example-models/index).
</Tip>

<Accordion title="Relationship between model, sources, and columns">
  The domain model defines *what exists*. [Sheet sources](/powersheet-v3/reference/sheet-config/sources) define *what to query and expand*. [Columns](/powersheet-v3/reference/sheet-config/columns) define *what to display*. Navigation property names from the domain model are the thread connecting all three layers. See [Cardinality](/powersheet-v3/reference/data-model/cardinality) for end-to-end examples showing how each cardinality type flows from model through source expansion to column binding.
</Accordion>
