external_system_id
This is the most strictly validated file in the import. Four separate rules can reject it
beyond the usual reference checks, and they abort in stages, so fixing one class of problem
can reveal another.
Columns
Rules
Every row needs at least one ofvehicle_number / component_serial_number.
A threshold must be configured
A threshold must exist for the (measurement_type_code, component_type_code) pair, or the
measurement is refused outright. This is a configuration step done in the application — the
pair’s existence is what registers it as importable at all.
The value must be within bounds
value must fall inside that threshold’s minimum and maximum. Bounds are inclusive: a
value exactly equal to the limit passes. Each bound is only enforced when it is configured,
so a threshold with neither set enforces nothing while still satisfying the check above.
Position must match the active mount
position must equal the slot position of the component’s active mount at measured_at.
Send it when the component was mounted; leave it empty when it was not. A mismatch, a
missing position on a mounted component, and a position on an unmounted one all reject the
file.
This check runs only for rows that resolve to a component. On a vehicle-only row,
position is accepted without being checked. Note also that “empty” must mean a genuinely
empty field — a whitespace-only value is treated as set, and will fail.Values may not move against the progression rule
A measurement type may declare a progression rule. ADESCENDING type such as wheel
diameter may not increase; an ASCENDING type may not decrease. An equal value never
violates the rule.
The exception is a reset action: if action_code is one of that type’s configured reset
actions — a reframing resetting a wheel diameter, for instance — the movement is allowed.
Comparison is per component and measurement type, across both the file and existing data,
and deliberately follows the component between slots: position is not part of the
comparison, so a wheelset moved to another position is still compared against its own
history.
Action codes must be allowed
Whenaction_code is given it must be one of the measurement type’s allowed action codes.
The check is skipped entirely if the type has no allowed list configured.
Example
A mounted wheelset, withposition matching the active mount:
vehicle_number, empty position — and a reset action that
permits the diameter to increase: