Aptiwise
Aptiwise
Aptiwise DocumentationForm Layout Feature - Implementation CompleteForm Layout Feature Implementation Guide
Getting Started
User Guide
Workflow Types & Patterns
Conditional RoutingDecision StepsExpense Approval WorkflowForm IntegrationParallel Approval
Workflow Types & Patterns

Parallel Approval

Multiple approvers working simultaneously with different consensus strategies

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

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

The fastest parallel strategy: workflow continues when any single approver approves the request.

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

The most stringent strategy: all approvers must approve before workflow continues.

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

Democratic approach: workflow continues when more than half of the approvers approve.

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"
  minimum_responses: 3  # At least 3 must respond
  timeout: "7_days"
  on_approve:
    continue_to: "executive_implementation"
  on_reject:
    continue_to: "revision_required"

📊 Weighted Approval Strategy

Advanced strategy where different approvers have different voting weights.

weighted_approval:
  name: "weighted_approval"
  type: "parallel_approval"
  description: "Weighted Committee Decision"
  approvers:
    - role: "ceo"
      weight: 3
    - role: "cfo"
      weight: 2
    - role: "cto"
      weight: 2
    - role: "department_head"
      weight: 1
  approval_strategy: "weighted"
  required_weight: 5  # Need at least 5 points to approve
  on_approve:
    continue_to: "execution"
  on_reject:
    continue_to: "reconsideration"

🔄 Mixed Approval Strategies

Quorum-Based Approval

quorum_approval:
  name: "quorum_approval"
  type: "parallel_approval"
  description: "Committee with Quorum Requirement"
  approvers:
    - role: "committee_chair"
    - role: "committee_member_1"
    - role: "committee_member_2"
    - role: "committee_member_3"
    - role: "committee_member_4"
  approval_strategy: "quorum"
  quorum_size: 3        # At least 3 must participate
  approval_threshold: 2  # Of those participating, 2 must approve
  timeout: "5_days"
  on_approve:
    continue_to: "implementation"
  on_reject:
    continue_to: "revision_cycle"

Hierarchical Parallel Approval

hierarchical_approval:
  name: "hierarchical_approval"
  type: "parallel_approval"
  description: "Hierarchical Team Review"
  approvers:
    - role: "senior_manager"
      required: true     # Must approve
    - role: "team_lead_1"
    - role: "team_lead_2"
    - role: "team_lead_3"
  approval_strategy: "hierarchical"
  required_approvers: ["senior_manager"]  # Must have these
  additional_required: 1  # Plus at least 1 team lead
  on_approve:
    continue_to: "project_kickoff"

🎯 Real-World Scenarios

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

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

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

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

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

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

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

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

Design Principles

  1. Clear Strategy: Choose the right approval strategy for your use case
  2. Reasonable Timeouts: Set realistic deadlines for group decisions
  3. Backup Plans: Define escalation paths for non-responsive approvers
  4. Workload Management: Balance approval requests across team members

Performance Optimization

  1. Minimize Approver Count: Only include necessary stakeholders
  2. Smart Notifications: Avoid overwhelming approvers with notifications
  3. Batch Processing: Group similar requests for efficient review
  4. Clear Context: Provide sufficient information for quick decisions

User Experience

  1. Mobile Accessibility: Ensure approvers can respond from any device
  2. Consolidated Views: Show progress across all parallel approvers
  3. Discussion Features: Enable communication between approvers
  4. Delegation Support: Allow temporary delegation during absences

Next Steps:

  • Learn about Automatic Processing for system integrations
  • Explore SLA Management for timeout handling
  • See Real Examples of parallel approval in action

Form Integration

Dynamic forms, field types, and data collection for intelligent workflow routing

On this page

Parallel Approval📋 Overview✅ Any One Approval StrategyImplementation👥 All Must Approve StrategyHigh-Security Implementation🗳️ Majority Approval StrategyBoard Approval Implementation📊 Weighted Approval Strategy🔄 Mixed Approval StrategiesQuorum-Based ApprovalHierarchical Parallel Approval🎯 Real-World ScenariosIT Change ManagementBudget Approval CommitteeVendor Approval Process⚙️ Advanced FeaturesDynamic Approver AssignmentConditional Approval RequirementsEscalation Handling📊 Performance & AnalyticsApproval MetricsWorkload Balancing📋 Best PracticesDesign PrinciplesPerformance OptimizationUser Experience