Skip to content

ATS-PFM-TNL-012Recover an incorrect initial import: Capability Test Specification

Markdown

ATS-PFM-TNL-012

Recover an incorrect initial import: Capability Test Specification

Markdown
  • DocumentProposed

Planning

Proves capability
CAP-PFM-TNL-012

Design

Executed by
TST-PFM-TNL-049, TST-PFM-TNL-087

KindAcceptance test setProduct areaPlatformModuleWorkspace Lifecycle Across ApplicationsRevision3

Read atservices-platform ad3f6a65services-crm a8d1364fservices-commerce c8b66a98services-committees 36129c24services-membership 5994c270services-submissions 64236c19services-websites 5fc6823cservices-marketing d071a159rhythm-v2-docs d318a948

Coverage

  • Rule gap: FND-PFM-TNL-077
  • Transition gap: FND-PFM-TNL-077
  • Validation covered
  • Permission covered
  • Edge gap: FND-PFM-TNL-077
  • Failure covered
  • Boundary gap: FND-PFM-TNL-077
  • Concurrency covered
  • Invariant covered
  • Interaction covered

Test Scenarios

11 scenarios proving CAP-PFM-TNL-012; 10 bound to an existing test.

01 Reset rejects non-import callerspermissionapinegativetest
Proves
BR-CAP-PFM-TNL-012-01
Preconditions
The workspace is loading.
Steps
Request reset using activation-only, customer and anonymous identities.
Expected
Each refusal leaves selected records intact.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#refuses the staff member who may only activate a tenant, resetting being part of running the import
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#refuses an administrator of the tenant’s own customer
Source
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#refuses the staff member who may only activate a tenant, resetting being part of running the import
02 Reset checks both eligibility axesvalidationapinegativetest
Proves
BR-CAP-PFM-TNL-012-02
Preconditions
Fixtures include live mode and an implementation workspace outside loading.
Steps
Request reset in each fixture.
Expected
Neither records a reset job or removes data, and each identifies its invalid axis.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#refuses a tenant that is not loading, naming that half of the rule
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#refuses a tenant that is in implementation mode and not loading
Source
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#refuses a tenant that is not loading, naming that half of the rule
03 Reset confirmation rejects missing and wrong textvalidationapinegativetest
Proves
BR-CAP-PFM-TNL-012-03
Preconditions
A workspace is eligible for reset.
Steps
Omit confirmation and supply incorrect confirmation.
Expected
Both requests refuse without removal.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#refuses a confirmation that is not the tenant’s id, and does not say what to type
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#refuses a confirmation that is not the tenant’s own id, without saying what to type
Source
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#refuses a confirmation that is not the tenant’s id, and does not say what to type
04 Open reset prevents a competing requestconcurrencyapinegativetest
Proves
BR-CAP-PFM-TNL-012-04
Preconditions
The first reset is pending or running.
Steps
Submit another reset request.
Expected
The refusal identifies the first job and creates no competing run.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#refuses the second request as a conflict, naming the job that is running
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#refuses the second 409, naming the reset that is running
Source
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#refuses the second request as a conflict, naming the job that is running
05 Unsupported application prevents partial resetvalidationapinegativetest
Proves
BR-CAP-PFM-TNL-012-05
Preconditions
A required application has no declared reset support.
Steps
Request reset.
Expected
Planning refuses with the application identified and no job or removal recorded.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#refuses the reset, naming the service and the contract it has to implement
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#removes nothing at all: a half-reset tenant is the outcome worth refusing for
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#refuses a tenant it may otherwise reset, the services holding its records not being in the live plan
Source
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#refuses the reset, naming the service and the contract it has to implement
06 Reset follows removed-and-kept classificationruleapitest
Proves
BR-CAP-PFM-TNL-012-06
Preconditions
Selected and kept participants have populated workspace records.
Steps
Run reset and inspect their inventories.
Expected
Selected data is emptied according to application classification and kept participants retain their rows.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#empties every table of every participant it empties, but the configuration a participant’s own reset keeps
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#keeps every table of every participant it does not empty, row for row
services-platform:modules/tenants/tests/unit/services/lifecycle/reset-participants.spec.js#keeps the security participant, so the tenant’s people and their grants survive it
Source
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#empties every table of every participant it empties, but the configuration a participant’s own reset keeps
07 CRM reset restores the seeded baselineinvariantapitest
Proves
BR-CAP-PFM-TNL-012-07
Preconditions
CRM’s loaded records differ from their provisioned baseline.
Steps
Reset its participants.
Expected
CRM defaults and seed ledger match the freshly provisioned comparison fixture.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-crm:modules/tenant-lifecycle/tests/integration/services/participants/reset.integration.spec.js#leaves the tenant holding exactly what a freshly provisioned tenant holds, table for table
services-crm:modules/tenant-lifecycle/tests/integration/services/participants/reset.integration.spec.js#leaves the seeded records themselves equal to the freshly provisioned tenant’s
services-crm:modules/tenant-lifecycle/tests/integration/services/participants/reset.integration.spec.js#leaves the seed ledger equal to the freshly provisioned tenant’s, seed for seed
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#let the other macroservice re-apply its seeds, which is what a reset has and a purge has not
Source
services-crm:modules/tenant-lifecycle/tests/integration/services/participants/reset.integration.spec.js#leaves the tenant holding exactly what a freshly provisioned tenant holds, table for table
08 Reset progress leaves loading opentransitionapitest
Proves
BR-CAP-PFM-TNL-012-08
Preconditions
A loading workspace is eligible for reset.
Steps
Start and follow its job to completion.
Expected
The response supplies a job and progress reports removals while loading remains active as a lifecycle period.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#is accepted for a staff member holding hq.data-runs.manage: 202, naming the tenant and the job that empties it
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#answers the totals by resource the reset removed, the other macroservice’s among them
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#reports one progress event per participant, naming what that participant removed
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#leaves the tenant loading and in implementation, so the package can be loaded again at once
Source
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#is accepted for a staff member holding hq.data-runs.manage: 202, naming the tenant and the job that empties it
09 Fresh reset finishes interrupted removalfailureapitest
Proves
BR-CAP-PFM-TNL-012-09
Preconditions
The previous reset stopped part way and has settled.
Steps
Submit another reset.
Expected
It succeeds after removing the remaining selected records.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#accepts a second reset once the first has settled, and the second succeeds
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#finds nothing left to remove of the participants the first reset had already emptied
Source
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#accepts a second reset once the first has settled, and the second succeeds
10 Import recovery retains classified setupinteractionapitest
Proves
AS-JNY-PFM-TNL-003-01
Preconditions
The import journey includes a reset and kept-participant fixtures.
Steps
Run reset and inspect retained setup and lifecycle.
Expected
Kept participants are unchanged and the workspace remains loading in implementation.
Data
Use the run-owned records and caller contexts created by the cited tests; use their provider and clock seams only where declared.
Bound to
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#leaves the tenant loading and in implementation, so the package can be loaded again at once
services-platform:modules/tenants/tests/integration/services/reset/reset-tenant.integration.spec.js#keeps every table of every participant it does not empty, row for row
services-crm:modules/tenant-lifecycle/tests/integration/services/participants/reset.integration.spec.js#leaves the tenant holding exactly what a freshly provisioned tenant holds, table for table
Source
services-platform:modules/tenants/tests/e2e/hq-tenant-loading.e2e.spec.js#leaves the tenant loading and in implementation, so the package can be loaded again at once
11 Reset reapplication uses the baseline ledgerinteractionapinegativeproposed
Proves
BR-CAP-PFM-TNL-012-07
Preconditions
A CRM load has imported rows alongside seeded defaults and an unrelated comparison workspace.
Steps
Run reset through removal and reseeding, inspect seed entries and default rows, and initialize the reset workspace once more.
Expected
The restored baseline is ledgered; initialization adds no duplicate and the comparison workspace remains unchanged.
Data
Create a separate run-owned workspace for each decision branch and an unaffected comparison workspace. Use a controlled clock, paused task or injected fault at the boundary named in the scenario.
Source
rhythm-v2-docs:specs/platform/tenant-lifecycle/planning/capabilities/CAP-PFM-TNL-012-empty-a-loading-workspace-so-it-can-be-loaded-again.md; rhythm-v2-docs:specs/platform/tenant-lifecycle/planning/capabilities/CAP-PFM-TNL-008-give-every-workspace-its-default-configuration-exactly-once.md; rhythm-v2-docs:specs/platform/tenant-lifecycle/planning/capabilities/CAP-PFM-TNL-017-remove-everything-a-workspace-owned-and-prove-it-is-gone.md

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.