---
id: ATS-PFM-INT-006
scope: CAP-PFM-INT-006
product_area: platform
module: integrations
revision: 3
status: proposed
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
scenarios:
  - id: ATS-PFM-INT-006-01
    title: Connection indicators distinguish use from health
    level: unit
    proves:
      - BR-CAP-PFM-INT-006-01
    preconditions: Construct a connection in every status.
    steps: Render connection and installation indicators.
    expected: >-
      The statuses receive their defined colours and an installation takes the worst indicator among
      connections in use.
    negative: false
    data_needs: 'Fixtures establishing the stated accounts, declarations and history in an isolated workspace.'
    bound_to:
      - TST-PFM-INT-456
    provenance: test
    source: >-
      react-console:lib/integrations/connection-dot.test.ts#is grey for suspended and disconnected,
      whatever the last health check said
    category: rule
    binding_evidence:
      - >-
        react-console:lib/integrations/connection-dot.test.ts#is grey for suspended and disconnected,
        whatever the last health check said
      - >-
        react-console:lib/integrations/connection-dot.test.ts#is green for an active connection that
        passes
      - >-
        react-console:lib/integrations/connection-dot.test.ts#is amber for a degraded connection, or an
        active one whose health check is failing
      - >-
        react-console:lib/integrations/connection-dot.test.ts#is red for a failed verification or a
        re-authorization needed
      - >-
        react-console:lib/integrations/connection-dot.test.ts#is grey for a connection that never
        finished: pending authorization, or verifying before a first success
      - >-
        react-console:lib/integrations/connection-dot.test.ts#is the worst connection in use; grey
        connections are not in use
    binding_scope: >-
      contributions: the cited tests support their own asserted outcomes. Additional setup, branches
      and combined sequences remain proposed unless the cited assertions exercise them.
  - id: ATS-PFM-INT-006-02
    title: Check cadence responds to health state
    level: api
    proves:
      - BR-CAP-PFM-INT-006-02
    preconditions: 'Prepare active, degraded, recent-failure, long-healthy and suspended accounts.'
    steps: Run recent-failure and daily verification passes.
    expected: >-
      The first queues health checks for degradation and recent failure; daily verification covers active
      and degraded accounts and neither checks paused accounts.
    negative: false
    data_needs: 'Fixtures establishing the stated accounts, declarations and history in an isolated workspace.'
    bound_to:
      - TST-PFM-INT-548
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/integration/services/health/health-pass.integration.spec.js#submits
      a health job for each eligible connection with a recent failure, and for a degraded one
    category: rule
    binding_evidence:
      - >-
        services-platform:modules/integrations/tests/integration/services/health/health-pass.integration.spec.js#submits
        a health job for each eligible connection with a recent failure, and for a degraded one
      - >-
        services-platform:modules/integrations/tests/integration/services/health/health-pass.integration.spec.js#submits
        a verification job for every active or degraded connection, and none for a suspended one
    binding_scope: >-
      contributions: the cited tests support their own asserted outcomes. Additional setup, branches
      and combined sequences remain proposed unless the cited assertions exercise them.
  - id: ATS-PFM-INT-006-03
    title: Health recovery changes the visible standing
    level: browser
    proves:
      - BR-CAP-PFM-INT-006-03
    preconditions: The test provider is configured to fail its probe.
    steps: 'Request Health, allow provider recovery and check again.'
    expected: The connection becomes amber with recent figures and returns to green after recovery.
    negative: false
    data_needs: 'Fixtures establishing the stated accounts, declarations and history in an isolated workspace.'
    bound_to:
      - TST-PFM-INT-520
      - TST-PFM-INT-364
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-jobs.integration.spec.js#degrades
      an active connection whose provider is unhealthy
    category: transition
    binding_evidence:
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-jobs.integration.spec.js#degrades
        an active connection whose provider is unhealthy
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-jobs.integration.spec.js#recovers
        a degraded connection whose provider is healthy again
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-jobs.integration.spec.js#moves
        an active connection to reauth_required when the provider answers refused.credential_invalid, and
        tells the administrators
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-jobs.integration.spec.js#refuses
        to probe a connection that is not active or degraded
      - >-
        react-console:acceptance/integrations/playwright/journeys/library/INT-ACC-0023.spec.ts#INT-ACC-0023
    binding_scope: >-
      contributions: the cited tests support their own asserted outcomes. Additional setup, branches
      and combined sequences remain proposed unless the cited assertions exercise them.
  - id: ATS-PFM-INT-006-04
    title: Operational figures exclude undelivered work
    level: unit
    proves:
      - BR-CAP-PFM-INT-006-04
    preconditions: 'Prepare recent succeeded, failed, unknown, cancelled, admission-refused and unfinished calls.'
    steps: Calculate the connection’s last-hour figures.
    expected: >-
      Eligible completed provider calls determine the rate, refused and unfinished calls are excluded and
      missing latency leaves the percentile empty.
    negative: false
    data_needs: 'Fixtures establishing the stated accounts, declarations and history in an isolated workspace.'
    bound_to:
      - TST-PFM-INT-573
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/unit/services/connection-figures.spec.ts#does not
      count an execution refused before the adapter, whatever its status
    category: rule
    binding_evidence:
      - >-
        services-platform:modules/integrations/tests/unit/services/connection-figures.spec.ts#does not
        count an execution refused before the adapter, whatever its status
      - >-
        services-platform:modules/integrations/tests/unit/services/connection-figures.spec.ts#is the
        share that succeeded, the percentile and the denominator
      - >-
        services-platform:modules/integrations/tests/unit/services/connection-figures.spec.ts#does not
        count an execution still in flight
      - >-
        services-platform:modules/integrations/tests/unit/services/connection-figures.spec.ts#is nothing
        when no execution reached the adapter
    binding_scope: >-
      contributions: the cited tests support their own asserted outcomes. Additional setup, branches
      and combined sequences remain proposed unless the cited assertions exercise them.
  - id: ATS-PFM-INT-006-05
    title: Feature-loss notices follow committed changes
    level: api
    proves:
      - BR-CAP-PFM-INT-006-06
    preconditions: 'A connection loses a required feature, regains it and has administrators.'
    steps: Verify after each change and repeat a loss with mail delivery failing.
    expected: 'Loss notifies each administrator once, gain sends none and mail failure does not undo the loss.'
    negative: false
    data_needs: 'Fixtures establishing the stated accounts, declarations and history in an isolated workspace.'
    bound_to:
      - TST-PFM-INT-517
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
      step 3: the loss tells each administrator of the tenant once, two notices in all, each with the
      features-lost subject
    category: failure
    binding_evidence:
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
        step 3: the loss tells each administrator of the tenant once, two notices in all, each with the
        features-lost subject
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
        step 5: a gain sends no notice to anybody
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
        step 6: the e-mail sender failing does not roll the loss back: the feature is gone, the binding
        invalid, the audit row written
    binding_scope: >-
      contributions: the cited tests support their own asserted outcomes. Additional setup, branches
      and combined sequences remain proposed unless the cited assertions exercise them.
  - id: ATS-PFM-INT-006-06
    title: Connector warnings remain actionable without failing success
    level: api
    proves:
      - BR-CAP-PFM-INT-006-07
    preconditions: A payment succeeds after its connector omits a refused statement name.
    steps: 'Repeat the call, change that installation setting and evaluate notices after thirty days.'
    expected: >-
      The warning shares one counted notice naming the setting, the setting edit clears it and warning
      handling never changes payment success.
    negative: false
    data_needs: 'Fixtures establishing the stated accounts, declarations and history in an isolated workspace.'
    bound_to:
      - TST-PFM-INT-538
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/integration/services/executions/connection-notices.integration.spec.js#records
      the warnings of a succeeded call with the setting, and the call is answered as it always was
    category: failure
    binding_evidence:
      - >-
        services-platform:modules/integrations/tests/integration/services/executions/connection-notices.integration.spec.js#records
        the warnings of a succeeded call with the setting, and the call is answered as it always was
      - >-
        services-platform:modules/integrations/tests/integration/services/executions/connection-notices.integration.spec.js#counts
        a recurrence on the same row and moves last seen, keeping first seen and taking the latest
        message
      - >-
        services-platform:modules/integrations/tests/integration/services/executions/connection-notices.integration.spec.js#when
        the installation settings change, with the clearing recorded and the change audited as it always
        was
      - >-
        services-platform:modules/integrations/tests/integration/services/executions/connection-notices.integration.spec.js#never
        throws when the notice cannot be stored: the call that succeeded stands
      - >-
        services-platform:modules/integrations/tests/integration/services/executions/connection-notices.integration.spec.js#stop
        showing without a recurrence, and restart on one
    binding_scope: >-
      contributions: the cited tests support their own asserted outcomes. Additional setup, branches
      and combined sequences remain proposed unless the cited assertions exercise them.
  - id: ATS-PFM-INT-006-07
    title: History pagination retains order and boundaries
    level: api
    proves:
      - BR-CAP-PFM-INT-006-08
    preconditions: A connection has one hundred and thirty history entries.
    steps: Read successive pages and request invalid limits of zero and one hundred and one.
    expected: >-
      The valid pages return one hundred then thirty entries newest first without overlap; invalid limits
      refuse.
    negative: false
    data_needs: 'Fixtures establishing the stated accounts, declarations and history in an isolated workspace.'
    bound_to:
      - TST-PFM-INT-483
    provenance: test
    source: >-
      services-platform:modules/integrations/tests/e2e/audit-events-paging.e2e.spec.js#INT-ACC-0530 step
      2: the pages run newest first across the boundary
    category: boundary
    binding_evidence:
      - >-
        services-platform:modules/integrations/tests/e2e/audit-events-paging.e2e.spec.js#INT-ACC-0530
        step 2: the pages run newest first across the boundary
      - >-
        services-platform:modules/integrations/tests/e2e/audit-events-paging.e2e.spec.js#INT-ACC-0530
        step 2: no event appears on both pages
      - >-
        services-platform:modules/integrations/tests/e2e/audit-events-paging.e2e.spec.js#INT-ACC-0530
        step 2: a limit of 101 is refused 400
    binding_scope: >-
      contributions: the cited tests support their own asserted outcomes. Additional setup, branches
      and combined sequences remain proposed unless the cited assertions exercise them.
  - id: ATS-PFM-INT-006-08
    title: Attention follows the platform settlement state
    level: browser
    proves:
      - BR-CAP-PFM-INT-006-10
      - AS-JNY-PFM-INT-001-03
    preconditions: >-
      Prepare failed and degraded accounts, a reconciling call, an abandoned settlement and a connector
      notice.
    steps: Open Needs Attention and compare Library counters.
    expected: >-
      Actionable items appear with their links, the reconciling call is omitted and counters reflect
      connection states.
    negative: false
    data_needs: 'Fixtures establishing the stated accounts, declarations and history in an isolated workspace.'
    bound_to:
      - TST-PFM-INT-457
      - TST-PFM-INT-343
      - TST-PFM-INT-145
    provenance: test
    source: >-
      react-console:lib/integrations/needs-attention.test.ts#leaves a settling (unknown) execution out
      however long it has been unknown
    category: interaction
    binding_evidence:
      - >-
        react-console:lib/integrations/needs-attention.test.ts#leaves a settling (unknown) execution out
        however long it has been unknown
      - >-
        react-console:lib/integrations/needs-attention.test.ts#takes Platform's in_needs_attention as the
        only way an execution is queued
      - >-
        react-console:lib/integrations/needs-attention.test.ts#lists failed_verification, degraded and
        reauth_required connections, each with its state and reason
      - 'react-console:lib/integrations/needs-attention.test.ts#gives each row its one fixing action'
      - >-
        react-console:acceptance/integrations/playwright/journeys/library/INT-ACC-0002.spec.ts#INT-ACC-0002
      - >-
        react-console:acceptance/integrations/playwright/journeys/catalog/INT-ACC-0118.spec.ts#INT-ACC-0118
    binding_scope: >-
      contributions: the cited tests support their own asserted outcomes. Additional setup, branches
      and combined sequences remain proposed unless the cited assertions exercise them.
  - id: ATS-PFM-INT-006-09
    level: api
    negative: false
    data_needs: Run-owned records and principals in an isolated workspace.
    bound_to: []
    provenance: proposed
    title: Feature loss invalidates affected selections
    category: interaction
    proves:
      - BR-CAP-PFM-INT-006-06
      - BR-CAP-PFM-INT-007-06
    exercises:
      - CAP-PFM-INT-006
      - CAP-PFM-INT-007
    preconditions: Two bindings use one account and only one requires a feature that verification removes.
    steps: 'Record feature loss and recovery, read both bindings and inspect notices.'
    expected: >-
      Only the affected binding becomes invalid and restores when eligible; loss produces the post-commit
      notice.
    source:
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
        step 3: the loss tells each administrator of the tenant once, two notices in all, each with the
        features-lost subject
      - >-
        services-platform:modules/integrations/tests/integration/services/bindings/invalidation.integration.spec.js#invalidates
        its active bindings with connection_suspended, at the next revision
    workflows: []
  - id: ATS-PFM-INT-006-10
    level: api
    negative: false
    data_needs: Run-owned records and principals in an isolated workspace.
    bound_to: []
    provenance: proposed
    title: Attention follows settlement rather than elapsed age
    category: interaction
    proves:
      - BR-CAP-PFM-INT-006-10
      - BR-CAP-PFM-INT-010-07
    exercises:
      - CAP-PFM-INT-006
      - CAP-PFM-INT-010
    preconditions: One call is still scheduled for lookup and another has exhausted investigation.
    steps: Read both execution states and open the attention view.
    expected: Only the exhausted investigation appears as a call requiring a person.
    source:
      - >-
        react-console:lib/integrations/needs-attention.test.ts#leaves a settling (unknown) execution out
        however long it has been unknown
      - >-
        services-platform:modules/integrations/tests/unit/services/execution-settlement-wire.spec.ts#gives
        the next lookup time of an unknown execution, not in needs attention
    workflows: []
  - id: ATS-PFM-INT-006-11
    level: api
    negative: false
    data_needs: Run-owned records and principals in an isolated workspace.
    bound_to: []
    provenance: proposed
    title: Repeated delivery failure becomes visible attention
    category: interaction
    proves:
      - BR-CAP-PFM-INT-006-10
      - BR-CAP-PFM-INT-014-05
    exercises:
      - CAP-PFM-INT-006
      - CAP-PFM-INT-014
    preconditions: A subscription has forty-nine consecutive dead deliveries.
    steps: 'Fail its next delivery, read operational attention and resume the subscription.'
    expected: The subscription pauses with one notice and the dead delivery is available for investigation.
    source:
      - >-
        react-console:lib/integrations/needs-attention.test.ts#leaves a settling (unknown) execution out
        however long it has been unknown
      - >-
        services-platform:modules/integrations/tests/integration/services/subscriptions/subscriptions.integration.spec.js#pauses
        a subscription after fifty dead deliveries in a row and tells its administrators once
    workflows: []
  - id: ATS-PFM-INT-006-12
    level: api
    negative: false
    data_needs: Run-owned records and principals in an isolated workspace.
    bound_to: []
    provenance: proposed
    title: Lost authorization becomes an actionable account problem
    category: interaction
    proves:
      - BR-CAP-PFM-INT-005-11
      - BR-CAP-PFM-INT-006-06
    exercises:
      - CAP-PFM-INT-006
      - CAP-PFM-INT-005
    preconditions: A due sign-in token has an active account and administrator recipients.
    steps: 'Run refresh with provider refusal, then inspect health and delivered administrator notices.'
    expected: The account requires re-authorization and the saved result remains even when mail delivery fails.
    source:
      - >-
        services-platform:modules/integrations/tests/integration/services/credentials/refresh.integration.spec.js#makes
        one token request when two refreshes of a connection run at once
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-feature-changes.integration.spec.js#INT-ACC-0113
        step 3: the loss tells each administrator of the tenant once, two notices in all, each with the
        features-lost subject
    workflows:
      - WF-PFM-INT-005
  - id: ATS-PFM-INT-006-13
    level: api
    negative: false
    data_needs: Run-owned records and principals in an isolated workspace.
    bound_to: []
    provenance: proposed
    title: Provider checks change operational standing
    category: interaction
    proves:
      - BR-CAP-PFM-INT-004-05
      - BR-CAP-PFM-INT-006-03
    exercises:
      - CAP-PFM-INT-006
      - CAP-PFM-INT-004
    preconditions: A verified active account can return failing and passing health results.
    steps: Run a failed check followed by a recovered check and inspect the account and health view.
    expected: The visible status follows degradation and recovery with retained check outcomes.
    source:
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-jobs.integration.spec.js#becomes
        active with the account and every declared feature verified
      - >-
        services-platform:modules/integrations/tests/integration/services/connections/connection-jobs.integration.spec.js#degrades
        an active connection whose provider is unhealthy
    workflows:
      - WF-PFM-INT-006
evidence:
  - >-
    Each binding identifies an existing source test at the pinned revision; unbound scenarios remain
    proposed proof obligations.
coverage:
  rule: covered
  transition: covered
  validation: 'gap: FND-PFM-INT-062'
  permission: 'gap: FND-PFM-INT-062'
  edge: 'gap: FND-PFM-INT-062'
  failure: covered
  boundary: covered
  concurrency: 'gap: FND-PFM-INT-062'
  invariant: 'gap: FND-PFM-INT-062'
  interaction: covered
coverage_notes:
  covered: A designed scenario exists; executable coverage and a passing run require separate evidence.
  gaps: >-
    The finding records categories without a designed scenario and remaining permission and rule audit
    obligations.
---
# Recognize integration problems and trace changes: Capability Test Specification

## Coverage

| Rule | Proved By |
|---|---|
| `BR-CAP-PFM-INT-006-01` | `ATS-PFM-INT-006-01` |
| `BR-CAP-PFM-INT-006-02` | `ATS-PFM-INT-006-02` |
| `BR-CAP-PFM-INT-006-03` | `ATS-PFM-INT-006-03`, `ATS-PFM-INT-006-13` |
| `BR-CAP-PFM-INT-006-04` | `ATS-PFM-INT-006-04` |
| `BR-CAP-PFM-INT-006-05` | `FND-PFM-INT-062` |
| `BR-CAP-PFM-INT-006-06` | `ATS-PFM-INT-006-05`, `ATS-PFM-INT-006-09`, `ATS-PFM-INT-006-12` |
| `BR-CAP-PFM-INT-006-07` | `ATS-PFM-INT-006-06` |
| `BR-CAP-PFM-INT-006-08` | `ATS-PFM-INT-006-07` |
| `BR-CAP-PFM-INT-006-10` | `ATS-PFM-INT-006-08`, `ATS-PFM-INT-006-10`, `ATS-PFM-INT-006-11` |

## Interactions With Related Capabilities

Health summaries, attention lists and operational history describe the same underlying account and execution changes. The interaction cases compare those surfaces after credential trouble, binding invalidation and execution settlement; unresolved display differences remain findings.

The structured scenarios name the capabilities and rules involved. A bound test contributes only the outcomes it asserts; proposed transition matrices and composed interactions still require executable proof.
