Computed Property Flow
Domain Model Property Configuration
Properties in the domain model YAML define the fields available on each entity type. When a property includes serverRender, it becomes a computed property.
Property Fields
Name Type Default Description namestringRequired Property name as exposed in the metadata API. Must be unique within the entity type. serverNamestringSame as name Override for the actual Polarion field name when it differs from the client-facing property name. customFieldNamestringnullPolarion custom field ID. Required when the property maps to a custom field. typestringnullData type (string, integer, date, enum, etc.). Determines validation and rendering. storagestringnullPersistence mechanism (e.g., workitem field, linkedWorkItems). enumValuesarraynullList of valid enum option IDs when type is enumeration. readablebooleantrueWhether the property is visible to clients. updatablebooleantrueWhether the property can be modified. Automatically false for serverRender properties. scalarbooleantrueSingle value (true) or collection (false). navigabilitystringnullNavigation direction for relationship properties. serverRenderstringnullVelocity template pattern. When set, property is evaluated server-side and marked read-only.
When serverRender is configured on a property, the property is automatically marked as not updatable (updatable = false), regardless of any explicit updatable setting. This ensures computed values cannot be overwritten by client edits.
Security Model
Property-level security follows an intersection model:
Level Description Entity-level permissions Base CRUD permissions from the entity type definition Property-level readable Controls visibility; defaults to true Property-level updatable Controls editability; defaults to true but overridden to false by serverRender Server-render override Properties with serverRender are always read-only
Read-Only System Fields
Certain built-in fields are always read-only, regardless of configuration:
Field Entity Type Description idAll work items Polarion work item ID outlineNumberAll work items Document outline number objectIdAll entities Primary key (auto-generated, non-nullable)
Create-Only Document Fields
For Document entity types, certain fields are only writable during creation:
Field Description moduleFolderDocument folder/space path moduleNameDocument name titleDocument title typeDocument type allowedWITypesAllowed work item types
Built-In Properties
All work item entity types automatically include these standard properties:
Property Type Description objectIdstringPrimary key, part of entity key. Auto-generated using Identity strategy. idstringPolarion work item ID titlestringWork item title projectIdstringForeign key referencing the project
Type Mapping
Polarion field types are automatically mapped to metadata types:
Polarion Type Metadata Type Description Integer Int32 Whole numbers Float Double Floating-point numbers Currency Double Currency values DateOnly DateTime Date without time Date DateTime Date with time TimeOnly DateTime Time only DurationTime String Duration values Boolean Boolean True/false Text String Rich text String String Plain text
Enum Properties
Enum-typed properties receive additional metadata for dropdown picker rendering:
Metadata Description Enum ID Polarion enumeration identifier Full qualified enum ID Dot-separated identifier combining query keys and entity metadata Query keys Context keys (prototype, project, type) for filtering available enum options
Default values for enum properties are resolved in this order: explicit domain model default, then Polarion enumeration default, then null.
Computed Property Examples
Simple Status Display
domainModelTypes :
SystemRequirement :
polarionType : systemRequirement
properties :
title : ~
severity : ~
statusLabel :
serverRender : "$item.status.id"
riskLevel :
serverRender : |
#if($item.severity && $item.severity.id == "critical")
HIGH
#elseif($item.severity && $item.severity.id == "major")
MEDIUM
#else
LOW
#end
Document Path
documentLocation :
serverRender : |
#if($module)
$module.moduleFolder/$module.moduleName
#else
(no document)
#end
Link Count
linkedItems :
serverRender : |
#set($links = $wi.getLinkedWorkItems())
$links.size()
Sheet Configuration for Computed Properties
Computed properties are referenced in the sheet configuration like any other property:
columns :
id :
width : 80
title :
width : 300
hasFocus : true
statusLabel :
width : 120
formatter : readOnly
riskLevel :
width : 100
formatter : readOnly
documentLocation :
width : 200
formatter : readOnly
linkedItems :
width : 80
formatter : readOnly
sources :
- id : requirements
title : System Requirements
model : rtm
query :
from : SystemRequirement
where : "<WHERE>"
expand :
- name : designRequirements
title : Design Requirements
expand :
- name : designRequirement
Apply the readOnly formatter to computed property columns to visually indicate they are not editable. This matches the server-enforced read-only behavior.
Error Handling
Error Display Debug Template parse error #SERVER_RENDER_ERROR in cellCheck server logs for ParseErrorException Method invocation error #SERVER_RENDER_ERROR in cellCheck server logs for MethodInvocationException Resource not found #SERVER_RENDER_ERROR in cellCheck server logs for ResourceNotFoundException
Related Pages
Source context: Property, ServerRenderer, MetadataTest, DataPropertyFactory, RowItemFactory, ViewModel
Source Code
Property.java
MetadataTest.java
prod-powersheet-src/com.nextedy.powersheet.client/ltc-repo/__tests__/test-viewModel.ts
ServerRenderer.java
DataPropertyFactory.java