Common features
Common Forms features such as expression expansion, scopes, and reusable runtime values.
Several features are available across Forms configuration, regardless of whether you are configuring a Flow, Step, or Control. This page describes the expression syntax and runtime values that are commonly used to make Forms dynamic.
Expression expansion
Section titled “Expression expansion”Most string properties in Forms support expression expansion. Expressions let configuration values reference data from the current Flow, the authenticated session, global configuration, or utility functions.
Two syntaxes are available and can be mixed in the same configuration.
| Syntax | Example | Use |
|---|---|---|
| Dollar | ${flow.mail} |
Standard expression expansion. Use this in most cases |
| Mustache | {{flow.mail}} |
Full Mustache template engine. Use only when Mustache-specific features are needed, such as iterations or conditionals |
Both syntaxes produce a string result. Dollar syntax is the recommended default.
Choosing syntax
Section titled “Choosing syntax”Use dollar syntax for straightforward value resolution — standalone or embedded in a string.
{ "id": "accountExpiration", "type": "DatePicker", "data": "${flow.account_expiration}"}{ "id": "userInfo", "type": "Markdown", "data": "Selected user: ${flow.displayName} (${flow.mail})"}Use Mustache syntax only when you need Mustache template features such as iterations, conditionals, or helper functions. A common example is LDAP filter expressions that rely on Mustache evaluation.
{ "filter": "(&(objectClass=user)(mail={{flow.mail}}))"}Available scopes
Section titled “Available scopes”Data accumulated during the Flow. Values can come from input data, previous Controls, the pre-step Pipe, or Step Pipe responses.
| Expression | Description |
|---|---|
${flow.<key>} |
Resolve a value from the accumulated Flow State |
Examples:
${flow.givenName}${flow.sn}${flow.displayName}${flow.manager}
For details about how Flow data is accumulated between Steps, see Flow data and Step Pipes.
session
Section titled “session”Data from the current session. This is typically populated from authentication and other session-level context.
| Expression | Description |
|---|---|
${session.id} |
Session identifier |
${session.trace_id} |
Trace identifier |
${session.<key>} |
Any value stored in the session |
Examples:
${session.id}${session.trace_id}${session.subject}${session.username}
globals
Section titled “globals”Global values from Forms configuration. Use this for shared configuration values that should not be repeated inside every Flow, Step, or Control.
Examples:
${globals.ldap1_name}${globals.ldap1_flows_search_user_dn}
Utility values evaluated at expansion time. Each reference is resolved when the expression is expanded, so the value always reflects the current moment.
| Expression | Description | Example |
|---|---|---|
${utils.now} |
Current timestamp, UTC, ISO-8601 | 2026-05-05T13:22:07.123456789Z |
${utils.date} |
Current date, local server time | 2026-05-05 |
${utils.date_utc} |
Current date, UTC | 2026-05-05 |
${utils.time_hms} |
Current time HH:mm:ss, local server time |
15:22:07 |
${utils.time_hms_utc} |
Current time HH:mm:ss, UTC |
13:22:07 |
${utils.time_hm} |
Current time HH:mm, local server time |
15:22 |
${utils.time_hm_utc} |
Current time HH:mm, UTC |
13:22 |
Context-specific values
Section titled “Context-specific values”Some Controls and configuration contexts provide additional values. These are documented on the pages where they apply.
Common examples include:
search_queryin search-based Controls, such as directory selectorsexportsin Controls that expose selected or calculated values to nested configuration
Example:
{ "filter": "(&(|(givenName={{search_query}})(sn={{search_query}}))(!(sAMAccountName={{flow.selectedUser}})))"}Practical notes
Section titled “Practical notes”- Expressions are expanded where the property supports expansion. Not every property in every component is necessarily expandable.
- Use
flowfor data produced during the Flow. - Use
sessionfor authenticated user and request context. - Use
globalsfor shared configuration values. - Use
utilswhen the current date or time should be evaluated at runtime.