Skip to content

Fortified IDDocs

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.

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.

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}}))"
}

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.

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}

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

Some Controls and configuration contexts provide additional values. These are documented on the pages where they apply.

Common examples include:

  • search_query in search-based Controls, such as directory selectors
  • exports in Controls that expose selected or calculated values to nested configuration

Example:

{
"filter": "(&(|(givenName={{search_query}})(sn={{search_query}}))(!(sAMAccountName={{flow.selectedUser}})))"
}
  • Expressions are expanded where the property supports expansion. Not every property in every component is necessarily expandable.
  • Use flow for data produced during the Flow.
  • Use session for authenticated user and request context.
  • Use globals for shared configuration values.
  • Use utils when the current date or time should be evaluated at runtime.