---
id: CAP-PFM-OPS-016
title: Explain application availability to a customer administrator
feature: FEAT-PFM-OPS-04
product_area: platform
module: operations
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes: []
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - >-
    services-platform:docs/proposals/application-access-and-entitlements.md#6.4 Console integration (item 6,
    the tenant Applications page; accepted 2026-10-15)
purpose: >-
  Help customer administrators understand their workspace’s applications without exposing internal commercial
  decisions.
outcomes:
  - The customer can understand workspace application standing.
  - Internal reasons and staff attribution remain within the staff view.
concepts:
  - CON-PFM-OPS-004
actors:
  - ACT-PFM-001
surfaces:
  - console
  - api
preconditions:
  - The administrator holds application-read authority for the workspace.
postconditions:
  - Customer application inspection leaves licensing and operational records unchanged.
permissions:
  - key: platform.tenant-applications.read
    where_checked: api
    scope: tenant
rules:
  - id: BR-CAP-PFM-OPS-016-01
    proved_by: [ATS-PFM-OPS-016-01, ATS-PFM-OPS-016-06, TST-PFM-OPS-081]
    statement: >-
      Application-read authority exposes the workspace’s application names, licence and grace dates,
      operational states and availability.
    kind: permission
    enforced_at:
      - api
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#answers each application with its
      key, name, licence state and dates, operation state and availability
    origin: 'services-platform:docs/proposals/application-access-and-entitlements.md#7.2'
  - id: BR-CAP-PFM-OPS-016-02
    proved_by: [ATS-PFM-OPS-016-02, ATS-PFM-OPS-016-04, TST-PFM-OPS-081]
    statement: >-
      Customer application responses omit override decisions, personal attribution and commercial source
      details, simplify withholds to not licensed and hide suspension explanations.
    kind: policy
    enforced_at:
      - api
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#says a withheld application is
      simply not licensed, never that Rhythm withheld it
    origin: none
  - id: BR-CAP-PFM-OPS-016-03
    proved_by: [ATS-PFM-OPS-016-03, ATS-PFM-OPS-016-05, TST-PFM-OPS-081]
    statement: >-
      Another customer’s application read returns not found, while a caller missing application-read authority
      is refused.
    kind: permission
    enforced_at:
      - api
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#answers 404, not 403, to an
      administrator of another customer holding the same key
    origin: none
  - id: BR-CAP-PFM-OPS-016-04
    proved_by: []
    statement: >-
      The application read remains available for a disabled workspace so its administrator can inspect its
      standing.
    kind: policy
    enforced_at:
      - api
    must_prove: false
    provenance: documented
    source: 'services-platform:docs/licensing.md#4. The routes'
    origin: none
  - id: BR-CAP-PFM-OPS-016-05
    proved_by: []
    statement: >-
      Configuration starts with Applications, presenting the available applications, understandable
      unavailability explanations and links to applicable settings.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: test
    source: >-
      react-console:e2e/mock/application-access.mock.spec.ts#the Applications page says which applications
      there are and why one cannot be used
    origin: 'services-platform:docs/proposals/application-access-and-entitlements.md#6.4'
  - id: BR-CAP-PFM-OPS-016-06
    proved_by: []
    statement: Customer and staff application pages use shared readable state terminology.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: test
    source: >-
      react-console:e2e/dev/hq-licensing.dev.spec.ts#the tenant's own administrator reads Configuration ›
      Applications with the same words
    origin: none
scenarios:
  - id: SC-CAP-PFM-OPS-016-01
    given: An application has an effective withhold carrying an internal explanation.
    when: The customer administrator reads Applications.
    then: The application is shown as not licensed without exposing the internal decision or author.
    provenance: inferred
    source: >-
      services-platform:modules/licensing/tests/e2e/licensing.e2e.spec.js#says a withheld application is
      simply not licensed, never that Rhythm withheld it
    note: >-
      This illustrative example combines behavior established by the cited test and the capability’s
      implementation evidence; it is not an independently bound end-to-end proof.
edge_cases: []
constraints:
  - The workspace route serves the customer read while licensing owns its resolution and response mapping.
depends_on:
  - CAP-PFM-OPS-014
related:
  - CAP-PFM-OPS-013
  - CAP-PFM-SEC-002
  - CAP-PFM-SEC-007
journeys:
  - JNY-PFM-OPS-004
open_questions: []
evidence:
  - >-
    services-platform at ad3f6a6: modules/tenants/aws/api/tenant-applications.routes.ts
    (listTenantApplicationsForTenant), modules/licensing/aws/api/licensing-api-mapper.ts (the tenant view);
    licensing e2e ("what the tenant's own administrator sees"); aws/platform.service.ts
    TENANT_APPLICATIONS_PERMISSIONS; docs/licensing.md §4.
  - >-
    react-console at baf6dae: app/(console)/console/[tenantId]/configuration/page.tsx,
    components/configuration/applications/*, lib/applications/*; e2e/mock/application-access.mock.spec.ts,
    e2e/dev/hq-licensing.dev.spec.ts.
  - >-
    Operations this capability covers: listTenantApplicationsForTenant (also listed by CAP-PFM-SEC-002;
    FND-PFM-OPS-017). Permission keys: platform.tenant-applications.read.
  - >-
    Examination: proposed acceptance matrices retain candidate test references; incomplete proof is recorded
    by FND-PFM-OPS-028.
controls: [TC-AVL-001, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-DAT-001, TC-DAT-003, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-PI-001, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004, TC-VEN-001, TC-VEN-002, TC-VEN-003]
exercised_by: [FAS-PFM-OPS-04-01, FAS-PFM-OPS-04-02, FAS-PFM-OPS-04-03, FAS-PFM-OPS-04-04, FAS-PFM-OPS-04-05]
suites: [TST-PFM-OPS-081]
---

# Explain application availability to a customer administrator

## Purpose

Help customer administrators understand their workspace’s applications without exposing internal commercial decisions.

## How It Works

The customer administrator opens Configuration to inspect Applications. The response separates the application’s licence, operational standing and availability. Contract expiry and grace dates explain time-limited access where applicable. Internal override reasons and staff attribution remain outside this customer view. A withheld application is presented as lacking a licence rather than revealing Rhythm’s decision. The page turns response states into readable explanations and links to available settings. Missing permission refuses the read, and another customer’s workspace is treated as not found. A disabled workspace can still provide this information to its authorized administrator.

## Relationships

Licence decisions feed availability alongside operational state; security applies the resulting access decision and the console explains it.
