# Utility Steps



Workflow utility steps are a series of actions that can be leveraged to transform, map, iterate, and otherwise control the worflow.

Utility steps appear above the list of available apps when creating a new action:

![](https://mindcloud.imgix.net/docs/document360/b9ededcf9775-image-205_1778245904383.octet-stream)

There are six utility steps, each of which has distinct uses and configuration:

- [Transform](/docs/gravity/workflows/workflow-utility-steps#transform)
- [Map](/docs/gravity/workflows/workflow-mappers)
- [Iterate](/docs/gravity/workflows/workflow-utility-steps#iterate)
- [Flow Control](/docs/gravity/workflows/workflow-utility-steps#flow-control)
- [If](/docs/gravity/workflows/workflow-utility-steps#if)
- [Wait](/docs/gravity/workflows/workflow-utility-steps#wait)

For details on accessing needed data from prior steps, reference [Workflow Step Fundamentals](/docs/gravity/workflows/workflow-step-fundamentals).

### Transform

![](https://mindcloud.imgix.net/docs/document360/aec971466818-image-108_1778245904389.octet-stream "image(108).png")

Transform allows you to adjust the data from a workflow step in predefined ways for use in later steps, including:

- Adding in pagination (localized to the dataset available within the app step)
- Adding in filters (to reduce the dataset based on conditions in the data)
- Adding in sorting (re-ranking the dataset based on conditions in the data)
- Slicing the data (selecting a specific slice of the data)

### Iterate

![](https://mindcloud.imgix.net/docs/document360/4bc98377da02-image-109_1778245904396.octet-stream "image(109).png")

Iterate allows you to loop through a dataset (typically an array) and create sub-actions that will run for each item in the array. Within an Iterate steps, you can control the following:

- **Loop Type:** You can either iterate through Data, Numbers, or a Condition
- **Loop Delay:** This sets the amount of time to wait between each run of the loop.
- **Loop Data:** This allows you to select either the whole dataset, or a subset of the dataset for the loop.

You can then add sub-steps within the Iteration, for example:

![](https://mindcloud.imgix.net/docs/document360/e66b356100b2-image-110_1778245904404.octet-stream "image(110).png")

Within the sub-step, you then have access to the data of each value within the Iteration.

### Flow Control

![](https://mindcloud.imgix.net/docs/document360/ffd1951b26fa-image-111_1778245918569.octet-stream "image(111).png")

Flow Control steps allow you to control what happens with the rest of the workflow, typically used as part of a conditional (If) step. Flow Control steps allow you to:

- Do Nothing, End the Workflow as a Success, or End the Workflow as a Failure
- Emit a log
- Send an email

### If

![](https://mindcloud.imgix.net/docs/document360/270ee2c83af3-image-112_1778245918572.octet-stream "image(112).png")

If actions function the same as an `if()` statement in code, allowing you to consider two values with an operator. Within the workflow editor, you can then create `Then` and `Else` actions, as seen here:

![](https://mindcloud.imgix.net/docs/document360/164349236360-image-113_1778245918575.octet-stream "image(113).png")

![](https://mindcloud.imgix.net/docs/document360/2fe8ee758426-image-114_1778245918577.octet-stream "image(114).png")

## Wait

This step lets you delay, regardless of any iteration or anything else that’s happening.

![](https://mindcloud.imgix.net/docs/document360/3892eb1314cc-image-204_1778245931800.octet-stream)