Skip to content

JNY-PFM-MTD-004Define connections and maintain dated links

Markdown

JNY-PFM-MTD-004

Define connections and maintain dated links

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindJourneyProduct areaPlatformModuleMetadata and Organization-defined RecordsRevision1End-to-endRequired

Read atreact-console baf6dae3services-platform ad3f6a65

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Goal
Configure crew relationships and maintain links while date spans and restricted places remain effective.
Screens
/console/{tenantId}/configuration/platform/relationshipTypes/console/{tenantId}/objects/{objectKey}/{recordId}/console/{tenantId}/crm/contacts/{id}

Steps

#SurfaceActionCapabilityExpectedProvenance
1/console/{tenantId}/configuration/platform/relationshipTypesDefine dated many-to-many Crew between Contacts and Boats with directional labels.CAP-PFM-MTD-017The contact and boat pages show their corresponding relationship cards.test
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
2/console/{tenantId}/objects/{objectKey}/{recordId}Add Tom Jones to Osprey’s crew from today.CAP-PFM-MTD-018Refreshing Tom’s page reveals the boat.test
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
3/console/{tenantId}/objects/{objectKey}/{recordId}Attempt a second insurer while Atlantic Mutual occupies the place.CAP-PFM-MTD-018The refusal names the current insurer and retains the existing connection.test
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
4endAssociationEnd a crew span at season close and remove a mistaken entry.CAP-PFM-MTD-018Historical browsing retains the ended dates while the mistaken link disappears.test
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
5/console/{tenantId}/objects/{objectKey}/{recordId}Attempt a charter beginning today while another ends next month.CAP-PFM-MTD-018The current charter prevents the overlap through its inclusive ending.test
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

Alternate and Failure Paths

PathFrom stepConditionPath takenOutcomeProvenance
alternate2A type supports primary and the member has two sponsors.Staff select the second sponsor as primary.The designation moves to the selected connection.test
react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S07.spec.ts#PLAT-M6-S07: marking a second sponsor primary moves the primary flag
alternate1Two custom objects represent a boat and its mooring.Define the type and connect their records.Both record pages display the opposite endpoint.test
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
failure1Labels, identity or native-target cascade settings are invalid.The editor explains the invalid choices.No type is stored.test
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
failure1Boat still uses the type for ownership.Retirement names the dependent object and fails.The ownership type remains active.test
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

IdStatementProvenance
01A saved link is visible with the appropriate label from the opposite page.test
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
02An occupied place remains protected through a future end day.test
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
03Standard staff can maintain links without type administration, while readers receive no link actions.test
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

End-to-end policy: required: The connected work includes console presentation and interactions across record surfaces. Browser acceptance complements service proof for those visible outcomes.

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.