---
id: JNY-CRM-DQ-001
title: A reviewer settles duplicate work and revisits a dismissal
feature: FEAT-CRM-DQ-02
product_area: crm
module: data-quality
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - CRM-ACC-0233
  - CRM-ACC-0234
  - CRM-ACC-0235
  - CRM-ACC-0236
  - CRM-ACC-0273
  - CRM-ACC-0283
  - CRM-ACC-0289
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
actor: ACT-CRM-008
goal: Resolve suggestions efficiently while keeping mistaken or outdated decisions reviewable.
capabilities:
  - CAP-CRM-DQ-011
  - CAP-CRM-DQ-007
  - CAP-CRM-DQ-002
  - CAP-CRM-DQ-008
  - CAP-CRM-DQ-001
screens:
  - '/console/{tenantId}/crm/dataQuality'
  - '/console/{tenantId}/crm/dataQuality/duplicates/{objectType}'
  - '/console/{tenantId}/crm/dataQuality/duplicates/{objectType}/groups/{groupId}'
  - '/console/{tenantId}/crm/dataQuality/dismissed'
steps:
  - 'n': 1
    surface: '/console/{tenantId}/crm/dataQuality'
    action: Open Data Quality and follow the waiting contact groups.
    capability: CAP-CRM-DQ-011
    expected: The overview links its confidence counts to review work.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0283.spec.ts#CRM-ACC-0283'
  - 'n': 2
    surface: '/console/{tenantId}/crm/dataQuality/duplicates/{objectType}'
    action: 'Choose confidence order, enter a surname prefix and apply an evidence filter.'
    capability: CAP-CRM-DQ-007
    expected: 'Matching groups appear with paging, record summaries and leading reasons.'
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0233.spec.ts#CRM-ACC-0233'
  - 'n': 3
    surface: '/console/{tenantId}/crm/dataQuality/duplicates/{objectType}/groups/{groupId}'
    action: Inspect the four-record group and its evidence.
    capability: CAP-CRM-DQ-002
    expected: Readable point contributions accompany masked matching values.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0230.spec.ts#CRM-ACC-0230'
  - 'n': 4
    surface: dismissDuplicateGroup
    action: Submit Not Duplicates for the entire group with a note.
    capability: CAP-CRM-DQ-008
    expected: The open pairs settle together and review moves to the next group.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0234.spec.ts#CRM-ACC-0234'
  - 'n': 5
    surface: restoreDuplicateGroupDismissal
    action: Use the immediate Undo action.
    capability: CAP-CRM-DQ-008
    expected: Pairs changed by that dismissal reopen while separately dismissed pairs retain their decisions.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0234.spec.ts#CRM-ACC-0234'
  - 'n': 6
    surface: '/console/{tenantId}/crm/dataQuality/dismissed'
    action: 'Find a week-old pair in dismissed work, inspect its attribution and restore it.'
    capability: CAP-CRM-DQ-008
    expected: The pair returns to open review without the former note.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0235.spec.ts#CRM-ACC-0235'
  - 'n': 7
    surface: listDuplicateGroups
    action: Observe a later shared mobile value on two dismissed contacts.
    capability: CAP-CRM-DQ-001
    expected: Their suggestion reopens with the new evidence explained.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0236.spec.ts#CRM-ACC-0236'
alternates:
  - from_step: 4
    condition: One group member represents a different person.
    path: Remove that member from the displayed group.
    outcome: Its connections are dismissed while the other records remain open.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0234.spec.ts#CRM-ACC-0234'
  - from_step: 4
    condition: Another reviewer has just dismissed the group.
    path: Read the idempotent dismissal response and attribution.
    outcome: The existing decision remains and the response supplies the resulting group identity.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0273.spec.ts#CRM-ACC-0273'
failures:
  - from_step: 4
    condition: The caller has duplicate-read authority without review authority.
    path: The console omits actions and direct decision requests fail.
    outcome: Review decisions remain unchanged.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0289.spec.ts#CRM-ACC-0289'
rules_in_play:
  - BR-CAP-CRM-DQ-007-02
  - BR-CAP-CRM-DQ-007-05
  - BR-CAP-CRM-DQ-002-06
  - BR-CAP-CRM-DQ-008-02
  - BR-CAP-CRM-DQ-008-03
  - BR-CAP-CRM-DQ-008-04
  - BR-CAP-CRM-DQ-008-06
  - BR-CAP-CRM-DQ-008-09
assertions:
  - id: AS-JNY-CRM-DQ-001-01
    statement: Group dismissal removes the open entry and presents its attribution and note in dismissed work.
    provenance: test
    source: >-
      services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#answers the dismissed group the
      decision leaves, with every pair of it dismissed
  - id: AS-JNY-CRM-DQ-001-02
    statement: >-
      Name-only changes and re-checking do not independently undo dismissal, while newly shared mobile
      evidence can reopen it.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0236.spec.ts#CRM-ACC-0236'
  - id: AS-JNY-CRM-DQ-001-03
    statement: Repeated group dismissal preserves the first decision and returns its reviewer attribution.
    provenance: test
    source: >-
      services-crm:modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js#says on each pair of the second
      answer that it was already dismissed, with the earlier note
e2e_policy: required
e2e_reason: 'Queue navigation, permissions and undo must be exercised through the browser as well as the decision API.'
evidence:
  - repository: react-console
    source_sha: baf6dae382d6f41dce976c7f848667ccc37e076f
    paths:
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0230.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0233.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0234.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0235.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0236.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0273.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0283.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0289.spec.ts
    note: >-
      Static examination uses the cited records and implementation anchors; repository tests are not executed
      by this corpus check.
  - repository: services-crm
    source_sha: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
    paths:
      - modules/duplicates/tests/e2e/duplicate-groups.e2e.spec.js
    note: >-
      Static examination uses the cited records and implementation anchors; repository tests are not executed
      by this corpus check.
proved_by: []
---

# A reviewer settles duplicate work and revisits a dismissal

## Story

A coordinator opens the contact queue and narrows the waiting work. They inspect a four-record group, decide the records describe different people and submit a noted dismissal. An immediate undo returns the group to review. The coordinator also restores an older pair from dismissed work. Later, new shared mobile information reopens one of their dismissed pairs with an explanation.
