Skip to content

CAP-CRM-ACT-016Maintain task classifications and shared queues

Markdown

CAP-CRM-ACT-016

Maintain task classifications and shared queues

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationPartially observed

KindCapabilityProduct areaCRMModuleActivities, Follow-ups and Task WorkRevision2

Read atservices-crm a8d1364freact-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Customer-defined categories and queuesConfiguration changes protected against stale savesIn-use records preserved
Surfaces
consoleapi
Intent sources
Andrew 2026-10-10 (configuration ids), recorded at services-crm:modules/tasks/db/task-configurations.tsservices-crm:docs/milestones/CRM-M8-activities-and-tasks.md#E-09

Controls

18 controls apply, from the corpus control catalogue.

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

Permissions

KeyChecked atScope
crm.task-types.readapitenant
crm.task-types.createapitenant
crm.task-types.updateapitenant
crm.task-types.deleteapitenant
crm.task-types.bulkapitenant
crm.task-queues.readapitenant
crm.task-queues.createapitenant
crm.task-queues.updateapitenant
crm.task-queues.deleteapitenant
crm.task-queues.bulkapitenant

Business Rules

10 rules, 9 to be proved before approval. A rule's product intent is derived from its origin: 3 confirmed by a product decision, the rest inheriting this capability's proposed.

IdRuleKindEnforced atProvenance
01must prove
Proposed
Readers can inspect task types and queues, while administrators maintain, reorder and delete them.
no proof recorded yet
permissionapitest
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#answers 403 to a caller who may only read task types
02must prove
Proposed
Task types and queues use immutable configuration identifiers, derived from names when omitted and rejecting reserved or malformed values.
origin: Andrew 2026-10-10 (configuration ids), recorded at services-crm:modules/tasks/db/task-configurations.ts
no proof recorded yet
validationservice, databasetest
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
03must prove
Proposed
Task type and queue names are trimmed, nonblank, at most 100 characters and unique within their respective workspace lists.
no proof recorded yet
validationservice, databasetest
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
04must prove
Proposed
A referenced task type or queue cannot be deleted while any task still names it.
no proof recorded yet
invariantservice, databasetest
services-crm:modules/tasks/tests/e2e/tasks.e2e.spec.js#refuses the delete of a task type a task is of (409)
05must prove
Confirmed
Reordering supplies every list entry once, rejects incomplete or foreign lists without movement, and includes locked entries.
no proof recorded yet
validationservicetest
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
06must prove
Proposed
New task types and queues append when no position is supplied, and their console forms omit that position.
no proof recorded yet
calculationservice, consoletest
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
07must prove
Confirmed
Edits reject stale versions and full locks; replacement clears an omitted description and preserves an omitted position.
no proof recorded yet
policyapi, servicetest
08must prove
Proposed
Deactivating task configuration preserves existing references and does not prevent new tasks from using the inactive type or queue.
no proof recorded yet
lifecycleservicetest
09must prove
Confirmed
The baseline supplies General, Follow-up, Call, Email and Meeting task types without overwriting customer edits and supplies no queues.
no proof recorded yet
policyservicetest
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
10
Proposed
Queue configuration includes team, distribution, due-time and escalation controls that the service neither stores nor applies.
policyconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01An administrator creates a Site inspection task type.Rename and reorder it, then attempt deletion while a task references it.Reordering commits together and deletion of the used type fails.test

Edge Cases

IdGivenWhenThenProvenance
02Configuration inputs cover maximum names, longer names and malformed identifiers.Save each variant.Valid boundaries succeed and invalid fields produce refusals.test

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.