Usually, the 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 importing Tasks, make sure pre-assignment is set up correctly. The Order column should list values in ascending order, where a lower number represents an earlier stop. For example, every Task with order 1 will be completed before any Task 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 takes priority over Task time windows.
If a Task scheduled later in the sequence has an earlier time window than a Task that comes before it, the system will follow the set execution order and ignore the conflicting time windows.
In such cases, affected tasks will display a label indicating they cannot be completed within their 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.
How Execution Order and Groups Work
Assigning the same execution order to multiple Tasks (e.g., all set to 1) does not guarantee they’ll be placed as the first Task on separate routes. They can still appear on the same route unless other constraints prevent it.
An order value simply dictates relative sequence: Tasks with order 1 will always be scheduled before tasks with order 2, but multiple Tasks can share the same order within a single route.
For example, if three Tasks have order 1 and three have order 2, a single route could contain all six Tasks, with the three “1s” listed first and the three “2s” following. The last Task’s route index would be 6, even though its order is 2. In short, the Route index shows the final position of each Task after optimization, while the execution order defines only their relative execution order. For that reason, multiple Tasks can share the same execution order and appear together on the same route, but Tasks with lower numbers will always be scheduled before those with higher numbers.
A single route can contain Tasks from multiple assignment groups. Different groups don’t guarantee separate routes; they only ensure that Tasks within the same group stay together.
If assignment groups also have their own execution order, the system always respects the sequence within each group first. For example, if Group A has Tasks ordered 1 → 2 → 3 and Group B has Tasks ordered 1 → 2, the route will run all of Group A’s Tasks first (1, 2, 3) and then Group B’s tasks (1, 2). Or it could prioritize Group B before Group A, depending on the Tasks' locations. Even though both groups use the same order numbers, the internal order of each group takes priority; so instead of grouping all 1s before 2s, Tasks will follow a sequence within the same group, not outside of it.
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 a 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 them 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 who gets Tasks 1-5 assigned to them will execute Task 1 first, and Task 5 last, while the Driver who 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.