# When an order changes driver

Before every assignment attempt, the dispatcher checks whether an order already assigned to one driver should instead go to a different one — but **only** on driver priority, never on how urgent or important the order itself is.

## When a reassignment is allowed

| Situation | Result |
|---|---|
| Order has no driver yet | Assign freely |
| Previously assigned driver is no longer available | Assign freely |
| Same driver being considered again | No change needed |
| New driver has better priority | Reassign |
| Current driver has equal or better priority | Keep as-is |

Priority is defined in [Driver classification and priority](/books/console-yF7/page/driver-classification-and-priority).

## Common scenarios

| Current driver | Candidate driver | Outcome |
|---|---|---|
| External driver | Internal driver | Reassigned — better type |
| Idle, at store | Idle, at store | No change — both equally good |
| Idle, away from store | Idle, at store | Reassigned — better location |
| Waiting, at store | Idle, away from store | No change — current is still better |
| External, away from store | External, away from store | No change — no real improvement |

## Passing the priority check is not a delivery guarantee

Passing it only means the dispatcher will **attempt** the assignment. It still has to verify the new driver can actually deliver on time:

| Driver situation | Delivery time checked? |
|---|:---:|
| Idle, at store | No — always the fastest possible option |
| Idle, away from store | Yes |
| Waiting (already has orders) | Yes — must be able to deliver everything |
| On The Way | Yes — the full route is recalculated |

If the delivery-time check fails, the assignment is reverted and the order stays available for the next driver in line. **It isn't lost.**

## Rules that never change

- Orders already out for delivery — the driver has left the store — are **never** reassigned.
- Manually assigned orders, assigned by an employee rather than the dispatcher, are **completely locked** from automatic reassignment.
- Internal drivers can take an order away from an external driver. The reverse is never allowed.