Skip to content

CAP-CRM-DQ-019Inspect merge outcomes and attribution

Markdown

CAP-CRM-DQ-019

Inspect merge outcomes and attribution

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationPartially observed

KindCapabilityProduct areaCRMModuleDuplicate Review and Record MergingRevision1

Read atservices-crm a8d1364freact-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Retained originals support explanation and recreation after an incorrect merge.Record readers can inspect successful lineage and its originals.Merge-management readers can investigate workspace-wide attempts and outcomes.
Surfaces
consoleapi
Intent sources
services-crm:docs/milestones/CRM-M4-duplicates-and-merge.md#D-30services-crm:docs/milestones/CRM-M6-access-and-audit.md#D-21services-crm:docs/merging/decisions.md#D4 (decided 2026-10-11: option 1)services-crm:docs/merging/experience/functional-requirements.md#AUD-1 to AUD-3, DQ-9 (package approved by Andrew 2026-10-13)

Controls

20 controls apply, from the corpus control catalogue.

TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-006 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-LOG-001 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-PI-001 TC-PRV-001 TC-PRV-002 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004

Permissions

KeyChecked atScope
crm.merges.readapitenant
crm.contacts.readapirecord
crm.organizations.readapirecord

Business Rules

11 rules, 9 to be proved before approval. A rule's product intent is derived from its origin: 11 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Workspace history requires merge-read authority, lists newest first with succeeded as the default status, supports status/type/requester/date filters and defaults to 25 entries with a maximum of 50.
no proof recorded yet
policyapitest
services-crm:modules/merges/tests/integration/services/merges/tenant-merge-history.integration.spec.js#answers the merges that succeeded, which is what a history screen asks for by default
02must prove
Confirmed
Record history includes merges survived by the record and its absorbed identities, with equivalent results when requested through an alias.
no proof recorded yet
policyservicetest
services-crm:modules/merges/tests/e2e/merges.e2e.spec.js#answers the same history when asked under an id the merge took away, under the survivor
03must prove
Confirmed
History uses participant names and numbers captured at merging and the requester's current name, leaving unavailable names blank rather than displaying internal identities.
no proof recorded yet
policyservicetest
services-crm:modules/merges/tests/integration/services/merges/tenant-merge-history.integration.spec.js#is the name Platform knows the requester by now, never the id a screen cannot read
04must prove
Confirmed
Details retain originals, the written survivor and field outcomes with final, discarded and gap-filling values, sources, rules and attributed decisions, together with relationship, login and validation actions.
no proof recorded yet
policyservicetest
services-crm:modules/merges/tests/integration/services/merges/merge-outcome.integration.spec.js#keeps the reviewer’s choice with what it was, who made it, and the record it was taken from
05must prove
Confirmed
Merge records remain for the workspace lifetime as retained originals and ordinary application operations cannot erase or relocate them.
origin: services-crm:docs/merging/decisions.md#D4 (decided 2026-10-11: option 1)
no proof recorded yet
invariantdatabasetest
services-crm:modules/merges/tests/integration/db/record-merges.table.integration.spec.js#may not erase a merge, which holds the only copy left of the records it deleted
06must prove
Confirmed
The product should allow removal of a person's original merge values in response to a privacy deletion request.
origin: services-crm:docs/merging/decisions.md#D4 (decided 2026-10-11: option 1)
no proof recorded yet
policyserviceunknown
07must prove
Confirmed
Record readers may inspect successful merged-from history, field outcomes and originals without merge authority; login actions, carried dismissals and checks require merge-read authority.
no proof recorded yet
permissionapitest
services-crm:modules/merges/tests/integration/services/merges/merged-from-history.integration.spec.js#leaves what only merge management reads out of a reader’s details
08must prove
Confirmed
Merged-from requests reject authority for only the other record type and return not found for an unreachable record or a merge outside its lineage.
origin: D-45 (cited in services-crm:docs/merging/api.md#2. Authorization; no milestone record holds it, FND-CRM-DQ-018)
no proof recorded yet
permissionapitest
services-crm:modules/merges/tests/e2e/merged-from-history.e2e.spec.js#refuses a reader of organizations a contact’s merged-from history
09must prove
Confirmed
Console Recently Merged and management details require merge-read authority, and record version history provides merge entries linking to their outcomes.
no proof recorded yet
permissionconsoletest
10
Confirmed
Workspace exports include merges, absorbed originals and their aliases.
policyserviceobserved
11
Confirmed
Merging has no undo operation; repairing a mistake requires survivor edits or record recreation from retained originals, and the console communicates that limit.
policyconsoledocumented
services-crm:docs/merging/architecture.md#7.4 What can and cannot be undone

Scenarios

IdGivenWhenThenProvenance
01Two contacts have been merged successfully.A colleague with record-read authority opens the survivor's merged-from history.They see merge attribution and absorbed originals without needing merge-management permission.test
services-crm:modules/merges/tests/e2e/merged-from-history.e2e.spec.js#answers the reader the merge’s outcome and the absorbed record as it was
02Several people have requested merges.An administrator filters history by type, status, author and date.Entries identify the records and attribution, with details showing retained, moved and discarded information.test

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.