The structured coverage rows link required rules to their scenarios. A covered category has a defined check; executable coverage and successful execution require separate evidence. The category map keeps incomplete lifecycle matrices and other missing checks visible as findings.
Catalogue usage changes the count requiring approval. Reclassification makes a previously blocked type deletable. The interaction scenarios use the related capabilities' rule references and identify the shared fixture and observable outcome.
Coverage
Rulecovered
Transitiongap: FND-PFM-DJE-070
Validationcovered
Permissioncovered
Edgegap: FND-PFM-DJE-070
Failuregap: FND-PFM-DJE-070
Boundarycovered
Concurrencygap: FND-PFM-DJE-070
Invariantgap: FND-PFM-DJE-070
Interactioncovered
Test Scenarios
8 scenarios proving CAP-PFM-DJE-010; 4 bound to an existing test.
Prepare twelve contact types, two assigned across three contacts.
Steps
[
{
"do": "Validate and approve deletion of the selection.",
"expect": "Ten types are removed; the two used types remain with their contact usage counts.",
"provenance": "test",
"source": "services-crm:modules/data-jobs/tests/integration/services/jobs/configuration-data-jobs.integration.spec.js#answers the validation’s impact: ten it would delete and two it is blocked on"
}
]
Expected
Ten types are removed; the two used types remain with their contact usage counts.
Prepare a protected role, a locked type and an unknown identifier.
Steps
[
{
"do": "Validate deletion for each.",
"expect": "The reported code distinguishes each refusal.",
"provenance": "proposed",
"source": "services-crm:docs/data-jobs.md#Deleting records in bulk"
}
]
[
{
"do": "Inspect the phrase and attempt mismatched text and fingerprint.",
"expect": "The phrase requests ten items; invalid approvals remove nothing.",
"provenance": "test",
"source": "services-crm:modules/data-jobs/tests/integration/services/jobs/configuration-data-jobs.integration.spec.js#asks a person to type the number it would delete, not the number submitted"
}
]
Expected
The phrase requests ten items; invalid approvals remove nothing.
[
{
"do": "Attempt status input and inspect their bulk actions.",
"expect": "The proposed proof expects a status-field refusal and a Delete-only list.",
"provenance": "proposed",
"source": "services-platform:docs/milestones/PLAT-M20-small-bulk-operations.md#D3"
}
]
Expected
The proposed proof expects a status-field refusal and a Delete-only list.
[
{
"do": "Inspect the type list and submit to the backend.",
"expect": "The action explains missing authority and backend requests receive 403.",
"provenance": "test",
"source": "react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0109.spec.ts#DJE-ACC-0109"
}
]
Expected
The action explains missing authority and backend requests receive 403.
Select two unused contact types and one used type.
Steps
[
{
"do": "Preview deletion, introduce usage of one previously eligible type, and approve the original phrase and fingerprint.",
"expect": "The newly used type remains as a conflict, the originally blocked type remains, and the still-unused type is removed.",
"provenance": "proposed",
"source": "services-crm:modules/data-jobs/tests/integration/services/jobs/contact-delete.integration.spec.js#refuses an apply whose confirmation names another number of contacts; services-crm:modules/data-jobs/tests/integration/services/jobs/organization-delete.integration.spec.js#refuses the one the contact now belongs to as a conflict, because the delete approved was another one; services-crm:modules/data-jobs/tests/integration/services/jobs/configuration-data-jobs.integration.spec.js#says both are blocked because they are in use; services-crm:modules/data-jobs/tests/integration/services/jobs/configuration-data-jobs.integration.spec.js#asks a person to type the number it would delete, not the number submitted"
}
]
Expected
The newly used type remains as a conflict, the originally blocked type remains, and the still-unused type is removed.
Data
Select two unused contact types and one used type.
Create an obsolete type used by three contacts and an unused replacement type.
Steps
[
{
"do": "Inspect the usage block, change those contacts to the replacement through a selected-record job, then preview and approve type deletion.",
"expect": "The second preview permits deletion of the obsolete type; the replacement and reclassified contacts remain.",
"provenance": "proposed",
"source": "react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0111.spec.ts#DJE-ACC-0111; services-crm:modules/data-jobs/tests/integration/services/jobs/configuration-data-jobs.integration.spec.js#says both are blocked because they are in use; services-crm:modules/data-jobs/tests/integration/services/jobs/configuration-data-jobs.integration.spec.js#asks a person to type the number it would delete, not the number submitted; react-console:acceptance/data-jobs/playwright/journeys/dialogs/DJE-ACC-0106.spec.ts#DJE-ACC-0106"
}
]
Expected
The second preview permits deletion of the obsolete type; the replacement and reclassified contacts remain.
Data
Create an obsolete type used by three contacts and an unused replacement type.