View Routing Run Results Analysis
Starting Update 22C, Routing allows you to collect routing run statistics over different days and different buckets for further analysis to identify more effective ways to route data and apply preventive measures if needed.
This feature offers these new functionalities:
- routingRunEvent has some new fields added to it, and two fields - routingRollbackRunId and type are obsolete as of now
- Option to export daily routing run results into OAC and Daily Extract
- Calculations of Not Routed Activities, Average Working Time, Average Overtime, Average Travel Time, Average Downtime and Average Mileage that are shown in Routing Summary and Report Screens fixed for correctness to cover corner cases
- Messages for non-successful routing runs (skipped, failed or terminated) slightly corrected for clarity
Before analyzing routing runs, make sure that you have an existing OAC or Daily Extract integration 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. Is not 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. Is not 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'. List of possible errors and solutions are available under Troubleshoot Routing in the 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 may 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 is 'bulk' 'routing', 'result' is 'succeeded' but was not 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 may 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 | The assurance of routing result, from 0 to 100. The lesser assurance is, the less confident is the result, which, in most cases, may be connected to sub-optimal results. Typically, for good results one may expect assurance 85 or more. |
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 is an optimization goal at the routing run, the field shows the goal. May 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 were not 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 may 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 were not assigned in accordance to optimization criteria chosen |
resourceBlockedDueToRoutingScheduleCount | BLOCKED_RESOURCES | int | Resource are blocked by another run as of sub-optimal 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 just relax 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 |