---
id: WF-PFM-NOT-009
title: Announce responsibility changes
trigger: A responsibility assignment or delegation changes.
product_area: platform
module: notifications
revision: 1
status: draft
design_intent: confirmed
origin: PLAT-M23 D3, Andrew 2026-10-21 18:05 ET (assigned; delegated with a confirmation to the delegator;
  ended), services-platform:docs/milestones/PLAT-M23-notifications-core-and-in-app.md#Decisions
implementation_evidence: partially-observed
inference: []
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
implements:
- CAP-PFM-NOT-014
- CAP-PFM-NOT-002
- CAP-PFM-NOT-006
moves:
- STATE-PFM-NOT-002
crosses:
- SVC-PFM-NOT-notifications
hops:
- n: 1
  actor_or_service: Responsibilities producer (Eligibility)
  action: Publish the matching responsibility notice with labels and scope alongside the assignment or
    delegation change; exclude the actor except from delegator confirmation.
  anchor: FND-PFM-NOT-049
  seam: sync
  on_failure: Log a publication refusal and retain the underlying business change.
  left_inconsistent: The responsibility change may lack its notice.
  observer: Producer logs.
  provenance: unknown
  source: FND-PFM-NOT-049
- n: 2
  actor_or_service: Responsibilities producer
  action: When assignment ends, publish its ending notice and cancel the original assignment notice by
    replacement key.
  anchor: FND-PFM-NOT-049
  seam: sync
  on_failure: Log publication refusal without reversing the responsibility change.
  left_inconsistent: Ending communication or withdrawal may be missing.
  observer: Producer logs.
  provenance: unknown
  source: FND-PFM-NOT-049
- n: 3
  actor_or_service: Responsibilities producer
  action: After commit, nudge dispatch when publication created work.
  anchor: FND-PFM-NOT-049
  seam: event
  on_failure: Rely on the minute scheduler if the nudge fails.
  left_inconsistent: Notice dispatch can wait for a scheduled run.
  observer: Dispatcher heartbeat.
  provenance: unknown
  source: FND-PFM-NOT-049
- n: 4
  actor_or_service: Notifications pipeline
  action: Use ordinary audience resolution, folding and withdrawal for the responsibility work.
  anchor: services-platform:modules/notifications/services/orchestration/orchestrate-request.ts
  seam: queue
  on_failure: Apply the request-processing and withdrawal retry policies.
  left_inconsistent: Their documented delivery and folded-content limitations apply.
  observer: Recipient inbox and workspace History.
  provenance: observed
  source: services-platform:modules/notifications/services/orchestration/orchestrate-request.ts
idempotency: Assignment or delegation occurrence identity deduplicates publication; assignment replacement
  identity selects the original notice for withdrawal.
concurrency: Matching responsibility and scope can fold repeated notices, while different scopes remain
  separate.
branches:
- Ending before dispatch still publishes the ending notice after cancelling assignment work.
- Derived assignments, role defaults and nightly reconciliation produce no notices.
- A non-production test header can delay notice work by up to a day.
waits: []
evidence:
- 'services-platform at ad3f6a65: docs/notifications.md §9; the producer code lies in modules/responsibilities,
  outside this module''s read scope (FND-PFM-NOT-022).'
controls: [TC-AVL-001, TC-AVL-004, TC-AVL-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-CRY-001, TC-CRY-002, TC-CRY-003, TC-CRY-004, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-DAT-006, TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-IAM-006, 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, TC-VEN-001, TC-VEN-002, TC-VEN-003]
---
# Announce responsibility changes

## What It Does

A responsibility assignment or delegation changes.

## The Flow

```mermaid
flowchart TD
    h0["Publish the matching responsibility notice with labels and scope alongside the assignment or delegation change"]
    h1["When assignment ends, publish its ending notice and cancel the original assignment notice by replacement key"]
    h0 --> h1
    h2["After commit, nudge dispatch when publication created work"]
    h1 --> h2
    h3["Use ordinary audience resolution, folding and withdrawal for the responsibility work"]
    h2 --> h3
```

## When Something Fails

The hop rows identify each retry boundary, any state left behind and the available observer. Assignment or delegation occurrence identity deduplicates publication; assignment replacement identity selects the original notice for withdrawal. Matching responsibility and scope can fold repeated notices, while different scopes remain separate.

## Open Design Questions

Ending before dispatch still publishes the ending notice after cancelling assignment work. Derived assignments, role defaults and nightly reconciliation produce no notices. A non-production test header can delay notice work by up to a day.
