---
id: FAS-CRM-REG-03
title: Record Placements acceptance
feature: FEAT-CRM-REG-03
product_area: crm
module: regions
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-CRM-REG-008
  - CAP-CRM-REG-009
scenarios:
  - id: FAS-CRM-REG-03-01
    title: A changed deciding address moves an eligible record
    kind: behaviour
    exercises:
      - CAP-CRM-REG-008
      - CAP-CRM-REG-009
    relies_on:
      - ATS-CRM-REG-008-02
      - ATS-CRM-REG-009-02
    preconditions: An addressed contact has no override.
    steps: Move the deciding address into another saved area and deliver the captured reaction.
    expected: Placement follows the new deciding input.
    negative: false
    data_needs: An addressed contact has no override.
    bound_to:
      - TST-CRM-REG-058
    provenance: test
    source: >-
      services-crm:modules/regions/tests/integration/services/region-assignment/region-assignment.integration.spec.js#moves
      the contact when its deciding address moves
  - id: FAS-CRM-REG-03-02
    title: A pinned exception and ordinary placement use distinct outcomes
    kind: interaction
    exercises:
      - CAP-CRM-REG-008
      - CAP-CRM-REG-009
    relies_on:
      - ATS-CRM-REG-009-01
      - ATS-CRM-REG-009-03
    preconditions: Two contacts have the same deciding address; one pins a manual region.
    steps: 'Move both addresses, process reactions, then release the pinned override and process that reaction.'
    expected: The ordinary contact moves first; the held contact moves only after release.
    negative: false
    data_needs: Two contacts have the same deciding address; one pins a manual region.
    bound_to: []
    provenance: proposed
    source: WF-CRM-REG-001
  - id: FAS-CRM-REG-03-03
    title: A contact can hold and release its geographic exception
    kind: lifecycle
    exercises:
      - CAP-CRM-REG-008
      - CAP-CRM-REG-009
    relies_on:
      - ATS-CRM-REG-009-01
      - ATS-CRM-REG-009-03
    preconditions: A contact has calculated placement and another local regional choice.
    steps: 'Pin the manual choice, move the deciding address, then release the override.'
    expected: The hold survives the move and release follows the current changed address.
    negative: false
    data_needs: A contact has calculated placement and another local regional choice.
    bound_to:
      - TST-CRM-REG-020
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/contacts/CRM-ACC-0023.spec.ts#CRM-ACC-0023'
  - id: FAS-CRM-REG-03-04
    title: Record authority remains required for exceptions
    kind: permission
    exercises:
      - CAP-CRM-REG-008
      - CAP-CRM-REG-009
    relies_on:
      - ATS-CRM-REG-009-04
    preconditions: A reader can inspect a contact but cannot update it.
    steps: Attempt to change its region and override through record editing and the API.
    expected: The refused edits preserve the region and override.
    negative: true
    data_needs: A reader can inspect a contact but cannot update it.
    bound_to: []
    provenance: proposed
    source: SVC-CRM-REG-regions
  - id: FAS-CRM-REG-03-05
    title: Repeated and reversed deliveries converge on the current address
    kind: regression
    exercises:
      - CAP-CRM-REG-008
      - CAP-CRM-REG-009
    relies_on:
      - ATS-CRM-REG-008-08
      - ATS-CRM-REG-008-09
    preconditions: An unheld contact moves through two deciding addresses.
    steps: >-
      Deliver captured changes twice and in reverse order, then inspect its placement and regional
      events.
    expected: >-
      The current deciding address governs the final result and regional writes do not create a new
      address-reaction loop.
    negative: false
    data_needs: An unheld contact moves through two deciding addresses.
    bound_to: []
    provenance: proposed
    source: >-
      services-crm:modules/regions/tests/integration/services/region-assignment/region-assignment-delivery.integration.spec.js
evidence:
  - FEAT-CRM-REG-03
  - CAP-CRM-REG-008
  - CAP-CRM-REG-009
---

# Record Placements acceptance

## What the Feature Must Do as a Whole

The suite connects ordinary address processing with deliberate exceptions. It checks the outcome after captured reactions rather than treating a saved record response as completed placement.

## Interactions Between Capabilities

A pinned exception and ordinary placement use distinct outcomes. The ordinary contact moves first; the held contact moves only after release.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | all | Establish cumulative feature coverage from the landed specifications and pinned executable assertions. |
