For Each flow logic
Summarize
Summary of For Each flow logic
The For Each flow logic in Flow Designer enables users to apply one or more actions to each record in a specified list. This is particularly useful for processing multiple records sequentially, ensuring that actions are executed on each record in the list. However, it is important to note that data pill values set within a For Each branch are only accessible within that branch.
Show less
Key Features
- Inputs: Accepts a list of records or Sys ID values to process in sequence, which can be generated using a Look Up Records action. Items must be sorted in advance if a specific order is required.
- Outputs: Provides the current record in the loop, allowing for actions to be executed for each record.
- Performance Considerations: Iterating over large numbers of records can affect performance. It is recommended to avoid lists exceeding 1000 items and to disable reporting for better flow performance.
- Execution Details: By default, only the first and last iterations are recorded. To capture all iterations, individual flow execution settings must be created.
Key Outcomes
An example use case is sending emails for each configuration item affected by a change request. This flow utilizes Look Up Records to identify relevant Configuration Items and employs For Each logic to notify stakeholders about potential impacts. Following the provided guidelines will help optimize flow performance and prevent execution issues.
General Guidelines
- Avoid lists with more than 1000 records to maintain optimal performance.
- Do not add stages within a For Each block; stages should only be added before or after.
- Avoid nested For Each loops to prevent exceeding transaction quotas, which limit flow execution time.
Apply one or more actions to each record in a list of records.
Iterating over a large number of records can be resource intensive, especially when the For Each logic block includes complex actions for each iteration. To avoid performance issues, turn off reporting using the com.snc.process_flow.reporting.level system property. For more information, see Flow Designer system properties.
Inputs
- Items
- Data type: Records
List of Sys ID values or Records data pill specifying the records to process in sequence. You can use a Look Up Records action to generate a list of records. For more information, see Look Up Records action.Note:If you want to process items in a particular order, you must first sort the items in this input in advance. For example, use the Order by option to sort the results of a Look Up Records action.
Outputs
- [Table name] Record
- Data type: RecordCurrent record in the loop.Note:By default, all flow loops only store execution details for the first and last iterations of a loop. To report on all iterations of a loop, create a flow execution setting record for each flow that you want to collect loop execution details. For more information about flow execution settings, see Flow execution settings.
Send an email for each configuration item potentially affected by a change
This example flow starts when a change request record is created. The flow uses a Look Up Records action to find Configuration Item records assigned to the requester of the change request. The flow uses For Each flow logic to send an email about each configuration that might be affected by the change request. The output of the Look Up Records action contains the list of records to process.
The flow execution details show the configuration item record used for each iteration of the loop.
General guidelines
Use these general guidelines with a For Each flow logic.
- Avoid adding more than 1000 items
- Avoid iterating over lists with more than 1000 records. Keep your list of records smaller to optimize flow performance. To iterate over lists with more than 1000 records, divide the list into smaller sections and use multiple flows.
- Avoid defining stages that depend on a For Each flow logic
- Flow Designer prevents you from adding stages within a For Each block. You can only add stages before or after a For Each block.
- Avoid nested For Each loops
- Avoid nested For Each loops that process many records. Nested loops may cause the flow to run until it is stopped by the flow transaction quota rule, which prevents flows from running longer than an hour. For more information about transaction quotas, see Transaction quotas.