Introduction
When building Power Automate flows, you may need to process multiple records, documents, invoices, or requests. If every item is processed one by one, the flow can take a long time to complete.
Concurrency Control helps improve performance by allowing multiple flow runs or loop iterations to execute at the same time.
In this article, we will understand what concurrency is, where to enable it, and when it should or should not be used.
What Is Concurrency in Power Automate?
Concurrency means executing multiple operations simultaneously.
For example, imagine your flow needs to process 100 SharePoint items.
Without concurrency:
Item 1 → Process
Item 2 → Process
Item 3 → Process
Item 4 → Process
...The flow processes each item one after another.
With concurrency enabled:
Item 1 ─┐
Item 2 ─┤
Item 3 ─┼── Process at the same time
Item 4 ─┤
Item 5 ─┘This can reduce the overall execution time when the items are independent of each other.
Where Can You Use Concurrency?
In Power Automate, concurrency is commonly used in two places:
Trigger Concurrency
Apply to each Concurrency
Each one serves a different purpose.
1. Trigger Concurrency
Trigger concurrency controls how many instances of the same flow can run at the same time.
For example, consider a flow triggered when a SharePoint item is created.
When an item is created
↓
Get Item Details
↓
Process Request
↓
Send Notification
If multiple SharePoint items are created around the same time, multiple flow runs may need to be processed.
To configure concurrency:
Open the flow.
Select the trigger.
Click Settings.
Enable Concurrency Control.
Set the required degree of parallelism.

For example:
Concurrency Control: On
Degree of Parallelism: 5This allows up to 5 flow runs to execute simultaneously.
If you set the value to:
1only one flow run will be processed at a time.
This is useful when the order of processing is important.
2. Concurrency in Apply to Each
The most common use of concurrency is inside an Apply to each loop.
For example:
Get SharePoint Items
↓
Apply to each
↓
Process Each Invoice
Suppose the flow receives 50 invoices.
Without parallel processing, the flow may process the invoices sequentially:
Invoice 1
↓
Invoice 2
↓
Invoice 3
↓
Invoice 4
If each invoice takes several seconds to process, the total flow duration can become significant.
You can enable concurrency on the Apply to each action.
Steps
Select the Apply to each action.
Click the Settings option.
Turn on Concurrency Control.
Enter the desired Degree of Parallelism.

For example:
Concurrency Control: On
Degree of Parallelism: 10Now, up to 10 loop iterations can run at the same time.
Invoice 1 ─┐
Invoice 2 ─┤
Invoice 3 ─┤
Invoice 4 ─┼── Processing simultaneously
Invoice 5 ─┤
Invoice 6 ─┤
... │
Invoice 10 ─┘
After one iteration finishes, the next waiting item can start processing.
Example: Processing SharePoint Items
Let's say you have a SharePoint list containing pending invoices.
Your flow looks like this:
Recurrence
↓
Get Pending Invoices
↓
Apply to each
↓
Get Invoice Details
↓
Process Invoice
↓
Update Invoice Status
Assume you have:
100 invoices
Each invoice takes approximately 5 seconds to process
If processed sequentially:
100 × 5 seconds = 500 secondsThat is approximately:
8 minutesIf you enable concurrency with a value of 10, multiple invoices can be processed at the same time.
The actual performance improvement depends on the connector, API limits, processing time, and other actions in the flow, but concurrency can significantly reduce the total execution time.
When Should You Use Concurrency?
Concurrency works best when every item can be processed independently.
For example:
Vendor A → Process Quotation
Vendor B → Process Quotation
Vendor C → Process Quotation
Vendor D → Process Quotation
Each vendor quotation is independent.
In this situation, concurrency can be useful.
Good use cases
Processing multiple SharePoint items
Processing independent invoices
Processing vendor quotations
Reading multiple documents
AI document extraction
Sending notifications
Processing independent approval requests
Updating different records
For your RFP evaluation solution, concurrency can be useful when processing multiple vendor quotation documents.
For example:
Get Vendor Quotations
↓
Apply to each
↓
Extract Document Content
↓
Send Content for AI Processing
↓
Save Extracted Data
If each vendor document is independent, you can process multiple vendors simultaneously.
A reasonable starting point could be:
Concurrency: 3 to 5

Join the conversation! Your thoughts help the community grow.