View Routing Run Results Analysis
Routing enables you to collect routing run statistics across different days and buckets for in-depth analysis. This helps identify more effective routing strategies and apply preventive measures when necessary.
- The routingRunEvent includes additional fields and the fields - routingRollbackRunId and type are now obsolete.
- You can export daily routing run results to OAC and Daily Extract for further analysis.
- The application calculates Not Routed Activities, Average Working Time, Average Overtime, Average Travel Time, Average Downtime, and Average Mileage accurately, covering corner cases in the Routing Summary and Report screens.
- Displays clearer messages for non-successful routing runs—such as skipped, failed, or terminated.
Before analyzing routing runs, make sure that you've an active integration with OAC or Daily Extract or add a new one.
Follow these steps:
Results:
This table lists the fields you can add:
Event Field name for REST API | Recommended Field Label for OAC | Type of the field | Definition of the field |
---|---|---|---|
routingRunId | ROUTING_RUN_ID | int | The unique ID of the specific routing run |
routingPlan | ROUTING_PLAN_NAME | string | The name of the routing plan that was run. Isn't unique. |
routingPlanId | ROUTING_PLAN_ID | int | The unique ID of the routing plan that was run. |
routingProfile | ROUTING_PROFILE_NAME | string | The name of the routing profile that the routing plan belongs to. Isn't unique. |
routingProfileId | ROUTING_PROFILE_ID | int | The unique ID of the routing profile that the routing plan belongs to. |
startType | TYPE_OF_ROUTING_START | string | Type of routing start:
|
resourceId | RESOURCE_INTERNAL_ID | int | The internal ID of the routing bucket. |
targetDate | ROUTING_TARGET_DATE | string | The date for which the activities are routed. The format is 'YYYY-MM-DD'. |
numberOfDays | NUMBER_OF_DAYS ROUTED | int | For a single day routing, the value is 1. For multi-day routing, the value is the number of days routed, starting from 'targetDate' and going into the future. |
result | ROUTING_RESULT | string |
|
message | FAILURE_MESSAGE | string | The field contains the error description when 'result' is 'failed' or 'skipped'. For list of possible errors and solutions, see the Troubleshoot Routing section in Using Routing guide. |
routingRunDuration | ROUTING_RUN_DURATION | int | The duration (in seconds) of the routing run. |
activitiesMatched | ACTIVITIES_MATCHED_FILTERS | int | The number of activities and per-existing activity segments matching the routing plan filters. |
activitiesInRoutesBeforeRouting | ACTIVITIES_IN_ROUTES_BEFORE | int | The number of activities and per-existing activity segments that were in routes of resources before the routing run. |
activitiesRouted | ROUTED_ACTIVITIES | int | The number of activities scheduled and assigned by the routing run. |
activitiesNotRouted | NOT_ROUTED_ACTIVITIES | int | The number of activities matching the routing plan filters but not routed. |
resourcesMatched | RESOURCES_MATCHED_FILTERS | int | The number of resources matching the routing plan filters. |
resourcesUsed | RESOURCES_WITH_CHANGES | int | The number of resources with assigned or removed activities by the routing run. |
averageWorkingTime | AVERAGE_WORKING_TIME | int | The average working time of the resources (in minutes). |
averageOvertime | AVERAGE_OVERTIME | int | The average overtime time of the resources (in minutes). |
averageTravelTime | AVERAGE_TRAVEL_TIME | int | The average travel time of the resources (in minutes). |
averageDowntime | AVERAGE_IDLE_TIME | int | The average downtime time of the resources (in minutes). |
extendedStatus | EXTENDED_STATUS | string |
The field includes:
If type is 'routing', then next position in the field shows routingAlgorithmType. This field might take values: bulk, urgent, and immediate. If type is 'bulk' or 'routing' then next position in the field shows shows result if it differs from possible values of the field result. When there are no activities found, the value is 'skipped' The next position in the field is set to notAccepted and points at the case when it's 'bulk' 'routing', 'result' is 'succeeded' but wasn't applied Allowed combinations:
|
averageMileage | AVERAGE_MILEAGE | int | The average travel mileage of the resources (in miles or km). |
reoptimizedActivities | REOPTIMIZED_ACTIVITIES | int | The number of activities re-optimized by the routing run. |
createdActivities | CREATED_ACTIVITIES | int | The number of activities were created automatically for the routing run. |
removedActivities | REMOVED_ACTIVITIES | int | The number of removed activities (which might be warehouse visits or activity segments) |
startTime | ROUTING_RUN_START_TIME | string | The time when the routing run started in UTC time zone. The time format is YYYY-MM-DD HH:MM:SS. |
assurancePercentage | ASSURANCE_OF_ROUTING_RESULT | double | Assurance represents the confidence level of the routing result, ranging from 0 to 100. Lower assurance indicates less confidence in the result, which often correlates with suboptimal outcomes. Typically, good results have an assurance value of 85 or higher. |
consumedTime | CONSUMED_TIME | int | Actual time (in seconds) that was consumed by SLR and routing engine during the routing run. |
routingPlanTimeLimit | TIME_LIMIT | int | Time limit for the routing plan (in seconds). |
routingPlanOptimizationGoal | OPTIMIZATION_GOAL | string |
If there's an optimization goal at the routing run, the field shows the goal. Might be one of the following:
|
routingPlanTimeLimitSlrPercentage | PERCENTS_OF_TIME_LIMIT_FOR_SLR | int | Part of total time limit which is time limit for SLR service |
notAssignedDueToValidationIssuesCount | NOT_ASSIGNED_VALIDATION | int | Configuration / Data validation errors |
notAssignedDueToChangesWhileRoutingWasRunningCount | NOT_ASSIGNED_ROUTING_RUNNING | int | The assignment is impossible due to changes that happened while routing was running |
notAssignedDueToActivityConfigurationCount | NOT_ASSIGNED_ACTIVITY_CONFIG | int | Not-assignment reason: configuration of an activity |
notAssignedDueToResourcesConfigurationCount | NOT_ASSIGNED_RESOURCES_CONFIG | int | Not-assignment reason: configuration of resources |
notAssignedNeedsManualAssignmentCount | NOT_ASSIGNED_ASSIGN_MANUAL | int | Not-assignment reason: the constraint violation. Try to assign the activity manually |
notAssignedOtherIssuesCount | NOT_ASSIGNED_OTHER | int | Other Not-Assignment Reasons |
partiallyAssignedSegmentableActivitiesCount | PARTIALLY_ASSIGNED | int | Partially assigned segmentable activities |
notAssignedDueToDynamicModeRestrictionsCount | NOT_ASSIGNED_DYNAMIC_MODE | int | Activities weren't assigned in accordance with routing plan dynamic mode settings |
notAssignedDueToCostSettingsCount | NOT_ASSIGNED_COSTS_SETTINGS | int | Not-assignment reason: routing plan and/or resource type cost settings might be suboptimal |
notAssignedDueToTravelRestrictionsCount | NOT_ASSIGNED_TRAVEL_SETTINGS | int | Not-assignment reason: activity locations and routing plan travel settings prohibits assignment |
notAssignedDueToOptimizationCriteriaCount | NOT_ASSIGNED_THRESHOLDS | int | Activities weren't assigned in accordance to optimization criteria chosen |
resourceBlockedDueToRoutingScheduleCount | BLOCKED_RESOURCES | int | Resource are blocked by another run as of suboptimal routing plan schedule |
notAssignedNeedsOvertimeOverdueRulesRelaxationCount | NOT_ASSIGNED_OVERTIME_OVERDUE | int | Not-assignment reason: the overtime/overdue constraint violation. Try to assign manually with relaxed constrains or relax the business rules on overdue/overtime for the routing plan |
subcategory | SUBCATEGORY | string | Reserved for future needs |
resourceExternalId | RESOURCE_EXTERNAL_ID | string | The external ID of the routing bucket. |
routingRollbackRunId | RUN_ID_ROLLED_BACK | int | obsolete |
type | TYPE_OF_THE_RUN | string | obsolete |