Migrating Your Data to SAVHN: A Practical Implementation Manual
On this page
- 01Who this manual is for
- 02Prerequisites
- 03Step 1: Inventory what you have before deciding what to migrate
- 04Step 2: Prioritize by what your team needs on day one, not by what's easiest to export
- 05Step 3: Map source fields to SAVHN fields before importing anything
- 06Step 4: Run a small test import first
- 07Step 5: Migrate in the same order you sequenced your module rollout
- 08Step 6: Validate the full migration against the source
- 09Step 7: Run source and destination in parallel briefly, then cut over
- 10Handling data that doesn't map cleanly
- 11Coordinating migration with the people who'll use the data
- 12Common Pitfalls
- 13Frequently Asked Questions
- 14Getting started
Process at a glance — 7 steps
Step 1: Inventory what you have before deciding what to migrate
Before moving anything, list every system currently holding data you might want in SAVHN — spreadsheets, legacy CRM exports, HR files, accounting exports, project trackers. For…
Step 2: Prioritize by what your team needs on day one, not by what's easiest to export
It's tempting to migrate whatever data is cleanest and easiest to pull first. Resist that. Prioritize instead by what your team actually needs available the moment they start us…
Step 3: Map source fields to SAVHN fields before importing anything
For each data source, map its fields to the corresponding fields in the relevant SAVHN module before you import a single record. This is where data owners from Step 1's prerequi…
Step 4: Run a small test import first
Before migrating a full data set, run a test import of a small, representative sample — a few dozen records, not a few thousand. Check the results against the source data field…
Step 5: Migrate in the same order you sequenced your module rollout
Data migration should follow the same foundation-first logic as module rollout. Migrate records into foundation modules before migrating records into modules that depend on them…
Step 6: Validate the full migration against the source
Once the full data set is migrated, validate it — don't assume the test import's success guarantees the full run went cleanly. At minimum, check:
Step 7: Run source and destination in parallel briefly, then cut over
For critical data — active CRM pipeline, current payroll, open projects — keep the old source system available as a reference for a short parallel period after migration, rather…
Who this manual is for
This manual is for whoever owns getting your organization's existing data into SAVHN — an IT lead, operations manager, or implementation lead working alongside department owners. It covers planning a migration, deciding what to migrate first, and validating that what landed in the system actually matches what you meant to bring over. It assumes your organization, departments, and at least your first wave of modules are already set up (see the organization setup and module marketplace implementation manuals).
Migration is where a lot of platform rollouts quietly go wrong — not because the destination system is hard to use, but because nobody planned the move carefully, and six months later people are working off two sources of truth without realizing it. This manual is written to prevent that.
Prerequisites
- Module Marketplace rollout planning already done, since what you migrate should follow the same foundation-first sequencing as module enablement (a dependent module's data can't be meaningfully migrated before its foundation module is populated).
- Export access to your current systems — CRM exports, HR records, financial ledgers, project lists, whatever you're currently using that SAVHN will replace or absorb.
- A named data owner per source system, someone who actually knows what the fields in that export mean and can answer questions when something doesn't map cleanly.
- Role-based permissions configured for whoever will be doing the migration work, since importing data at scale typically requires elevated access that should be scoped and time-bound rather than left in place indefinitely.
Step 1: Inventory what you have before deciding what to migrate
Before moving anything, list every system currently holding data you might want in SAVHN — spreadsheets, legacy CRM exports, HR files, accounting exports, project trackers. For each one, note roughly how much data it holds, how current it is, and how critical it is to daily operations. This inventory is what the rest of the migration plan gets built on, and skipping it is the most common reason migrations run longer than expected — new sources keep surfacing mid-project because nobody counted them at the start.
Step 2: Prioritize by what your team needs on day one, not by what's easiest to export
It's tempting to migrate whatever data is cleanest and easiest to pull first. Resist that. Prioritize instead by what your team actually needs available the moment they start using SAVHN day to day. For most organizations, that means:
- CRM contacts and client records — sales and support teams can't function without their existing client relationships intact from day one.
- HR records — active employee data, so HRMS reflects your real current workforce rather than a partial list.
- Active financial records — open invoices, current account balances, anything Finance needs to keep operating without a gap.
- In-flight projects and tickets — work that's currently open shouldn't disappear or need to be re-created from memory.
Historical or archival data — closed deals from three years ago, former employees, fully settled invoices — can usually wait for a second migration pass, or in some cases doesn't need to move at all if it's just for reference. Don't let "we should bring everything over eventually" block getting the active, operationally critical data in first.
Step 3: Map source fields to SAVHN fields before importing anything
For each data source, map its fields to the corresponding fields in the relevant SAVHN module before you import a single record. This is where data owners from Step 1's prerequisites earn their keep — someone needs to know that the "Status" column in the old CRM export doesn't cleanly match SAVHN's pipeline stages, and decide how to translate it, rather than importing it as-is and discovering the mismatch after the fact.
Pay particular attention to fields that drive live-computed behavior in SAVHN — pipeline stage in CRM, for example, isn't just a label, it's what the system uses to reflect where a lead actually stands. Importing bad or mismapped data into fields like this creates a version of the exact problem the platform is meant to solve: a status that doesn't reflect reality.
Step 4: Run a small test import first
Before migrating a full data set, run a test import of a small, representative sample — a few dozen records, not a few thousand. Check the results against the source data field by field. This catches mapping errors while they're cheap to fix, rather than after you've imported ten thousand records with the same mistake repeated ten thousand times.
Step 5: Migrate in the same order you sequenced your module rollout
Data migration should follow the same foundation-first logic as module rollout. Migrate records into foundation modules before migrating records into modules that depend on them — client and enrollment-style records before the invoices or dependent records that reference them, for the same reason you'd enable the modules in that order in the first place. Migrating a dependent module's data before its foundation data exists just recreates the same broken-reference problem inside your new system that you were trying to leave behind.
Step 6: Validate the full migration against the source
Once the full data set is migrated, validate it — don't assume the test import's success guarantees the full run went cleanly. At minimum, check:
- Record counts match between source and destination (accounting for anything intentionally excluded, like closed historical records you chose to leave behind).
- A sample of records, checked individually, has all fields correctly mapped and no obviously garbled data (truncated text, misaligned columns, dates shifted by a time zone error).
- Relationships between records held — a client's associated leads or invoices, an employee's associated department, still point to the right related record after import.
| Validation check | What to look for |
|---|---|
| Record counts | Source and destination counts match, minus anything deliberately excluded |
| Field-level spot check | Sample records reviewed field by field for correct mapping |
| Relationship integrity | Linked records (client-to-lead, employee-to-department) still connected correctly |
| Live-computed fields | Status/stage fields reflect accurate current state, not stale imported labels |
| Duplicate check | No accidental duplicate records from a re-run or partial import |
Step 7: Run source and destination in parallel briefly, then cut over
For critical data — active CRM pipeline, current payroll, open projects — keep the old source system available as a reference for a short parallel period after migration, rather than deleting access to it the moment the import finishes. Use that window to catch anything the validation step missed. Set a firm cutover date rather than letting the parallel period drift indefinitely — an old system left running "just in case" tends to quietly become a second source of truth if it's never formally retired.
Handling data that doesn't map cleanly
Not every record from your old systems will have an obvious home in SAVHN. A custom field your old CRM let sales reps fill in freeform, a status value that doesn't correspond to anything in SAVHN's pipeline stages, a spreadsheet column nobody currently remembers the purpose of — these show up in every migration, and it's worth deciding upfront how you'll handle them rather than improvising mid-import.
A reasonable approach: for each unmapped field, ask whether it's still actively used and understood by the team. If yes, find or create the right home for it in SAVHN rather than dropping it — a field the team relies on that quietly disappears in migration will surface as a complaint weeks later, once someone goes looking for it. If the field is genuinely stale — a holdover from a process that no longer exists — it's usually fine to leave it out of the migration and note the decision for anyone who asks later.
Avoid the trap of creating a generic "notes" or "legacy data" catch-all field and dumping everything unmapped into it. That preserves the data technically but makes it functionally unusable — nobody structured data can be searched, reported on, or trusted the same way properly mapped data can. If something is worth bringing over, it's worth mapping it properly, even if that means a short conversation with the data owner from Step 1 to figure out where it belongs.
Coordinating migration with the people who'll use the data
A migration is not just a technical exercise — it changes what the team sees the moment cutover happens. Give department leads visibility into the migration plan before it runs, including what's being migrated, what's being deliberately left behind, and when cutover is scheduled. This avoids the scenario where a sales rep opens SAVHN on cutover day and can't find a client record they were expecting, not because anything went wrong, but because nobody told them historical records older than a certain date weren't part of the first migration pass.
Common Pitfalls
Migrating everything at once instead of prioritizing active, operationally critical data first. This is the single biggest cause of migrations that stall — trying to move every historical record before letting the team start using the live data that matters most.
Skipping the field mapping exercise and importing raw exports as-is. Source systems rarely use the same field structure or status vocabulary as SAVHN. Unmapped imports create bad data that then has to be cleaned up after the fact, inside the new system, which is harder than mapping it correctly before import.
Not running a small test import first. A mapping error caught in a 30-record test costs minutes to fix. The same error caught after a 10,000-record full import costs a cleanup project.
Migrating dependent-module data before its foundation data exists. Just as with module rollout, records that reference other records need their foundation to be there first.
Leaving the old system running indefinitely "just in case." Without a firm cutover date, teams naturally keep using whichever system is more familiar, and the migration never actually finishes in practice even though the data technically moved.
Frequently Asked Questions
Should we migrate historical or archived data along with active data?
Not necessarily in the same pass. Prioritize active, operationally critical data first so your team can start working in SAVHN immediately. Historical data can follow in a second migration pass, or in some cases stay in an archived export if it's only needed for occasional reference rather than daily use.
What if our old system's status or stage values don't match SAVHN's pipeline stages?
Map them deliberately during Step 3 rather than importing them as-is. Decide, with input from whoever actually understands the old data, which SAVHN stage each old status value should translate to, and document that mapping so it's repeatable if you run additional import batches later.
How do we handle data that doesn't have a clean home in any SAVHN module yet?
If a module that data belongs in hasn't been enabled yet, hold that portion of the migration until the module is live (see the Module Marketplace implementation manual for rollout sequencing). Migrating data into a module that isn't configured yet usually means re-doing the import once the module's real configuration is in place.
How long should we keep the old system running after migration?
Long enough to validate the migration and catch anything Step 6 missed, but with a firm end date agreed upfront — an open-ended parallel period tends to become permanent and creates two sources of truth. A few weeks is reasonable for most organizations; critical financial data may warrant a longer, more deliberate overlap.
Getting started
A migration planned around what your team actually needs first, mapped carefully, and validated before cutover is the difference between a smooth transition and months of quiet data problems nobody notices until it's expensive to fix. SAVHN's 7-day free trial is a reasonable window to run a test import against a real sample of your data and see how the mapping behaves before committing to a full migration. Use the pricing configurator to confirm which modules you'll be migrating data into, or contact the developer team for help planning a migration sequence for your specific systems.