2 Concurrency options to better control speed in the Power Platform

Concurrency in the Power Platform

The Power Platform has a number of places where you can set or control concurrency. In this post I will have a look at the concurrency options available in the Power Platform and compare the different options in Power Apps and Power Automate. A while back I already wrote about the sense and nonsense of the concurrent function in Power Apps, in this post I will have a look at running multiple flows in a concurrent way or in a sequential order.

My Flow in Power Automate

I’ve create a simple flow that will be called from my Power App. The flow will generate the current time and then return this time.

You might find that most of your flows called from Power Apps will do more complicated jobs, however I this post I want to focus on the calling of the flows rather than the running of the flows.

I’ve called my flow Concurrent Flow. This name will be used within the Power App  described below.

My Power App

My app has two buttons. The first button (Run All) will call my flow 13 times. For each run a variable will be set to the result of my flow. These result variables will be displayed in labels in my app.

Concurrent function

My second button does exactly the same, however the Run All Concurrent button will use the concurrent function in Power Apps to call my flows. Once again the same Result 1 up to Result 13 variables are set to the result of the flows.

Run results

When I click on my first Power App button I will find the following results in my app.

The 13 flows all take about 10 seconds in total to run.

Then when I click on my second button and the flows run in concurrency mode all my results are returned within 2 seconds.

Ok, that is a lot faster!  Note that the results however aren’t coming through in the same order as the flows were started. Or at least we have lost control over the order that the flows are run. This of course is what you would expect when you use the concurrent function. This does mean however that if your flows do any updates for which you do care about the order of things happening that you might not want to use the concurrent function.

Concurrency in Power Automate

But that is not all yet!

In flow you can also control concurrency, but before I go into that I want to have a look at one of my older posts. In my Trigger limits in Power Automate post I’ve looked at the limits that you may hit. When you hit these limits you might even run into the Error 429 error and your flows may start to fail.

For the Power Apps connector in your flows there isn’t a published limitation, however for most other connectors you will find the limits in each of the connector documentation pages.

As we now might run multiple flows and imagine if we ran multiple instances of the app at the same time. The problems of a connector overload could become more likely. We can of course look at setting the retries of the flows however it might be easier if we could control the number of flows run at the same time.

The above Concurrency Control option is available on a lot of the triggers in Power Automate. Be careful however, the warning is very clear!

Concurrency control changes the way new runs are queued. It cannot be undone once enabled.

I’m going to set my concurrency to 3 hit save and then …

 

The concurrency configuration of workflow trigger ‘manual’ of type ‘Request’ at line ‘1’ and column ‘526’ is not valid. The concurrency control is not supported when the workflow contains actions of type ‘response’ without the operationOptions flag set to ‘asynchronous’.

Ok, that was unexpected!

Asynchronous Response

Time to find that Asynchronous Response option in my Respond to a Power App or Flow

Once I switched the Asynchronous Response option on the problem goes away.

This all looks exciting.

When I look at my flow runs I’ve got 13 flows running successfully in 4 seconds.

That looks promising however when I look at my app. My result variables don’t seem to get set any more.

Set(
  Result1,
  ConcurrentFlow.Run().information
);

For the coders, it looks like the await code doesn’t exist in flow. For the Low-Code people, the Await will wait for a result form an async call made.

Ok, I’ve made a fundamental change in my flow, therefore it might be worth it if I reconnect my flow to my Power App.

After I reconnected my flow however still now positive result.

I created a new button and make this button set a variable myVar.

Set(myVar, ConcurrentFlow.Run())

the structure of the data is recognised

However the no information is returned even though when I check my flow run the information is returned.

For now I would be very careful using the Concurrency Control setting. If your flows need to return any data back to Power Apps then you might not want to use this setting. For flows that don’t use Power Apps or flows that don’t respond to Power Apps this could quite well be a life saving setting.

Share
Pieter Veenstra

Business Applications and Office Apps & Services Microsoft MVP working as a Microsoft Productivity Principal Consultant at HybrIT Services. You can contact me using contact@veenstra.me.uk.

View Comments

  • Interesting research. Thanks for posting. I actually had no idea PowerApps had a concurrency feature. I recently wrote some Power Automate flows where I make use of concurrency and indeed had to spend time "fine tuning" the right number for concurrency to avoid getting over the limit of number of connections in 5 minutes. This in combination of the dreaded 5000 limit in sharepoint list views I've been having hell of a time learning Power Automate recently.

Recent Posts

Calculate the Sum for a SharePoint column in Power Automate

Last week Shane Young asked me about calculating the Sum for a SharePoint column in…

2 days ago

Object must implement IConvertible in Power Apps

In Power Apps when you do a Patch to create a new item or to…

6 days ago

Get started with adaptive cards in Power Automate

Getting started with adaptive cards can be difficult. In this post i have written some…

2 weeks ago

Create PDF documents from data in Power Automate

In this post I will look at how to create PDF documents from data. Use…

2 weeks ago

Unnest nested arrays in Power Automate

We all know this problem, you have a nested array in Power Automate but how…

3 weeks ago

Advanced settings not loading in Power Platform

Yesterday one of my clients showed me an issues where the Advanced settings didn't load.…

4 weeks ago
%%footer%%