“I have a Power Automate flow with multiple parallel tasks where I’d like to add reminders, but only for the tasks that weren’t completed yet.”
Every time you build an approval flow in Power Automate, you should consider adding a reminder flow as well. While it’s easy to overlook a task if you get the notification only once, it’s much harder if you get it every day…
There’re already a few articles on building reminders – a basic reminder and an optimised one. But these reminders are meant for a single approval task. What about parallel approval tasks? Different tasks that must be completed by different groups of users at the same time? How do you prepare a flow to send reminder only to the relevant users?
Store the recipients in a column
As mentioned in the previous articles, I prefer building reminders using additional columns, mostly SharePoint columns. One column to store the current approvers, another column to store the task assignment date. If your flow creates only a single task at a time, it can be people picker and a date column.
For parallel tasks it must be a bit different though as you need more than the assigned people. You need also the information which of the users are assigned to which of the parallel tasks. A multiple lines of text column will be more helpful in this case.
Add such column and store the tasks information in the format below.
<Task1Name>:<Approvers1Emails>||<Task2Name>:<Approvers2Emails>||<Task3Name>:<Approvers3Emails>
Since these are parallel tasks the assignment date will be the same.
Continue by creating all the parallel tasks, e.g. in a parallel loop to handle various number of tasks.
split(outputs('Compose'),'||') - for each task:approvers combination
split(item(),':')[0] - get task name
split(item(),':')[1] - get approvers emails
Update the column after each task
Once one of the tasks is completed you should remove the approvers from this column. But before you do that, reload the item to get the latest values. You don’t want to keep working with the trigger action as the other approvals could’ve changed the column already.
As you’re using fixed characters to separate task:approvers combinations, turn it into an array by split(…)ing it by a separator.
split(outputs('Get_item_-_reload_item')?['body/Approvers'],'||')
And keep only the items that don’t start with the current task name using the ‘Filter array’ action.
item()
<does not start with>
split(items('Apply_to_each'),':')[0]
Note: be careful here to use the whole items(‘<loopName>’) reference on the right side of the filter. If you used just item() it’d reference the currently processed item in the filter and it won’t work.
Turn the result back into a string using the same separator and update it to the item. It will contain only the remaining tasks:approvers combination.
join(body('Filter_array_-_remove_approvers_for_current_task'),'||')
Use the information to build a reminder
At this point you’ve got everything you need to build a reminder. You have a date when the task was assigned, and you have also the task name and emails of the approvers. Create a scheduled flow as explained in the previous articles to get the relevant requests.
Using a few more split(…) expression ‘Select’ the list of emails from each open task.
split(items('Apply_to_each')?['Approvers'],'||') - from all combinations
split(item(),':')[1] - select approvers
Join(…) them all together using semicolon to turn them all in a single string.
join(body('Select'),';')
Since there can be multiple items with multiple approvers, optimise the flow a bit by using a ‘Compose’ after the loop to get them all. Join(…) them into a single string across all the items and split(…) it again to get an array with all the email addresses.
split(join(outputs('Compose'),';'),';')
Follow up with union(…) on the outcome to get only unique emails and continue with the reminder flow to send them a link to their task.
Summary
Once you start working with parallel tasks in Power Automate, the reminders get a bit more complicated. You don’t want to send an email to all the tasks, you want to know which tasks were already finished and which not. That’s why you must store the information somewhere, and in this solution you could see how it’s done with 2 SharePoint columns.
One column to keep the task names and approvers, another one to keep the assignment date. Once a task is completed, this solution will remove the task information from this reminder column. And since the reminder is based on this column, only the users with open task will get a notification.
Just keep in mind that here we’re talking about multiple tasks in parallel, if you’re using a single task with multiple approvers it’s a different approach.