Very often we have a scenario where it is difficult to upfront decide on the number of level of approvals or eye checks needed in a workflow. Have got the same request twice this week so thought of putting it down in a blog.
Today I will show you on how we can achieve dynamic level of approvals straight out of the box from NWC itself without having to do any major customization. Do note, though the screenshot and references are of NWC, the same can be achieved in Nintex for SharePoint on-premise as well as Nintex for office 365.
To achieve this, I have used the best friend of a workflow designer, Branch by Stage Action.
In my example I have 3 parties who will evaluate the request
- Legal
- Procurement
- Management
In the screenshot above you will see an extra stage, Decision stage. Let me explain why we need that in a while.
Now while in legal stage my customer wants N-number of approvals. It can go back and forth to multiple people with different expertise. The user may also send to the requesting manager for few comments. Let’s see how we can achieve this.
In the Assign Task action. I created 4 outcomes as shown below.
When a user clicks on Need Additional Approval / Eye Check, I enable a people picker using which they can choose a user or group they want to forward to for approval.
This can go on for as many times as they need with no restrictions. Under this outcome I collect set variable for the additional approver and call the same stage with the task assigned to the approver / group that was chosen by the user while submitting the form.
Now here is a catch, by design Change Stage Action does not allow you to call the same action i.e. I cannot Change Stage to Legal Stage from the Legal Stage and hence we need an additional stage which we spoke about earlier i.e. Decision Stage. Before passing on to Decision stage I will set few variables, some of the key ones are current approver email from the people picker, so that I can use it in the Assign Task. We also need a variable to define source of request. In my decision stage this will help me in identifying the stage I need to redirect to. I can have the dynamic level of approval in each of the approval stages, Legal, Procurement etc. All I need to do is set a variable to tell my Decision Stage, what stage is to be selected next.
Under decision stage based on condition I decide my Change Stage Action i.e. If the variable says the request has come from Legal, I Change Stage to Legal or if the variable is procurement the Change Stage will be set to procurement. This is how easily with just few clicks you can build a dynamic number of approvals in a workflow.
Do feel free to ask any questions in the comments or if you have a similar requirement let me know and I shall share the Export Key for the workflow. Happy Automating!