---
id: JNY-PFM-CSH-005
title: Understand an unavailable application
feature: FEAT-PFM-CSH-04
product_area: platform
module: console-shell
revision: 2
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
actor: ACT-PFM-001
goal: >-
  Learn why a shared application destination cannot open and inspect the organization’s application
  availability.
capabilities:
  - CAP-PFM-CSH-014
  - CAP-PFM-CSH-015
  - CAP-PFM-CSH-017
  - CAP-PFM-CSH-006
screens:
  - '/console/{tenantId}'
  - '/console/{tenantId}/membership/members'
  - '/console/{tenantId}/configuration'
steps:
  - 'n': 1
    surface: '/console/{tenantId}'
    action: Looks for Membership in the workspace navigation.
    capability: CAP-PFM-CSH-006
    expected: No Membership section is offered for this application answer.
    provenance: test
    source: >-
      react-console:e2e/mock/application-access.mock.spec.ts#an application the organization does
      not have is absent from the sidebar
  - 'n': 2
    surface: '/console/{tenantId}/membership/members'
    action: Follows a shared members-list destination.
    capability: CAP-PFM-CSH-015
    expected: The page explains that Membership is unavailable and offers onward destinations.
    provenance: test
    source: >-
      react-console:e2e/mock/application-access.mock.spec.ts#a deep link into one of them says the
      application isn't available
  - 'n': 3
    surface: '/console/{tenantId}/configuration'
    action: Selects View Applications.
    capability: CAP-PFM-CSH-017
    expected: The administrative list presents products and explains unavailable entries.
    provenance: observed
    source: 'react-console:components/configuration/applications/applications-page.tsx:ApplicationsBody'
  - 'n': 4
    surface: '/console/{tenantId}'
    action: Uses the header logo to return home after Membership is enabled.
    capability: CAP-PFM-CSH-014
    expected: Membership appears once a subsequent application refresh learns the changed answer.
    provenance: observed
    source: 'react-console:lib/security-context/provider.tsx:refreshApplications'
alternates:
  - from_step: 2
    condition: Membership is enabled but a required destination permission is missing.
    path: The page guard explains a personal permission refusal.
    outcome: The person can return home and request the authority needed for the task.
    provenance: observed
    source: 'react-console:lib/authz/guard.tsx:RequirePermission, AccessDenied'
  - from_step: 4
    condition: An application being used is withdrawn instead.
    path: An application-related request refusal triggers a refreshed answer.
    outcome: The withdrawn product is removed from navigation without reloading.
    provenance: test
    source: >-
      react-console:e2e/mock/application-access.mock.spec.ts#brings the launcher up to date instead
      of leaving it offering what is gone
failures:
  - from_step: 3
    condition: The administrator lacks authority to inspect application availability.
    path: The administrative page guard presents a permission refusal.
    outcome: Someone with the required authority must inspect the application position.
    provenance: observed
    source: >-
      react-console:components/configuration/applications/tenant-applications.tsx:TenantApplications;
      lib/authz/guard.tsx:RequirePermission
rules_in_play:
  - BR-CAP-PFM-CSH-006-02
  - BR-CAP-PFM-CSH-014-01
  - BR-CAP-PFM-CSH-015-01
  - BR-CAP-PFM-CSH-015-02
  - BR-CAP-PFM-CSH-015-06
  - BR-CAP-PFM-CSH-017-01
  - BR-CAP-PFM-CSH-017-03
  - BR-CAP-PFM-CSH-016-01
  - BR-CAP-PFM-CSH-016-03
  - BR-CAP-PFM-SEC-007-07
assertions:
  - id: AS-JNY-PFM-CSH-005-01
    statement: An unavailable application is omitted from the workspace menu.
    provenance: test
    source: >-
      react-console:e2e/mock/application-access.mock.spec.ts#an application the organization does
      not have is absent from the sidebar
  - id: AS-JNY-PFM-CSH-005-02
    statement: A direct destination explains product unavailability and offers the application list.
    provenance: test
    source: >-
      react-console:e2e/mock/application-access.mock.spec.ts#a deep link into one of them says the
      application isn't available
  - id: AS-JNY-PFM-CSH-005-03
    statement: The administrative list translates unavailable states into understandable reasons.
    provenance: observed
    source: 'react-console:lib/applications/availability.ts:applicationAvailabilityReason'
e2e_policy: required
e2e_reason: >-
  The mock browser suite covers omitted navigation and the unavailable destination. The
  administrative list and permission-refusal portions also need browser coverage to prove the full
  explanatory journey.
evidence:
  - >-
    react-console at baf6dae:
    components/console/{application-route-gate,application-unavailable}.tsx,
    components/configuration/applications/**,
    lib/security-context/{provider,application-refusal}.ts*,
    e2e/mock/application-access.mock.spec.ts.
  - >-
    services-platform at ad3f6a6: modules/tenants/aws/api/tenant-applications.routes.ts,
    modules/licensing/tests/e2e/licensing.e2e.spec.js,
    docs/proposals/application-access-and-entitlements.md §6.4.
proved_by: []
---

# Understand an unavailable application

## Story

Pat follows a colleague’s Membership link even though the product is absent from the menu. The page explains that Membership is unavailable. Pat uses the application list to inspect the organization’s position, then returns home. The menu reflects a later enablement when the console refreshes its application answer.
