T06 CRM migration cutover plan
CRM migration cutover plan

How Lakeshore RevOps moves Peakline Bikes' wholesale sales data from Pipedrive to HubSpot without losing records or breaking automations, and exactly when the freeze begins. Prepared for Peakline Bikes' sales operations team and Lakeshore's migration engineers.
Sample template: the firm, people, clients and figures are fictional and shown for illustration only.
Live example from the Dashboards app, shown with Harborline Logistics's demo data.
Data flow, old to new
flowchart LR
A[Pipedrive: accounts, contacts, deals] --> B[Export: CSV per object]
B --> C[Staging sheet: field mapping and cleanup]
C --> D[Validation: dedupe, required fields, owner mapping]
D --> E[HubSpot import: companies, contacts, deals]
E --> F[Automation rebuild: workflows, sequences, deal stages]
F --> G[Peakline sales team: go-live in HubSpot]
D -.rejected records.-> H[Exception queue: manual review]
H -.corrected.-> D
Records that fail validation, such as a deal with no owner or a contact missing an email, drop into the exception queue rather than importing incomplete. Every exception is reviewed and corrected before it re-enters the pipeline.
Field mapping
| Pipedrive field | HubSpot field | Notes |
|---|---|---|
| Organization name | Company name | Direct match |
| Deal value | Deal amount | Currency confirmed as USD for all records |
| Deal stage | Deal stage | Mapped 7 Pipedrive stages to 5 HubSpot stages, see mapping sheet |
| Deal owner | Deal owner | Requires HubSpot user accounts created first, see freeze checklist |
| Person: email | Contact: email | Required field; records missing this go to the exception queue |
| Person: phone | Contact: phone number | Formatted to E.164 during staging cleanup |
| Custom field: Account tier | Contact property: account_tier | New custom property created in HubSpot before import |
| Custom field: Territory rep | Contact property: territory_rep | New custom property created in HubSpot before import |
| Activity: notes and calls | Engagement: notes and calls | Only activity from the last 24 months migrates; older history stays in the Pipedrive archive export |
Cutover timeline
Freeze checklist
During the freeze, sales reps work from a read-only Pipedrive view and log new activity in the shared exception tracker until HubSpot go-live.
Irreversible step: Pipedrive deal ID remapping
Once deals import into HubSpot, their original Pipedrive deal IDs are not preserved; HubSpot assigns new record IDs on import. Any external system, report or Zapier automation that references a Pipedrive deal ID by number will break silently after cutover. Owner: Marcus Whitfield to confirm the finance team's commission report, which references deal IDs directly, is updated before go-live. This cannot be undone after import, so the finance report mapping must be confirmed during the freeze window, not after.
What could go wrong
- Deals with no assigned owner will fail import; the validation step should catch these, but any missed after the sandbox test blocks the live import until fixed.
- Duplicate contacts across multiple deals may create duplicate HubSpot records if the staging dedupe pass misses an email variant.
- Four Pipedrive automations (deal stage email alerts, lead rotation, renewal reminders, and a Slack notification on deal won) must be rebuilt natively in HubSpot; none carry over automatically.
- Renewal reminders are the highest priority to rebuild first, since a missed renewal has direct revenue impact.
- Sales reps lose write access to Pipedrive during the freeze; any deal update needed during that window goes into the exception tracker for Marcus Whitfield to apply manually after import.
- Yuki Tanaka is the single approver for the field mapping and stage mapping; if she is unavailable during the freeze window, mapping changes cannot be approved.
Rollback plan
If the HubSpot import fails validation
- Sandbox import fails: stay on Pipedrive, fix the mapping or data issue, and rerun the sandbox test. The freeze window does not start until a sandbox import passes cleanly.
- Live import fails partway: Marcus Whitfield pauses the import, does not attempt a partial cutover, and the sales team continues in read-only Pipedrive until the issue is fixed and the import restarts from a clean state.
- Automation missing after go-live: sales team continues manual workarounds (documented in the exception tracker) until Lakeshore rebuilds the missing automation; target is within 48 hours of go-live.
- Full rollback to Pipedrive: only possible before the live import begins. Once records import into HubSpot and reps start working in it, rolling back means re-exporting from HubSpot and manually reconciling any new activity, which Lakeshore does not recommend past the first 24 hours of go-live.
Sign-off
| Role | Name | Approves | Status |
|---|---|---|---|
| Client admin | Yuki Tanaka | Field and stage mapping, freeze window | |
| RevOps consultant | Marcus Whitfield | Migration plan and rollback plan | |
| Sales operations | Peakline Bikes sales team lead | Automation rebuild priorities | |
| Finance | Peakline Bikes finance lead | Commission report deal ID mapping |
Sign-off required before the freeze begins
The freeze window on Oct 9 does not start until all four sign-offs above are recorded. Finance sign-off is the current blocker given the irreversible deal ID change noted above.
How to use this template
Duplicate this page for each CRM migration. Confirm the field mapping and freeze checklist against the specific source and destination systems; do not reuse a mapping table from a different migration without checking every field.
| Variable | Meaning | Required |
|---|---|---|
{{migration.source_system}} | CRM being migrated from | Required |
{{migration.target_system}} | CRM being migrated to | Required |
{{migration.cutover_date}} | Date and time of the live import | Required |
{{mapping.field_table}} | Field-by-field mapping between source and target | Required |
{{signoff.approver}} | Each required approver, role and status | Required |
{{risk.irreversible_step}} | Any step that cannot be undone after it runs, with owner | Optional |
If a required sign-off is missing, show Needs review in that row and do not start the freeze window.