---
id: JNY-PFM-MTD-004
title: Define connections and maintain dated links
feature: FEAT-PFM-MTD-06
product_area: platform
module: metadata
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - PLAT-M6-S01
  - PLAT-M6-S02
  - PLAT-M6-S03
  - PLAT-M6-S04
  - PLAT-M6-S05
  - PLAT-M6-S06
  - PLAT-M6-S07
  - PLAT-M6-S09
  - PLAT-M6-S10
  - PLAT-M6-S12
  - CO-ACC-0240
  - CO-ACC-0241
  - CO-ACC-0243
  - CO-ACC-0244
  - CO-ACC-0245
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
actor: ACT-PFM-007
goal: Configure crew relationships and maintain links while date spans and restricted places remain effective.
capabilities:
  - CAP-PFM-MTD-017
  - CAP-PFM-MTD-018
screens:
  - '/console/{tenantId}/configuration/platform/relationshipTypes'
  - '/console/{tenantId}/objects/{objectKey}/{recordId}'
  - '/console/{tenantId}/crm/contacts/{id}'
steps:
  - 'n': 1
    surface: '/console/{tenantId}/configuration/platform/relationshipTypes'
    action: Define dated many-to-many Crew between Contacts and Boats with directional labels.
    capability: CAP-PFM-MTD-017
    expected: The contact and boat pages show their corresponding relationship cards.
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S01.spec.ts#PLAT-M6-S01: an
      administrator defines Crew and both Osprey's and Tom's pages show it under their own label
  - 'n': 2
    surface: '/console/{tenantId}/objects/{objectKey}/{recordId}'
    action: Add Tom Jones to Osprey’s crew from today.
    capability: CAP-PFM-MTD-018
    expected: Refreshing Tom’s page reveals the boat.
    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
  - 'n': 3
    surface: '/console/{tenantId}/objects/{objectKey}/{recordId}'
    action: Attempt a second insurer while Atlantic Mutual occupies the place.
    capability: CAP-PFM-MTD-018
    expected: The refusal names the current insurer and retains the existing connection.
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S04.spec.ts#PLAT-M6-S04: a second
      insurer for Osprey is refused naming the first, and nothing is saved
  - 'n': 4
    surface: endAssociation
    action: End a crew span at season close and remove a mistaken entry.
    capability: CAP-PFM-MTD-018
    expected: Historical browsing retains the ended dates while the mistaken link disappears.
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S05.spec.ts#PLAT-M6-S05: an ended
      crew place shows under Show Ended with its dates and a mistaken entry leaves no history
  - 'n': 5
    surface: '/console/{tenantId}/objects/{objectKey}/{recordId}'
    action: Attempt a charter beginning today while another ends next month.
    capability: CAP-PFM-MTD-018
    expected: The current charter prevents the overlap through its inclusive ending.
    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
alternates:
  - from_step: 2
    condition: A type supports primary and the member has two sponsors.
    path: Staff select the second sponsor as primary.
    outcome: The designation moves to the selected connection.
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S07.spec.ts#PLAT-M6-S07: marking a
      second sponsor primary moves the primary flag
  - from_step: 1
    condition: Two custom objects represent a boat and its mooring.
    path: Define the type and connect their records.
    outcome: Both record pages display the opposite endpoint.
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S10.spec.ts#PLAT-M6-S10: a boat and
      its mooring are linked and each page shows the other
failures:
  - from_step: 1
    condition: 'Labels, identity or native-target cascade settings are invalid.'
    path: The editor explains the invalid choices.
    outcome: No type is stored.
    provenance: test
    source: >-
      react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S02.spec.ts#PLAT-M6-S02: a
      relationship type with a missing label, a cascade onto contacts or a duplicate id is refused and nothing
      is saved
  - from_step: 1
    condition: Boat still uses the type for ownership.
    path: Retirement names the dependent object and fails.
    outcome: The ownership type remains active.
    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
rules_in_play:
  - BR-CAP-PFM-MTD-017-01
  - BR-CAP-PFM-MTD-017-03
  - BR-CAP-PFM-MTD-017-06
  - BR-CAP-PFM-MTD-017-10
  - BR-CAP-PFM-MTD-018-02
  - BR-CAP-PFM-MTD-018-03
  - BR-CAP-PFM-MTD-018-07
  - BR-CAP-PFM-MTD-018-08
  - BR-CAP-PFM-MTD-018-10
  - BR-CAP-PFM-MTD-018-11
assertions:
  - id: AS-JNY-PFM-MTD-004-01
    statement: A saved link is visible with the appropriate label from the opposite 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
  - id: AS-JNY-PFM-MTD-004-02
    statement: An occupied place remains protected through a future end day.
    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
  - id: AS-JNY-PFM-MTD-004-03
    statement: 'Standard staff can maintain links without type administration, while readers receive no link 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
e2e_policy: required
e2e_reason: >-
  The connected work includes console presentation and interactions across record surfaces. Browser acceptance
  complements service proof for those visible outcomes.
proved_by: []
---

# Define connections and maintain dated links

Configure crew relationships and maintain links while date spans and restricted places remain effective.

## Journey

The steps identify the participating capabilities and their expected outcomes. Alternatives and refusals retain their own evidence so a successful route does not imply that every branch has been demonstrated.
