Skip to content

CAP-CRM-ACT-008Configure activity types and the details they collect

Markdown

CAP-CRM-ACT-008

Configure activity types and the details they collect

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

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
Useful choices for activity entryRetirement that preserves historical selectionsOrdered types and outcomes
Surfaces
consoleapijob
Intent sources
Andrew 2026-10-10 (configuration ids), recorded at services-crm:modules/tasks/db/task-configurations.ts

Controls

16 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-004 TC-LOG-005 TC-PI-001 TC-PI-003 TC-PI-005 TC-TEN-001 TC-TEN-002 TC-TEN-003

Permissions

KeyChecked atScope
crm.activity-types.readapitenant
crm.activity-types.createapitenant
crm.activity-types.updateapitenant
crm.activity-types.deleteapitenant
crm.activity-types.bulkapitenant

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Proposed
Activity types are readable with reader permissions, while their creation, changes, reordering and deletion require administrator permissions.
no proof recorded yet
permissionapitest
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#refuses a type’s create to a caller who may only read types: 403
02must prove
Proposed
An activity type has an immutable configuration identifier derived from its name when omitted, using lowercase letters, digits and single underscores with a leading letter and excluding the reserved reorder address.
origin: Andrew 2026-10-10 (configuration ids), recorded at services-crm:modules/tasks/db/task-configurations.ts
no proof recorded yet
validationservice, databasetest
03must prove
Proposed
An activity type requires a workspace-unique name of at most 100 characters and permits a description of at most 1,000 characters.
no proof recorded yet
validationservice, databasetest
04must prove
Proposed
Subject, direction, duration, outcome, end time and attendees each have a hidden, optional or required field mode.
no proof recorded yet
validationdatabasetest
services-crm:modules/activities/tests/integration/db/activities.table.integration.spec.js#refuses a field mode other than hidden, optional or required
05must prove
Proposed
Activity types choose Completed or Scheduled as the initial status, fixed icon and colour choices, an optional default duration of one to 1,440 minutes, and an optional follow-up interval of one to 365 days.
no proof recorded yet
validationservice, databasetest
06must prove
Proposed
An activity type owns an ordered list of up to 50 uniquely named outcomes; supplying a list replaces it, while omitting the list preserves it.
no proof recorded yet
policyservice, databasetest
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#replaces the outcomes as a list: kept by id, created by name, removed when missing
07must prove
Proposed
An outcome referenced by an activity and an activity type in use cannot be deleted; the refusal directs staff to deactivate instead.
no proof recorded yet
invariantservice, databasetest
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#refuses to remove an outcome an activity has, saying to deactivate it instead
08must prove
Proposed
Deactivation removes a type or outcome from new selections while retaining it on existing activities.
no proof recorded yet
lifecycleservicetest
09must prove
Proposed
Reordering requires a complete list without duplicate or foreign-workspace entries and either moves all types or moves none.
no proof recorded yet
validationservicetest
services-crm:modules/activities/tests/e2e/activities.e2e.spec.js#creates a type with its outcomes, lists it and puts the list in a new order
10must prove
Proposed
A new activity type without an explicit position is appended to the list.
no proof recorded yet
calculationservicetest
services-crm:modules/activities/tests/integration/services/persistence/activity-types.integration.spec.js#puts a create that states no display order at the end of the tenant’s list
11must prove
Confirmed
An activity type edit uses the version read and is refused when stale or locked against updates.
no proof recorded yet
validationapi, servicetest
12must prove
Proposed
The configuration screen accepts default durations from five to 480 minutes and follow-up intervals from one to 90 days, narrower than service limits.
no proof recorded yet
validationconsoleobserved

Scenarios

IdGivenWhenThenProvenance
01Site visit has three outcomes and an activity using it.Move the type upward, deactivate an outcome and attempt type deletion.The list order changes, earlier outcome use remains, and deleting the used type is rejected.test

Edge Cases

IdGivenWhenThenProvenance
02Type input includes names at and beyond the length limit and a 366-day follow-up.Save each configuration variant.Boundary values succeed and out-of-range inputs identify their fields.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.