“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 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
The first 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.
While it looks like a simple approach, it’s not optimal. Firstly, 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
A better 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 such task. 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.
While this is a much better approach than a lot of parallel tasks, it’s still not ideal. The problem is that you don’t see what’s happening in a loop until it’s finished. And if the loop contains approval tasks, it can take days before it finishes…
Create the task in a child flow
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 child 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.
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 biggest problems 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’s the most optimal solution I found (so far). You can easily add/remove/modify steps, you have only a few actions to manage, and you can restart any approval step when needed. That’s all you can ask for from an approval process.