Record ownership and the two Data Quality modules
Context
Review runs continuously; merging is a privileged transaction against the same CRM records.
Decision
CRM separates duplicate detection and review from merge planning and execution; Entities retains record ownership, while merge persistence manages the reference moves needed for the transaction.
Alternatives Considered
Create a separate service. Splitting storage would require coordination across databases to preserve atomic merging.
Combine the two modules. Separate execution functions let review and merge workloads scale and fail independently.
Consequences
The duplicates module uses a re-check queue; the merges module uses a state machine. Record changes cross module boundaries through local persistence calls. Entities hosts the record routes and uses the merge wrapper for absorbed identities.