---
id: JNY-PFM-TNL-001
title: Staff establish the customer’s first workspace
feature: FEAT-PFM-TNL-01
product_area: platform
module: tenant-lifecycle
revision: 2
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes: []
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
actor: ACT-PFM-004
goal: >-
  The association gains a constructed workspace with the requested access and
  sender setup.
capabilities:
  - CAP-PFM-TNL-001
  - CAP-PFM-TNL-002
  - CAP-PFM-TNL-004
  - CAP-PFM-TNL-003
  - CAP-PFM-TNL-005
screens:
  - /hq/tenants/provision
  - '/hq/jobs/tenant_provisioning/{jobId}'
steps:
  - 'n': 1
    surface: createTenant
    action: >-
      Submit the customer’s workspace details with a first administrator and
      domain sender.
    capability: CAP-PFM-TNL-001
    expected: The response identifies a provisioning workspace and its recorded build.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/e2e/tenant-provisioning.e2e.spec.js#answers
      the provisioning job that is making the tenant usable
  - 'n': 2
    surface: 'tenant_provisioning: provision:<participant>'
    action: Run application construction in the planned dependency order.
    capability: CAP-PFM-TNL-002
    expected: Enabled participant work is invoked in sequence.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/integration/services/provisioning/provision-tenant.integration.spec.js#runs
      every participant, verifies them and opens the tenant
  - 'n': 3
    surface: 'tenant_provisioning: provision:platform.security'
    action: Establish the requested customer Administrator invitation.
    capability: CAP-PFM-TNL-004
    expected: A single recorded invitation supports safe replay.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/integration/services/provisioning/provision-tenant.integration.spec.js#invites
      them once, and records the invitation in the ledger
  - 'n': 4
    surface: 'tenant_provisioning: provision:communications.sender-identity'
    action: Set up the association’s sending identities.
    capability: CAP-PFM-TNL-004
    expected: Sender setup exposes DNS requirements while construction continues.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/integration/services/provisioning/tenant-email-strategy.integration.spec.js#created
      the identities in SES on the way, so the customer has records to publish
  - 'n': 5
    surface: 'tenant_provisioning: verify-readiness, activate'
    action: Check participant readiness and activate the result.
    capability: CAP-PFM-TNL-002
    expected: >-
      Active lifecycle, requested business mode and first opening time are
      retained.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/e2e/tenant-provisioning.e2e.spec.js#leaves
      the tenant usable once the job has run
  - 'n': 6
    surface: getTenantProvisioning
    action: Inspect the completed provisioning snapshot.
    capability: CAP-PFM-TNL-003
    expected: Named participant and closing steps show their completion.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/e2e/tenant-provisioning.e2e.spec.js#shows
      every step completed, and names each one for the person reading it
  - 'n': 7
    surface: notifyJobRequester
    action: Read the requester’s outcome notice.
    capability: CAP-PFM-TNL-003
    expected: The ready message identifies the workspace and links to progress.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/integration/services/provisioning/provisioning-notices.integration.spec.js#sends
      the requester one message
  - 'n': 8
    surface: '/console/{tenantId}'
    action: Enter ordinary workspace use as the association’s administrator.
    capability: CAP-PFM-TNL-005
    expected: The active enabled workspace passes its availability gate.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is
      served a tenant-scoped route in an active tenant (the premise every
      refusal below is read against)
alternates:
  - from_step: 1
    condition: The original submission is repeated.
    path: Return the workspace and job already associated with it.
    outcome: No second workspace or build is recorded.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/integration/services/provisioning/provision-tenant.integration.spec.js#answers
      the same tenant and the same job when the same submission is sent twice
  - from_step: 4
    condition: No association sender is requested.
    path: Skip sender identity creation.
    outcome: Mail continues through Rhythm’s shared sender.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/integration/services/provisioning/tenant-email-strategy.integration.spec.js#writes
      no sender identity, because the shared Rhythm sender is the answer for
      most tenants
failures:
  - from_step: 5
    condition: Readiness cannot find a required resource.
    path: Refuse opening and report the missing resource.
    outcome: Partial construction remains in a failed workspace for staff recovery.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/integration/services/provisioning/provision-tenant.integration.spec.js#leaves
      the tenant where an operator can see it, and does not open it
rules_in_play:
  - BR-CAP-PFM-TNL-001-03
  - BR-CAP-PFM-TNL-001-05
  - BR-CAP-PFM-TNL-001-06
  - BR-CAP-PFM-TNL-002-01
  - BR-CAP-PFM-TNL-002-04
  - BR-CAP-PFM-TNL-002-05
  - BR-CAP-PFM-TNL-004-03
  - BR-CAP-PFM-TNL-004-07
  - BR-CAP-PFM-TNL-003-04
  - BR-CAP-PFM-TNL-005-01
assertions:
  - id: AS-JNY-PFM-TNL-001-01
    statement: >-
      Customer availability changes from closed construction to active enabled
      use.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/e2e/tenant-availability-gate.e2e.spec.js#is
      refused 403 in a tenant that is still being provisioned
  - id: AS-JNY-PFM-TNL-001-02
    statement: 'The job retains completed participant, readiness and activation steps.'
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/e2e/tenant-provisioning.e2e.spec.js#shows
      one step per participant, then the readiness check and the activation
  - id: AS-JNY-PFM-TNL-001-03
    statement: >-
      The handled ready notice contains a progress link and is not sent again in
      the replay fixture.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/integration/services/provisioning/provisioning-notices.integration.spec.js#links
      to the job’s own page in Rhythm HQ, so the requester can read the steps
  - id: AS-JNY-PFM-TNL-001-04
    statement: >-
      The new-customer fixture records an invitation and opens with sender
      verification pending.
    provenance: test
    source: >-
      services-platform:modules/tenants/tests/integration/services/provisioning/tenant-email-strategy.integration.spec.js#opens
      the tenant anyway, which is what option A promises
e2e_policy: required
e2e_reason: >-
  The outcome crosses lifecycle operations and warrants end-to-end verification;
  the current bindings establish backend fixtures, while screen and
  deployed-service coverage remain separate gaps.
---

# Staff establish the customer’s first workspace

## Story

The association’s new workspace begins with a staff request. Rhythm constructs the application resources, establishes the requested invitation and sender setup, and opens only after readiness succeeds. Staff inspect the completed work and receive the outcome link. The association can then use the opened workspace while finishing its pending sender verification.
