Skip to main content

Optimize routes for a technician

Planner ~10 min

Sequence a day of jobs by location and export the result as a route. Only useful when your jobs have valid addresses, so check that first.

Before you start

Everything here depends on coordinates, so check that first. Jobs hold the address that drives every task and appointment they spawn, and anything without coordinates is silently skipped on the map. Not flagged, not warned about: simply absent. A route that looks like it is missing stops usually means an address that never geocoded.

See geocoding for what it takes to turn an address into coordinates.

Two of the steps below also carry entitlements worth confirming before you promise this to anyone. The optimizer needs Route optimization enabled in preview features and the Advanced map add-on on the tenant.

1. Confirm the addresses

Open the map and check that the day's jobs actually appear as pins. This is the cheapest possible test and it catches the failure mode above before you spend time on sequencing.

Resources carry two addresses: a home address marking where they start the day, and an actual address fed by a tracking system or the mobile app. A toggle switches the map between them. Which one is active matters here, because the round trip anchors on it.

2. Create the round trip

Select a cell on the planning board and press R, or right-click and choose Show daily route.

That produces a round trip: the resource's home or actual address as a fixed start and end, and the appointments already planned for that resource on that date as the variable stops in between. It is the classic travelling salesman shape, and Dime.Scheduler treats it as a first-class object rather than a drawing.

This distinction matters for what you can do next. The route sequence grid runs in two modes:

  • Free composition is the default, where you pick pins on the map and the grid composes a route from your selection. Good for inspecting or comparing, but it cannot write back.
  • Round trip mode is committed planning, and it is the only mode that unlocks writing to the planning or calling the solver, because both need a specific resource and date as context.

Creating the trip from the board as above puts you in round-trip mode.

3. Read the numbers

The grid lays the stops out as rows with the figures the planner acts on: distance per leg, cumulative distance, travel time per leg, cumulative travel time, working time at each stop, and total duration.

A live summary pinned to the bottom keeps the trip-wide totals visible regardless of how many stops are in view: distance, travel time, work time, and the total of the last two. Travel and work times are rounded to the nearest five minutes.

These columns are computed in memory as the route changes rather than stored, but they behave like any other column, so you can hide, reorder, and save them into the layout.

4. Optimize

Hand the trip to the solver with the sparkle button. It returns an order that minimizes travel time and distance, and both the map and the grid update in place.

The useful property: optimizing does not write back to the planning. The planner can optimize, add more appointments, pull in open tasks, and reoptimize as often as they like without committing anything. Nothing changes on the board until they confirm.

You can also reorder by hand: drag a row in the grid and the route on the map recalculates. For small adjustments this beats re-running the solver.

5. Commit it

When the day looks right, confirm the trip to push the new order to the planning board.

Verify

Compare the summary totals before and after optimizing. If they are identical, either the route was already optimal or the solver never ran, and the two are worth telling apart.

Then check the board reflects the new sequence, since optimizing alone deliberately does not.