migration
Moving from a legacy EHS system
Standard patterns for exporting from a legacy EHS product (no vendor names) and landing cleanly in QEHS.
12 min read · 3 sections
High-level approach
Treat the cutover as three waves: (1) historical records read-only, (2) active records for continuity, (3) open workflow items for business continuity. Most customers keep the legacy system in read-only mode for 30–90 days so auditors can still reach old records directly.
Standard export formats and mapping
| Legacy entity | Target module | Notes |
|---|---|---|
| Incidents / Injuries | Incidents | Map severity codes via lookup list |
| Observations / Near-miss | Observations | Preserve OBS number as external_id |
| Audits / Inspections | Audits / Inspections | Split by audit type |
| Actions / CAPA | Actions | Preserve parent linkage |
| Permits | Permits | Import only permits still within validity |
| Training records | Training | Map courses via training catalog |
| Users / Roles | Via SCIM | Preferred over flat CSV |
Cutover checklist
- Freeze the legacy system for new record creation 1–2 days before cutover.
- Export all open/active records + last 2 years of closed records.
- Import into a QEHS sandbox. Validate 10-20 high-risk records manually.
- Import into production during maintenance window.
- Run dashboards side-by-side for a week. Expect small discrepancies from date-time/timezone normalisation.
- After 30 days, decommission legacy write path and move it to archive access only.