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

  1. Inventory entities, cardinalities, and workflows.
  2. Decide object split — resist dumping everything into a single “Lead” object.
  3. 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 (investment linking fund + 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 opportunity touches a startup)

Operational cut-over

  1. Freeze writes in legacy for a defined window.
  2. Drain queue jobs.
  3. Run delta import.
  4. Enable Primicornis as system of record; keep read-only legacy access for audit.