---
id: CAP-CRM-ACT-009
title: Preserve the baseline activity catalog without replacing customer choices
feature: FEAT-CRM-ACT-02
product_area: crm
module: activities-tasks
revision: 2
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes: []
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - 'services-crm:docs/milestones/CRM-M8-activities-and-tasks.md#D-48'
  - 'services-crm:docs/migrations/activities/README.md#D10'
purpose: >-
  Customers start with recognizable activity categories and retain their later
  configuration changes.
outcomes:
  - Seven baseline categories
  - Protected built-in classification codes
  - Customer changes retained during seed adoption
concepts:
  - CON-CRM-ACT-001
actors:
  - ACT-CRM-003
  - ACT-CRM-004
  - ACT-CRM-005
surfaces:
  - api
  - job
preconditions: []
postconditions: []
permissions:
  - key: crm.activity-types.update
    where_checked: api
    scope: tenant
  - key: crm.activity-types.delete
    where_checked: api
    scope: tenant
rules:
  - id: BR-CAP-CRM-ACT-009-01
    proved_by: [ATS-CRM-ACT-009-01, TST-CRM-ACT-068]
    statement: >-
      The activities participant declares seven baseline activity types, while
      workspace-wide installation depends on Platform registering that
      participant.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: observed
    source: 'services-crm:modules/activities/README.md'
    origin: none
    note: >-
      This source is an implementation decision record, so it does not confirm
      Product authority for the rule.
  - id: BR-CAP-CRM-ACT-009-02
    proved_by: [ATS-CRM-ACT-008-10, ATS-CRM-ACT-009-02, ATS-CRM-ACT-009-06, TST-CRM-ACT-009]
    statement: >-
      Baseline application adopts existing activity types without overwriting
      customer changes; deployment reconciliation belongs to Platform.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#adopts
      a type the tenant already has under that id, leaving it as the tenant made
      it
    origin: 'services-crm:docs/milestones/CRM-M8-activities-and-tasks.md#D-48'
    note: >-
      The local seed test establishes adoption only; orchestration across
      deployed workspaces is not proved.
  - id: BR-CAP-CRM-ACT-009-03
    proved_by: [ATS-CRM-ACT-009-03, TST-CRM-ACT-002, TST-CRM-ACT-009]
    statement: Built-in activity types support deactivation but refuse deletion.
    kind: validation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#refuses
      a system type, saying to deactivate it instead
    origin: none
  - id: BR-CAP-CRM-ACT-009-04
    proved_by: [ATS-CRM-ACT-009-04, TST-CRM-ACT-003, TST-CRM-ACT-009, TST-CRM-ACT-045]
    statement: >-
      Rhythm controls each built-in type code and preserves it through edits;
      customer-created types have no built-in code.
    kind: invariant
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#refuses
      a change of system code in the database too, whatever writes the row
    origin: none
  - id: BR-CAP-CRM-ACT-009-05
    proved_by: [ATS-CRM-ACT-009-04, TST-CRM-ACT-003, TST-CRM-ACT-009, TST-CRM-ACT-045]
    statement: A workspace cannot store two activity types with the same built-in code.
    kind: invariant
    enforced_at:
      - database
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/activities/tests/integration/db/activities.table.integration.spec.js#refuses
      a second type of the tenant with the same system code
    origin: none
  - id: BR-CAP-CRM-ACT-009-06
    proved_by: [ATS-CRM-ACT-009-05, TST-CRM-ACT-002, TST-CRM-ACT-003, TST-CRM-ACT-009]
    statement: >-
      The built-in Call and Email types require direction and reject
      configuration changes that hide it or make it optional.
    kind: validation
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#refuses
      to make the Call type’s direction anything but required, saying why
    origin: none
  - id: BR-CAP-CRM-ACT-009-07
    proved_by: []
    statement: >-
      Baseline Call outcomes include Connected, Left voicemail, No answer, Busy
      and Wrong number, and the baseline Meeting suggests a seven-day follow-up.
    kind: policy
    enforced_at:
      - service
    must_prove: false
    provenance: documented
    source: >-
      services-crm:docs/migrations/activities/README.md#3. The seven system
      types
    origin: none
  - id: BR-CAP-CRM-ACT-009-08
    proved_by: []
    statement: >-
      Activity-type imports preserve built-in codes and adopt matching built-in
      types under their established identifiers.
    kind: policy
    enforced_at:
      - service
    must_prove: false
    provenance: test
    source: >-
      react-console:acceptance/crm/playwright/journeys/cross-application/CRM-ACC-0701.spec.ts#CRM-ACC-0701
    origin: none
    note: >-
      This source is an implementation decision record, so it does not confirm
      Product authority for the rule.
scenarios:
  - id: SC-CAP-CRM-ACT-009-01
    given: A workspace is subject to the declared baseline catalog.
    when: List its activity types after provisioning.
    then: >-
      The acceptance test expects all seven built-in types; actual provisioning
      depends on Platform integration.
    provenance: test
    source: >-
      react-console:acceptance/crm/playwright/journeys/cross-application/CRM-ACC-0728.spec.ts#CRM-ACC-0728
edge_cases:
  - id: SC-CAP-CRM-ACT-009-02
    given: A workspace already holds customized baseline types.
    when: Apply a missing baseline seed.
    then: Existing matching entries are adopted without replacing customer values.
    provenance: documented
    source: >-
      services-crm:docs/migrations/activities/README.md#3. The seven system
      types
constraints: []
depends_on:
  - CAP-CRM-ACT-008
related:
  - CAP-CRM-ACT-016
journeys:
  - JNY-CRM-ACT-004
open_questions: []
evidence:
  - >-
    services-crm at a8d1364f1dd44b723bb5f9acba12f983e9ec8d69: Independently
    reviewed declarations, behavior and assertions identified in this
    capability’s row citations.
  - >-
    react-console at baf6dae382d6f41dce976c7f848667ccc37e076f: Independently
    reviewed declarations, behavior and assertions identified in this
    capability’s row citations.
controls: [TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-AZ-006, TC-DAT-001, TC-DAT-003, TC-IAM-001, TC-IAM-005, TC-IAM-006, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-MON-002, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-004, TC-PI-005, TC-TEN-001, TC-TEN-002, TC-TEN-003]
exercised_by: [FAS-CRM-ACT-02-01, FAS-CRM-ACT-02-02, FAS-CRM-ACT-02-04, FAS-CRM-ACT-02-05, FAS-CRM-ACT-02-06]
suites: [TST-CRM-ACT-002, TST-CRM-ACT-003, TST-CRM-ACT-009, TST-CRM-ACT-045, TST-CRM-ACT-068]
---

# Preserve the baseline activity catalog without replacing customer choices

## Purpose

Customers start with recognizable activity categories and retain their later configuration changes.

## How It Works

The activities participant declares the baseline catalog for workspace setup. Its seed application creates missing entries or adopts existing matching records. Adoption preserves the customer’s configured values. Built-in codes distinguish standard categories from custom ones. Staff can rename or deactivate a baseline type within the allowed configuration rules. They cannot delete it or change its established code. Call and Email keep direction as a required detail. Platform must register and run the participant for provisioning and reconciliation to take effect. The product should verify that integration before claiming coverage across deployed workspaces.

## Relationships

- Activity configuration lets customers tailor the baseline.
- Workspace lifecycle owns provisioning and reconciliation orchestration.
- Import processes adopt matching types without changing their built-in identity.
