Configure dynamic scheduling
Dynamic Scheduling enables automatic task assignment to field agents based on predefined rules and configurations. This feature helps streamline task distribution by verifying the correct tasks are assigned to the most suitable agents, optimizing travel time, skill matching, and task priority.
Before you begin
- Select dynamic scheduling as the preferred task assignment method. This verifies that tasks are automatically assigned to field agents based on predefined criteria and rules. For more information, see task assignment method.
- Set up agent schedules so that dynamic scheduling systematically verifies optimal task allocation. For more information, see Set up agent schedules for dynamic scheduling.
- Review the properties and other installed components related to dynamic scheduling. Customize the settings to align with your organization's specific requirements. For more information, see Review system properties and components for Dynamic Scheduling.
- Verify to configure travel time and distance calculation to determine how the system calculates an agent's estimated travel time and distance to a task location. You can choose between using the Google Maps API for real-time
travel estimates or straight-line estimates based on the geolocation property settings.
- If the
Use Google Maps API for travel time estimatesgeolocation property is enabled, choose between using the Google Maps API or straight-line estimates. - If the
Use Google Maps API for travel time estimatesgeolocation property is turned off, the system considers the Estimated Travel Duration field's value from the work order task.
- If the
Role required: admin
About this task
Dynamic Scheduling Config for Work Order configuration is available with the Dynamic Scheduling plugin. You can modify the configuration as needed or use as a template to create your custom
configuration.Procedure
Result
Dynamic scheduling automatically assigns tasks to field agents based on the defined rules and schedules.
Create a task filter for dynamic scheduling
Task filters allow you to define criteria for selecting and assigning tasks to the most suitable agents using dynamic scheduling.
Before you begin
Role required: admin
About this task
Task filters help you refine how tasks are assigned to the most suitable agents. You can use the default filters provided by the Dynamic Scheduling plugin or create custom filters tailored to your organization’s specific needs.
Dynamic Scheduling, when combined with Auto Assignment and Immediate Assignment, offers flexibility in task allocation. Tasks can be assigned instantly or at scheduled intervals, depending on your configuration.
| Auto assignment | Immediate assignment | Result |
|---|---|---|
| Enabled | Enabled | Dynamic Scheduling runs instantly, automatically assigning tasks to field agents. |
| Enabled | Disabled | Dynamic Scheduling runs, adding tasks to a scheduled batch. Tasks are assigned to agents at regular intervals. |
| Disabled | Disabled | The dispatcher manually triggers Dynamic Scheduling, and tasks are sent back for confirmation before assignment. |
Procedure
Result
(Criteria_1_rating * Criteria_1_weight) / total_criterion_weight +
(Criteria_2_rating * Criteria_2_weight) / total_criterion_weight +
(Criteria_3_rating * Criteria_3_weight) / total_criterion_weight = agent_rank/scoreWhat to do next
Matching criteria for assigning tasks
The Dynamic Scheduling uses configurable matching criteria, such as skills and availability, to evaluate the agents in a selected group and provide an overall ranking.
- Simple Match: creates one-to-one matching, such as matching the time zone of an agent with the time zone of a task location.
- Aggregate: uses a simple query and returns an aggregate result. For an aggregate type, select a table and create a filter, and then select an aggregate field such as the Assigned to field. This type of query returns a set of users.
- Scripted: uses a scripted query which returns a list of users.
| Criteria | Description | Type | Applies to [Table] |
|---|---|---|---|
| Agents with most parts | Identify agents with the most number of required parts using dynamic scheduling. | Scripted | Task |
| Assigned Cases | Calculates the workload based on all the assigned cases (all priorities P1, P2, P3, etc.). The agent's overall rank decreases with more assigned cases. The more cases assigned, the lower the contribution to the agent's overall rank. | Aggregate | sn_customerservice_case |
| Availability Today | Determines availability based on the schedule, overlap timezone, and current time. Availability is calculated based on the agent's work schedule, and personal time off. The more availability an agent has, the higher the contribution to the agent's overall rank. | Scripted | Task |
| Consistent Assignment for SM tasks | Assigns work order tasks with the same parent work order to the same agent. Ensures assignment consistency across all matching agents. | Scripted | sm_task |
| Current Distance From Task | Considers an agents distance from the task location. | Scripted | Task |
| Distance from Task | Evaluates the agent's distance from the task location. | Scripted | Task |
| Distance from task with radius exclusion | Ranks agents based on the nearest location to perform the job, excluding those outside the defined radius. | Scripted | Task |
| Filter out off-shift agents | Excludes agents who are not available based on schedule or having time-off events. | Scripted | wm_task |
| Ignore Excluded Technician | Prevents automatic assignment of excluded technicians to work order tasks associated with specific accounts. Excluded technicians won’t be assigned if the work order task is associated to an Account for which the technician has been excluded. | Scripted | wm_task |
| Ignore Rejected Technician | Avoids reassignment of tasks to technicians who have recently rejected the same task. The system property work.management.rejected.technician.duration determines the time period from when a technician rejected a task to when that task can be automatically reassigned to the same technician. | Scripted | wm_task |
| Last Assigned | Prioritizes agents based on their most recently assigned work to balance the workload. For the sake of balancing assigned work, prioritized the agent based on the last assigned work. | Scripted | task |
| Matching Mandatory Parts For Dynamic Scheduling | Assigning only the agents with the mandatory parts. Ranks agents based on the availability of mandatory parts required for the job. | Scripted | task |
| Matching Mandatory Skills For Dynamic Scheduling | Ranks agents based on the availability of mandatory skills and optional skills defined in Task Skills that are required for the task. The more skills that match, the higher the contribution to the agent's overall
rank. Note: If using the mandatory skills feature, use the Matching Skills - Mandatory Skills Support criterion to match agents with the mandatory skills identified for a case. |
Scripted | task |
| Matching Skills | Evaluates availability based on the skills matching the task requirements. The agent's rank increases with more matching skills. | Scripted | task |
| Matching Skills Level Gap For Dynamic Scheduling | Ranks agents based on the number of skills and skill levels, using the "less is better" method. Prioritize agents with the sufficient skill level over agents that are over-skilled for the task. | Scripted | task |
| Prioritize Preferred Technicians | Assigns tasks based on technicians who are most preferred for working on a customer account. | Scripted | wm_task |
| Radius Exclusion | Ranks agents based on the defined radius, excluding those outside the radius. | Scripted | task |
| Rank Preferred Technicians | Identifies technicians who are most preferred for working on a customer account using dynamic scheduling. | Scripted | task |
| Timezone Overlap | Ranks agents based on their timezone overlap with the task location. | Scripted | task |
| Matching mandatory crew skills for dynamic scheduling Note: Needs Field Service Crew Operations plugin (com.snc.fsm_crew_scheduling) to be activated. |
Match mandatory skills for a crew task to crews with agents that have those skills. | Scripted | wm_crew |
| Crew skill level gap for dynamic scheduling Note: Needs Field Service Crew Operations plugin (com.snc.fsm_crew_scheduling) to be activated. |
Match mandatory skill levels for a crew task, to crews with agents that have skills at the required level. | Scripted | wm_crew |
| Crew Matching Skills Note: Needs Field Service Crew Operations plugin (com.snc.fsm_crew_scheduling) to be activated. |
Match crews with the skills listed in the work order task, and assign the task to that crew. | Scripted | wm_crew |
| Matching crew skills for task resource requirements Note: Needs Field Service Crew Operations plugin (com.snc.fsm_crew_scheduling) to be activated. |
Match crews with the skills listed in the resource requirements, and assign the task with those resource requirements to that crew. | Scripted | wm_crew |
| Crew Distance from Task Note: Needs Field Service Crew Operations plugin (com.snc.fsm_crew_scheduling) to be activated. |
Evaluates the crew's distance from the task location. | Scripted | wm_crew |
| Matching Agent Efficiency Criteria for Dynamic Scheduling Note: Needs Field Service
Agent Efficiency plugin (com.snc.fsm_agent_efficiency) to be activated. |
Assigns a work order task to an agent by matching the Agent Efficiency criteria specified in the work order task with the agent's efficiency criteria. | Scripted | wm_task |
| Matching Demand Channel For Dynamic Scheduling Note: Needs Workforce Optimization and Territory model to be enabled. |
Identifies technicians who support the demand channel of a work order task in the selected territory during auto-assignment. | Scripted | wm_task |
- ranking and display usage
- ranking method
- ranking weight
- threshold
- active/inactive
Ranking and display usage
- Ranking and display: uses the criterion to determine agent ranking and displays it in a column on the workbench.
- Display only: displays the criterion in a column on the workbench but does not use it to determine agent ranking.
- Ranking only: uses the criterion to determine agent ranking but does not display it on the workbench.
Ranking method
- More is better: for example, more availability is better when determining the agent ranking.
- Less is better: for example, fewer assigned cases are better when determining agent ranking.
Weight
Each matching criterion has an assigned weight. By default, the matching criteria in the Recommendation for Case Assignment matching rule have an assigned weight of 10. You can assign a higher weight to the criteria that are more important.
Threshold
A threshold sets a minimum requirement for a criterion. For example, set the threshold of the Matching Skills criterion to 3 if you want to see only those agents who have at least three of the required skills for a task. For availability, set the threshold to the desired number of hours to display only those agents who have that minimum number of work hours available. You can set the threshold in the Select Criteria related list on the Matching Rule form. If necessary, personalize the list and add the Threshold column.
Active/Inactive
There can be several matching criteria associated with the matching rule that determines the assignment workbench configuration. Each individual criterion can be set to active or inactive. Changing this setting has an immediate impact on the agent ranking. You can make this change in the Select Criteria related list on the Matching Rule form. If necessary, personalize the list and add the Active column.
Calculating the agent ranking
- Calculate a number for each criterion.
- Multiply that number by the criterion weight.
- Divide the result by the total of all criterion.
- Repeat for each criterion and add the results.
- Matching Skills with Mandatory Skills Support: 5/6
- Availability Today: 7 hours
- Assigned Cases: 2
- Matching Skills:
2 / 3 = 0.666(with 3 being the maximum number of skills) - Availability Today:
7 / 8 = 0.875(with 8 being the maximum number of hours) - Assigned Cases:
2 / 26 = 0.0769(with 26 being the total number of tasks in the table) - Weight: each matching criteria has an equal weight of 10
((0.666 x 10) / Total of criterion weight (10+10+10)) + ((0.875 x 10) / Total of criterion weight (10+10+10)) + ((0.0769 x 10) / Total of criterion weight (10+10+10))(6.66 / 30) + (8.75 / 30) + (0.769 / 30)0.222 + 0.291 + 0.0256 = 0.53This calculation is performed for each agent in the assignment group. Agents are ranked based on the value of this calculation, with the highest number earning the highest ranking.
Create a task ordering rule
Dynamic scheduling uses task ordering rules to prioritize and arrange tasks effectively. These rules ensure tasks are handled in the right sequence, helping you streamline field service operations.
Before you begin
Role required: admin
About this task
Task ordering rules let you control how tasks are prioritized during scheduling. By defining rules, you can ensure that the most critical tasks are handled first, and tasks are ordered based on your organization’s specific needs. Multiple rules can be created and applied in sequence, based on execution order, to give you maximum flexibility and precision.
- Execution order: Rules are evaluated in order, with the rule having the lowest execution value taking precedence.
- For instance, you might create a rule that prioritizes tasks by urgency (P1, P2, P3).
- Another rule can be applied to organize tasks with the same priority by their SLA due date.
- Task dependencies: Task dependencies can override task ordering rules to ensure proper task flow.
- If a predecessor task gets reassigned and a successor task is assigned, the predecessor task is scheduled before the successor task starts.
- If a predecessor task is unassigned, the successor task remains unassigned.
- If a predecessor task is assigned, the successor task waits until the predecessor task is completed.
- If a predecessor task has a lower priority, the successor task waits until the predecessor task is assigned.
Note:Dynamic scheduling only supports Finish to Start advanced task dependency with no maximum or minimum lag time. Other types of task dependencies will be ignored.
- Simple rule
- Sorts tasks based on one selected field from the task table.
- Choose either ascending or descending sort order.
- Advanced rule
- Sorts tasks based on selections from two unrelated tables.
- Requires a reference field to connect the task table and another table. For example, you can sort work order tasks based on SLAs stored in the Task SLA table.
- Work order task priority: Uses the task's priority to determine task order, with a default execution order of 100.
- Work order priority: Uses the overall work order's priority to determine task order, with a default execution order of 200.
- Healthcare: Prioritize equipment maintenance tasks based on the criticality of medical devices.
- Manufacturing: Sort tasks by the cost of machine downtime per hour to reduce impact on production.
- Retail: Use advanced rules to prioritize tasks by footfall, ensuring high-traffic stores are serviced first.
- Utilities: Simple rules can prioritize emergency tasks, like power outages affecting critical infrastructure.
Procedure
Result
Dynamic scheduling will use this rule to prioritize tasks based on the criteria you’ve defined, ensuring that high-priority tasks are scheduled appropriately.
What to do next
Create a task unassignment constraint
Dynamic scheduling allows you to define unassignment constraints that prevent certain tasks from being unassigned, even when lower in priority. This feature ensures that critical tasks stay assigned, based on dependencies or urgency.
Before you begin
Role required: admin
About this task
Unassignment constraints help control when tasks can or cannot be unassigned, ensuring that essential tasks remain assigned. This prevents disruptions, especially when tasks have dependencies or are time-sensitive. For example, a task nearing its SLA breach or one that requires sourced parts should not be unassigned, regardless of its relative priority in the task ordering rules.
- Task with downstream: Prevents unassignment if the task has downstream tasks that depend on it.
- Would breach SLA in the next 5 hours: Prevents unassignment if the task's Service Level Agreement (SLA) is expiring within five hours.
- Part sourced: Prevents unassignment if one or more parts required for the task have already been sourced.
Enabling the unassignment option in Dynamic Scheduling configuration allows the system to unassign tasks in favor of more important tasks (as determined by task ordering rules). However, unassignment constraints can prevent specific tasks from being unassigned, even if the task is of lower priority. If a task is unassigned and has downstream tasks, the downstream tasks are also unassigned and added to the pending dispatch queue.
- Healthcare: Prevent unassignment of critical medical equipment maintenance tasks nearing an SLA breach.
- Manufacturing: Block unassignment of tasks that have sourced parts, ensuring resources are used efficiently.
- Utilities: Keep emergency repair tasks assigned when downstream dependencies are involved.
Procedure
Result
This constraint will prevent task unassignment based on the specified conditions, ensuring that tasks are not unassigned even if they have lower importance according to the task ordering rules.