Skip to main content

Notifications

Microsoft Flow : How to Escalate Approvals

Most approvals require an escalation if the approver doesn’t react on time.

 

I had to adapt one of my oldest flow  (an expense request flow that I created in 2016) to integrate the escalation process.

So basically the use case is classic : a user submit an expense in a SharePoint list, directly or via from PowerApps.

Then if the amount is < 500 euros, the expense is automatically approved, otherwise it must be approved. A discussion is therefore created in a specific Microsoft team channel, where members of the procurement department can start discussing the matter.

 

The Flow retrieves the user main manager (the one defined in Azure Active Directory), let’s call him the Big Boss, and the user line manager (stored in a SharePoint list, so to retrieve it I have to perform an OData query.

 

Then the line manager is asked to approve/reject the expense. He can take his decision based on the channel discussion. If the line manager doesn’t approve/reject within 2 days, the approval is escalated to the Big Boss and to the line Manager until one of them reacts.

 

Here is the high level view of my flow (click to have a bigger picture)

 

highlevelflow

 

 

But I will focus on the approval part :

 

 

highlevelflowapproval

 

How does the escalation work?

 

When I ask the Line Manager to approve (1st approval level), I define a 2 days timeout in the "Ask Line Manager to approve" action settings:

 

 

timeoutsetting

 

timeoutsetting2days

 

For the sake of the demo, I set it to 2 minutes : PT2M ( this is defined in ISO 8016).

After this action I add 2 scopes in parallel branches:

 

escalate2

 

In order to have the "escalate to Big Boss" action running when the timout is triggered, you just need to set the "Configure run after" :

escalate34png

to :

 

escalate5png

 

As you will notice the left branch is associated with a red arrow, which means that it will run only if the previous action ("Ask Line Manager to approve") fails; and it will fails if the line manager doesn't not react within 2 days (timeouts).

 

The right branch will run if everything is fine, which means if the line manager reacted on time.

Let's focus more on the Escalate to Big Boss scope  (2nd level of escalation):

 

escalate3

 

No mercy here : the Big Boss (main manager) or the Line Manager will have to react; the loop  (Do Until Main Manager reacts) runs until someone reacts.

 

Here again, I use the timeouts mechanism : every 2 days the Big boss or the Line Manager will be asked to react.

But there is also something else. The next action : "Checks if Expense has been approved".

 

escalate7

 

I wanted it to run after an escalation OR when the Line Manager reacted on time. So for both actions the settings must be :

escalate6png

 

Comments

*This post is locked for comments

  • jhargrov Profile Picture jhargrov 4
    Posted at
    Microsoft Flow : How to Escalate Approvals

    Hello really new to flow here. I'm pretty good at modifying existing templates but starting from scratch I am off to a rough start, especially in trying to duplicate what you have here. I am curious if you could publish this as a template?  

  • Microsoft Flow : How to Escalate Approvals

    Hi Serge Luca,

    I'm still new to Flow, I can see that you set a variable to the Find Line Manager scope, could it be "MainManagerReacts" variable, how did you add it? I can see that it can be assigned a value.

    Or do you have a link to the first workflow you did in 2016.

     

    Thanks in advance

    regards,

    Steven

  • Microsoft Flow : How to Escalate Approvals

    Thanks!!

  • sergeluca Profile Picture sergeluca 500
    Posted at
    Microsoft Flow : How to Escalate Approvals

    Here is my list of managers

     

    linemanagers.PNG

    ...and here is my code (including the Odata query) :

     

    findlinemanagers.PNG

    Kind regards

     

    Serge Luca

  • Microsoft Flow : How to Escalate Approvals

    How did you retrieve the Line Manager from the sharepoint list using Odata query?