Data Migration

Temporary view — removed post-migration

% Migrated

88%

Validation Errors

1,204

Unresolved Quarantine

812

Duplicate Pairs

21,038

Side-by-side fuzzy comparison for ~21K duplicate client pairs. Resolve with Merge / Ignore / Split.

Pair 1 of 21,038 Match confidence: 94%

Record A (legacy)

Name
Maria Lopez
DOB
04/12/1991
Phone
(714) 555-0293
Source
cm_clients

Record B (legacy)

Name
Maria L. Lopez
DOB
04/12/1991
Phone
(714) 555-0293
Source
ps_clients

Migration Plan v2 — HubSpot API

CRM v3 batch endpoints · supersedes the legacy bulk-CSV path. Sync health lives on the dashboard.

Dashboard CRM Sync widget
Done

1 · Schema map

V1 tables → HubSpot objects + custom properties mapped.

Done

2 · Identity resolve

Dedup the ~21K duplicate pairs (see tab above).

In progress

3 · API batch load

CRM v3 batch upsert + association graph rebuild.

Pending

4 · Cutover + freeze

Delta-sync to zero, then read-only freeze on V1.

⚑ PENDING — HubSpot contract renewal date

The cutover (phase 4) must complete before the HubSpot contract renews. Awaiting the exact renewal date from S2S (Michael) so the freeze window can be scheduled against it.

Manual Client Export — V1 → V2

Hand-pull a sample to validate the mapping, then run the full bulk export through 3rdbrain validation.

Approved 6/16

Data hygiene is the hard part. V1 records carry duplicates, missing FKs, and inconsistent formats — every row is run through 3rdbrain validation before it is written to V2. Resolve quarantine and identity conflicts (tabs above) before a full bulk run.

Last sample: 18 clients · 0 written until validated

HubSpot One-to-One Views

How a migrated V1 record renders against its HubSpot object. Open each view to review the field-level mirror.

Mirror preview
ML

Maria Lopez

Contact · HS-7845

Lifecycle stage
Enrolled client
Email
m.lopez@example.com
Phone
(714) 555-0293
County
Orange
V1 fieldHubSpot propertyStatus
cm_clients.full_namefirstname + lastnameMapped
cm_clients.dobdate_of_birthMapped
cm_clients.phonephoneMapped
cm_clients.county_codecounty (custom)Needs map

HubSpot Migration — Pros / Cons

Pros

  • Single source of truth for contacts, agencies, and enrollments.
  • Native HubSpot automation (sequences, tasks, reporting) out of the box.
  • API-driven sync removes the manual CSV re-import cycle.
  • Association graph mirrors V1 foreign keys natively.

Cons

  • Recurring license cost vs. the self-hosted V1 store.
  • Data-hygiene cleanup required before cutover (dedup, FK repair).
  • Custom V1 fields need property mapping (some not 1:1).
  • Contract renewal timing constrains the cutover window (see ⚑ above).

Summary card for the client-facing pros/cons doc — kept on this surface, not a separate file.

County Rules Master Graph

Migration note

During migration the six legacy per-county rule configs collapse into a single Zod-typed master graph. The rules engine and editor are not rebuilt here — they live on the County Rules page.

  • Six county configs → one master graph (single schema, Zod-validated).
  • Income-band source for the determination flow (I8) reads from the graph.
  • Reschedule-count rules (G2) are governed by the same graph.
Open County Rules Engine