---
id: SCR-CRM-ACT-004
title: Log or edit activity sheet
route: >-
  /console/{tenantId}/crm/contacts/{id}?tab=activity (sheet over the record timeline; also
  on organizations)
surface: console
product_area: crm
module: activities-tasks
revision: 1
status: draft
design_intent: proposed
implementation_evidence: observed
inference: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
purpose: >-
  Capture or correct one interaction and its related records, optionally create follow-up
  work, and inspect available revision history.
supports:
  - JNY-CRM-ACT-001
  - JNY-CRM-ACT-004
  - CAP-CRM-ACT-001
  - CAP-CRM-ACT-002
  - CAP-CRM-ACT-003
  - CAP-CRM-ACT-004
  - CAP-CRM-ACT-006
permission: crm.activities.create (log) or crm.activities.update (edit)
entry_from:
  - The logging action on a record timeline.
  - The correction action on an existing interaction.
  - A highlighted interaction followed by its correction action.
exits_to:
  - The host timeline after saving or abandoning the draft.
displays:
  - field: >-
      Available activity categories plus an existing entry’s retained retired category;
      new entry proposes the last-used category.
    source: listActivityTypes
  - field: 'Type-controlled interaction details, progress, result, dates and duration.'
    source: DOM-CRM-ACT-001 type field modes
  - field: Related-record chips with the current primary selection and draft primary control.
    source: DOM-CRM-ACT-001 links
  - field: 'An optional owner choice, including No Owner.'
    source: DOM-CRM-ACT-001 owner
  - field: Saved supporting files that can be removed.
    source: DOM-CRM-ACT-001 attachments
  - field: >-
      A suggested follow-up interval and heading when the category and task authority
      permit it.
    source: DOM-CRM-ACT-001 type follow-up suggestion
  - field: Revision history for an existing interaction when authorized.
    source: 'listActivityHistory, getActivityRevision, listActivityHistoryActors'
actions:
  - label: Save (log)
    operation_id: createActivity
    permission: crm.activities.create (and crm.tasks.create for a follow-up)
    confirm: false
  - label: Save (edit)
    operation_id: patchActivity
    permission: crm.activities.update
    confirm: false
  - label: Make Primary
    operation_id: none (changes the draft; saved with the activity)
    permission: crm.activities.create or crm.activities.update
    confirm: false
  - label: Version History
    operation_id: listActivityHistory
    permission: crm.activities.history
    confirm: false
  - label: Close with unsaved changes
    operation_id: none (discard confirmation)
    permission: none
    confirm: true
states:
  - loading
  - error
  - read-only
validation:
  - BR-CAP-CRM-ACT-001-01
  - BR-CAP-CRM-ACT-001-02
  - BR-CAP-CRM-ACT-001-04
  - BR-CAP-CRM-ACT-001-05
  - BR-CAP-CRM-ACT-001-07
  - BR-CAP-CRM-ACT-001-10
  - BR-CAP-CRM-ACT-001-14
  - BR-CAP-CRM-ACT-002-06
  - BR-CAP-CRM-ACT-002-08
  - BR-CAP-CRM-ACT-003-10
  - BR-CAP-CRM-ACT-004-07
  - BR-CAP-CRM-ACT-006-06
patterns:
  - Side sheet editor with unsaved-changes guard (AlertDialog)
  - Contact and organization selectors for linked records
  - Field-level errors from the type's field modes
  - Retry-safe create and verified edit (shared write-safety helpers)
component: components/activities/log-activity-sheet.tsx
evidence:
  - >-
    react-console at baf6dae3: components/activities/log-activity-sheet.tsx
    (offersFollowUp, makePrimary, follow-up due day from the browser date, inert
    attachment upload); activity-version-history.tsx; lib/activities/form-rules.ts,
    links.ts, api.ts.
controls: [TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-006, TC-DAT-001, TC-DAT-002, 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-PI-005, TC-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003]
---

# Log or edit activity sheet

## What the Screen Is For

A single side sheet serves new interaction entry and correction. Its draft retains related context from the record where it opened.

## What It Shows and Lets People Do

Category settings determine visible fields, validation and initial proposals. Users can add related people or organizations and change the primary. The console can remove existing file entries but does not upload files. A suggested follow-up is offered only with task-creation authority and is saved with the interaction. Authorized history readers can inspect an existing entry’s revisions.

## States and Errors

Field feedback accompanies validation failures. New-entry recovery retains the sheet’s chosen identifier, while uncertain corrections compare reread values. Conflicts report stale versions. Leaving a changed draft asks for confirmation. Console numeric limits and the service’s creation owner default retain their existing planning discrepancies.

## Patterns It Must Respect

The component uses a side sheet, record selectors, field validation and an unsaved-change dialog. Shared write-safety helpers support recovery. Attachment upload remains an implementation gap rather than an implied available action.
