Validation
Validation runs in two stages. Passing the first does not mean a record will reach OTM.
| Stage | Where it runs | What it can do |
|---|---|---|
| 1. Pre-validation | In your browser, before you submit | Blocks submission until you fix it |
| 2. Validation against OTM | On the server, against live OTM | Can reject the file, or set individual records aside |
Stage 1 - Pre-validation
Runs on your machine, so errors surface while you can still fix them, and the interface stays responsive on a 50,000-row workbook. Each rule below can be switched off per template in Template Manager - Validations. Everything you do here is on the Data Upload screen.
Header check
| Result | Meaning |
|---|---|
| Matched | Present and recognised. Header turns green; required fields carry an asterisk |
| Missing | Required or expected by the template but absent. Red |
| Extra | In the file but not in the template. Amber warning |
Schema rules
Auto-derived from the template:
- Required - empty values in required columns are flagged.
- Type - Numeric and Currency columns must be numbers; Dropdown columns must match one of the allowed values.
- Date format - accepts
YYYY-MM-DD,YYYYMMDD,DD-MM-YYYY,DD/MM/YYYYand ISO datetime.
Business rules
- Length - minimum, maximum or exact character count.
- Conditional-required - "field X is required when field Y equals Z", e.g.
postal code is required when location type is
USZIP5. - Format normalisation & auto-fix - silent corrections applied for you, e.g.
zero-padding
USZIP3to 3 digits andUSZIP5to 5 digits. Auto-fixed cells turn amber so you can see what changed. - Cross-field rules against master data - e.g. "if
src_typeisUSZIP3, thensrc_postalmust exist in the OTM postal master". Checked against the OTM master-data snapshot maintained via OTM Sync. - Unique check - duplicate Rate IDs within the same upload are flagged.
- Allocation % must total 100% per lane - percentages are group-summed by lane; any lane whose total is not 100% across carriers is flagged before submission rather than after publish.
Duplicate detection
- Fuzzy (level 1) - same rate identity plus same per-shipment cost block. Catches "looks like the same rate, different formatting".
- Exact (level 2) - same identity, cost block and primary identifier.
Right-click a flagged row and choose Mark OK to dismiss a false positive. The dismissal applies for the current session.
Stage 2 - Validation against OTM
Once your file is submitted, a second validation runs on the server, against live OTM. Stage 1 can only check your file against itself and a local snapshot; this stage asks OTM directly.
What it checks
| Check | What it means |
|---|---|
| Master records exist | Every Rate Offering, Lane, Rate Service, Capacity Group and Service Provider your file references must already be in OTM |
| Already in OTM | A record with the same identity is already loaded |
| Overlapping dates | A record already in OTM covers part of the validity range you are loading |
Records can be set aside, not just rejected
This is the important difference from Stage 1. Rather than failing the whole file, this stage can skip individual records: the rest of the file goes to OTM, and the skipped ones do not.
Common reasons, as they appear in the report - each names the missing record:
| Reason | What it means |
|---|---|
Rate Offering Missing: <id> | The rate offering this record points at does not exist in OTM |
Lane Missing: <id> | The lane does not exist in OTM |
Capacity Group Missing: <id> | The capacity group does not exist in OTM |
Service Provider Missing: <id> | The carrier / SCAC is not registered in OTM |
Rate Service Missing: <id> | The rate service does not exist in OTM |
Duplicate - already exists in OTM | This exact record is already loaded |
Overlapping dates - a record already in OTM covers part of this range | The validity window collides with an existing record |
In View Errors, each object's Flagged count opens its findings, with every record behind each one. Skipped records appear in the validation result on the upload row, as Skipped rows in View Source, and - when the file goes for approval - in a workbook and a text file grouped by reason, attached to the approval email. Approvers should read that list before approving: those records will not reach OTM. See Emails.
The failure threshold
Every project carries a threshold - the share of a file that may fail this stage while the file still goes through. It is set as a percentage on the GoRate Setting page, not on the template.
- Above the threshold - the whole file is rejected (Validation Rejected).
- At or below it - the failing records become skips and the rest of the file passes. The Upload Manager records that the threshold was applied.
- 0% - any failure rejects the whole file.
This lets a large file proceed on the strength of its good records instead of being blocked by a handful of bad ones.
Transit-time defaults
Where a lane carries no transit time in either your file or OTM, validation can stamp a default rather than reject the row. Records treated this way are listed in the completion email, so the substitution is never silent.
When a lot of records are skipped for the same reason
A large, uniform skip count almost always points at missing master data in
OTM rather than at your file. If half a file is skipped with
Rate Offering Missing: <id>, the rate offering for that combination has not been
created in OTM yet.
Take the reason and the count to your administrator - the fix is in OTM, not in the workbook. Once the missing records exist in OTM, Revalidate the same file from View Source; there is no need to upload it again.