---
id: JNY-MBR-MEM-006
title: "A chapter is merged and its members follow it"
feature: FEAT-MBR-MEM-02
product_area: membership
module: memberships
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: partially-observed
supersedes:
  - "inventory:MBR-ACC-0277"
  - "inventory:MBR-ACC-0278"
  - "inventory:MBR-ACC-0474"
  - "inventory:MBR-ACC-0547"
source_sha:
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
actor: ACT-MBR-006
goal: "Merge one chapter into another without stranding a single member, while keeping the record of where everyone was before."
capabilities:
  - CAP-MBR-MEM-008
  - CAP-MBR-MEM-007
  - CAP-MBR-MEM-015
  - CAP-MBR-MEM-018
  - CAP-MBR-MEM-019
screens: []
steps:
  - 'n': 1
    surface: "mergeOrganizationalUnit"
    action: "The administrator merges Savannah into Atlanta today."
    capability: CAP-MBR-MEM-008
    expected: "The merge answers one tie moved and one ended on the survivor."
    provenance: test
    source: "services-membership:tests/e2e/s13-unit-merge.e2e.spec.ts#merges Savannah, counting one affiliation moved and one ended on the survivor"
  - 'n': 2
    surface: "getMembership"
    action: "Read Pat and Jo."
    capability: CAP-MBR-MEM-008
    expected: "Pat's Savannah tie ended yesterday and continues in Atlanta as primary; Jo keeps Atlanta and her Savannah tie ended."
    provenance: test
    source: "services-membership:tests/e2e/s13-unit-merge.e2e.spec.ts#ends Pat’s Savannah affiliation yesterday and continues it in Atlanta as primary from today"
  - 'n': 3
    surface: "listMemberships"
    action: "Read the Atlanta and Savannah rosters."
    capability: CAP-MBR-MEM-007
    expected: "Jo and Pat are on Atlanta's; Savannah's is empty."
    provenance: test
    source: "services-membership:tests/e2e/s13-unit-merge.e2e.spec.ts#lists Jo and Pat on Atlanta’s roster today, and no one on Savannah’s"
  - 'n': 4
    surface: "getMembership"
    action: "Alex, an Atlanta officer, reads Pat."
    capability: CAP-MBR-MEM-015
    expected: "Pat is now in Alex's scope."
    provenance: test
    source: "services-membership:tests/e2e/s13-unit-merge.e2e.spec.ts#shows Alex Pat now, with Pat’s Atlanta affiliation in scope"
  - 'n': 5
    surface: "getMembershipAsOf"
    action: "Read an identity-bound member as of before the merge."
    capability: CAP-MBR-MEM-018
    expected: "The member is shown under the merged chapter until the merge."
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/services/identity-unit-merge.integration.spec.ts#keeps the version before the merge, so the history shows Macon until the merge"
  - 'n': 6
    surface: "deleteOrganizationalUnit"
    action: "Try to delete Savannah."
    capability: CAP-MBR-MEM-008
    expected: "Refused while ties name it."
    provenance: test
    source: "services-membership:tests/e2e/s13-unit-merge.e2e.spec.ts#refuses to delete Savannah while affiliations name it (unit_has_affiliations)"
alternates:
  - from_step: 1
    condition: "Savannah has members bound to it by identity."
    path: "Their memberships move to Atlanta with a transfer event."
    outcome: "They are Atlanta members from the merge."
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/services/identity-unit-merge.integration.spec.ts#records the move as a transferred event of reason unit_merged, naming both units"
  - from_step: 1
    condition: "Atlanta is moved elsewhere in the tree instead of merged."
    path: "No tie is rewritten; rosters and authority follow the new tree."
    outcome: "Last month's report still files Atlanta where it was."
    provenance: test
    source: "services-membership:tests/e2e/s09-restructuring.e2e.spec.ts#still files Atlanta under the Eastern Region in a September restated after the move: the period end’s tree"
failures:
  - from_step: 1
    condition: "Savannah is merged into a zone, or a member would fall below the package's chapter minimum."
    path: "The whole merge is refused, naming the members and rules."
    outcome: "Nothing changes."
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/services/affiliations-unit-merge.integration.spec.ts#is refused 409 affiliations_not_movable, naming the memberships and the rule"
  - from_step: 1
    condition: "An owner already holds Atlanta's chapter membership as well as Savannah's."
    path: "The merge is refused on that member."
    outcome: "Nothing changes."
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/services/identity-unit-merge.integration.spec.ts#is refused 409 affiliations_not_movable on the identity_unit_held rule, naming Jo’s Savannah membership and no term"
  - from_step: 2
    condition: "Other applications wait to hear of the ties the merge ended."
    path: "No event is stated for an ended, withdrawn or re-pointed tie."
    outcome: "Committees and others do not hear of them."
    provenance: unknown
    source: "FND-MBR-MEM-028"
rules_in_play:
  - BR-CAP-MBR-MEM-008-04
  - BR-CAP-MBR-MEM-008-05
  - BR-CAP-MBR-MEM-008-06
  - BR-CAP-MBR-MEM-008-07
  - BR-CAP-MBR-MEM-008-08
  - BR-CAP-MBR-MEM-007-12
  - BR-CAP-MBR-MEM-019-10
assertions:
  - id: AS-JNY-MBR-MEM-006-01
    statement: "Pat continues in Atlanta as primary from the merge's date, with no gap."
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/services/affiliations-unit-merge.integration.spec.ts#ends Pat’s Savannah affiliation the day before and continues it in Atlanta as primary"
  - id: AS-JNY-MBR-MEM-006-02
    statement: "Jo's duplicate Savannah tie is ended without a new tie."
    provenance: test
    source: "services-membership:modules/memberships/tests/integration/services/affiliations-unit-merge.integration.spec.ts#keeps Jo’s Atlanta affiliation as it was and ends her Savannah one, with no new row"
  - id: AS-JNY-MBR-MEM-006-03
    statement: "Savannah cannot be deleted while any tie names it."
    provenance: test
    source: "services-membership:tests/e2e/s13-unit-merge.e2e.spec.ts#refuses to delete Savannah while affiliations name it (unit_has_affiliations)"
e2e_policy: optional
e2e_reason: "The structure and membership screens are not built; the journey is proved through the API in process. A browser test becomes required when the structure screens offer the merge."
evidence:
  - "services-membership at 5994c270e8a37a30f848e99ba5b5ee6b87c08893: the cited end-to-end, integration and acceptance specs and the capabilities they exercise."
  - "react-console at baf6dae382d6f41dce976c7f848667ccc37e076f: acceptance/membership/journeys (the absorbed journeys and their recorded execution)."
---

# A chapter is merged and its members follow it

## Story

Savannah Chapter is folding into Atlanta. The administrator merges it, and Rhythm moves every Savannah member into Atlanta from that day. Those already in Atlanta lose their duplicate Savannah tie. Atlanta's officers see their new members at once, and Savannah's roster is empty. Members' past dates still show Savannah until the merge, and Savannah cannot be deleted while history names it. If any member would break their package's rules, the merge is refused before anything changes.
