Summary
This workflow automates the ticket dispatching process by intelligently assigning incoming support tickets to the most qualified and available technicians. The solution evaluates multiple factors including technician skills, certifications, current workload, availability schedules, historical performance, customer preferences, and SLA requirements to make optimal assignment decisions. By eliminating manual dispatching overhead, the workflow ensures faster ticket response times, balanced workload distribution, and improved customer satisfaction through consistent and fair ticket allocation.
Usage
Prerequisites
Before using this workflow, ensure the following requirements are met:
-
PSA Integration: Configure your PSA system integration (ConnectWise Manage, Autotask, Halo PSA, etc.) with the following permissions:
- Ticket read and update access
- Technician/resource read access
- Schedule/calendar read access
- Service board access
- Time entry read access (for workload calculation)
- Company/client read access
- SLA policy access
-
Technician Skills Database: Maintain an updated skills matrix including:
- Technical competencies and certifications
- Product/vendor specializations
- Language capabilities
- Industry expertise
- Skill proficiency levels (beginner, intermediate, expert)
-
Organizational Variables: Configure the following organizational variables in your Rewst environment:
dispatching_enabled: Boolean to enable/disable automatic dispatchingdispatching_mode:skills_based,round_robin,least_busy, orhybridmax_tickets_per_technician: Maximum active tickets per technicianworkload_calculation_method: How to calculate current workload (ticket_count,estimated_hours,weighted)sla_priority_weight: How heavily to weight SLA urgency (0.0-1.0)skill_match_threshold: Minimum skill match percentage required (0-100)allow_overflow_assignment: Assign even if technician is at capacitybusiness_hours_only: Only dispatch during business hourspreferred_tech_priority: Whether to honor customer preferred technician requests
-
Availability Management: Ensure the following are configured:
- Technician work schedules (standard hours, shifts)
- Time-off and vacation calendars
- On-call schedules
- Break schedules
- Out-of-office status tracking
-
Assignment Rules: Define rules for:
- VIP customer handling
- Escalation paths
- Specialized ticket types (e.g., security incidents)
- Geographic/time zone considerations
- Account-specific technician assignments
Configuration Steps
- Import the workflow into your Rewst environment
- Configure the required PSA integration
- Set up the organizational variables listed above
- Create and maintain technician skills profiles
- Define ticket category to skill mappings
- Configure workload calculation parameters
- Set up availability tracking integrations
- Define assignment rules and preferences
- Configure notification settings for assignments
- Set up fallback/overflow assignment rules
- Test the workflow with various ticket scenarios
Workflow Inputs
The workflow can be executed with the following input parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
ticket_id | String | Yes | The PSA ticket ID to dispatch |
ticket_category | String | Yes | Ticket category/type for skill matching |
ticket_priority | String | Yes | Priority level (Low, Medium, High, Critical) |
ticket_board | String | Yes | Service board the ticket belongs to |
company_id | String | Yes | Company/client ID for preferred tech lookup |
required_skills | Array | No | Specific skills required for the ticket |
sla_due_date | String | No | SLA deadline for the ticket (ISO 8601) |
customer_preferred_tech | String | No | Customer's preferred technician ID |
geographic_location | String | No | Location for geographic routing |
language_requirement | String | No | Required language (e.g., Spanish, French) |
exclude_technicians | Array | No | Technician IDs to exclude from assignment |
force_assignment | Boolean | No | Assign even if no perfect match. Default: true |
override_workload_limit | Boolean | No | Allow assignment over workload limit. Default: false |
dispatch_immediately | Boolean | No | Dispatch immediately or queue for next cycle. Default: true |
Execution
Event-Driven Trigger (Recommended)
Configure the workflow to trigger automatically when:
- A new ticket is created in unassigned status
- A ticket is moved to a dispatching queue
- A ticket is escalated and needs reassignment
- A ticket is returned/rejected by a technician
- SLA deadline is approaching on unassigned ticket
Scheduled Batch Processing
Run the workflow on a schedule to process unassigned tickets:
- Configure the workflow to run every 5-15 minutes
- Query for all unassigned tickets in dispatch queues
- Process tickets in priority order
- Dispatch multiple tickets in a single execution
Manual Dispatch
- Navigate to the workflow in the Rewst platform
- Click "Run Workflow"
- Enter the ticket ID and any specific requirements
- Review recommended technicians before confirming
- Click "Execute" to assign the ticket
API Trigger
Integrate with external dispatch systems or custom interfaces by calling the Rewst API endpoint with ticket details in JSON format.
Dispatching Logic
The workflow evaluates technicians using the following criteria:
1. Skills Matching
- Matches ticket category/type to technician skills
- Evaluates required certifications or specializations
- Considers skill proficiency levels
- Calculates skill match percentage
2. Availability Assessment
- Checks current work schedule and shift status
- Verifies not on vacation or time off
- Confirms not in meetings or training
- Validates within working hours (if configured)
3. Workload Evaluation
- Counts current active tickets
- Calculates total estimated hours remaining
- Considers ticket priorities and deadlines
- Applies weighted scoring if configured
4. Performance Metrics
- Reviews average resolution time for similar tickets
- Considers customer satisfaction scores
- Evaluates ticket completion rate
- Factors in escalation history
5. Customer Preferences
- Honors customer-requested technicians
- Considers previous technician assignments
- Respects account-specific technician assignments
- Applies VIP customer preferences
6. SLA Compliance
- Prioritizes tickets approaching SLA breach
- Assigns to technicians with best on-time performance
- Considers timezone alignment for global support
7. Geographic/Language Factors
- Matches technician location to ticket location (if applicable)
- Ensures language requirements are met
- Considers on-site vs remote support capabilities
Scoring Algorithm
Each technician receives a composite score based on weighted factors:
Total Score = (Skill Match × 0.30) +
(Availability × 0.25) +
(Workload × 0.20) +
(Performance × 0.15) +
(Customer Preference × 0.10)
The technician with the highest score is assigned the ticket. Weights can be customized in the workflow configuration.
Post-Execution Steps
After the workflow completes successfully:
-
Verify Assignment:
- Confirm the ticket was assigned to a technician in the PSA
- Verify the assignment shows in the technician's queue
- Check that assignment timestamp is recorded
-
Notification Confirmation:
- Verify technician received assignment notification
- Confirm ticket details are accessible to technician
- Check that customer received assignment notification (if configured)
-
Monitor Response:
- Track time to first response
- Monitor for technician acceptance/rejection
- Watch for SLA compliance
-
Handle Exceptions:
- Review any tickets that couldn't be dispatched
- Address technicians who are over capacity
- Investigate failed assignments
-
Reporting:
- Update dispatch metrics dashboard
- Track assignment distribution across technicians
- Monitor average time-to-dispatch
Returned Data
The workflow returns the following data upon completion:
{
"success": true,
"ticket_id": "12345",
"ticket_info": {
"subject": "Email connection issues in Outlook",
"category": "Email Support",
"priority": "High",
"board": "Service Desk",
"company": "Acme Corporation",
"sla_due": "2026-01-13T18:00:00Z",
"sla_hours_remaining": 2.5
},
"dispatching_results": {
"assigned": true,
"assigned_technician": {
"technician_id": "tech-456",
"name": "Sarah Johnson",
"email": "sarah.johnson@company.com",
"phone": "+1-555-0123",
"specialization": "Email & Communication"
},
"assignment_timestamp": "2026-01-13T15:30:00Z",
"time_to_dispatch_seconds": 12,
"assignment_method": "skills_based"
},
"evaluation_summary": {
"candidates_evaluated": 8,
"candidates_available": 6,
"candidates_qualified": 4,
"top_candidate_score": 87.5,
"assignment_confidence": "high"
},
"assigned_technician_details": {
"current_workload": {
"active_tickets": 7,
"capacity_percentage": 70,
"estimated_hours_remaining": 14.5
},
"skill_match": {
"primary_skills_matched": ["Email Support", "Office 365", "Exchange"],
"skill_match_percentage": 95,
"certifications": ["Microsoft 365 Certified", "CompTIA A+"]
},
"availability": {
"status": "available",
"current_shift": "Morning (8:00 AM - 4:00 PM)",
"breaks_scheduled": [],
"next_meeting": "2026-01-13T16:00:00Z"
},
"performance_metrics": {
"average_resolution_time_hours": 3.2,
"customer_satisfaction_score": 4.7,
"tickets_resolved_this_week": 12,
"on_time_resolution_rate": 94.5
},
"customer_history": {
"previous_tickets_for_company": 15,
"customer_satisfaction_avg": 4.8,
"preferred_technician": true
}
},
"alternative_candidates": [
{
"technician_id": "tech-789",
"name": "Michael Chen",
"score": 82.3,
"skill_match_percentage": 90,
"current_workload": 8,
"reason_not_selected": "Slightly lower skill match and higher workload"
},
{
"technician_id": "tech-234",
"name": "Emily Rodriguez",
"score": 78.9,
"skill_match_percentage": 85,
"current_workload": 5,
"reason_not_selected": "Not customer's preferred technician"
}
],
"dispatching_rules_applied": [
{
"rule": "customer_preferred_technician",
"applied": true,
"impact": "+10 points to score"
},
{
"rule": "sla_urgency_boost",
"applied": true,
"impact": "Prioritized high-score available technicians"
},
{
"rule": "workload_balancing",
"applied": true,
"impact": "Excluded technicians over 85% capacity"
}
],
"notifications_sent": {
"technician_notification": {
"sent": true,
"recipient": "sarah.johnson@company.com",
"channels": ["email", "mobile_push"],
"timestamp": "2026-01-13T15:30:05Z"
},
"customer_notification": {
"sent": true,
"recipient": "contact@acmecorp.com",
"message": "Your ticket has been assigned to Sarah Johnson",
"timestamp": "2026-01-13T15:30:10Z"
},
"manager_notification": {
"sent": false,
"reason": "High priority threshold not met"
}
},
"sla_tracking": {
"sla_policy": "4-Hour Response Time",
"sla_deadline": "2026-01-13T18:00:00Z",
"time_remaining_hours": 2.5,
"expected_first_response": "2026-01-13T15:45:00Z",
"sla_risk_level": "medium",
"on_track": true
},
"audit_trail": {
"workflow_run_id": "dispatch-12345-run-001",
"initiated_by": "system_automation",
"initiated_timestamp": "2026-01-13T15:29:48Z",
"completed_timestamp": "2026-01-13T15:30:00Z",
"duration_seconds": 12,
"algorithm_version": "v2.5.1"
}
}
Data Structure Details
Success Indicators
success: Boolean indicating whether dispatching was successfulticket_id: The ticket that was dispatchedticket_info: Summary of ticket details including SLA information
Dispatching Results
- assigned: Whether the ticket was successfully assigned
- assigned_technician: Complete details of the assigned technician
- assignment_timestamp: When the assignment was made
- time_to_dispatch_seconds: Processing time from trigger to assignment
- assignment_method: The dispatching algorithm used
Evaluation Summary
- candidates_evaluated: Total technicians considered
- candidates_available: Technicians currently available
- candidates_qualified: Technicians meeting skill requirements
- top_candidate_score: Highest scoring technician's score
- assignment_confidence: Confidence level in the assignment (low, medium, high)
Assigned Technician Details
Comprehensive information about the assigned technician including:
- current_workload: Active tickets, capacity, and estimated hours
- skill_match: Matched skills, percentage, and certifications
- availability: Current status, shift, breaks, and schedule
- performance_metrics: Historical performance data
- customer_history: Previous work with this customer
Alternative Candidates
List of other qualified technicians with scores and reasons they weren't selected, useful for reassignment scenarios
Dispatching Rules Applied
Details of which assignment rules were triggered and their impact on the final decision
Notifications Sent
Confirmation of all notifications sent to technicians, customers, and managers
SLA Tracking
SLA policy details, deadlines, and compliance tracking information
Error Handling
If the workflow encounters errors or cannot find a suitable technician:
{
"success": false,
"ticket_id": "12345",
"dispatching_results": {
"assigned": false,
"reason": "NO_QUALIFIED_TECHNICIANS_AVAILABLE"
},
"error_details": {
"type": "DISPATCHING_FAILED",
"message": "No technicians available with required skills during business hours",
"code": "ERR-DISPATCH-001",
"timestamp": "2026-01-13T15:30:00Z"
},
"evaluation_summary": {
"candidates_evaluated": 12,
"candidates_available": 0,
"candidates_qualified": 3,
"blocking_factors": [
{
"factor": "availability",
"details": "All qualified technicians are out of office or at capacity"
}
]
},
"fallback_action": {
"action_taken": "escalated_to_manager",
"escalated_to": "dispatch.manager@company.com",
"notification_sent": true,
"ticket_status": "Pending Dispatch",
"manual_assignment_required": true
},
"recommended_actions": [
"Review technician schedules and availability",
"Consider expanding skill requirements",
"Enable override_workload_limit to assign to busy technicians",
"Wait for next dispatch cycle (15 minutes)"
]
}
Common error types:
NO_QUALIFIED_TECHNICIANS_AVAILABLE: No technicians with required skillsALL_TECHNICIANS_AT_CAPACITY: All qualified technicians have full workloadBUSINESS_HOURS_RESTRICTION: Outside configured business hoursSKILL_MATCH_BELOW_THRESHOLD: No technicians meet minimum skill matchSLA_ALREADY_BREACHED: Ticket SLA already violated, escalation neededINVALID_TICKET_DATA: Missing required ticket informationPSA_UPDATE_FAILED: Unable to update ticket assignment in PSATECHNICIAN_UNAVAILABLE: Selected technician went offline before assignment
Dispatching Strategies
The workflow supports multiple dispatching strategies:
Skills-Based Routing
Prioritizes skill matching above all other factors. Best for specialized technical support where expertise is critical.
Round Robin
Distributes tickets evenly across all qualified technicians in rotation. Best for general support with similar skill levels.
Least Busy
Assigns to the technician with the lowest current workload. Best for balancing team utilization.
Hybrid (Recommended)
Combines multiple factors with configurable weights. Balances skills, availability, workload, and performance for optimal assignments.
SLA-Driven
Prioritizes technicians with best on-time performance for high-priority or deadline-sensitive tickets.
Customer Preference
Honors customer-requested technicians when available and qualified.
Best Practices
- Regular Skills Updates: Keep technician skill profiles current with training and certifications
- Workload Monitoring: Regularly review and adjust maximum ticket thresholds
- Performance Reviews: Use dispatching data to identify training needs and top performers
- SLA Configuration: Set realistic SLA policies and ensure technicians understand priorities
- Availability Accuracy: Ensure calendars and schedules are kept up-to-date
- Fair Distribution: Monitor assignment patterns to prevent burnout or underutilization
- Customer Communication: Notify customers of assignments and expected response times
- Escalation Paths: Define clear escalation procedures when dispatching fails
- After-Hours Strategy: Configure on-call rotation or after-hours dispatching rules
- Metrics Tracking: Monitor key metrics like time-to-assignment, first-response time, and workload balance
- Feedback Loop: Collect feedback from technicians on assignment quality and workload
- Override Capabilities: Allow dispatchers to manually override when needed
- Geographic Consideration: Factor in time zones for global support operations
- Specialization Balance: Ensure specialist technicians aren't overwhelmed while generalists are underutilized
- Continuous Improvement: Regularly review and refine dispatching rules based on outcomes
Changelog
2026-01-22
- Initial version of the document