---
id: WF-PFM-TNL-005
title: Give one existing workspace a participant's missing defaults
trigger: Apply one participant’s defaults to an eligible existing workspace.
product_area: platform
module: tenant-lifecycle
revision: 1
status: draft
design_intent: confirmed
origin: services-platform:docs/tenants/tenant-lifecycle-plan.md#§6.5 Initialization (approved 2026-10-09)
implementation_evidence: observed
inference: []
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
  services-committees: 36129c24daeaadcdb339218c38cdeaff9861359d
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  services-submissions: 64236c19be89579ef5897aad7de3925ed3ce03bf
  services-websites: 5fc6823c69d5e6f208c21dba8c0eb3132f8bdc4c
  services-marketing: d071a159fe9782bb71ff246d5c67d5bbfe07fbfa
implements:
- CAP-PFM-TNL-009
- CAP-PFM-TNL-008
moves: []
crosses:
- SVC-PFM-TNL-tenants
- SVC-PFM-TNL-crm-tenant-lifecycle
- SVC-PFM-TNL-commerce-tenant-lifecycle
- SVC-PFM-TNL-committees-tenant-lifecycle
- SVC-PFM-TNL-membership-tenant-lifecycle
idempotency: Ledgered seeds skip earlier application, while Commerce adoption can recreate deleted defaults. Remote
  selection applies the whole participant.
concurrency: Eligibility is read before participant work and there is no overall initialization lock. Each ledger
  transaction supplies its own duplicate protection.
hops:
- n: 1
  actor_or_service: Platform API (initializeTenant)
  action: Check staff provisioning authority and validate participant selection.
  anchor: services-platform:modules/tenants/aws/api/tenants.routes.ts:initializeTenant
  seam: sync
  on_failure: Refuse invalid or disabled participants.
  left_inconsistent: No initialization work is retained at this boundary.
  observer: Operation response and service logs.
  provenance: observed
  source: services-platform:modules/tenants/services/provisioning/initialize-tenant.ts
- n: 2
  actor_or_service: Initialization
  action: Require active or failed-provisioning workspace lifecycle.
  anchor: services-platform:modules/tenants/services/provisioning/initialize-tenant.ts:INITIALIZABLE_STATES
  seam: sync
  on_failure: Return a state-specific refusal.
  left_inconsistent: No participant work starts.
  observer: Operation response and service logs.
  provenance: observed
  source: services-platform:modules/tenants/services/provisioning/initialize-tenant.ts
- n: 3
  actor_or_service: Platform participant
  action: Call the local initialization method with selected seed sets, or its provisioning fallback.
  anchor: services-platform:modules/tenants/services/provisioning/initialize-tenant.ts:runInitialize
  seam: sync
  on_failure: Return errors after any earlier seed transactions.
  left_inconsistent: Already applied defaults and ledger entries remain.
  observer: Operation response and service logs.
  provenance: observed
  source: services-platform:modules/tenants/services/provisioning/initialize-tenant.ts:runInitialize
- n: 4
  actor_or_service: Application lifecycle function
  action: Invoke remote provisioning without forwarding the seed-set filter.
  anchor: services-platform:modules/tenants/services/provisioning/initialize-tenant.ts:runInitialize
  seam: sync
  on_failure: Return the remote error to the requester.
  left_inconsistent: Whole-participant defaults can be applied; Commerce can recreate removed defaults.
  observer: Operation response and service logs.
  provenance: observed
  source: services-platform:modules/tenants/services/provisioning/initialize-tenant.ts:runInitialize
branches:
- Local initialization can select seed sets; the remote path always invokes provisioning.
waits: []
evidence:
- 'services-platform at ad3f6a65: modules/tenants/services/provisioning/initialize-tenant.ts; aws/api/tenants.routes.ts.'
- 'services-commerce at c8b66a98: modules/tenant-lifecycle/services/participants/orders-participant.ts (seeding
  by adoption, no ledger).'
controls: [TC-AVL-001, TC-AVL-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-CHG-001, TC-CHG-002, TC-CHG-003, TC-CHG-004, TC-CHG-005, TC-CHG-006, TC-CHG-007, TC-DAT-001, TC-DAT-003, TC-DAT-004, TC-IAM-001, TC-IAM-002, TC-IAM-003, TC-IAM-004, TC-IAM-005, TC-IAM-006, TC-LOG-001, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-PI-001, TC-PI-002, TC-PI-003, 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]
---

# Give One Existing Workspace A Participant'S Missing Defaults

## What It Does

Apply one participant’s defaults to an eligible existing workspace. Ledgered seeds skip earlier application, while Commerce adoption can recreate deleted defaults. Remote selection applies the whole participant.

## The Flow

```mermaid
sequenceDiagram
  autonumber
  actor Staff as Rhythm staff
  participant API as Platform API
  participant Init as Initialization
  participant Local as Platform participant
  participant Remote as Application lifecycle function
  Staff->>API: initialize participant (seed sets)
  API->>Init: validate participant and workspace state
  alt Platform participant
    Init->>Local: initialize selected sets in the workspace
  else other application
    Init->>Remote: provision (selection dropped)
  end
  Init-->>Staff: what was applied
```

## When Something Fails

Refuse invalid or disabled participants. No initialization work is retained at this boundary. Return a state-specific refusal. No participant work starts. Return errors after any earlier seed transactions. Already applied defaults and ledger entries remain. Return the remote error to the requester. Whole-participant defaults can be applied; Commerce can recreate removed defaults.

## Open Design Questions

Remote seed selection is discarded. The product should resolve initialization eligibility separately from deployment configuration eligibility.
