---
id: CAP-CRM-ACT-016
title: Maintain task classifications and shared queues
feature: FEAT-CRM-ACT-04
product_area: crm
module: activities-tasks
revision: 2
status: draft
product_intent: proposed
implementation_evidence: partially-observed
supersedes:
  - react-console acceptance inventory CAP-CRM-ACT-014
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - >-
    Andrew 2026-10-10 (configuration ids), recorded at
    services-crm:modules/tasks/db/task-configurations.ts
  - 'services-crm:docs/milestones/CRM-M8-activities-and-tasks.md#E-09'
purpose: Administrators organize work categories and the queues used by their teams.
outcomes:
  - Customer-defined categories and queues
  - Configuration changes protected against stale saves
  - In-use records preserved
concepts:
  - CON-CRM-ACT-003
actors:
  - ACT-CRM-002
  - ACT-CRM-003
surfaces:
  - console
  - api
preconditions: []
postconditions: []
permissions:
  - key: crm.task-types.read
    where_checked: api
    scope: tenant
  - key: crm.task-types.create
    where_checked: api
    scope: tenant
  - key: crm.task-types.update
    where_checked: api
    scope: tenant
  - key: crm.task-types.delete
    where_checked: api
    scope: tenant
  - key: crm.task-types.bulk
    where_checked: api
    scope: tenant
  - key: crm.task-queues.read
    where_checked: api
    scope: tenant
  - key: crm.task-queues.create
    where_checked: api
    scope: tenant
  - key: crm.task-queues.update
    where_checked: api
    scope: tenant
  - key: crm.task-queues.delete
    where_checked: api
    scope: tenant
  - key: crm.task-queues.bulk
    where_checked: api
    scope: tenant
rules:
  - id: BR-CAP-CRM-ACT-016-01
    statement: >-
      Readers can inspect task types and queues, while administrators maintain,
      reorder and delete them.
    kind: permission
    enforced_at:
      - api
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#answers 403 to a
      caller who may only read task types
    origin: none
  - id: BR-CAP-CRM-ACT-016-02
    statement: >-
      Task types and queues use immutable configuration identifiers, derived
      from names when omitted and rejecting reserved or malformed values.
    kind: validation
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/tasks/tests/integration/services/persistence/task-types.integration.spec.js#refuses
      an id that is not a configuration id, saying what an id may hold
    origin: >-
      Andrew 2026-10-10 (configuration ids), recorded at
      services-crm:modules/tasks/db/task-configurations.ts
  - id: BR-CAP-CRM-ACT-016-03
    statement: >-
      Task type and queue names are trimmed, nonblank, at most 100 characters
      and unique within their respective workspace lists.
    kind: validation
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/tasks/tests/integration/services/persistence/task-types.integration.spec.js#refuses
      a create whose name another type of the tenant already has
    origin: none
  - id: BR-CAP-CRM-ACT-016-04
    statement: >-
      A referenced task type or queue cannot be deleted while any task still
      names it.
    kind: invariant
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#refuses the delete
      of a task type a task is of (409)
    origin: none
  - id: BR-CAP-CRM-ACT-016-05
    statement: >-
      Reordering supplies every list entry once, rejects incomplete or foreign
      lists without movement, and includes locked entries.
    kind: validation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/tasks/tests/integration/services/persistence/task-types.integration.spec.js#refuses
      a list that leaves a type out, naming it, and moves no type at all
    origin: 'services-crm:docs/milestones/CRM-M8-activities-and-tasks.md#D-08'
  - id: BR-CAP-CRM-ACT-016-06
    statement: >-
      New task types and queues append when no position is supplied, and their
      console forms omit that position.
    kind: calculation
    enforced_at:
      - service
      - console
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/tasks/tests/integration/services/persistence/task-types.integration.spec.js#puts
      a create that states no display order at the end of the tenant’s list
    origin: none
  - id: BR-CAP-CRM-ACT-016-07
    statement: >-
      Edits reject stale versions and full locks; replacement clears an omitted
      description and preserves an omitted position.
    kind: policy
    enforced_at:
      - api
      - service
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/tasks/tests/integration/services/persistence/task-types.integration.spec.js#clears
      the description the replacement omitted
    origin: 'services-crm:docs/milestones/CRM-M1-contacts-and-organizations.md#D-05'
  - id: BR-CAP-CRM-ACT-016-08
    statement: >-
      Deactivating task configuration preserves existing references and does not
      prevent new tasks from using the inactive type or queue.
    kind: lifecycle
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      react-console:acceptance/crm/playwright/journeys/cross-application/CRM-ACC-0713.spec.ts#CRM-ACC-0713
    origin: none
  - id: BR-CAP-CRM-ACT-016-09
    statement: >-
      The baseline supplies General, Follow-up, Call, Email and Meeting task
      types without overwriting customer edits and supplies no queues.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-crm:modules/tasks/tests/integration/services/persistence/task-types.integration.spec.js#adopts
      a record the tenant edited, which is what makes a seed a starting point
    origin: 'services-crm:docs/milestones/CRM-M8-activities-and-tasks.md#D-48'
  - id: BR-CAP-CRM-ACT-016-10
    statement: >-
      Queue configuration includes team, distribution, due-time and escalation
      controls that the service neither stores nor applies.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: observed
    source: 'react-console:lib/configuration/task-queues.ts:withUnperformedFields'
    origin: none
scenarios:
  - id: SC-CAP-CRM-ACT-016-01
    given: An administrator creates a Site inspection task type.
    when: 'Rename and reorder it, then attempt deletion while a task references it.'
    then: Reordering commits together and deletion of the used type fails.
    provenance: test
    source: >-
      react-console:acceptance/crm/playwright/journeys/cross-application/CRM-ACC-0713.spec.ts#CRM-ACC-0713
edge_cases:
  - id: SC-CAP-CRM-ACT-016-02
    given: >-
      Configuration inputs cover maximum names, longer names and malformed
      identifiers.
    when: Save each variant.
    then: Valid boundaries succeed and invalid fields produce refusals.
    provenance: test
    source: >-
      react-console:acceptance/crm/playwright/journeys/cross-application/CRM-ACC-0699.spec.ts#CRM-ACC-0699
constraints: []
depends_on: []
related:
  - CAP-CRM-ACT-010
  - CAP-CRM-ACT-012
  - CAP-CRM-ACT-009
journeys:
  - JNY-CRM-ACT-003
open_questions:
  - OQ-CRM-ACT-003
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-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-003, TC-TEN-001, TC-TEN-002, TC-TEN-003]
---

# Maintain task classifications and shared queues

## Purpose

Administrators organize work categories and the queues used by their teams.

## How It Works

An administrator opens task type or queue configuration. They create a named entry or edit an existing one. A new entry normally joins the end of its list. Reordering supplies the entire list in one operation. Rhythm rejects a stale edit or a prohibited locked change. A type or queue referenced by tasks cannot be deleted. Deactivation keeps existing task references and still permits new work through the service. The queue screen also contains controls whose values have no stored behavior. The product should remove those controls or design their support before relying on them.

## Relationships

- Task recording selects a task type.
- Task assignment uses queue references and arrival positions.
- Platform responsibilities identify who oversees queue work.
