---
id: SVC-CRM-ACT-activities
title: Activities Service Module
product_area: crm
module: activities-tasks
repository: services-crm
source_module: modules/activities
revision: 1
status: draft
design_intent: proposed
implementation_evidence: observed
inference: []
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
owns:
  - DOM-CRM-ACT-001
  - DOM-CRM-ACT-005
does_not_own:
  - >-
    CRM Data Jobs owns bulk submission, processing and result routes exposed through the
    activities function.
  - >-
    Task owns follow-up work even when its insertion shares an interaction save
    transaction.
  - >-
    Data Quality owns merge previews and execution and calls Activity’s
    association-transfer function.
  - >-
    CRM lifecycle participants supply baseline installation and cleanup for the external
    workspace lifecycle.
  - >-
    Platform supplies query execution, file lifecycle, security authority and shared
    history presentation.
operations:
  - operation_id: getActivitiesHealth
    intent: Expose deployment health and build information for the activities function.
    access: public
    permission: 'none: public health route'
    realises: []
    published_to_submissions: 'not published: deployment monitoring accepts no business submission'
  - operation_id: createActivity
    intent: >-
      Save an interaction, related-record links, prepared supporting files and any
      requested follow-up together, with live-row creation recovery.
    access: console
    permission: crm.activities.create (also crm.tasks.create when a follow-up is asked for)
    realises:
      - CAP-CRM-ACT-001
      - CAP-CRM-ACT-002
      - CAP-CRM-ACT-004
      - CAP-CRM-ACT-019
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: getActivity
    intent: Return the interaction with its current related-record names and supporting files.
    access: console
    permission: crm.activities.read
    realises:
      - CAP-CRM-ACT-003
      - CAP-CRM-ACT-007
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: updateActivity
    intent: >-
      Save a complete interaction replacement using the read version, replacing its link
      set and ordered file list.
    access: console
    permission: crm.activities.update
    realises:
      - CAP-CRM-ACT-003
      - CAP-CRM-ACT-004
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: patchActivity
    intent: Apply submitted interaction changes after testing the read version.
    access: console
    permission: crm.activities.update
    realises:
      - CAP-CRM-ACT-003
      - CAP-CRM-ACT-004
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: deleteActivity
    intent: >-
      Remove an unlocked interaction and owned context, releasing files and dropping
      import matching references.
    access: console
    permission: crm.activities.delete
    realises:
      - CAP-CRM-ACT-003
      - CAP-CRM-ACT-004
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: listActivityHistory
    intent: >-
      Return interaction revisions in newest-first pages, including retained history after
      deletion.
    access: console
    permission: crm.activities.history (evaluates crm.activities.read for a live activity)
    realises:
      - CAP-CRM-ACT-006
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: getActivityRevision
    intent: >-
      Return the details, linked-record and file sections of one revision with currently
      resolved reference names.
    access: console
    permission: crm.activities.history (evaluates crm.activities.read for a live activity)
    realises:
      - CAP-CRM-ACT-006
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: listActivityHistoryActors
    intent: Return the actors represented in an interaction’s history for filtering.
    access: console
    permission: crm.activities.history (evaluates crm.activities.read for a live activity)
    realises:
      - CAP-CRM-ACT-006
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: createActivityType
    intent: >-
      Insert an interaction category with field settings, defaults, suggested follow-up
      and result choices.
    access: console
    permission: crm.activity-types.create
    realises:
      - CAP-CRM-ACT-008
    published_to_submissions: 'not published: these local routes administer workspace configuration'
  - operation_id: listActivityTypes
    intent: Return ordered category pages including active and inactive entries.
    access: console
    permission: crm.activity-types.read
    realises:
      - CAP-CRM-ACT-008
      - CAP-CRM-ACT-001
    published_to_submissions: 'not published: these local routes administer workspace configuration'
  - operation_id: reorderActivityTypes
    intent: Save the supplied complete category order transactionally.
    access: console
    permission: crm.activity-types.update
    realises:
      - CAP-CRM-ACT-008
    published_to_submissions: 'not published: these local routes administer workspace configuration'
  - operation_id: getActivityType
    intent: Return a category and its ordered result choices.
    access: console
    permission: crm.activity-types.read
    realises:
      - CAP-CRM-ACT-008
    published_to_submissions: 'not published: these local routes administer workspace configuration'
  - operation_id: updateActivityType
    intent: >-
      Version-check category changes and replace a supplied result list while retaining
      service-controlled baseline settings.
    access: console
    permission: crm.activity-types.update
    realises:
      - CAP-CRM-ACT-008
      - CAP-CRM-ACT-009
    published_to_submissions: 'not published: these local routes administer workspace configuration'
  - operation_id: deleteActivityType
    intent: >-
      Remove an unused customer-defined category while retaining protected baseline
      categories.
    access: console
    permission: crm.activity-types.delete
    realises:
      - CAP-CRM-ACT-008
      - CAP-CRM-ACT-009
    published_to_submissions: 'not published: these local routes administer workspace configuration'
  - operation_id: getContactTimeline
    intent: >-
      Read filtered upcoming or historical context for a contact, including work only for
      task readers.
    access: console
    permission: >-
      crm.activities.read and crm.contacts.read (evaluates crm.tasks.read,
      crm.tasks.update, crm.activities.update)
    realises:
      - CAP-CRM-ACT-005
      - CAP-CRM-ACT-018
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: getOrganizationTimeline
    intent: >-
      Read filtered upcoming or historical context for an organization, including work
      only for task readers.
    access: console
    permission: >-
      crm.activities.read and crm.organizations.read (evaluates crm.tasks.read,
      crm.tasks.update, crm.activities.update)
    realises:
      - CAP-CRM-ACT-005
      - CAP-CRM-ACT-018
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: getContactTimelineSummary
    intent: >-
      Summarize a contact’s full timeline by classification, status, owner and upcoming
      standing, adding task totals only for task readers.
    access: console
    permission: crm.activities.read and crm.contacts.read (evaluates crm.tasks.read)
    realises:
      - CAP-CRM-ACT-005
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
  - operation_id: getOrganizationTimelineSummary
    intent: >-
      Summarize an organization’s full timeline under the same task-visibility
      restriction.
    access: console
    permission: crm.activities.read and crm.organizations.read (evaluates crm.tasks.read)
    realises:
      - CAP-CRM-ACT-005
    published_to_submissions: >-
      not published: no binding for these staff operations is declared in the inspected
      CRM sources; external publication remains unverified
events:
  - name: 'activity change event (stream activity, history only)'
    direction: produced
    when: >-
      Commit an interaction creation, correction or deletion, including changes in its
      owned links or file entries.
    payload_summary: >-
      Capture before and after interaction data with owned context and caller attribution;
      settle a revision at commit, then discard the event because the stream registers no
      reaction.
jobs:
  - >-
    The activities module owns no background job. Delegated bulk activity and category
    work runs through CRM Data Jobs on Platform’s engine and shared processing
    infrastructure.
integrations:
  - system: Platform query engine
    direction: outbound
    contract: >-
      Register activity query datasets and the workspace list recipe for
      permission-controlled query execution and export.
  - system: Platform metadata registry
    direction: outbound
    contract: >-
      Register the interaction and its configuration and owned-context objects without
      custom-field support.
  - system: Shared record-asset pipeline and asset cleanup
    direction: outbound
    contract: >-
      Prepare activity files before persistence, attach associations transactionally and
      delegate released references to shared cleanup.
  - system: Platform workspace lifecycle
    direction: inbound
    contract: >-
      Declare the activity lifecycle participant with seven initial categories and
      provision, verify, inventory, reset and purge operations; external registration
      needs proof.
consistency:
  - rule: >-
      An interaction save commits its record, links, file entries and requested follow-up
      in one transaction.
    kind: transactional
    compensation: >-
      Prepared copies remain outside record rollback and are delegated to external
      cleanup.
  - rule: >-
      Change settlement captures one attributed revision for each committed interaction
      change.
    kind: transactional
    compensation: No compensating record write is required.
  - rule: >-
      Database-maintained link copies of time, status and classification change with their
      interaction.
    kind: transactional
    compensation: No compensating record write is required.
  - rule: >-
      Physical removal of released files is delegated after their references cease to be
      live.
    kind: eventual
    compensation: >-
      External retry policy and cleanup completion time are not established by the local
      delegation.
evidence:
  - >-
    services-crm at a8d1364f: modules/activities/aws/api/activities.routes.ts
    (activitiesRoutes, activityTypesRoutes, timelineRoutes, activitiesModuleRoutes);
    activities.schemas.ts; activity-api-mapper.ts; activities.module.ts;
    lib/record-history/routes.ts; @rhythmsoftware/macroservice-http health-route
    (getActivitiesHealth); modules/data-jobs/aws/api/bulk-data-jobs.routes.ts
    (activityDataJobsRoutes); aws/crm.service.ts (ActivitiesPermissions,
    ActivityTypesPermissions); aws/crm.change-events.ts; queries/*, export/*, metadata/*;
    modules/activities/README.md.
controls: [TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-AZ-006, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-DAT-004, TC-DAT-005, TC-IAM-001, TC-IAM-005, TC-IAM-006, TC-LOG-001, TC-LOG-002, TC-LOG-003, 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-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003]
---

# Activities Service Module

## What This Service Is For

The activities module maintains interactions and their category configuration and assembles record timelines from interactions and work. It owns the interaction’s links and supporting-file entries.

## Boundary

Follow-up persistence is delegated to Task inside the save transaction. Data Quality controls merges, CRM Data Jobs controls bulk processing, and lifecycle participants control local baseline steps. Platform executes broad queries and supplies file, security and history infrastructure.

## Operations in Words

Interaction recording covers creation, full replacement, partial correction and removal. Revision reads provide pages, details and actor filters. Category administration supplies creation, ordered reads, replacement, complete-list ordering and protected removal. Record-context reads provide timelines and summaries for both contacts and organizations.

The structured operation rows map each request to its declared access, permission and planning capabilities, including the public health route. No Submissions binding is declared locally; external publication confirmation remains open.

## Events and Jobs

Committed interaction changes settle revision history without a registered reaction handler. This module owns no processing queue or scheduled job; bulk work and file cleanup belong to the declared delegates.

## Consistency Guarantees

Interaction persistence, owned-row changes, follow-up insertion and revision settlement share transactional boundaries. Prepared files precede record persistence, and physical released-file removal depends on external cleanup.
