“I’m building an approval process in Power Automate and I’m missing a lot of functionality the other tools had OOTB, how do I add it here?”
Whether you’re used to another workflow engine and you’re switching to Power Automate, or are new to the whole automation stuff, you might notice that not everything is as simple as you’d expect. Approval tasks don’t have any reminders, flow history is lost after 30 days, only flow owners can see what’s happening with the request, and the list goes on and on. There’s a lot of smaller or bigger limitations you must consider when building a flow and decide whether to accept or address them.
This article is meant as a list of limitations for the approval flows and how to deal with them.
What’s the most basic approval flow
When talking about a basic approval flow, I mean a straightforward flow with a lot of approval actions. A long tree of approvals where each task follows the previous one. The longer the approval process, the more actions it’ll contain.
While this approach can work for very simple processes, it has a lot of limitations. The whole process with all the tasks must finish within 29 days. It’s one email with the task and that’s it, very easy to overlook. Every change in the approvers means changing the flow. No permanent flow history. If the flow fails, you can restart it only from the start, asking for repeated approvals…
Extending the approval flow
To solve any of the limitations above, you’ll have to extend the flow. Change the flow design, add a piece of functionality, find a workaround, add some configuration lists… A simple flow can get very complex quite easily once you start dealing with these limitations.
Flow can run only for 30 days
Actually more like 29 and half a day, but the message is the same. Once the flow runs for a specific amount of time, it’ll stop. There’s no workaround, that’s all you get from a single flow run. If your flow has 5 approvers, each taking a week to approve, it’ll never finish successfully.
That’s why it’s better to build your flow as a state machine, starting new instance of a flow for each approval step. That’ll give you 30 days per task which should be enough. If that’s not enough, you can either start another flow just to wait for the response, or get the response from Dataverse.
Flow run history is lost after 30 days
Since we’re talking about an approval process, you (and the audit department) might be interested in who approved the requests. Such information will be lost unless you store it somewhere by yourself. Whether you store it directly in the item, in a separate SharePoint list, or in both, it’s up to you. Not only will that give you the request history, it’ll also allow users to see the current state of the process.
Flow can fail
Even though you do a proper testing for every flow you build, it can and will sometimes fail. There’ll be something in the input data, some unavailable service, or just a unique situation you didn’t expect. If that happens, you should be the first one to know. You should be also able to fix it, and start the flow again. By that I mean starting it from the approval step where it failed, not from the first one again! Recreate only the last approval task, not all of them.
Approvers can overlook the task notifications
There’s no reminder for approval tasks, just a notification when the task is assigned and that’s it. If users overlook or ignore it, they’ll not do it. That’s why you should always add at least a basic reminder to your approval flows. But not a reminder that’ll send separate email for each overdue request! If there’re more requests per approver, send them only one email.
Since the reminders will be most probably emails, you can also play a bit with their design. Add some formatting to html tables, use one or more colours to the values, etc.
Some approvals need more than just approve or reject
Some processes are more complex than just approve / reject. Sometimes you want to send the request back and forth. Do some changes, send it back for approval. Exchange the request a few times between the approvers before they finally approve it. Something that’s not doable in a simple flow and needs a state machine.
Approvers can change
People in an organisation can change positions, they can leave and somebody else can take over their tasks. If you hard code the approvers directly in a flow, you’ll have to edit them in a flow. Something only the flow owner can do.
It’s much better to use configuration lists to manage the approvers where anyone can change them, often in combination with SharePoint groups. With a configuration lists you can even build flows with various approval paths per request.
People go on holidays
When we’re talking about approvals, we must talk also about availability of the approvers. What will happen if one approver is on holiday? Or on a sick leave? Will the whole process stop until he gets back to work? An automated delegation might be the solution for these situations.
Requests in approval process should be locked
Once a request enters the approval process, you should reduce its permissions. What would be the point of approving something that can change? Manage permissions to keep access only for the users who need it, and if you ever provide higher permissions to some user remove them once they’re not needed anymore.
Triggering a flow should be simple
It should be clear to every user how to trigger the approval flow. If it’s started automatically, it’s easy, but what about manually started flows? Add a button to the SharePoint list to start a flow located on Default environment or a flow in other Power Platform environments.
Reusability of the Power Automate flow
Approval processes are probably the most often automated process. Every department has something that needs an approval, and the processes don’t differ that much, mainly just the number of approval steps and the approving users.
If you spend the time to automate an approval process with all the mentioned functionality, you shouldn’t keep it only in that one Power Automate flow. Make the process configurable and reuse it to automate more approval processes. Share it with others in your organisation, let them automate their approval processes with the help of your flow.
Summary
As you can see, there’s a lot of things to consider when automating an approval process, a lots of functionality that you should add to your Power Automate flow. A flow that looked simple at the beginning might easily turn into a monster. But if you invest the time to build it properly, it could be a great boost for the automation in your organisation. The goal of low code platforms is to enable non-IT users to build their own solutions, and a clever approval process template might be the thing to help most of them.
That’s also the idea behind the Power Automate Approval process template. Not everyone has the time or the resources to prepare a basic template by themselves, so I decided to offer you mine!
Highly recommend checking out the Microsoft Business Approvals Kit. It will cover every scenario mentioned in the above post. It’s currently being developed by Microsoft but you can download it and test it here -https://github.com/microsoft/powercat-business-approvals-kit
New features are added monthly and once it’s fully built it’s going to be amazing. Been looking for something like this for a long time.
Hey sir , I have problem using HTML table for daily summary .
I can receive the table captured from my sharepoint list , however , together with the information I needed, it also came with
@odata.type error
Could you please answer my question ?
Hello Sean,
you probably didn’t use the custom mode in ‘Select’ or ‘Create HTML table’ action to define what columns it should return.