# MIGRATION PLAN — Follow Up Boss → PURE CRM (V8 item 5 · authored 7/11/26)
**Owner:** Mike schedules the cutover · Lane A executes surface-side · Code owns import RPCs.
**Rule:** plan now, EXECUTE in v9 (version discipline).

## Live target schema (probed 7/11)
- `pure_leads`: id, source, lead_type, person_name, person_contact, event_type, intent, intent_score, status, assigned_to, action_plan, note, ts, is_demo, disc, last_call_summary, agent_email
- `pure_contacts`: (table absent)

## Field map (FUB export CSV → PURE)
| FUB | PURE | Note |
|---|---|---|
| First/Last Name | pure_contacts.name | join " " |
| Emails (primary) | pure_contacts.email | lowercase |
| Phones (primary) | pure_contacts.phone | E.164 normalize |
| Stage | pure_leads.status | map: Lead→new, Hot→active, Nurture→nurture, Past Client→client |
| Source | pure_leads.source | verbatim |
| Assigned Agent | pure_leads.assigned_to | email match → identity |
| Tags | pure_contacts.tags | jsonb array |
| Notes (export) | pure_notes via mcp_note_save | tag "fub-import" |
| Created | created_at | preserve original |

## Cutover checklist
1. FUB → Admin → Export ALL (people + notes + deals CSVs) — Mike.
2. Dry run through Data Onboard surface (t-data-onboard) mapped preview — counts reconcile ±0.
3. Freeze FUB edits (announce) → final export → import → spot-check 20 records.
4. Point lead routing (t-lead-routing rails) at PURE forms; FUB read-only 30 days → cancel.

## Rollback
Imports tagged `import_batch` — one delete clears a batch. FUB stays intact until cancel.
