> For the complete documentation index, see [llms.txt](https://docs.api.intratool.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.api.intratool.de/introduction/system-variables.md).

# System Variables

System Variables expose dynamic data while intratool evaluates supported fields and automation configurations. The available entry points depend on the current evaluation context.

Values can be rendered as text, compared in conditions, or passed to features such as dynamic Targetables. The affected resource or action documentation determines whether a field supports System Variables.

## Always Available Variables

* `system.date`
* `system.temporaryUser`
* `system.user`

## Evaluation Contexts

Additional variables become available for specific evaluation contexts.

| Context Type                                                             | Available When                                                      | Available System Variables                                                                                                                                |
| ------------------------------------------------------------------------ | ------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`AttributeSet`](/api-reference/additional-attributes/attribute-sets.md) | a default value for an attribute is chosen                          | `attributeSet`                                                                                                                                            |
| `EntitySelect`                                                           | an entity selection from a field of type entity\_select is resolved | `selectableEntity` ([User](/api-reference/users.md) or [Department](/api-reference/departments.md), depending on entity type)                             |
| [`Form`](/api-reference/forms/forms.md)                                  | a default value for a field is chosen                               | `form`                                                                                                                                                    |
| [`FormMessage`](/api-reference/forms/form-messages.md)                   | a form is being submitted                                           | `formMessage`, `form`, `field.{formFieldKey}` + `field.{formFieldKey}.value`, `field.{formFieldKey}.request_value`, `field.{formFieldKey}.resolved_value` |
| [`MenuItem`](/api-reference/menu/menu-items.md)                          | a menu item is being rendered                                       | `menuItem`                                                                                                                                                |
| [`TaskAssignment`](/api-reference/tasks-2/task-assignments.md)           | a task assignment context is evaluated                              | `taskAssignment`                                                                                                                                          |
| [`TaskExecution`](/api-reference/tasks-2/task-executions.md)             | a task has been finished                                            | `taskExecution`, `field.{formFieldKey}` + `field.{formFieldKey}.value`, `field.{formFieldKey}.request_value`, `field.{formFieldKey}.resolved_value`       |

## Properties and Relations

System Variables are entry points to public properties and relations. For example, `system.user.id` accesses the current User ID, while `system.user.role.name` traverses the User's [Role](/api-reference/roles.md) relation and returns its name.

The affected resource's Model Definition documents the available properties and relations. Query [Result Control](/introduction/query-manipulation/result-control.md) uses the same public relation names.

Form and task contexts additionally expose field values through `field.{formFieldKey}` and its value properties.

## Syntax

### Rendered Templates

Wrap a System Variable in double braces when the field renders text:

```
{{ systemVariableKey }}
```

Use dot notation to access properties and relations:

```
{{ systemVariableKey.property }}
```

```
{{ systemVariableKey.relation.property }}
```

Rendered-template fields accept ordinary text around System Variable expressions. Every expression must use valid template syntax. Arithmetic operators such as `+`, `-`, `*`, `/`, `%`, and `**` are not supported, and an additional-attribute set key inside an expression must use the documented attribute-set key format. Slashes remain valid in ordinary text and quoted formatter arguments.

### Key-only Values

When a field evaluates only the variable key, omit the braces. `systemVariable` conditions and computed Targetables use this key-only form.

A key is a dot-separated path. Its first segment starts with a letter or underscore, and every segment contains only letters, digits, or underscores. Later segments may be numeric. Template braces, formatters, empty segments, and slashes are not valid in key-only values.

## Examples

| Key                                                                                                     | Description                                                                                                                                                 |
| ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `system.date`                                                                                           | Current date/time context object. Example access: `{{ system.date }}` or nested properties depending on formatter/context.                                  |
| `system.user`                                                                                           | Current authenticated user. Example: `{{ system.user.id }}`, `{{ system.user.role.name }}`.                                                                 |
| `system.temporaryUser`                                                                                  | Temporary authenticated user (if available in current context). Example: `{{ system.temporaryUser.id }}`.                                                   |
| `form`                                                                                                  | Current form context object (where available). Example: `{{ form.name }}`.                                                                                  |
| `formMessage`                                                                                           | Submitted form message object in `FormMessage` context. Example: `{{ formMessage.id }}`.                                                                    |
| `taskAssignment`                                                                                        | Task assignment object in `TaskAssignment` context. Example: `{{ taskAssignment.title }}`.                                                                  |
| `taskExecution`                                                                                         | Task execution object in `TaskExecution` context. Example: `{{ taskExecution.id }}`.                                                                        |
| `attributeSet`                                                                                          | Attribute set object in `AttributeSet` context. Example: `{{ attributeSet.title }}`.                                                                        |
| `menuItem`                                                                                              | Menu item object in `MenuItem` context. Example: `{{ menuItem.id }}`.                                                                                       |
| `selectableEntity`                                                                                      | Selected entity in `EntitySelect` context (user or department). Example: `{{ selectableEntity.id }}` or `{{ selectableEntity.name }}`.                      |
| `field.{formFieldKey}`                                                                                  | Full field context object in `FormMessage` and `TaskExecution` contexts. Use this when you need structured access to the field.                             |
| `field.{formFieldKey}.value`                                                                            | Raw stored field value (usually normalized to the persisted representation). Useful for direct comparisons.                                                 |
| `field.{formFieldKey}.request_value`                                                                    | Original value from the incoming request before full resolving/formatting. Useful for debugging or strict input-based logic.                                |
| `field.{formFieldKey}.resolved_value`                                                                   | Final resolved/rendered value after processing, for example formatting or entity resolution. Useful for output-ready text and notifications.                |
| `system.user.role.additional_attributes.{attributeSetKey}.{attributeFieldId}`                           | Access an additional attribute that is linked to the current user's role. Without sub-key, this resolves to the field `value` (same behavior as `field.*`). |
| `system.user.role.additional_attributes.{attributeSetKey}.{attributeFieldId}.value`                     | Stored value of a role-bound additional attribute field (normalized output value).                                                                          |
| `system.user.role.additional_attributes.{attributeSetKey}.{attributeFieldId}.request_value`             | Original request value of a role-bound additional attribute field.                                                                                          |
| `system.user.role.additional_attributes.{attributeSetKey}.{attributeFieldId}.resolved_value`            | Resolved/rendered value of a role-bound additional attribute field.                                                                                         |
| `system.user.role.department.additional_attributes.{attributeSetKey}.{attributeFieldId}`                | Access an additional attribute that is linked to the current user's department. Without sub-key, this resolves to the field `value`.                        |
| `system.user.role.department.additional_attributes.{attributeSetKey}.{attributeFieldId}.value`          | Stored value of a department-bound additional attribute field (normalized output value).                                                                    |
| `system.user.role.department.additional_attributes.{attributeSetKey}.{attributeFieldId}.request_value`  | Original request value of a department-bound additional attribute field.                                                                                    |
| `system.user.role.department.additional_attributes.{attributeSetKey}.{attributeFieldId}.resolved_value` | Resolved/rendered value of a department-bound additional attribute field.                                                                                   |

## Field Value Resolution

Field context objects expose the stored, requested, and resolved representations of a submitted value.

### Text Field

For a text field with ID `123` and the submitted value `Max`, the properties resolve as follows:

* `field.123` → `Max`
* `field.123.value` → `Max`
* `field.123.request_value` → `Max`
* `field.123.resolved_value` → `null`

`field.123` and `field.123.value` both return the stored field value.

### Entity-Select Field

For an entity-select field with ID `456` and a selected user with ID `789`, the properties resolve as follows:

* `field.456` → `Max Mustermann (Operations, ID: 789)`
* `field.456.value` → `Max Mustermann (Operations, ID: 789)`
* `field.456.request_value` → `789`
* `field.456.resolved_value` → `User` object

The resolved object exposes its documented public properties, for example `field.456.resolved_value.phone`.

### Using Resolved Values

An object in `resolved_value` cannot be rendered directly as text. Use `value`, `request_value`, or a public property of the resolved object for text output. Use `resolved_value` when another mechanism requires the entity itself, such as a [dynamic assignment](/introduction/assignment-and-targeting.md).

Depending on the field type these object types can be expected as resolved values:

* An `entity-select` field for users resolves to a `User` object.
* An `entity-select` field for departments resolves to a `Department` object.
* A `file-upload` field resolves to a [FileManagerFile](/api-reference/filemanager/filemanager-files.md) object.
* All other field types return `null` as `resolved_value`.

## Formatters

When a System Variable is rendered, its value can be passed through a [formatter](/introduction/system-variables/formatters.md).

## Unavailable Values

If a variable or property is unavailable in the current context, rendering replaces it with an empty string.
