Skip to main content

Legacy Migration: CRM Contact Activity Logs → CDP

One-time migration of legacy audits records (qontak.com Postgres) into CDP activity_logs (MongoDB). Handles the dual YAML structure (update vs destroy), maps crm_person_id via Contact.source_id, and uses a durable job-state store (replacing the Redis-only pattern).

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.

  • Backendcontact-service: extend the activity-log write path with external_id/source_tag/multi-category support, a migration consumer with a durable job-state store, and a ContactResolver keyed on crm_data.id (CDP, indexed) / qontak_customer_id (CRM) — not source_id; plus the net-new CRM extraction contract; also SyncWatermarkResolver (pre-sync cutoff) and AssociationLogEnricher (in-place metadata patch for live-feed logs lacking external_id).
  • Frontend — migration-status indicator + composable (CALM-S05) surfacing progress via the IAG session-authenticated migration-status proxy.
  • Data — one-time historical migration of the CRM audits table (qontak.com Postgres) → CDP activity_logs (MongoDB), parsing the dual audited_changes YAML structure (update vs destroy).

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.

Contents

  • prds/ — Product Requirements Documents
  • rfcs/ — Request for Comments
  • tests/ — Test plans
  • delivery/ — Timeline, status updates, decisions