---
id: JNY-CRM-ENT-003
title: Archive a closed organization and inspect its retained history
product_area: crm
module: entities
revision: 1
status: approved
product_intent: proposed
implementation_evidence: observed
source_sha:
  react-console: da63075876b2c5f4a6af07d457bb24ea8bf4c0c7
  services-crm: 7ea48a414c42eade10d60753b8bcc323b1dd726f
actor: ACT-CRM-003
goal: >-
  Remove a closed organization from ordinary discovery while retaining its
  identity, affiliations and change history.
capabilities:
  - CAP-CRM-ENT-014
  - CAP-CRM-ENT-013
  - CAP-CRM-ENT-009
  - CAP-CRM-ENT-003
  - CAP-CRM-ENT-016
screens:
  - '/console/{tenantId}/crm/organizations/{id}'
  - '/console/{tenantId}/crm/organizations'
  - '/console/{tenantId}/crm/contacts/{id}'
steps:
  - 'n': 1
    surface: deleteOrganization
    action: >-
      Attempt deletion of a closed organization still referenced by an ended
      affiliation.
    capability: CAP-CRM-ENT-014
    expected: Deletion is rejected because the affiliation depends on the organization.
    provenance: test
    source: >-
      react-console:acceptance/crm/playwright/journeys/organizations/CRM-ACC-0116.spec.ts#CRM-ACC-0116
  - 'n': 2
    surface: '/console/{tenantId}/crm/organizations/{id}'
    action: >-
      Choose Archive on the organization record and confirm with the reason
      Closed down.
    capability: CAP-CRM-ENT-013
    expected: The organization is archived with the reason while retaining its status.
    provenance: test
    source: >-
      react-console:acceptance/crm/playwright/journeys/organizations/CRM-ACC-0147.spec.ts#CRM-ACC-0147
  - 'n': 3
    surface: '/console/{tenantId}/crm/organizations'
    action: Inspect the default organization list and an organization selector.
    capability: CAP-CRM-ENT-003
    expected: >-
      The archived organization is excluded unless archive-inclusive discovery
      is requested.
    provenance: test
    source: >-
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#leaves it out
      of the list, and lists it for archived=only
  - 'n': 4
    surface: '/console/{tenantId}/crm/organizations/{id}'
    action: Open the archived organization’s Past contacts.
    capability: CAP-CRM-ENT-009
    expected: The former employee remains associated with the organization.
    provenance: test
    source: >-
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#keeps the
      former employee findable from it under Past, by the contact’s id
  - 'n': 5
    surface: '/console/{tenantId}/crm/contacts/{id}'
    action: Inspect the former employee’s contact record.
    capability: CAP-CRM-ENT-009
    expected: The ended affiliation identifies the archived organization.
    provenance: test
    source: >-
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#keeps the
      former employee’s affiliation naming the organization, badged archived
  - 'n': 6
    surface: '/console/{tenantId}/crm/organizations/{id}'
    action: Inspect the organization’s history.
    capability: CAP-CRM-ENT-016
    expected: A revision records the archive and its reason.
    provenance: test
    source: >-
      services-crm:modules/entities/tests/e2e/organizations-history.e2e.spec.js#shows
      the archive and its reason in the revision before
alternates:
  - from_step: 2
    condition: The firm reopens
    path: The administrator unarchives it with the reason "Reopened"
    outcome: 'It is back in lists, as it was, with the unarchive reason kept'
    provenance: test
    source: >-
      react-console:acceptance/crm/playwright/journeys/organizations/CRM-ACC-0147.spec.ts#CRM-ACC-0147
failures:
  - from_step: 2
    condition: A standard user presses Archive
    path: The action is refused for want of the archive key
    outcome: The firm stays live
    provenance: test
    source: >-
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#refuses a
      caller who may update organizations but not archive them, 403
  - from_step: 5
    condition: Someone tries to edit the archived firm
    path: The save is refused as archived
    outcome: Nothing changes
    provenance: test
    source: >-
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#refuses a save
      of the organization, 409 RecordArchived
rules_in_play:
  - BR-CAP-CRM-ENT-014-05
  - BR-CAP-CRM-ENT-013-01
  - BR-CAP-CRM-ENT-013-03
  - BR-CAP-CRM-ENT-013-05
  - BR-CAP-CRM-ENT-013-06
  - BR-CAP-CRM-ENT-013-08
  - BR-CAP-CRM-ENT-016-01
assertions:
  - id: AS-JNY-CRM-ENT-003-01
    statement: >-
      The organization is excluded from the default list and included in the
      archived-only list.
    provenance: test
    source: >-
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#leaves it out
      of the list, and lists it for archived=only
  - id: AS-JNY-CRM-ENT-003-02
    statement: >-
      Past affiliations retain the organization identity and archive
      information.
    provenance: test
    source: >-
      services-crm:modules/entities/tests/integration/services/persistence/organizations.archive.integration.spec.js#keeps
      the ended affiliation naming the organization's id, with its name and its
      archive instant
  - id: AS-JNY-CRM-ENT-003-03
    statement: Restoration retains the organization’s business values.
    provenance: test
    source: >-
      services-crm:modules/entities/tests/integration/services/persistence/organizations.archive.integration.spec.js#returns
      the organization as it was, apart from its version and modified stamps
e2e_policy: required
e2e_reason: >-
  Browser proof connects the archive confirmation with list discovery and
  retained affiliations across record pages.
feature: FEAT-CRM-ENT-07
evidence:
  - >-
    `react-console` at `da63075876b2c5f4a6af07d457bb24ea8bf4c0c7`: examined
    `acceptance/crm/journeys/organizations/CRM-ACC-0116.json`, `CRM-ACC-0147.json`,
    `acceptance/crm/journeys/affiliations/CRM-ACC-0180.json` and their Playwright specs.
  - >-
    `services-crm` at `7ea48a414c42eade10d60753b8bcc323b1dd726f`: examined `docs/archive.md`,
    `modules/entities/tests/e2e/archive.e2e.spec.js`.
approved_by: Andrew
approved_at: 2026-10-22
narrative:
  status: verified
  review: NARRATIVE-REVIEW-2026-10-23
narrative_sources:
  - section: Story
    provenance: test
    source: >-
      react-console:acceptance/crm/playwright/journeys/organizations/CRM-ACC-0116.spec.ts#CRM-ACC-0116;
      react-console:acceptance/crm/playwright/journeys/organizations/CRM-ACC-0147.spec.ts#CRM-ACC-0147;
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#leaves it out of the list, and
      lists it for archived=only; services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#keeps
      the former employee findable from it under Past, by the contact’s id;
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#keeps the former employee’s
      affiliation naming the organization, badged archived;
      services-crm:modules/entities/tests/e2e/organizations-history.e2e.spec.js#shows the archive
      and its reason in the revision before;
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#refuses a caller who may update
      organizations but not archive them, 403;
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#refuses a save of the
      organization, 409 RecordArchived
  - section: What Is True Afterwards
    provenance: test
    source: >-
      services-crm:modules/entities/tests/e2e/archive.e2e.spec.js#leaves it out of the list, and
      lists it for archived=only;
      services-crm:modules/entities/tests/integration/services/persistence/organizations.archive.integration.spec.js#keeps
      the ended affiliation naming the organization's id, with its name and its archive instant;
      services-crm:modules/entities/tests/integration/services/persistence/organizations.archive.integration.spec.js#returns
      the organization as it was, apart from its version and modified stamps
  - section: Story
    provenance: observed
    source: >-
      services-crm:modules/entities/services/persistence/organizations.ts:assertOrganizationArchivable
proved_by: []
---

# Archive a closed organization and inspect its retained history

## Story

A CRM Administrator reviews a closed organization whose identity is still named by people's earlier affiliations. Hard deletion encounters those dependencies, so the administrator uses archive to remove the organization from ordinary discovery while preserving its information. She confirms the action with the current version and an explanatory reason.

She then checks the default and archived selections and opens retained relationship information. Former affiliates still name the organization, and their reads identify that it is archived. History supplies the account of the lifecycle change. If circumstances change, she can restore the organization through the separate unarchive action and inspect the preserved business values. The complete journey combines console entry points with service-level evidence for later checks; it does not claim every step has independent browser proof.

Update authority alone does not authorize archive. Without the record kind's archive permission, the attempt is refused and the organization stays available as before. A stale version or applicable update lock also prevents the lifecycle change. An ordinary edit of an archived organization is refused; authorized restoration is the route back to ordinary maintenance.

For Harbor Engineering, the administrator's purpose is to stop offering a closed firm for ordinary work while retaining the identity needed by former employees. She reads a former employee's ended affiliation and compares its organization reference with the archived firm. If the firm reopens, she records Reopened during restoration and checks availability again. This is preservation of the existing organization, rather than entry of a replacement firm with a similar name.

## What Is True Afterwards

After archive, ordinary discovery excludes the organization while explicit archived discovery and direct reads retain it. Past affiliations still explain their organizational context, and history records the change. If the administrator restores it, its business information remains rather than being reconstructed. Availability changes through a lifecycle action; the organization's status and preserved relationships keep their separate meanings.
