A migration can move every activity record and still show a customer’s history on the wrong account. Before cutover, check a few important records by their relationships and by the staff role that needs to open them.
A small test with a real failure condition
This synthetic fixture uses account and activity IDs already mapped to the same identifiers in both exports. The source links A101 to C001 and A102 to C002. The test destination still contains two rows, but A102 is attached to C001. A count check passes. The relationship check fails.
Run this JavaScript in a local console with the synthetic fixture. For a real rehearsal, use approved exports in a controlled workspace and validate that activity IDs are unique in each input before using this example.
function compareActivityLinks(source, destination) { const byId = new Map(destination.map(row => [row.activityId, row])); return source.flatMap(expected => { const actual = byId.get(expected.activityId); if (!actual) return [{ activityId: expected.activityId, issue: "missing" }]; if (actual.accountId !== expected.accountId) { return [{ activityId: expected.activityId, issue: "wrong account" }]; } return []; }); } const source = [ { activityId: "A101", accountId: "C001" }, { activityId: "A102", accountId: "C002" } ]; const destination = [ { activityId: "A101", accountId: "C001" }, { activityId: "A102", accountId: "C001" } ]; console.log(compareActivityLinks(source, destination)); // [{ activityId: "A102", issue: "wrong account" }] Check what the new owner can actually see
| Test | Evidence to keep | Who signs off |
|---|---|---|
| Activity relationship | Source activity ID, mapped account ID, observed destination account ID, and any approved exception | Migration lead |
| Staff access | The new account owner can find the last meaningful interaction and open its permitted attachments in the normal CRM view | Sales or service owner |
| Restricted access | A staff member outside the approved role cannot view a restricted activity or file | Data owner |
| Final changes | A record created or edited after the rehearsal arrives once, with the expected owner and history, after the final load | Cutover owner |
Record the exception, owner, and disposition for each failure. Ask the cutover owner to resolve or explicitly accept exceptions before switching systems. Keep evidence in the project workspace and use record IDs in the sign-off sheet.
StackEndBox’s migration checklist covers the wider scope, including people, records, permissions, and cutover. Use it when comparing a proposal or preparing a rehearsal. CRM migration acceptance checklist