Legacy Migration: CRM Contact Notes → CDP Notes
One-time migration of existing crm_notes records (qontak.com Postgres) into CDP contact_notes (MongoDB). Preserves HTML content, caller-set timestamps, and maps legacy crm_person_id to CDP contact_id via Contact.source_id.
Dependencies
This initiative cannot start until Mention User in CDP Notes is completed (shipped). The migration imports legacy notes into a contact_notes collection whose schema must already support mention anchors (data-user-id / data-mention and the mobile href form) so that migrated historical notes render mentions consistently with notes authored post-feature. Running the migration before the mention feature ships would require a second pass to backfill mention data.
| Dependency | Initiative | Status | Why |
|---|---|---|---|
| Blocking | Mention User in CDP Notes | active | contact_notes mention schema + parser (D-9) and notification routing (D-10) must land first so migrated HTML renders mentions correctly. |
Scope Changes
Engineering surfaces this initiative touches (controlled vocab: Backend · Frontend · Mobile · Infra · Data · Design · Docs · None). Aggregate of this initiative's PRDs; mirrors the scope_changes frontmatter above.
- Backend —
contact-service: net-new CDP migrate + count endpoints, agocraft/workingestion consumer,legacy_crm_note_ididempotency, caller-set timestamps, andContact.source_idresolution; plus the net-new CRM extraction contract. - Data — one-time historical migration of
crm_notes(qontak.com Postgres, ~21k notes / ~130 CIDs) → CDPcontact_notes(MongoDB), incl. rich-HTML content and attachment mapping.
QA Lane
Lane B — keeps a human QA gate. A data migration whose before/after results require manual QA crosschecking. No E2E test specs exist for this initiative yet, so the Lane-A entry bar (100% E2E, spec-mapped coverage) is unmet regardless. Classified 2026-06-29.