---
id: JNY-CRM-REG-001
title: An administrator establishes geographic placement
feature: FEAT-CRM-REG-02
product_area: crm
module: regions
revision: 2
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes:
  - CRM-ACC-0357
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
actor: ACT-CRM-003
goal: Establish automatic placement for newly saved people and companies.
capabilities:
  - CAP-CRM-REG-001
  - CAP-CRM-REG-003
  - CAP-CRM-REG-004
  - CAP-CRM-REG-007
  - CAP-CRM-REG-008
  - CAP-CRM-REG-010
screens:
  - '/console/{tenantId}/configuration/crm/regions'
  - '/console/{tenantId}/configuration/crm/regions?tab=rules'
  - '/console/{tenantId}/configuration/crm/regions/assignmentRules'
  - '/console/{tenantId}/crm/contacts/new'
  - '/console/{tenantId}/crm/contacts/{id}'
steps:
  - 'n': 1
    surface: '/console/{tenantId}/configuration/crm/regions'
    action: Create the regional definitions in their drawers.
    capability: CAP-CRM-REG-001
    expected: The active catalogue entries are listed for policy targets.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/configuration/CRM-ACC-0357.spec.ts#CRM-ACC-0357'
  - 'n': 2
    surface: '/console/{tenantId}/configuration/crm/regions?tab=rules'
    action: Visit Assignment Rules and open its editor.
    capability: CAP-CRM-REG-003
    expected: The editor begins with the saved configuration and no staged changes.
    provenance: test
    source: >-
      react-console:components/regions/__tests__/assignment-rules-view.test.tsx#Edit Assignment Rules › is
      offered while assignment is off too, since that is where it is turned on
  - 'n': 3
    surface: '/console/{tenantId}/configuration/crm/regions/assignmentRules'
    action: 'Enable both record kinds, selecting preferred contact addresses and Main organization addresses.'
    capability: CAP-CRM-REG-003
    expected: The save bar reflects the staged settings changes.
    provenance: test
    source: >-
      react-console:components/regions/__tests__/assignment-rules-editor.test.tsx#the settings on the editor ›
      ask for an address only for a kind that is assigned
  - 'n': 4
    surface: '/console/{tenantId}/configuration/crm/regions/assignmentRules'
    action: 'Add postal, state, country and fallback coverage in the intended sequence.'
    capability: CAP-CRM-REG-004
    expected: The staged list presents the geographic policy in that order.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/configuration/CRM-ACC-0357.spec.ts#CRM-ACC-0357'
  - 'n': 5
    surface: '/console/{tenantId}/configuration/crm/regions?tab=rules'
    action: 'Save the policy, return to its read-only tab and preview a Boston address.'
    capability: CAP-CRM-REG-007
    expected: The saved policy’s result identifies Northeast and its first postal rule.
    provenance: test
    source: >-
      react-console:e2e/dev/regions.dev.spec.ts#turns automatic assignment on for contacts and organizations,
      and says which rule wins an address
  - 'n': 6
    surface: '/console/{tenantId}/configuration/crm/regions?tab=rules'
    action: Review the saved settings and outstanding recalculation notice.
    capability: CAP-CRM-REG-004
    expected: Existing placements remain intact and the tab requests recalculation.
    provenance: test
    source: 'react-console:acceptance/crm/playwright/journeys/configuration/CRM-ACC-0357.spec.ts#CRM-ACC-0357'
  - 'n': 7
    surface: '/console/{tenantId}/crm/contacts/new'
    action: Create a member with a Hartford address and read the saved record after processing.
    capability: CAP-CRM-REG-008
    expected: The calculated Northeast placement appears asynchronously after creation.
    provenance: test
    source: >-
      react-console:e2e/dev/regions.dev.spec.ts#puts a new contact in the region its address falls in, and
      follows the preferred address
alternates:
  - from_step: 5
    condition: The address falls outside coverage and no fallback exists.
    path: Preview explains that no rule matches.
    outcome: Staff return to the editor to revise and save coverage.
    provenance: test
    source: >-
      react-console:components/regions/__tests__/test-address-dialog.test.tsx#no match › says no rule matches,
      and why
failures:
  - from_step: 6
    condition: A target region disappears before policy saving.
    path: The editor identifies the missing target and the service rejects the invalid policy.
    outcome: The saved configuration remains intact.
    provenance: test
    source: >-
      react-console:components/regions/__tests__/assignment-draft.test.ts#the issues a save would be refused
      for › names a rule whose region no longer exists
  - from_step: 2
    condition: The visitor has regional read authority only.
    path: The view supplies no Edit Assignment Rules action.
    outcome: Saved settings remain read-only.
    provenance: test
    source: >-
      react-console:e2e/dev/regions.dev.spec.ts#shows a read-only user the regions, and offers them nothing
      that changes one
rules_in_play:
  - BR-CAP-CRM-REG-004-09
  - BR-CAP-CRM-REG-004-10
  - BR-CAP-CRM-REG-006-01
  - BR-CAP-CRM-REG-008-01
  - BR-CAP-CRM-REG-010-01
  - BR-CAP-CRM-REG-007-02
  - BR-CAP-CRM-REG-003-02
assertions:
  - id: AS-JNY-CRM-REG-001-01
    statement: Saving policy leaves previous record placements intact.
    provenance: test
    source: >-
      services-crm:modules/regions/tests/integration/services/region-assignment/region-assignment.integration.spec.js#rule
      changes and the recalculation › changes no record when the rules are saved
  - id: AS-JNY-CRM-REG-001-02
    statement: The new member receives calculated placement after committed creation.
    provenance: test
    source: >-
      services-crm:modules/regions/tests/e2e/regions.e2e.spec.js#gives that contact its region once the change
      event has been delivered
  - id: AS-JNY-CRM-REG-001-03
    statement: Preview leaves the saved configuration unchanged.
    provenance: test
    source: >-
      services-crm:modules/regions/tests/e2e/regions.e2e.spec.js#the preview › writes nothing: the tenant
      still has the rules it had
e2e_policy: required
e2e_reason: >-
  Configuration, record creation and asynchronous placement cross console and service boundaries and need
  browser coverage.
---

# An administrator establishes geographic placement

## Story

An administrator builds the regional catalogue and opens the policy editor to establish geographic coverage. They save the complete draft, return to the view and preview an address under the saved policy. A newly created member then receives a calculated region after event processing. Existing records await the explicit recalculation workflow.
