Deep Dive: Approval Workflow Design
Introduction
Zudello's Sentence builder provides a powerful and flexible way to design custom approval workflows tailored to specific business needs. Moving beyond simple single-step approvals, you can create multi-stage processes involving different approver types, conditional routing, and advanced features like reminders and escalations.
This guide delves into the strategies and techniques for designing effective and robust approval workflows using Sentences, covering the core components, common patterns, advanced configurations, and troubleshooting tips.
See also: Deep Dive: Automation with Sentences, Deep Dive: Document Lifecycle Management
Core Components of Approval Workflows
Approval workflows in Zudello are built using Sentences and rely on these key elements:
- Triggers: Events that initiate the workflow (e.g., "When a resource is submitted", "When a resource status has changed", "When an approval outcome is received").
- Conditions: Criteria that determine if an approval step should be triggered or which path the workflow should take (e.g., Total Amount > $1000, Department = 'Sales', Allocation Status = 'PARTIAL').
- Actions: Primarily the Get Approval action, which creates milestones and steps, but also Set Field (to change status), Send Email (for custom notifications), etc.
- Approval Milestones: Stages within the overall approval flow (e.g., "Manager Approval", "Finance Review", "Budget Check").
- Approval Steps: Specific tasks within a milestone assigned to approvers (e.g., "Approve Invoice > $1k", "Verify Budget Availability").
- Approver Types: How approvers are determined for a step (User, User Group, DOA, Management Tree, Submitter/Creator of Related Resource, Assignee).
Designing Multi-Step Approval Processes
Complex approvals often involve multiple sequential or parallel steps.
Sequential Approvals
- Concept: One approval milestone must be completed before the next one begins.
- Implementation:
- Sentence 1 (Trigger: Submitted/Ready): Condition: Meets criteria for first approval. Action:
Get Approval
(Milestone 1),Set Status
(e.g.,MANAGER_APPROVAL
). Use "And cancel processing". - Sentence 2 (Trigger: Approval outcome received): Condition: Milestone 1
name
= "Manager Approval" ANDoutcome
=APPROVED
. Action:Get Approval
(Milestone 2),Set Status
(e.g.,FINANCE_APPROVAL
). Use "And cancel processing". - Sentence 3 (Trigger: Approval outcome received): Condition: Milestone 2
name
= "Finance Review" ANDoutcome
=APPROVED
. Action:Set Status
(e.g.,COMPLETE
). Use "And cancel processing". - Rejection Handling: Add separate Sentences triggered by "Approval outcome received" with
outcome
=REJECTED
for each milestone to set an appropriate review status (e.g.,REJECT_REVIEW
) and potentially notify the submitter.
- Sentence 1 (Trigger: Submitted/Ready): Condition: Meets criteria for first approval. Action:
Parallel Approvals
- Concept: Multiple approval steps need to be completed simultaneously within a single milestone before the workflow proceeds.
- Implementation:
- Sentence 1 (Trigger: Submitted/Ready): Condition: Meets criteria for parallel approval. Action:
Get Approval
(Milestone 1).- Configure multiple steps within this single "Get Approval" action (e.g., Step 1: Assign to Department Head, Step 2: Assign to Project Manager).
- Set
criteria_pass
toALL
for the milestone (usually default behaviour when multiple steps exist) to ensure both steps must be approved.
- Sentence 2 (Trigger: Approval outcome received): Condition: Milestone 1
name
= "Parallel Review" ANDoutcome
=APPROVED
. Action:Set Status
(e.g.,COMPLETE
). - Rejection Handling: If any step within the parallel milestone is rejected, the entire milestone is typically marked as
REJECTED
. Handle this outcome with a separate Sentence.
- Sentence 1 (Trigger: Submitted/Ready): Condition: Meets criteria for parallel approval. Action:
Combining Different Approval Actions
Leverage various "Get Approval From" types within your workflow:
- User/User Group: For specific roles or individuals (e.g., Finance Team, CEO).
- DOA (Delegation of Authority): For amount-based approvals based on coding dimensions. Automatically generates required steps based on limits in the DOA Dataset. See Issues with DOA/Management Tree Approvals.
- Management Tree: For approvals based on the submitter's reporting line (requires manager field populated on user profiles and often a User Limit dataset). See Issues with DOA/Management Tree Approvals.
- Submitter/Creator of Related Resource: Useful for variance approvals or confirmations (e.g., route Invoice variance approval back to the user who submitted the original PO).
- Assignee: Route approval to the user(s) currently assigned to the document.
Example Combination:
- Sentence 1 (Trigger: Submitted): Condition:
Total Amount Local
< 500. Action:Set Status
(COMPLETE
). Use "And cancel processing". - Sentence 2 (Trigger: Submitted): Condition:
Total Amount Local
>= 500 ANDTotal Amount Local
< 5000. Action:Get Approval
(From: Management Tree, Milestone: "Manager Approval"),Set Status
(MANAGER_APPROVAL
). Use "And cancel processing". - Sentence 3 (Trigger: Submitted): Condition:
Total Amount Local
>= 5000. Action:Get Approval
(From: DOA, Dataset: "Finance DOA", Milestone: "DOA Approval"),Set Status
(DOA_APPROVAL
). Use "And cancel processing". - Sentence 4 (Trigger: Approval outcome received): Condition: Milestone
name
contains "Manager Approval" ANDoutcome
=APPROVED
. Action:Set Status
(COMPLETE
). - Sentence 5 (Trigger: Approval outcome received): Condition: Milestone
name
contains "DOA Approval" ANDoutcome
=APPROVED
. Action:Set Status
(COMPLETE
). - (Add Rejection Handling Sentences)
Configuring Advanced Options
Fine-tune your approval steps using these settings within the "Get Approval" action:
- Resource Editability: Set at the Milestone level. Controls if the document can be edited while this milestone is active. Useful for preventing changes during finance review, for example.
- Include Submitter: Set at the Step level. If
FALSE
, prevents the user who submitted the document from approving that specific step, even if they meet the criteria (e.g., they are their own manager or have the required DOA limit). See Self-Approval Prevention. - Remember Response (
apply_previous
): Set at the Step level. IfTRUE
, automatically applies the user's previous response (APPROVED
orREJECTED
) from an earlier step within the same approval flow instance. Useful for multi-step DOA flows where the same person might appear at multiple levels. See Remember Response Not Applying Correctly. - Notify: Set at the Step level. If
TRUE
, sends notifications (email, etc.) to assigned approvers based on their profile settings. See Managing Notification Settings. - Reminders: Configure automatic reminders to be sent after a specified time if the step is still pending. See Configure Approval Reminders.
- Escalations: Configure the step to automatically reassign to a different user, group, or the original approver's manager after a specified time. See Escalation Not Working Correctly.
Handling Rejections and Restarts
- Rejection Status: When a milestone is rejected, use a Sentence triggered by "Approval outcome received" with
outcome
=REJECTED
to set an appropriate status (e.g.,REJECT_REVIEW
). This status should typically allow editing. - Restarting the Flow: After corrections are made in the
REJECT_REVIEW
status, the user clicks Save and Submit. This triggers thePROCESSING
status and re-evaluates the initial Sentences (triggered by "Submitted" or "Status Changed"). The workflow effectively restarts, potentially routing through the same approval steps again. - Rejection Reasons: Approvers should provide clear reasons for rejection. These are logged and can potentially be included in notifications back to the submitter (requires custom email template configuration).
Managing Delegation Effectively
Delegation allows users to temporarily assign their approvals to others.
- Delegate Duties: Crucial setting. If
ON
, the delegate temporarily inherits the delegator's permissions for that team. This is often necessary if the delegate wouldn't normally have visibility of the documents they need to approve. IfOFF
, the delegate must have their own sufficient permissions. See Delegate Approvals Overview. - Impact on Workflow: Delegation happens automatically when a step is assigned. The workflow logic itself doesn't usually need to account for delegation explicitly, but the delegate needs the correct access (either inherently or via "Delegate Duties"). See Delegation Not Working Correctly.
Troubleshooting Approval Routing
- Document Stuck: Check current approver validity (active, permissions), Sentence logic, potential loops, "And cancel processing" usage. See Document Stuck Processing.
- Wrong Approver Assigned: Verify Sentence approver selection (User/Group/DOA/etc.), check DOA dataset configuration, check document coding, check user manager hierarchy. See Wrong Approver Assigned.
- Cannot Approve/Reject: Check if it's the user's active turn, check for blocking validation errors, verify permissions. See Approving and Rejecting Documents.
- History Missing/Incorrect: Compare with main Audit History, check workflow configuration changes, look for skipped steps (Force Approve, Remember Response). See Viewing Approval History.
- Use Automation Logs: (Admin/Staff) Essential for seeing which Sentences fired, which conditions passed/failed, and which actions executed.
Designing effective approval workflows requires careful planning of the desired process, understanding the capabilities of different Sentence actions and triggers, and thorough testing across various scenarios.