Skip to content

ATS-CRM-ENT-006Share organization contact points with affiliated people

Markdown

ATS-CRM-ENT-006

Share organization contact points with affiliated people

Markdown
  • DocumentProposed

KindAcceptance test setProduct areaCRMModuleEntitiesRevision1

Read atservices-crm a8d1364freact-console baf6dae3

Coverage

  • Rule gap: FND-CRM-ENT-054
  • Transition covered
  • Validation covered
  • Permission covered
  • Edge covered
  • Failure gap: FND-CRM-ENT-054
  • Boundary gap: FND-CRM-ENT-054
  • Concurrency covered
  • Invariant covered
  • Interaction covered

Test Scenarios

17 scenarios proving CAP-CRM-ENT-006; 11 bound to an existing test.

01 a link names the contact's affiliation and that organization's recordvalidationapinegativetest
Proves
BR-CAP-CRM-ENT-006-02
Preconditions
Prepare a contact tied to Acme and Globex.
Steps
Link the work address through the Acme affiliation to a Globex address; to an Acme type Acme lacks.
Expected
400 naming the record; 400 naming the item.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#refuses a link to a record of an organization other than the affiliation’s
02 No link through a affiliation not in effectvalidationapinegativetest
Proves
BR-CAP-CRM-ENT-006-03
Preconditions
Prepare an ended and an upcoming affiliation.
Steps
Make a new link through each.
Expected
400 naming the path each time.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#refuses a new link through an upcoming affiliation, naming the path
03 a linked row rejects a value of its ownvalidationbrowsernegativetest
Proves
BR-CAP-CRM-ENT-006-04 INV-DOM-CRM-ENT-001-10
Preconditions
Prepare a linked work address.
Steps
Send it with another city; with extra spaces; with different case.
Expected
Rejected; accepted; rejected.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#refuses a value that differs from the organization’s in letter case, naming the field (A19)
04 a link resolves while the affiliation is in effect and the contact is not rewritteninteractionbrowsertest
Proves
BR-CAP-CRM-ENT-006-05
Preconditions
Prepare a linked work address.
Steps
Edit the organization's address; end the affiliation.
Expected
The new value with the contact's version unmodified; then unresolved with the link preserved.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#writes nothing to the contact: its version is the one before
05 a removed source leaves a disconnected rowtransitionbrowsertest
Proves
BR-CAP-CRM-ENT-006-06
Preconditions
Prepare a work address and phone linked to an organization.
Steps
The organization removes both records.
Expected
Each row disconnected with its last value, provenance and needs_verification; contact version moved.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#turns the linked work address into a disconnected row holding its last value, not a copy (D-25)
06 a client cannot disconnect a rowvalidationapinegativetest
Proves
BR-CAP-CRM-ENT-006-07 INV-DOM-CRM-ENT-001-11
Preconditions
Prepare a disconnected row.
Steps
Send it back as read; ask for another row to be disconnected.
Expected
Accepted with the server's provenance; 400 naming source_mode.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/contacts-disconnected.e2e.spec.js#refuses a client that asks for a row to be disconnected, naming the field
07 Verify, relink and remove a disconnected rowtransitionapinegativetest
Proves
BR-CAP-CRM-ENT-006-08
Preconditions
Prepare a disconnected address and phone.
Steps
Verify one; relink one through a current affiliation; remove one; repeat a verify; send a stale or missing version.
Expected
Owned with provenance cleared; linked again; deleted; 409; 409 and 400.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/e2e/contacts-disconnected.e2e.spec.js#is refused 409 on a row that is no longer disconnected
08 Make Independent Copytransitionbrowsertest
Proves
BR-CAP-CRM-ENT-006-09
Preconditions
Prepare a linked row.
Steps
Save it as copied with no value of its own; then the organization moves.
Expected
The organization's value with copied_from and copied_at; unmodified after the move.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#makes an independent copy of the resolved value when the row is saved as copied with no value of its own
09 An affiliation that supplies a link is removed only with its rows handledinvariantbrowsernegativetest
Proves
BR-CAP-CRM-ENT-006-10 INV-DOM-CRM-ENT-003-12
Preconditions
Prepare a affiliation supplying a linked address and phone.
Steps
Remove the affiliation alone; remove it while copying one row and removing the other.
Expected
Rejected; accepted.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#refuses a save that removes the affiliation and keeps the rows linked through it
10 Link When Added is honoured and never overwritesedgebrowsernegativetest
Proves
BR-CAP-CRM-ENT-006-11
Preconditions
Prepare an Employer type with address and phone mappings.
Steps
Create a affiliation with no choice; with an empty choice; with a choice naming a mapping the type lacks; for a contact with its own work address.
Expected
Every default; nothing; rejected; own address untouched.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#links nothing when the choice is an empty list
11 Defaults only through affiliations in effect, on the start day, never rewritteninteractionbrowsertest
Proves
BR-CAP-CRM-ENT-006-12
Preconditions
Prepare an upcoming and an ended affiliation of a type with mappings.
Steps
Save; run the reconciliation on the eve and on the start day; re-apply on the ended affiliation; change the type's mappings.
Expected
Nothing at save or eve; links on the day; skipped; no existing contact changed.
Data
No additional fixtures.
Bound to
Source
services-crm:modules/entities/tests/integration/services/affiliations/affiliation-date-reconciliation.follow-ups.integration.spec.js#links every default of its type on the start day when the save stated no choice
12 Reject a stale repair after another editor resolves the detailconcurrencyapinegativeproposed
Proves
BR-CAP-CRM-ENT-006-08 BR-CAP-CRM-ENT-004-01
Preconditions
Two editors read the same disconnected address and person version.
Steps
The first keeps the retained value; the second relinks using the version it originally read.
Expected
The second repair conflicts and preserves the first editor’s owned value.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/e2e/contacts-disconnected.e2e.spec.js#is refused 409 on a row that is no longer disconnected
13 Source removal leaves a person’s detail for reviewinteractionapiproposed
Proves
BR-CAP-CRM-ENT-005-10 BR-CAP-CRM-ENT-006-06
Preconditions
A person’s work address is linked to an organization address.
Steps
Remove the source address and read the person’s address and version.
Expected
The person retains the last value as disconnected information needing verification and its version advances.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:docs/milestones/CRM-M1-contacts-and-organizations.plan.md#A9; services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#turns the linked work address into a disconnected row holding its last value, not a copy (D-25)
14 Remove a relationship and resolve its dependent details togetherinteractionapiproposed
Proves
BR-CAP-CRM-ENT-006-10 BR-CAP-CRM-ENT-009-02
Preconditions
A person has one affiliation supplying a linked address and phone.
Steps
Try removing only the affiliation; then remove it while copying the address and removing the phone.
Expected
The incomplete removal changes nothing; the complete save removes the tie and handles both dependent details.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#refuses a save that removes the affiliation and keeps the rows linked through it; react-console:acceptance/crm/playwright/journeys/affiliations/CRM-ACC-0202.spec.ts#CRM-ACC-0202
15 Apply a future tie’s selected contact-point defaultsinteractionapiproposed
Proves
BR-CAP-CRM-ENT-006-12 BR-CAP-CRM-ENT-010-05
Preconditions
A future affiliation has pending selected mappings and empty destination purposes.
Steps
Run a date pass before its start, then on its local start day; read the person after each pass.
Expected
The early pass makes no links; the due pass fills the selected destinations once.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/integration/services/affiliations/affiliation-date-reconciliation.follow-ups.integration.spec.js#links every default of its type on the start day when the save stated no choice; services-crm:modules/entities/tests/integration/services/affiliations/affiliation-date-reconciliation.integration.spec.js#takes the organization out of compliance the next morning, with no save of the contact
16 A default mapping supplies a newly effective tieinteractionapiproposed
Proves
BR-CAP-CRM-ENT-006-11 BR-CAP-CRM-ENT-017-07
Preconditions
An affiliation type maps an organization address purpose to an empty person address purpose.
Steps
Add a current affiliation of that type with the mapping selected and read the saved person.
Expected
The new link uses the configured source and destination while preexisting personal values remain.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:modules/entities/tests/integration/services/persistence/contact-information-sources.integration.spec.js#links nothing when the choice is an empty list; services-crm:modules/entities/tests/integration/services/persistence/affiliation-types.integration.spec.js#keeps the mappings, as an omitted collection means unchanged
17 Exercise every declared authority independentlypermissionapinegativeproposed
Proves
BR-CAP-CRM-ENT-003-07 BR-CAP-CRM-ENT-003-09
Preconditions
An eligible record and configuration fixture exist for each operation; the caller can reach only the run’s workspace.
Steps
For each declared permission, execute its matching operation with that permission, then without it while retaining the other required grants. Read affected records after every refused mutation.
Expected
The authorized case reaches the operation; the missing-grant case is refused and preserves saved data. Record access alone does not authorize the other declared actions.
Data
Run-owned records and configuration in an isolated workspace.
Source
services-crm:aws/crm.service.ts:ApplicationPermissions; services-crm:modules/entities/aws/api/entities.routes.ts

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.