Parallel Approval
Parallel Approval
Section titled “Parallel Approval”Parallel approval enables multiple approvers to review requests simultaneously, with configurable strategies for reaching consensus. This pattern is essential for committee-based decisions, peer reviews, and scenarios requiring input from multiple stakeholders.
📋 Overview
Section titled “📋 Overview”Parallel approval steps (parallel_approval) send approval requests to multiple people at the same time, then continue the workflow based on a defined approval strategy. This significantly reduces approval time compared to sequential approval chains.
✅ Any One Approval Strategy
Section titled “✅ Any One Approval Strategy”The fastest parallel strategy: workflow continues when any single approver approves the request.
Implementation
Section titled “Implementation”purchasing_approval: name: "purchasing_approval" type: "parallel_approval" description: "Purchasing Team Review" approvers: - role: "purchasing_officer_1" - role: "purchasing_officer_2" - role: "purchasing_officer_3" approval_strategy: "any_one" on_approve: continue_to: "procurement_processing" on_reject: notify_requestor: "Purchase request denied by purchasing team" end_workflow: true👥 All Must Approve Strategy
Section titled “👥 All Must Approve Strategy”The most stringent strategy: all approvers must approve before workflow continues.
High-Security Implementation
Section titled “High-Security Implementation”security_approval: name: "security_approval" type: "parallel_approval" description: "Security Committee Review" approvers: - role: "security_officer" - role: "compliance_manager" - role: "legal_counsel" - role: "it_director" approval_strategy: "all" timeout: "72_hours" on_approve: continue_to: "implementation" on_reject: notify_requestor: "Security review failed - all approvers must approve" end_workflow: true🗳️ Majority Approval Strategy
Section titled “🗳️ Majority Approval Strategy”Democratic approach: workflow continues when more than half of the approvers approve.
Board Approval Implementation
Section titled “Board Approval Implementation”board_approval: name: "board_approval" type: "parallel_approval" description: "Board of Directors Review" approvers: - role: "board_chair" - role: "board_member_finance" - role: "board_member_operations" - role: "board_member_technology" - role: "independent_director" approval_strategy: "majority" required_count: 3 # At least 3 must approve timeout: "7_days" on_approve: continue_to: "executive_implementation" on_reject: continue_to: "revision_required"📊 Future Features (Unimplemented)
Section titled “📊 Future Features (Unimplemented)”The following strategies are planned for future releases.
Weighted Approval Strategy
Section titled “Weighted Approval Strategy”Quorum-Based Approval
Section titled “Quorum-Based Approval”Hierarchical Parallel Approval
Section titled “Hierarchical Parallel Approval”🎯 Real-World Scenarios
Section titled “🎯 Real-World Scenarios”IT Change Management
Section titled “IT Change Management”change_approval_board: name: "change_approval_board" type: "parallel_approval" description: "IT Change Approval Board" approvers: - role: "it_operations_manager" - role: "security_specialist" - role: "application_owner" - role: "business_stakeholder" approval_strategy: "majority"
# Risk-based timeout timeout: | {% if risk_level == 'high' %} 24_hours {% elif risk_level == 'medium' %} 48_hours {% else %} 72_hours {% endif %}
on_approve: continue_to: "change_implementation" on_reject: continue_to: "change_revision"Budget Approval Committee
Section titled “Budget Approval Committee”budget_committee: name: "budget_committee" type: "parallel_approval" description: "Annual Budget Review Committee" approvers: - role: "cfo" weight: 3 required: true - role: "department_head_engineering" weight: 2 - role: "department_head_sales" weight: 2 - role: "department_head_operations" weight: 1 - role: "hr_director" weight: 1
approval_strategy: "weighted" required_weight: 6 minimum_approvers: 3
# Extended timeline for budget reviews timeout: "2_weeks" reminder_intervals: ["3_days", "1_day"]
on_approve: continue_to: "budget_implementation" on_reject: continue_to: "budget_revision"Vendor Approval Process
Section titled “Vendor Approval Process”vendor_evaluation: name: "vendor_evaluation" type: "parallel_approval" description: "New Vendor Evaluation" approvers: - role: "procurement_manager" - role: "legal_counsel" - role: "finance_controller" - role: "technical_lead" - role: "security_officer"
approval_strategy: "custom" custom_logic: | # Procurement and Legal must approve required_roles = ["procurement_manager", "legal_counsel"]
# Plus majority of remaining roles remaining_approvals = total_approvals - required_role_approvals required_remaining = ceil(remaining_roles.length / 2)
return required_role_approvals == 2 and remaining_approvals >= required_remaining
on_approve: continue_to: "vendor_onboarding" on_reject: continue_to: "vendor_reevaluation"⚙️ Advanced Features
Section titled “⚙️ Advanced Features”Dynamic Approver Assignment
Section titled “Dynamic Approver Assignment”dynamic_committee: name: "dynamic_committee" type: "parallel_approval" description: "Dynamic Committee Based on Request"
# Dynamic approver selection approvers: | {% set committee = ["department_head"] %}
{% if amount > 50000 %} {% set committee = committee + ["cfo"] %} {% endif %}
{% if category == "technology" %} {% set committee = committee + ["cto"] %} {% endif %}
{% if involves_external_parties %} {% set committee = committee + ["legal_counsel"] %} {% endif %}
{{ committee }}
approval_strategy: "all" on_approve: continue_to: "execution"Conditional Approval Requirements
Section titled “Conditional Approval Requirements”risk_based_approval: name: "risk_based_approval" type: "parallel_approval" description: "Risk-Based Approval Requirements"
approvers: - role: "risk_manager" - role: "compliance_officer" - role: "business_owner" - role: "technical_lead"
# Strategy changes based on risk level approval_strategy: | {% if risk_level == "high" %} all {% elif risk_level == "medium" %} majority {% else %} any_one {% endif %}
on_approve: continue_to: "risk_mitigation_planning"Escalation Handling
Section titled “Escalation Handling”escalated_approval: name: "escalated_approval" type: "parallel_approval" description: "Approval with Escalation"
approvers: - role: "primary_approver_1" - role: "primary_approver_2" - role: "primary_approver_3"
approval_strategy: "majority" timeout: "48_hours"
# Escalation if timeout on_timeout: escalate_to: approvers: - role: "senior_director" - role: "vp_operations" approval_strategy: "any_one" timeout: "24_hours"
on_approve: continue_to: "implementation"📊 Performance & Analytics
Section titled “📊 Performance & Analytics”Approval Metrics
Section titled “Approval Metrics”approval_with_metrics: name: "approval_with_metrics" type: "parallel_approval" description: "Tracked Parallel Approval"
approvers: - role: "approver_1" - role: "approver_2" - role: "approver_3"
approval_strategy: "majority"
# Track performance metrics metrics: track_response_time: true track_approval_patterns: true measure_bottlenecks: true
# Performance targets sla: target_response_time: "24_hours" escalation_threshold: "48_hours"
on_approve: continue_to: "next_step"Workload Balancing
Section titled “Workload Balancing”balanced_approval: name: "balanced_approval" type: "parallel_approval" description: "Workload-Balanced Approval"
# Intelligent approver selection approver_selection: "balanced" approver_pool: - role: "senior_analyst_1" - role: "senior_analyst_2" - role: "senior_analyst_3" - role: "senior_analyst_4"
# Select 2 with least current workload selected_approvers: 2 selection_strategy: "least_busy"
approval_strategy: "any_one"
on_approve: continue_to: "processing"📋 Best Practices
Section titled “📋 Best Practices”Design Principles
Section titled “Design Principles”- Clear Strategy: Choose the right approval strategy for your use case
- Reasonable Timeouts: Set realistic deadlines for group decisions
- Backup Plans: Define escalation paths for non-responsive approvers
- Workload Management: Balance approval requests across team members
Performance Optimization
Section titled “Performance Optimization”- Minimize Approver Count: Only include necessary stakeholders
- Smart Notifications: Avoid overwhelming approvers with notifications
- Batch Processing: Group similar requests for efficient review
- Clear Context: Provide sufficient information for quick decisions
User Experience
Section titled “User Experience”- Mobile Accessibility: Ensure approvers can respond from any device
- Consolidated Views: Show progress across all parallel approvers
- Discussion Features: Enable communication between approvers
- Delegation Support: Allow temporary delegation during absences
Next Steps:
- Learn about Form Integration for system integrations
- Explore SLA Tracking for timeout handling
- See Real Examples of parallel approval in action