Custom CRMs & proprietary databases
When no off-the-shelf export exists, treat the migration as an ETL with Primicornis as the target warehouse for operational CRM data.
Discovery phase
- Inventory entities, cardinalities, and workflows.
- Decide object split — resist dumping everything into a single “Lead” object.
- Document authority: which system wins on conflicts post cut-over?
API-first migration
- Build idempotent writers keyed on your legacy primary keys.
- Stage data in JSONL files if the legacy API is fragile; replay into Primicornis with checkpointing.
Relationship integrity
Model many-to-many joins explicitly:
- Either junction objects (
investmentlinkingfund+company) - Or dual relations with mirrored metadata — but prefer a single source of truth to avoid drift.
Validation
Automate post-import assertions:
- Count parity ± acceptable delta
- Random sample QA (10 records / object)
- Graph reachability (every
opportunitytouches astartup)
Operational cut-over
- Freeze writes in legacy for a defined window.
- Drain queue jobs.
- Run delta import.
- Enable Primicornis as system of record; keep read-only legacy access for audit.