Approval Pattern for Complex Workflows
Unless it's a straightforward approval, chances are your process has several stages and conditions for each approval workflow. And we know that every company has their own process; their own nuances unique to them.
That's why today I wanted to share with you a pattern or implementation guide I like to use for complex approval scenarios.
I've developed this specific pattern to achieve the following goals:
Can submit approval requests and select the "approval template" to use (e.g., Travel expenses, training course, office gear…).
Can see the past and future approvers in real time.
Can configure the approval workflow themselves. I.e., create "templates" for the approval workflow.
Can resubmit an approval step or reassign them on the go.
Can see the status of the processes in a dashboard / reporting fashion.
Developers / Support Engineers:
Can easily implement the business logic of the process. E.g., "if office equipment cost is greater than $500, John Doe from Finance also needs to approve this request".
Can quickly detect where an approval process got stuck and generate reports on what's happening in the process.
Can quickly resubmit just part of a flow without restarting it entirely. Just resubmitting a specific step.
Use Case Demo
I used a Model Driven app to showcase how the pattern works. The workflow is going to look like this (green boxes are automatic steps performed by Power Automate):
...And in this video, you can see the live demo (aka, my first try for a YouTube video 😃😃).
We've seen a useful pattern to implement the data model of a complex approval workflow. It's better to go this way instead of having massive Power Automate flows that hold all that logic and steps because, in the end, who's going to enter there to debug why Jane Doe is not getting her approval card for a "purchase of office gear < $300".
The basis for this model is explained in the video above, but here's the Entity Diagram for your reference:
If you're interested on learning how the backed is built, please reach out to me!
See you around,