---
id: JNY-PFM-QRY-001
title: Keep a finance report and share the copy
feature: FEAT-PFM-QRY-04
product_area: platform
module: queries
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - RPT-ACC-0002
  - RPT-ACC-0003
  - RPT-ACC-0006
  - RPT-ACC-0008
  - RPT-ACC-0154
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
actor: ACT-PFM-013
goal: Create a personal version of a built-in finance report and make it usable by the finance team.
capabilities:
  - CAP-PFM-QRY-011
  - CAP-PFM-QRY-007
  - CAP-PFM-QRY-006
screens:
  - '/console/{tenantId}/reports'
  - '/console/{tenantId}/reports/{reportId}'
  - '/console/{tenantId}/queries'
steps:
  - 'n': 1
    surface: '/console/{tenantId}/reports'
    action: Browse the built-in reports in the catalog.
    capability: CAP-PFM-QRY-011
    expected: The catalog identifies the presentations supplied by Rhythm.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
  - 'n': 2
    surface: '/console/{tenantId}/reports/{reportId}'
    action: Run Subledger Entries for the chosen fiscal period.
    capability: CAP-PFM-QRY-007
    expected: >-
      The displayed debits and credits agree with the prepared ledger; the built-in presentation offers a
      personal copy.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
  - 'n': 3
    surface: '/console/{tenantId}/reports/{reportId}'
    action: Change the grouping and save a named copy.
    capability: CAP-PFM-QRY-011
    expected: The new report belongs to the controller and begins with a private audience.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
  - 'n': 4
    surface: '/console/{tenantId}/reports/{reportId}'
    action: Attempt to share the copy with the finance role.
    capability: CAP-PFM-QRY-011
    expected: The refusal identifies the source query whose audience does not include that role.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
  - 'n': 5
    surface: updateSavedQuery
    action: Give the source saved query the finance role as its audience.
    capability: CAP-PFM-QRY-006
    expected: The query becomes available to members of that role.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
  - 'n': 6
    surface: '/console/{tenantId}/reports/{reportId}'
    action: Repeat the report-sharing request.
    capability: CAP-PFM-QRY-011
    expected: The report now displays a role-based audience.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
  - 'n': 7
    surface: '/console/{tenantId}/reports'
    action: Have a finance colleague find and open the shared report.
    capability: CAP-PFM-QRY-007
    expected: >-
      The colleague sees the copied layout and permitted figures, with copying available and editing
      unavailable.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
  - 'n': 8
    surface: '/console/{tenantId}/queries'
    action: Attempt to restrict the source query to the controller alone.
    capability: CAP-PFM-QRY-006
    expected: The refusal names the report that still depends on the broader audience.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0008.spec.ts#RPT-ACC-0008
alternates:
  - from_step: 3
    condition: Another copy of the same built-in report is needed.
    path: Save a second copy under a different name.
    outcome: Both copies exist independently.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0003.spec.ts#RPT-ACC-0003
failures:
  - from_step: 7
    condition: A role member cannot query the underlying ledger.
    path: Browse the report catalog as that person.
    outcome: The inaccessible ledger report is absent from the results.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0154.spec.ts#RPT-ACC-0154
  - from_step: 7
    condition: The colleague submits a change to the controller’s copy.
    path: The service rejects the unauthorized edit.
    outcome: The stored presentation remains unchanged.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
rules_in_play:
  - BR-CAP-PFM-QRY-011-03
  - BR-CAP-PFM-QRY-011-04
  - BR-CAP-PFM-QRY-011-05
  - BR-CAP-PFM-QRY-011-07
  - BR-CAP-PFM-QRY-007-01
  - BR-CAP-PFM-QRY-006-08
assertions:
  - id: AS-JNY-PFM-QRY-001-01
    statement: A newly created report copy has a private audience.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
  - id: AS-JNY-PFM-QRY-001-02
    statement: Sharing refuses an audience not covered by the source query and identifies that query.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
  - id: AS-JNY-PFM-QRY-001-03
    statement: The colleague can read permitted results from the copy without gaining editing rights.
    provenance: test
    source: >-
      react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts#RPT-ACC-0002
e2e_policy: required
e2e_reason: >-
  The catalog, copy controls, sharing explanation and colleague view require browser coverage in addition to
  service assertions.
evidence:
  - >-
    Pinned reference:
    react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0002.spec.ts
  - >-
    Pinned reference:
    react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0003.spec.ts
  - >-
    Pinned reference:
    react-console:acceptance/reporting/playwright/journeys/catalog-and-sharing/RPT-ACC-0008.spec.ts
  - >-
    Pinned reference:
    react-console:acceptance/reporting/playwright/journeys/classic-subledger/RPT-ACC-0154.spec.ts
origin: 'services-platform:docs/milestones/plans/RPT-M1-plan.md#D1'
intent_sources:
  - 'services-platform:docs/milestones/plans/RPT-M1-plan.md#D1'
  - 'services-platform:docs/milestones/plans/RPT-M1-plan.md#D2'
  - 'services-platform:docs/milestones/plans/RPT-M1-plan.md#D4'
  - 'services-platform:docs/milestones/plans/RPT-M1-plan.md#D5'
proved_by: []
---

# Keep a finance report and share the copy

## Story

A controller starts with a built-in finance report, adjusts its grouping and keeps a personal copy. Sharing exposes a dependency on the source question, so the controller widens that question’s audience before sharing the report. A colleague then uses the same presentation with the colleague’s access. The final attempt to narrow the source demonstrates how the dependent report protects its audience.
