Skip to content

CAP-CRM-DQ-010Review and merge from a record page

Markdown

CAP-CRM-DQ-010

Review and merge from a record page

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

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
Record-page review reveals suggestions in the current work context.Manual or detected counterparts can join a plan with the current record.
Surfaces
consoleapi
Intent sources
services-crm:docs/merging/experience/functional-requirements.md#IND-1 to IND-7, MAN-1, MAN-2 (package approved by Andrew 2026-10-13)services-crm:docs/milestones/CRM-M1-contacts-and-organizations.md#D-03

Controls

17 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-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.duplicates.readapirecord
crm.contacts.mergeconsoletenant
crm.organizations.mergeconsoletenant

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Per-record candidate reads include every status unless filtered, return at most 100 without pagination and return no group for an empty candidate list.
no proof recorded yet
policyapitest
services-crm:modules/duplicates/tests/e2e/duplicates.e2e.spec.js#answers nothing for a record in no pair at all
02must prove
Confirmed
The response includes the connected group's records, including those related only through another candidate, for whole-group merge launch.
no proof recorded yet
calculationservicetest
services-crm:modules/duplicates/tests/integration/services/candidates/duplicate-candidate-view.integration.spec.js#answers the four records of that group, which is the banner a record page shows
03must prove
Confirmed
Reading candidates under an absorbed identity returns a merged-record response naming its survivor instead of an empty list.
no proof recorded yet
policyapitest
services-crm:modules/merges/tests/e2e/merged-records.e2e.spec.js#answers 410 to the old id’s duplicate candidates, rather than an empty list
04must prove
Confirmed
The page indicator includes open medium, high and very-high candidates, distinguishes likely high-or-above matches from medium possibilities and shows no alert for low-only or empty results.
no proof recorded yet
policyconsoleobserved
05must prove
Confirmed
Duplicate information on a record page is visible only with duplicate-read authority.
no proof recorded yet
permissionconsole, apitest
06must prove
Confirmed
Merge-authorized staff launch a plan from selected indicator records, including the current record without choosing it as survivor.
no proof recorded yet
policyconsoletest
07
Confirmed
Merge-authorized staff receive a Merge action and additional-record picker on contact and organization pages even without detected candidates.
policyconsoletest
08
Confirmed
Reviewers can dismiss an indicator candidate and see the changed decision reflected wherever that pair is displayed.
policyconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01A contact belongs to a three-record connection, including one indirect match.An administrator launches Merge With Selected from its page.All three join the plan and the current record is not forced to survive.test
02An organization has a candidate based on its name and domain.A reviewer dismisses the suggestion on its page.The alert clears and the pair appears among dismissed work.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.