Skip to main content

The Central Configuration File

Every RISKSHEET document is governed by a single file: risksheet.json. This file is stored as an attachment on the Polarion LiveDoc document itself, making each document self-contained and portable. When you open a RISKSHEET document, the server reads this attachment, validates it, applies defaults, and delivers the resolved configuration to the browser. Think of risksheet.json as a blueprint for a spreadsheet. It doesn’t contain data — it defines the structure that data fills: which columns exist, how they behave, what formulas compute, and how cells are styled. diagram

What Configuration Controls

The risksheet.json file organizes configuration into distinct functional domains:
DomainKey PropertiesPurpose
Grid structurecolumns, levels, headersWhich columns appear, hierarchical grouping, layout dimensions
Data behaviordataTypes, sortByRisk and task work item types, link roles, default sort order
CalculationsformulasNamed JavaScript expressions for calculated columns
Visual presentationstyles, cellDecoratorsConditional formatting rules that change cell appearance based on values
Dropdown valuesenums, ratings, relationsEnumeration options for dropdowns, risk rating scales, dependent enum cascades
PerspectivesviewsSaved column visibility presets for switching between analysis views
Global settingsglobalCulture/locale, help URL, refresh behavior, menu organization
WorkflowreviewsReview manager integration for approval processes
The risksheet.json defines structure and behavior — it never contains actual risk data. Risk items are stored as standard Polarion work items. This separation means you can change how data is displayed without affecting the data itself.

How the Server Resolves Configuration

When you open a document, the server doesn’t simply pass risksheet.json to the browser unchanged. It performs several resolution steps that add intelligence to the configuration: Type inference from Polarion fields. If a column definition specifies a bindings reference to a Polarion field but omits the type, the server automatically detects the correct type from the field definition. An enum field becomes an enum column; a date field becomes a date column. This means most columns need only a bindings value and a header — the server infers the rest. Automatic read-only enforcement. Certain columns are forced read-only regardless of what the configuration says. Columns with a formula property, columns with serverRender scripts, and system fields like author, creation date, and resolution are all locked automatically. This prevents accidental edits to computed or system-managed values. Column ID generation. If a column definition omits the id property, the server generates one from the header or bindings value. While convenient for simple cases, explicitly setting id is recommended when columns are referenced by formulas or cell decorators. Default values. Properties like filterable (defaults to true), canCreate on link columns (defaults to true), and level showInMenu (defaults to true) are filled in when not explicitly set.
When viewing a non-current revision of a document, the entire grid is automatically set to read-only mode. This is enforced at the configuration parser level and cannot be overridden — it protects the integrity of baselined data.

Two Layers of Settings

RISKSHEET separates configuration into two distinct layers that serve different purposes: Document-level configuration (risksheet.json) controls everything about the grid: columns, formulas, styling, views, and data types. Each document carries its own copy, making it fully self-contained. Project-level properties control infrastructure that applies to all RISKSHEET documents within a project: template paths (where new documents can be created), the tool name displayed in the UI, suggester behavior for linking work items, and whether auto-suspect marking is active. These settings are configured through Polarion’s project administration, not through risksheet.json. This separation matters because changing a project-level property (like the tool name from “Risksheet” to “FMEA Tool”) affects every document in the project instantly, while changing risksheet.json in one document has no effect on any other document.

Template Inheritance

When a new RISKSHEET document is created, its risksheet.json is copied from a template document. This is a one-time copy — after creation, the document’s configuration is independent. Changes to the template do not propagate to existing documents. This design is intentional. In regulated industries, a document that passed review under one configuration must not silently change behavior because someone updated a template. Each document’s configuration is frozen at creation and only changes through deliberate edits.
To apply template changes to an existing document, use the configuration editor’s option to update from template. This is an explicit action that replaces the document’s configuration with a fresh copy from the template — see Override Template Configuration for the practical approach.

Common Misconceptions

“Editing the template updates all documents.” No. Template inheritance is copy-on-create. Each document is independent after creation. To standardize configuration across documents, you must update each one individually or use the update-from-template action. “I need to specify every property.” The server applies sensible defaults and infers types from Polarion field definitions. A minimal column definition needs only header and bindings. Start minimal and add properties only when you need to override default behavior. “Read-only means the column is broken.” Columns with formulas, server-rendered content, and system fields are automatically forced read-only. This is expected behavior, not a configuration error. Check whether the column has a formula or serverRender property before investigating further.

Next Steps

KB ArticlesSource Code
  • RisksheetViewServlet.java
  • RisksheetProjectProperties.java
  • AppConfig.ts
  • AppConfigParser.ts
  • PolarionAppConfigManager.java