Post-Acquisition Ops

CRM Data Cleanup: Merge Records Without Erasing Local Context

For an integration or revenue-operations lead reconciling two customer records: create reviewed proposals and evidence before any destructive merge.

Uli PrantzBuilds and operates all-agents
Published
Key takeaways

Key takeaways

  • Snapshot and profile both sources before normalization. A clean target is useless if source identity and relationships cannot be reconstructed.
  • Separate candidate detection from merge approval. Similar fields are evidence to review, not proof that two records represent one person or company.
  • Treat consent/privacy state, active work, portal access and conflicting relationships as hard human-review routes.
  • Execute small idempotent batches, reconcile counts and relationships, and retain a tested rollback path before expanding scope.
CRM data cleanup after an acquisition should produce reviewed change proposals before it produces merges. Snapshot each source, preserve stable identifiers, profile fields and relationships, and generate candidate pairs with reasons. A named data owner chooses the surviving record and field values. Execute a small idempotent batch, reconcile every relationship and required count, and stop on privacy, consent, active-work or integrity conflicts.

Define the cleanup contract before comparing records

The contract prevents a matching rule from becoming an unauthorized deletion rule.
FieldRequired decisionEvidence
PurposeWhat business problem the batch may solveApproved scope and owner
EntityContact, account, lead or another supported typeSource schema and identifiers
ComparisonPermitted fields and normalizationRule version and test set
SurvivorshipWhich field wins under which evidenceField-level decision table
Hard stopsConsent, privacy, access, active work, conflictNamed human review route
RecoveryRestore or reverse pathTested snapshot and change ledger

Run proposal-first cleanup in seven stages

  1. 01Snapshot and countCode
    Capture read-only source identifiers, entity counts, relationships and the approved batch boundary.
  2. 02Normalize in stagingCode
    Standardize comparison values without overwriting the source record.
  3. 03Generate candidate pairsAI judgment
    Return matched fields, conflicting fields and uncertainty. A candidate is not a merge.
  4. 04Apply hard stopsCode
    Route consent/privacy differences, active opportunities, portal users and relationship conflicts to review.
  5. 05Approve field-level survivorHuman approval
    The data owner chooses identity, retained values, related records and whether to defer.
  6. 06Execute idempotentlyCode
    Use proposal and approval versions as the operation key; retries read effect state first.
  7. 07Reconcile and closeHuman approval
    Verify counts, required fields, relationships, privacy state and the exception queue before expanding.

The hardest cases look similar enough to be dangerous

Route ambiguity to a named data owner; do not reward the model for being decisive.
CaseRiskRoute
Same email, different peopleShared or recycled addressVerify identity; do not auto-merge
Same company, active deals in bothOwnership and pipeline lossRevenue-operations review
Different privacy or consent stateWrong communication permissionPrivacy/data-owner review and source preservation
Contact tied to portal accessAccess break or account takeoverSystem-owner review
Different historical sourceAttribution and relationship context erasedPreserve source events; field-level decision

Microsoft and Salesforce both document field-level and relationship considerations around duplicate merges. Their exact product behavior varies. This playbook does not claim that all-agents connects to or performs actions in either CRM.

Northline rejects the obvious merge

Simulated CRM cleanup batchSimulated example data

Two Northline branches contain a contact with the same name and email. One record owns an open service agreement; the other is connected to a portal user and has a newer privacy preference. A name-and-email rule proposes a match.

The hard stops route it to the data owner. The owner determines that the shared mailbox represents two site contacts and rejects the merge. The team adds a site identifier to the matching rule and keeps both source records.

No real personal data, CRM integration or cleanup result is represented.

Adapt the procedure and workflow blueprint together

The SOP is for the accountable process owner. The blueprint turns the same boundary into trigger, data contracts, steps, approval, idempotency, recovery and acceptance tests. Neither authorizes a destructive production action.

SOP

CRM data cleanup SOP

Editable procedure for profiling, human-reviewed merge proposals, staged execution and reconciliation.

Preview the file
# CRM Data Cleanup After an Acquisition — SOP

## Purpose and scope

Prepare reviewed CRM merge and correction proposals after an acquisition without erasing source identity, consent or local context. This procedure covers profiling, candidate detection, human review, staged execution and reconciliation. It does not authorize collection of new personal data, legal conclusions, consent changes or an unattended destructive merge.

## Owner, trigger and output

- **Owner:** named CRM data owner.
- **Trigger:** approved cleanup scope and source snapshots are available.
- **Output:** reconciled change ledger, unresolved exception queue and retained rollback evidence.

## Prerequisites

1. Approved purpose, fields, systems, access roles and retention rules.
2. Read-only source snapshots with counts and stable record identifiers.
3. Field and status mapping, including values that must remain source-specific.
4. Duplicate rules, confidence bands and human approval authority.
5. Tested restore or rollback route in a non-production rehearsal.

## Procedure

1. Profile record counts, missing keys, field values, relationships and active automations by source.
2. Normalize comparison values in a staging copy; never overwrite the original source snapshot.
3. Generate candidate pairs with the matched fields and reasons visible.
4. Reject automatic merge when identity conflicts, consent/privacy state differs, active opportunities conflict, or related records cannot be mapped safely.
5. Have the data owner approve the surviving record, field-level values and relationship treatment.
6. Execute a small reviewed batch with an idempotency key per approved proposal.
7. Reconcile source, target and change-ledger counts; sample every exception class.
8. Stop on an unexpected deletion, relationship loss, consent change or unmatched count.
9. Publish unresolved cases to a named queue and retain rollback evidence.

## Exceptions and approvals

Potential shared inboxes, household records, changed names, conflicting account ownership, active deals, suppression/consent differences and portal users always require human review. Only the named data owner may authorize destructive execution.

## Audit record and revision log

Retain scope, rule version, source snapshot identifiers, candidate reason, approver, execution identifier, before/after record keys, reconciliation result and rollback outcome. Review after every batch and revise the rules only through a new tested version.
Workflow blueprint

CRM cleanup workflow blueprint

Machine-oriented trigger, data contract, approval, idempotency, failure and acceptance design.

Preview the file
# CRM Data Cleanup After an Acquisition — Workflow Blueprint

## Trigger and termination

- **Trigger:** an approved cleanup batch references immutable source snapshots and rule version.
- **Success:** every approved proposal has one verified target state and a complete change record.
- **Safe stop:** any unapproved proposal, integrity mismatch, relationship loss, consent/privacy conflict or unavailable rollback route.

## Data contracts

Input: source system, source record ID, entity type, permitted comparison fields, consent/privacy state, related-record counts, active-work flags and snapshot ID. Never include secrets. Output: candidate ID, matched reasons, proposed survivor, field decisions, relationship plan, approval, execution status and reconciliation evidence.

## Ordered steps

1. **Code — validate batch:** check scope, snapshot, rule version and unique business keys.
2. **Code — normalize in staging:** produce comparison values without altering source records.
3. **Code — propose candidates:** emit reasons and confidence; do not merge.
4. **Human — decide identity and fields:** approve, reject or request evidence. Privacy, consent and active-work conflicts cannot auto-pass.
5. **Code — execute idempotently:** use the candidate ID plus approval version; a retry returns the prior result.
6. **Code — reconcile:** compare counts, relationships, required fields and change ledger with the expected state.
7. **Human — close exceptions:** data owner resolves or defers every unmatched case.

## Failure, retry and rollback

Retry only after reading the candidate's effect state. If the target is unknown, reconcile before another write. Stop the batch when a critical invariant fails. Restore from the approved snapshot or reverse through the recorded field and relationship changes where the actual CRM supports that tested method.

## Permissions and tests

Separate read, proposal, approval and destructive-write roles. Test exact duplicates, likely matches, false positives, shared contact details, conflicting consent, active opportunities, missing keys, repeated delivery, partial write and rollback. Acceptance requires no unauthorized merge, no lost required relationship, complete change evidence and matched reconciliation counts.

Limitations and when not to use this

  • This is a system-agnostic design and simulated example, not a tested connector, migration service or claim of support for Salesforce, Microsoft, HubSpot or another CRM.
  • Customer and contact records may contain personal, consent, contractual and access information. Use the actual data owner, privacy rules, permissions and retention requirements.
  • A match score does not establish identity. Destructive merges require a named accountable reviewer and a tested recovery path.
  • The downloads are editable design artifacts. Validate every action against the actual CRM and approved environment before use.

Sources

  1. Data Integrity: Detecting and Responding to Destructive EventsNIST Accessed 9 August 2026
  2. Merge Duplicate RecordsMicrosoft Learn Accessed 9 August 2026
  3. Considerations for Merging Duplicate ContactsSalesforce Help Accessed 9 August 2026

Download the cleanup procedure

Adapt the scope, roles, hard stops and reconciliation tests before touching production records.

Download the cleanup procedure
About the author

Uli Prantz

Builds and operates all-agents

Uli Prantz builds all-agents, the process-automation platform this site documents. He writes about the operational side of automating recurring business work: where deterministic code beats model judgment, where it does not, and where a human still has to approve.

Bring one process. We will scope it in 30 minutes.

You leave the call knowing whether it is a fit, what can become code and what still needs a person.

Book a discovery call