Skip to main content
Task Execution Order

Learn how to define in which order Tasks should be executed in

eLogii avatar
Written by eLogii
Updated this week

Usually, Task order is defined after the optimization has been started, however, it can be pre-determined and you can specify in which order of the Route you want the Task to be executed.

If you're using the Advanced eLogii engine, you can predetermine the Task execution order on CSV import or via API. This is an Advanced engine-exclusive feature and it will not work with the Base (Default) engine.

Determining Task in Route order

When you import Tasks, please make sure that the preAssignment.order column is populated with values from lowest to highest. A lower value means earlier execution, meaning all Tasks with order 1 will be delivered before all Tasks with order 10.

Once you successfully upload Tasks that contain information about the predetermined order in a sequence, it will be visible on the planning screen

Once optimized, Tasks will be delegated based on the specified sequence. Please note that, in case a sequence is specified for all Tasks (1-10 for example), but those Tasks don't have any other pre-determined assignment constraints such as a particular Driver that needs to execute the Task, one Driver might be assigned Tasks 1,3,4,5,9 and another one 2,6,7,8,10. This is because, despite this constraint, the engine will still try to look for the most effective and fastest way to execute Tasks, while respecting the order.

In case you manually assign Tasks and opt to Force assign them to a particular Driver, even though the Driver Schedule, Vehicle capacity, and Depot assignment will be ignored, the pre-assigned Task order will be honored and Tasks will be executed. The Driver will have the Unconstrained tag on their card and all Tasks will be locked.

Task Execution order has precedence over Task time windows. This means that If a Task that is meant to be executed later in the sequence has an earlier time window than a Task ahead of it in the sequence (which has a later time window), the order in the sequence (Task execution order) will be honored, while time windows will not. If this is the case, your Tasks will have a label that states that the Task will not be completed within the specified time window.

Additionally, the execution order, as well as the pre-assignment group, can also be specified after you've already created a Task. Navigate to the Assignment section of your Task and click Edit. Here you will be able to define the execution order, as well as which group the Task belongs to.

Determining a Pre-assigned group

In case you want particular Tasks executed within the same Route, regardless of their order, or the exact Driver executing them, it's possible to group them. You can accomplish this via CSV or API import. The example below shows what it looks like in CSV import:

The field in the CSV file that needs to be populated should be called preAssignment.group. Numbers determine the groups, so Tasks with the same assigned number will always be executed within the same Route.

Once imported and assigned, hovering over the Task card will display its designated group.

You can also determine the Task execution order within the same group by adding the preAssignment.order column and defining the exact order of Tasks in a sequence.

Use cases

There are two common use cases the eLogii team would recommend for this feature.

The first use case covers if you have a fixed Task order within a Route and pre-assigned Drivers executing it, the other use case covers executing Tasks with specific requirements in a particular order.

Pre-assigned Task execution order done by specific Driver

In case you have a preferred Task execution order, or if your Drivers have fixed Routes, this can be achieved through pre-assigning Drivers to Tasks on import. To pre-assign Tasks to a specific Driver, while also specifying the order of execution, in the CSV file, under the column driverUID, copy the desired Driver UIDs (found in Drivers ⇒ Driver profile ⇒ UID) and paste it into the specified column. Make sure you have also pre-determined the Tasks' execution order by populating the preAssignment.Order column. It should look like this:

For example, in case you have 10 Tasks, with their respective order being 1-10, and you want to divide them between 2 Drivers, you don't need to change the order of execution to 1-5 for each Driver, you can leave them as is. The Driver that gets Tasks 1-5 assigned to them will execute Task 1 first, and Task 5 last, while the Driver that gets assigned Tasks 6-10 will execute Task 6 first, and Task 10 last.

After you've imported the Tasks with pre-assigned Drivers and execution order, you won't need to optimize any further as Routes will be created once the import is complete and the specified order of Task execution will be honored.

Executing Tasks with specific requirements in a particular order

For example, in case you need to specify the exact loading order of materials you're delivering, depending on the material you're handling. Let's say you want steel loaded first, then glass on top of it, and you want glass delivered first, and steel last. You can set the order of all glass items to e.g. 1, and steel to 2 (the value is the order of the “delivery group”, and it can be shared between Tasks). The engine would still optimize glass Tasks between them, but they would be done before all steel-related Tasks. This is possible only when using the Advanced engine. Because a lower value means earlier execution - all Tasks with order 5 will be delivered before all Tasks with order 15. Order can be set explicitly through a multi-select action, or by using Task rules.


This is how you can update by multi-select (enter Selection mode ⇒ Select Tasks ⇒ Actions ⇒ Update Execution order):

This would be the desired Task rule configuration:

This example utilizes the Task Custom fields (which you would need to pre-configure), however, you can use Driver Skill, or anything else to accomplish the same.

Did this answer your question?