migration
Importing data from CSV
The generic CSV importer for bringing legacy records into any QEHS module. Field mapping, data types, validation, and dry-run preview.
10 min read · 3 sections
Prepare your CSV
- UTF-8 encoding, comma-separated, one header row.
- Dates in ISO 8601 (YYYY-MM-DD) or your locale format (auto-detected).
- Booleans as true/false, yes/no, or 1/0.
- Lookup references by display-name; the importer resolves to internal IDs.
- Location as path, e.g. "Global › North America › Plant 1 › Line A".
Import flow
- Open the module → ⋯ menu → Import.
- Upload the CSV. The importer parses the header and suggests field mappings.
- Review mappings. Unmapped columns show a warning; you can drop or create a new field on the fly.
- Run a dry run. The preview shows N rows, X errors, Y warnings — every error is row+column specific.
- Commit. Imported rows are tagged with the import batch ID so you can roll back if needed.
Common issues
| Symptom | Cause | Fix |
|---|---|---|
| "Lookup not found" | Typo or missing lookup row | Add the lookup row first or allow auto-create |
| "Date invalid" | Excel stored as number | Reformat the column as Text before export |
| "User not found" | Person field expected an email | Map to userEmail column or invite missing users |
| "Duplicate external ID" | Re-running the same import | Use the "Skip duplicates" option |
| BOM characters | Some Excel exports add BOM | Save as "CSV UTF-8 (Comma delimited)" |