Name the source of truth
Choose the system and export date that define the migration baseline. If several spreadsheets exist, decide which fields each one owns before merging them.
Preserve a stable legacy identifier for every person. Email addresses can change or be shared, so they should not be the only key used to decide whether two rows represent the same member.
- One export is marked as the migration source of truth.
- Every row has a stable external or legacy identifier where one exists.
- The source file is preserved unchanged for reconciliation.
Normalize before you upload
Standardize names, email casing, phone formats, dates, lifecycle states, location codes, and blank values. Map every source status to one permitted destination status instead of passing ambiguous labels through.
Separate financial data from operational member data. HollieHQ does not import or manage the payment flow between your organization and its members.
Watch for thisDo not place passwords, payment credentials, bank details, or secret notes in a member import file.
Define duplicate rules in advance
Decide which combination of legacy ID, member number, email, phone, and name should trigger a match, a warning, or a hard block. Document who can approve an uncertain merge.
Treat a duplicate as a data decision, not merely an error. Two similar rows may be one person, two household members, or a reused email address.
- Exact legacy-ID matches have a deterministic result.
- Potential matches are reviewed before commit.
- Blank optional fields do not overwrite useful existing values.
- Repeated import runs cannot create the same member twice.
Preview the full outcome
Group rows into ready, warning, and blocked states. Each warning should name the affected field, explain the conflict, and tell the operator how to repair the source.
Check representative records from every location and lifecycle state. Totals can look correct while location mappings or suspended-member rules are wrong.
Reconcile immediately after commit
Compare the source total with created, updated, unchanged, and rejected counts. Export the resulting member list and spot-check identities, status, and location assignment against the preserved source.
Keep the import report with the date, operator, source checksum, and corrections made. If a retry is necessary, use the same source and idempotent process rather than editing records by hand between attempts.
- Source and destination counts reconcile.
- Every rejected row has an owner and resolution.
- A second dry run produces no unexpected new records.
- Staff do not begin live operations until reconciliation is signed off.
