Step
Configuration reference for Forms Steps, Controls, Step Pipes, and conditional execution.
A Step is one page in a Flow. It contains the Controls shown to the user and can run a Step Pipe when the user leaves the Step.
Step configuration
Section titled “Step configuration”A Step is represented by a JSON object. Steps can be defined in one file or split across multiple files. For larger Flows, the recommended pattern is to keep each Step in its own file and include the files from the Flow configuration.
| Name | Description | Default | Mandatory |
|---|---|---|---|
document_title |
Text shown in the browser tab | Forms - Fortified ID |
No |
order |
Sort order for the Step. Use this when Steps are loaded with @include |
N/A | No |
time_lock |
Minimum time before the Step can be submitted, using ISO-8601 duration format | 0 |
No |
favicon |
Favicon used for this Step | Internal Fortified ID icon | No |
verbose_logs |
Additional logging for selected runtime areas, such as flow or session |
[] |
No |
controls |
Controls rendered on the Step | N/A | Yes |
pipe |
Step Pipe executed when the user leaves the Step | N/A | No |
pipe_request_parameters |
Additional parameters from earlier Flow data included in the Step Pipe request | N/A | No |
buttons |
Button overrides for this Step | Flow button settings | No |
enabled |
Enable or disable the Step | true |
No |
include_expr |
Expression that decides whether the Step is included | "true" |
No |
retry_notification |
Retry notification override for this Step | Flow retry notification | No |
ui |
Step-level UI configuration, such as advanced grid layout | N/A | No |
{ "document_title": "forms.create_user.step_user_details.title", "order": 1, "controls": [ { "id": "intro", "type": "Markdown", "data": "# Create user\nEnter information about the user." }, { "id": "givenName", "type": "Input", "ui": { "ui:size": { "md": 6 } }, "config": { "required": true } }, { "id": "sn", "type": "Input", "ui": { "ui:size": { "md": 6 } }, "config": { "required": true } }, { "id": "mail", "type": "Input", "ui": { "ui:size": { "md": 6 } }, "config": { "required": true, "format": "email" } } ], "pipe": "forms.create_user.validate_details", "retry_notification": "@include:../retry-notification.json"}Step Pipe execution
Section titled “Step Pipe execution”When the user leaves a Step, Forms collects the relevant Control data and executes the configured Step Pipe. The request sent to the Pipe depends on the data accumulated so far in the Flow and on which values have changed.
Data sent to the Pipe can be accessed in Pipes with the request object, for example:
request.givenNamerequest.mailrequest.selectedGroup
If the Step Pipe returns data, the response must be a single, flat key/value object. Returned values are added to the accumulated Flow State and can be used by later Steps with expressions such as {{flow.displayName}} or ${flow.manager}.
For more information about accumulated Flow data, see Flow data and Step Pipes.
Conditional Steps
Section titled “Conditional Steps”Use enabled to disable a Step completely. When enabled is false, the Step UI is not shown and the Step Pipe is not executed.
Use include_expr when a Step should be included only in certain situations. The expression must evaluate to true or false, or to a boolean function that returns true or false.
{ "include_expr": "session.username != null"}Examples:
{ "include_expr": "false"}{ "include_expr": "str.isNotNullOrEmpty(flow.findMyActiveDirectoryExtendAccountExpires)"}Button overrides
Section titled “Button overrides”Buttons are normally configured at Flow level, but a Step can override them when that page needs different button behavior or text.
{ "buttons": { "next_button": { "enabled": true, "text": "forms.create_user.next" }, "save_button": { "enabled": true, "text": "forms.create_user.save" } }}In this section