Introduction

Power Automate flows often use Apply to each to process multiple records, files, or items. By default, these items are processed one at a time, which can make your flow slow when working with large datasets.

With Concurrency Control, you can allow multiple iterations of an Apply to each loop to run simultaneously, significantly improving flow performance.

What Is Concurrency in Apply to Each?

By default, Power Automate processes items in an Apply to each loop sequentially:

Item 1 → Item 2 → Item 3 → Item 4 → Item 5

This means the next item starts processing only after the previous item is completed.

When concurrency is enabled, multiple items can be processed in parallel:

Item 1
Item 2 → Run at the same time
Item 3
Item 4
Item 5

This can reduce the overall execution time of your flow.

Benefits of Using Concurrency

1. Faster Flow Execution

Multiple iterations run simultaneously instead of waiting for each other, which can significantly reduce the total processing time.

2. Better Performance

Concurrency helps your flow process large numbers of records more efficiently.

3. Ideal for Independent Operations

It works especially well when each iteration performs an independent operation and does not depend on the result of another iteration.

4. Useful for External APIs

If your flow calls external APIs or performs independent data operations, concurrency can help improve processing speed.

How to Enable Concurrency Control

Follow these steps:

  1. Open your Power Automate flow.

  2. Find the Apply to each action.

  3. Click the three dots (...).

  4. Select Settings.

  5. Turn on Concurrency Control.

  6. Set the Degree of Parallelism.

  7. Save your flow.

The degree of parallelism determines how many iterations can run at the same time.

Tip: Start with a low value, test your flow, and gradually increase it based on performance and connector limitations.

When Should You Use Concurrency?

Concurrency is a good choice when:

  • Each iteration is independent.

  • You are processing a large dataset.

  • You are calling external APIs.

  • You want to reduce flow execution time.

  • The order of processing is not important.

  • Each iteration works with a different record or resource.

For example, if you need to send notifications to 100 users and each notification is independent, concurrency can process multiple users at the same time instead of sending each notification sequentially.

Important Limitations

Although concurrency can improve performance, it should be used carefully.

API Throttling

Running too many operations simultaneously can exceed API or service limits and cause throttling.

Connector Limitations

Different Power Automate connectors have different limits for concurrent requests.

Data Conflicts

If multiple iterations update the same record or resource, parallel processing can cause conflicts or unexpected results.

Premium Connector Usage

Depending on your flow design, increasing parallel operations may increase the number of connector calls and potentially affect consumption or capacity.

When NOT to Use Concurrency

Avoid concurrency when:

  • One iteration depends on the result of a previous iteration.

  • Processing order is important.

  • Multiple iterations update the same record.

  • You need strict sequential processing.

  • The connected API has strict rate limits.

  • Parallel updates could cause data conflicts.

For example:

Item 1 → Update Record → Item 2 → Update Same Record

In this situation, running iterations in parallel could cause conflicts. Sequential processing is safer.

concurrency Apply to each

Example: Using Concurrency in Power Automate

Imagine you have a SharePoint list containing 100 customer records, and your Power Automate flow needs to send an email to each customer.

Without Concurrency

By default, the Apply to each loop processes one customer at a time:

Customer 1 → Customer 2 → Customer 3 → ... → Customer 100

If each email takes 2 seconds to process:

100 × 2 seconds = approximately 200 seconds

With Concurrency

If you enable Concurrency Control and set the Degree of Parallelism to 10, Power Automate can process up to 10 customers simultaneously:

Batch 1: Customer 1–10
Batch 2: Customer 11–20
Batch 3: Customer 21–30
...
Batch 10: Customer 91–100

This can significantly reduce the total execution time.

Example Flow

Trigger

Get items – SharePoint

Apply to each – Customer List

Send an email to customer

Apply to each → Settings → Concurrency Control → On → Degree of Parallelism: 10

Real-World Scenario

For example, if you have a daily flow that sends 500 approval reminder emails, processing them sequentially can take a long time. By enabling concurrency, multiple reminder emails can be processed simultaneously, making the flow much faster.

Important: Make sure the operations inside the loop are independent. If each iteration updates the same SharePoint item, concurrency may cause conflicts.

Conclusion

Concurrency Control in Power Automate's Apply to each is a powerful way to improve flow performance. By allowing independent iterations to run in parallel, you can significantly reduce execution time, especially when processing large datasets.

However, faster is not always better. Too much parallelism can lead to API throttling, connector limits, or data conflicts. The best approach is to start small, test your flow, and find the right balance between speed, reliability, and system capacity.

In short: Use concurrency when your operations are independent and performance matters—but always configure it thoughtfully.