Apply to each runs sequentially by default. Concurrency lets multiple iterations run at the same time, but the right setting depends on the work inside the loop and the systems it calls. There isn’t a degree of parallelism that makes every flow faster.
Measure before increasing concurrency
The concurrency setting lets you choose a degree of parallelism from 1 to 50. Start with a sequential run as a baseline, then test a small value such as 2 or 5 with representative data. Those values are starting points for a test, not universal recommendations.
Compare the total run time and the failed or retried actions. Increase concurrency only while the downstream connector and service continue to handle the requests reliably. Check their limits and monitor throttling instead of treating the slider as a requests-per-second setting.
Check order and shared state
Concurrent iterations can finish in a different order from the input items. If the flow depends on a specific order, or if each iteration reads and updates a shared variable, keep the loop sequential. Microsoft’s variable guidance warns that parallel iterations can make variable results unpredictable.
Concurrency control for Apply to each applies only to the highest-level loop in a cloud flow. Nested Apply to each loops run sequentially.
Use it when the iterations are independent
Parallel execution is worth testing when each item can be processed independently. If the flow aggregates results, collect per-item outputs and aggregate after the loop instead of relying on a shared variable being updated in order.
Sources
- Limits of automated, scheduled, and instant flows, Microsoft Learn
- Optimize flows with parallel execution and concurrency, Microsoft Learn
- Store and manage values in variables, Microsoft Learn
💬 Comments & Suggestions
Share your thoughts, tips, or drop a useful link below.