---
id: JNY-CRM-DQ-006
title: A colleague follows an absorbed identity and inspects its history
feature: FEAT-CRM-DQ-05
product_area: crm
module: data-quality
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - CRM-ACC-0261
  - CRM-ACC-0266
  - CRM-ACC-0267
  - CRM-ACC-0268
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
actor: ACT-CRM-002
goal: Reach the current record from an older reference and understand how merging produced it.
capabilities:
  - CAP-CRM-DQ-018
  - CAP-CRM-DQ-019
screens:
  - '/console/{tenantId}/crm/contacts/{id}'
steps:
  - 'n': 1
    surface: '/console/{tenantId}/crm/contacts/{id}'
    action: Open a bookmark to a member absorbed through two merges.
    capability: CAP-CRM-DQ-018
    expected: The final survivor opens directly with both record numbers explained.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0261.spec.ts#CRM-ACC-0261'
  - 'n': 2
    surface: '/console/{tenantId}/crm/contacts/{id}'
    action: 'Use recent, saved-view and search references to the old record.'
    capability: CAP-CRM-DQ-018
    expected: Each resolves to the survivor or clearly reports its destination or failure.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0267.spec.ts#CRM-ACC-0267'
  - 'n': 3
    surface: listMergesIntoRecord
    action: Inspect successful merged-from history on the survivor.
    capability: CAP-CRM-DQ-019
    expected: Record-read authority exposes the participant and requester history.
    provenance: test
    source: >-
      services-crm:modules/merges/tests/e2e/merged-from-history.e2e.spec.js#answers the reader the survivor’s
      merged-from history, naming the merge and the record it absorbed
  - 'n': 4
    surface: getMergeIntoRecord
    action: Open an outcome from that lineage.
    capability: CAP-CRM-DQ-019
    expected: Field results and the absorbed originals are visible.
    provenance: test
    source: >-
      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
  - 'n': 5
    surface: getMergedRecordAlias
    action: 'As an integration, resolve the older identity.'
    capability: CAP-CRM-DQ-018
    expected: 'The alias response identifies survivor, original merge and time.'
    provenance: test
    source: >-
      services-crm:modules/merges/tests/e2e/merges.e2e.spec.js#says where an id the merge took away went, and
      through which merge
alternates:
  - from_step: 5
    condition: The integration tries creating with its absorbed identity.
    path: The identity guard rejects recreation.
    outcome: No new record acquires that old identity.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0268.spec.ts#CRM-ACC-0268'
failures:
  - from_step: 3
    condition: The caller reads organizations but lacks contact authority.
    path: The contact history request fails.
    outcome: No contact history is disclosed.
    provenance: test
    source: >-
      services-crm:modules/merges/tests/e2e/merged-from-history.e2e.spec.js#refuses a reader of organizations
      a contact’s merged-from history
  - from_step: 1
    condition: The survivor has been hard-deleted.
    path: The old identity still reports merging but the destination returns not found.
    outcome: The known dangling-alias defect prevents reaching a record.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0268.spec.ts#CRM-ACC-0268'
rules_in_play:
  - BR-CAP-CRM-DQ-018-02
  - BR-CAP-CRM-DQ-018-03
  - BR-CAP-CRM-DQ-018-08
  - BR-CAP-CRM-DQ-018-09
  - BR-CAP-CRM-DQ-019-07
  - BR-CAP-CRM-DQ-019-08
assertions:
  - id: AS-JNY-CRM-DQ-006-01
    statement: >-
      Chained absorption redirects each old identity directly to the latest survivor while retaining its
      original merge reference.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/merging/CRM-ACC-0261.spec.ts#CRM-ACC-0261'
  - id: AS-JNY-CRM-DQ-006-02
    statement: Ordinary record readers see lineage without management-only merge details.
    provenance: test
    source: >-
      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
e2e_policy: required
e2e_reason: >-
  Old-link navigation, notices and narrower reader history require browser checks; service tests cover alias
  resolution and permission boundaries.
evidence:
  - repository: react-console
    source_sha: baf6dae382d6f41dce976c7f848667ccc37e076f
    paths:
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0261.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0267.spec.ts
      - acceptance/crm/playwright/journeys/merging/CRM-ACC-0268.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/merges/tests/e2e/merged-from-history.e2e.spec.js
      - modules/merges/tests/e2e/merges.e2e.spec.js
      - modules/merges/tests/integration/services/merges/merged-from-history.integration.spec.js
    note: >-
      Static examination uses the cited records and implementation anchors; repository tests are not executed
      by this corpus check.
---

# A colleague follows an absorbed identity and inspects its history

## Story

A colleague opens an old member bookmark after successive merges. The link takes them to the current survivor with an explanation. Other stale entry points either resolve or report their problem. The colleague reads the successful lineage and an outcome using ordinary record-read authority. An integration can separately ask where an absorbed identity went. Hard deletion of the final survivor remains an unresolved case because its old aliases still identify that missing destination.
