---
id: FAS-PFM-MTD-06
title: Linked Records Acceptance
feature: FEAT-PFM-MTD-06
product_area: platform
module: metadata
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-PFM-MTD-017
  - CAP-PFM-MTD-018
  - CAP-PFM-MTD-019
scenarios:
  - id: FAS-PFM-MTD-06-01
    title: Staff maintain a crew connection from either endpoint
    kind: behaviour
    exercises:
      - CAP-PFM-MTD-017
      - CAP-PFM-MTD-018
    relies_on:
      - ATS-PFM-MTD-017-02
      - ATS-PFM-MTD-018-10
    preconditions: A crew type links Contacts and Boat.
    steps:
      - do: Add Tom to Osprey and refresh Tom’s page.
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S03.spec.ts#PLAT-M6-S03: a
          registrar adds Tom as crew of Osprey and Tom's page lists Osprey after a refresh
    expected: Both pages show the connection using their directional labels.
    negative: false
    data_needs: A crew type links Contacts and Boat.
    bound_to:
      - TST-PFM-MTD-017
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S03.spec.ts#PLAT-M6-S03: a registrar
      adds Tom as crew of Osprey and Tom's page lists Osprey after a refresh
    assertions:
      - expect: Both pages show the connection using their directional labels.
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S03.spec.ts#PLAT-M6-S03: a
          registrar adds Tom as crew of Osprey and Tom's page lists Osprey after a refresh
  - id: FAS-PFM-MTD-06-02
    title: Merge changes links and reference values to the same survivor
    kind: interaction
    exercises:
      - CAP-PFM-MTD-018
      - CAP-PFM-MTD-019
    relies_on:
      - ATS-PFM-MTD-019-07
      - ATS-PFM-MTD-019-08
      - ATS-PFM-MTD-018-10
    preconditions: 'Jane and her duplicate have crew links, owned boats and a Previous Owner reference.'
    steps:
      - do: 'Merge the duplicate through CRM and inspect the links, owned boats and reference.'
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S11.spec.ts#PLAT-M6-S11: after
          CRM merges Jane's duplicate her crew places, her boats and Osprey's Previous Owner name the
          surviving Jane
    expected: All surviving connections and the reference identify the surviving Jane.
    negative: false
    data_needs: 'Jane and her duplicate have crew links, owned boats and a Previous Owner reference.'
    bound_to:
      - TST-PFM-MTD-025
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S11.spec.ts#PLAT-M6-S11: after CRM
      merges Jane's duplicate her crew places, her boats and Osprey's Previous Owner name the surviving Jane
    assertions:
      - expect: All surviving connections and the reference identify the surviving Jane.
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S11.spec.ts#PLAT-M6-S11: after
          CRM merges Jane's duplicate her crew places, her boats and Osprey's Previous Owner name the
          surviving Jane
  - id: FAS-PFM-MTD-06-03
    title: A used relationship type retires and returns without losing links
    kind: lifecycle
    exercises:
      - CAP-PFM-MTD-017
      - CAP-PFM-MTD-018
    relies_on:
      - ATS-PFM-MTD-017-05
      - ATS-PFM-MTD-017-06
    preconditions: A used type exists and Boat has a separate owner type.
    steps:
      - do: >-
          Relabel, retire and revive the used type, remove an unused type and attempt to retire Boat’s owner
          type.
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S09.spec.ts#PLAT-M6-S09: a
          relationship type is relabelled, retired, revived and removed, and Boat's owner type cannot be
          retired
    expected: 'The used type returns, the unused type disappears and the owner dependency prevents retirement.'
    negative: false
    data_needs: A used type exists and Boat has a separate owner type.
    bound_to:
      - TST-PFM-MTD-023
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S09.spec.ts#PLAT-M6-S09: a
      relationship type is relabelled, retired, revived and removed, and Boat's owner type cannot be retired
    assertions:
      - expect: 'The used type returns, the unused type disappears and the owner dependency prevents retirement.'
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S09.spec.ts#PLAT-M6-S09: a
          relationship type is relabelled, retired, revived and removed, and Boat's owner type cannot be
          retired
  - id: FAS-PFM-MTD-06-04
    title: Link maintenance and type administration use different grants
    kind: permission
    exercises:
      - CAP-PFM-MTD-017
      - CAP-PFM-MTD-018
    relies_on:
      - ATS-PFM-MTD-017-08
      - ATS-PFM-MTD-018-11
    preconditions: Standard and read-only staff have access to the endpoint records.
    steps:
      - do: Maintain a link as standard staff and inspect actions and configuration as read-only staff.
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S12.spec.ts#PLAT-M6-S12: a
          standard user links, ends and removes but has no Relationship Types screen, and a read-only
          colleague sees no actions
    expected: >-
      Standard staff can link, end and remove; neither ordinary tier receives type administration and readers
      receive no maintenance actions.
    negative: true
    data_needs: Standard and read-only staff have access to the endpoint records.
    bound_to:
      - TST-PFM-MTD-026
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S12.spec.ts#PLAT-M6-S12: a standard
      user links, ends and removes but has no Relationship Types screen, and a read-only colleague sees no
      actions
    assertions:
      - expect: >-
          Standard staff can link, end and remove; neither ordinary tier receives type administration and
          readers receive no maintenance actions.
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S12.spec.ts#PLAT-M6-S12: a
          standard user links, ends and removes but has no Relationship Types screen, and a read-only
          colleague sees no actions
  - id: FAS-PFM-MTD-06-05
    title: A future end date still protects a booked place
    kind: regression
    exercises:
      - CAP-PFM-MTD-017
      - CAP-PFM-MTD-018
    relies_on:
      - ATS-PFM-MTD-018-02
      - ATS-PFM-MTD-018-03
    preconditions: Osprey has a charter ending next month.
    steps:
      - do: Attempt another charter beginning today.
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S06.spec.ts#PLAT-M6-S06: a
          charter ending next month still holds Osprey and a second charter from today is refused naming the
          first
    expected: The refusal names the existing charter and the second connection is not saved.
    negative: true
    data_needs: Osprey has a charter ending next month.
    bound_to:
      - TST-PFM-MTD-020
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S06.spec.ts#PLAT-M6-S06: a charter
      ending next month still holds Osprey and a second charter from today is refused naming the first
    assertions:
      - expect: The refusal names the existing charter and the second connection is not saved.
        provenance: test
        source: >-
          react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S06.spec.ts#PLAT-M6-S06: a
          charter ending next month still holds Osprey and a second charter from today is refused naming the
          first
evidence:
  - specs/platform/metadata/planning/features/FEAT-PFM-MTD-06-relationships-between-records.md
  - specs/platform/metadata/planning/capabilities/CAP-PFM-MTD-017-define-how-two-kinds-of-record-relate.md
  - >-
    specs/platform/metadata/planning/capabilities/CAP-PFM-MTD-018-link-records-to-one-another-dated-primary-and-in-force-until.md
  - >-
    specs/platform/metadata/planning/capabilities/CAP-PFM-MTD-019-apply-each-relationship-s-rule-when-a-linked-record-is-deleted.md
---

# Linked Records: Feature Acceptance Suite

## What the Feature Must Do as a Whole

The suite follows linked records through its customer outcomes, lifecycle actions, permission refusals and retained regression cases. Each scenario names the capabilities it exercises and the detailed outcomes it relies on. Existing executable bindings identify specific assertions, while unbound scenarios remain proposed acceptance work.

## Interactions Between Capabilities

Merge changes links and reference values to the same survivor. The interaction case checks the joint outcome after configuration or record state changes, so separate capability checks cannot stand in for the complete feature result.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | all | Establish cumulative feature acceptance from the landed capability and design obligations. |
