“I’ve got an approval process with 10+ parallel approval tasks, what’s the best way to implement it in Power Automate?”
Most approval processes, including the Approval Process template, assign the tasks in a sequence. The first user/group of users complete their task, followed by the second user, third, and so on. Yet sometimes you encounter a process that’s more time sensitive. A process where waiting for each response before starting the next one might take too long. A situation asking for a bunch of parallel tasks.
This article will show you 3 ways how to implement such parallel tasks in your flows.
A lot of parallel branches
One approach is to add a lot of parallel branches – one for every approval task. You add all the actions and configure them, one by one.
It is a very simple approach, probably the first one you’ll think of. And it’ll do the job while being easy to read and follow. Each branch can have different task settings, different conditions, different actions, different processing. That’s the way to go if the branches are not unified, if they differ. Just tell the flow in which steps it should create these tasks and go wild.
But it’s not ideal when all the branches look the same. You’ll repeat a lots of actions – each branch will contain not only the task, but its processing too. The initial configuration will take long as you’ll have to configure all the actions, the same if you decide to update them later. Not to mention that adding a new step will require another copy of the parallel branch.
Parallel task in a loop
Another approach, related to the use of configuration lists, is using a parallel loop for the tasks. Instead of multiple branches you add an ‘Apply to each’, set concurrency control, and create the tasks inside. Here the configuration list is a necessity as you can’t hardcode anything in those tasks. All the configuration must be in the list – the approvers, their possible responses, task title… everything. Quite similar to the configuration list used in the approval process template.
This solution might require a bit more thinking to combine the configuration list and the flow, but the benefits are obvious. There’s just one set of actions to configure and to manage. Nothing is hard coded, meaning most of the changes can be done only in the configuration list – you can add/remove/modify steps without touching the flow.
It’s a good approach when the task processing follows the same, or at least very similar rules.
The downside is that it’s hard to follow. Such flow might be harder to understand, needing more detailed explanation, being complicated to maintain by inexperienced users. And when using the flow you don’t see what’s happening in that loop until it’s finished. And if the loop contains approval tasks, it can take days before it finishes…
Child flows
The third approach, and the one I’m using right now are child flows. It’s very similar to the previous one, but instead of having the tasks in a loop they’re in a separate flow. Here we’re getting back to the Solutions as child flows must be in a solution.
Take out the whole approval part and put it in a separate, manually started flow with all the dynamic parts as input parameters. Everything that’s related to the task should be in this flow, let it be the task itself or its evaluation and following steps.
Once everything is done respond back to the main flow.
In the main flow, replace the approval part in the original flow by the ‘Run a Child Flow’ action that’ll create the task.
This approach addresses two of the issues of the loop approval. Firstly, you can keep track of each approval step – it’s a separate flow that’ll finish together with the task. Secondly, you can restart a specific approval step. If anything happens you can resubmit only the child flow, recreating only the single task.
Summary
In this article I showed you three approaches to deal with many parallel tasks in a Power Automate approval flow. It’s an evolutionary story of the approaches I used in the past until I got to the last one, the one I’m using right now in my flows. It’s more complicated as it has more moving parts than a single, hard coded flow, but in the long term it seems to be the most user friendly solution. You can easily add/remove/modify steps, you have only a few actions to manage, and you can restart any approval step when needed. These are all good features for an approval process.