---
id: MOD-PFM-DJE
title: Data Job Engine
product_area: platform
module: data-job-engine
revision: 2
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repositories:
  - name: services-platform
    paths:
      - modules/data-jobs
      - modules/capacity
      - modules/partitions
      - docs/data-jobs
      - docs/partitions.md
      - docs/workload-governance.md (Capacity sentinel)
      - docs/milestones/PLAT-M19-data-job-engine-foundations.md
      - docs/milestones/PLAT-M20-small-bulk-operations.md
      - docs/milestones/PLAT-M21-data-job-lifecycle-console.md
      - docs/milestones/PLAT-M22-migration-proof-and-close-out.md
      - docs/milestones/plans/PLAT-M19-plan.md to PLAT-M22-plan.md
  - name: macroservice-libraries
    paths:
      - packages/data-jobs
  - name: services-crm
    paths:
      - modules/data-jobs
      - docs/data-jobs.md
      - docs/data-jobs
      - docs/milestones/CRM-M7-data-operations.md
  - name: services-membership
    paths:
      - modules/data-jobs
  - name: react-console
    paths:
      - 'app/(console)/console/[tenantId]/dataManagement'
      - components/data-management/data-jobs
      - lib/api/data-jobs
      - acceptance/data-jobs
      - acceptance/crm/journeys/data-operations
      - acceptance/crm/playwright/journeys/data-operations
owns:
  - >-
    The common job lifecycle and persisted items, batches, receipts, refusals, queued batches and
    submission ledger in adopting services
  - Producer-key mappings maintained by engine adopters
  - CRM records coordinating its bulk execution lane
  - Upload sessions and the storage bucket dedicated to data jobs
  - 'Migration Data Runs, ordered steps, service reset contracts and readiness results'
  - The operation definitions through which applications participate in the engine
  - 'Capacity state decisions, administrative pins and batch admission budgets'
  - Scheduled monthly partition maintenance under the current registry assignment
does_not_own:
  - record: 'CRM contacts, organizations and configuration catalogues with their ordinary record behavior'
    owner: MOD-CRM-ENT
  - record: CRM region records
    owner: MOD-CRM-REG
  - record: CRM activity records and activity catalogues
    owner: MOD-CRM-ACT
  - record: 'Duplicate detection and record merging, including mapping repoints'
    owner: MOD-CRM-DQ
  - record: 'Metadata definitions, custom object records and association records'
    owner: MOD-PFM-MTD
  - record: Membership structure records
    owner: MOD-MBR-MEM and MOD-MBR-STR
  - record: 'Export definitions, export execution and export pages'
    owner: MOD-PFM-QRY
  - record: >-
      Workspace lifecycle states and the services participating in provisioning, activation and
      reset
    owner: MOD-PFM-TNL
  - record: The durable Platform job framework used by bulk orchestration
    owner: MOD-PFM-OPS
  - record: 'Authorization grants, role evaluation and security auditing'
    owner: MOD-PFM-SEC
  - record: Navigation for the Data Management area
    owner: MOD-PFM-CSH
hosted_screens:
  - route: '/console/{tenantId}/dataManagement'
    purpose: Entry route that directs staff to Data Imports
  - route: '/console/{tenantId}/dataManagement/dataJobs'
    purpose: Paged and filtered listing of data jobs
  - route: '/console/{tenantId}/dataManagement/dataJobs/new'
    purpose: Wizard for selecting a job operation and preparing its input
  - route: '/console/{tenantId}/dataManagement/dataJobs/{jobId}'
    purpose: 'Inspection of job progress, outcomes and available controls'
  - route: >-
      Mass Update and Delete dialogs on record explorers, saved query results and configuration
      lists
    purpose: Compact submission of supported actions on selected records
supersedes:
  - >-
    react-console acceptance inventory area DJE (CAP-DJE-ENG-001, 002, 004 to 008; CAP-DJE-DLG-001
    to 003)
  - >-
    react-console acceptance journeys DJE-ACC-0001 to 0151 and CRM-ACC-0640 to 0679 (as journey and
    scenario seeds)
evidence:
  - >-
    Pinned source scope: services-platform (ad3f6a65): the data-jobs, capacity and partitions
    modules, their docs and milestone records PLAT-M19 to PLAT-M22 with plans; tenants routes read
    only to name the activation and reset dependency.
  - >-
    Pinned source scope: macroservice-libraries (54536a44): packages/data-jobs (README, CHANGELOG,
    sources and tests).
  - >-
    Pinned source scope: services-crm (a8d1364f): modules/data-jobs, docs/data-jobs.md and
    docs/data-jobs, docs/milestones/CRM-M7; aws/crm.service.ts for bulk keys.
  - 'Pinned source scope: services-membership (5994c270): modules/data-jobs.'
  - >-
    Pinned source scope: react-console (baf6dae3): data management pages, the data-jobs components
    and client, the DJE acceptance inventory and journeys, CRM data-operations journeys and specs.
  - >-
    The inherited catalogue indexes 164 operations, 23 tables, three owned permission groups, eleven
    bulk keys and seventy backend integration/end-to-end suites. These are inventory counts, not
    complete independent semantic examination.
  - >-
    All 57 planning files have OpenAI final text across the two passes; 51 were completed in pass 2.
    Exhaustive source, authority, enforcement and suite examination remains recorded in
    FND-PFM-DJE-042.
coverage_catalog: >-
  ### Catalogue limits


  The following assignments retain the inherited inventory at the pinned commits. The examination
  report distinguishes indexed entries, selected evidence review and remaining exhaustive work
  recorded in FND-PFM-DJE-042; a catalogue entry does not establish behavioral coverage.
  Infrastructure declarations represent ten physical resources, rather than the former seven grouped
  entries.


  ### Indexed operation assignments


  | Operation | Repository | Capability |

  |---|---|---|

  | `abortDataJobUpload` | services-platform | CAP-PFM-DJE-011 |

  | `applyCustomFieldDataJob` | services-platform | CAP-PFM-DJE-002 |

  | `applyCustomObjectRecordDataJob` | services-platform | CAP-PFM-DJE-002 |

  | `cancelCustomFieldDataJob` | services-platform | CAP-PFM-DJE-004 |

  | `cancelCustomObjectRecordDataJob` | services-platform | CAP-PFM-DJE-004 |

  | `cancelDataRun` | services-platform | CAP-PFM-DJE-016 |

  | `completeDataJobUpload` | services-platform | CAP-PFM-DJE-011 |

  | `getCustomFieldDataJob` | services-platform | CAP-PFM-DJE-005 |

  | `getCustomObjectRecordDataJob` | services-platform | CAP-PFM-DJE-005 |

  | `getDataJobUpload` | services-platform | CAP-PFM-DJE-011 |

  | `getDataJobsHealth` | services-platform | MOD-PFM-DJE (service health) |

  | `getDataRun` | services-platform | CAP-PFM-DJE-016 |

  | `listCustomFieldDataJobRejections` | services-platform | CAP-PFM-DJE-005 |

  | `listCustomFieldDataJobResults` | services-platform | CAP-PFM-DJE-005 |

  | `listCustomFieldDataJobs` | services-platform | CAP-PFM-DJE-005 |

  | `listCustomObjectRecordDataJobRejections` | services-platform | CAP-PFM-DJE-005 |

  | `listCustomObjectRecordDataJobResults` | services-platform | CAP-PFM-DJE-005 |

  | `listCustomObjectRecordDataJobs` | services-platform | CAP-PFM-DJE-005 |

  | `listDataJobUploads` | services-platform | CAP-PFM-DJE-011 |

  | `listDataRunSteps` | services-platform | CAP-PFM-DJE-016 |

  | `listDataRuns` | services-platform | CAP-PFM-DJE-016 |

  | `openDataJobUpload` | services-platform | CAP-PFM-DJE-011 |

  | `pauseCustomFieldDataJob` | services-platform | CAP-PFM-DJE-004 |

  | `pauseCustomObjectRecordDataJob` | services-platform | CAP-PFM-DJE-004 |

  | `pauseDataRun` | services-platform | CAP-PFM-DJE-016 |

  | `presignDataJobUploadParts` | services-platform | CAP-PFM-DJE-011 |

  | `readCustomFieldsBySourceKey` | services-platform | CAP-PFM-DJE-015 |

  | `registerDataRun` | services-platform | CAP-PFM-DJE-016 |

  | `resumeCustomFieldDataJob` | services-platform | CAP-PFM-DJE-004 |

  | `resumeCustomObjectRecordDataJob` | services-platform | CAP-PFM-DJE-004 |

  | `resumeDataRun` | services-platform | CAP-PFM-DJE-016 |

  | `retryCustomFieldDataJob` | services-platform | CAP-PFM-DJE-004 |

  | `retryCustomObjectRecordDataJob` | services-platform | CAP-PFM-DJE-004 |

  | `startDataRun` | services-platform | CAP-PFM-DJE-016 |

  | `submitCustomFieldDataJob` | services-platform | CAP-PFM-DJE-001, CAP-PFM-DJE-018 |

  | `submitCustomObjectRecordDataJob` | services-platform | CAP-PFM-DJE-001, CAP-PFM-DJE-018 |

  | `getCapacityStatePin` | services-platform | CAP-PFM-DJE-019 |

  | `pinCapacityState` | services-platform | CAP-PFM-DJE-019 |

  | `unpinCapacityState` | services-platform | CAP-PFM-DJE-019 |

  | `getCapacityHealth` | services-platform | MOD-PFM-DJE (service health) |

  | `applyContactDataJob` | services-crm | CAP-PFM-DJE-002 |

  | `applyOrganizationDataJob` | services-crm | CAP-PFM-DJE-002 |

  | `cancelContactDataJob` | services-crm | CAP-PFM-DJE-004 |

  | `cancelOrganizationDataJob` | services-crm | CAP-PFM-DJE-004 |

  | `getContactDataJob` | services-crm | CAP-PFM-DJE-005 |

  | `getOrganizationDataJob` | services-crm | CAP-PFM-DJE-005 |

  | `listContactDataJobMappingTargets` | services-crm | CAP-PFM-DJE-013 |

  | `listContactDataJobRejections` | services-crm | CAP-PFM-DJE-005 |

  | `listContactDataJobResults` | services-crm | CAP-PFM-DJE-005 |

  | `listContactDataJobs` | services-crm | CAP-PFM-DJE-005 |

  | `listOrganizationDataJobMappingTargets` | services-crm | CAP-PFM-DJE-013 |

  | `listOrganizationDataJobRejections` | services-crm | CAP-PFM-DJE-005 |

  | `listOrganizationDataJobResults` | services-crm | CAP-PFM-DJE-005 |

  | `listOrganizationDataJobs` | services-crm | CAP-PFM-DJE-005 |

  | `pauseContactDataJob` | services-crm | CAP-PFM-DJE-004 |

  | `pauseOrganizationDataJob` | services-crm | CAP-PFM-DJE-004 |

  | `resumeContactDataJob` | services-crm | CAP-PFM-DJE-004 |

  | `resumeOrganizationDataJob` | services-crm | CAP-PFM-DJE-004 |

  | `retryContactDataJob` | services-crm | CAP-PFM-DJE-004 |

  | `retryOrganizationDataJob` | services-crm | CAP-PFM-DJE-004 |

  | `revalidateContactDataJobConflicts` | services-crm | CAP-PFM-DJE-006 |

  | `revalidateOrganizationDataJobConflicts` | services-crm | CAP-PFM-DJE-006 |

  | `rollbackContactDataJob` | services-crm | CAP-PFM-DJE-008 |

  | `rollbackOrganizationDataJob` | services-crm | CAP-PFM-DJE-008 |

  | `submitContactDataJob` | services-crm | CAP-PFM-DJE-001 |

  | `submitOrganizationDataJob` | services-crm | CAP-PFM-DJE-001 |

  | `readContactsBySourceKey` | services-crm | CAP-PFM-DJE-015 |

  | `readOrganizationsBySourceKey` | services-crm | CAP-PFM-DJE-015 |

  | `submitContactTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-001 |

  | `listContactTypesDataJobs` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `getContactTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `readContactTypesBySourceKey` | services-crm (factory-generated type routes) | CAP-PFM-DJE-015 |

  | `listContactTypesDataJobResults` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `listContactTypesDataJobRejections` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `applyContactTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-002 |

  | `pauseContactTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `resumeContactTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `cancelContactTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `retryContactTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `revalidateContactTypesDataJobConflicts` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-006 |

  | `submitContactRolesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-001 |

  | `listContactRolesDataJobs` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `getContactRolesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `readContactRolesBySourceKey` | services-crm (factory-generated type routes) | CAP-PFM-DJE-015 |

  | `listContactRolesDataJobResults` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `listContactRolesDataJobRejections` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `applyContactRolesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-002 |

  | `pauseContactRolesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `resumeContactRolesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `cancelContactRolesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `retryContactRolesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `revalidateContactRolesDataJobConflicts` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-006 |

  | `submitOrganizationTypesDataJob` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-001 |

  | `listOrganizationTypesDataJobs` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005
  |

  | `getOrganizationTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `readOrganizationTypesBySourceKey` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-015 |

  | `listOrganizationTypesDataJobResults` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `listOrganizationTypesDataJobRejections` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `applyOrganizationTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-002
  |

  | `pauseOrganizationTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004
  |

  | `resumeOrganizationTypesDataJob` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-004 |

  | `cancelOrganizationTypesDataJob` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-004 |

  | `retryOrganizationTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004
  |

  | `revalidateOrganizationTypesDataJobConflicts` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-006 |

  | `submitAddressTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-001 |

  | `listAddressTypesDataJobs` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `getAddressTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `readAddressTypesBySourceKey` | services-crm (factory-generated type routes) | CAP-PFM-DJE-015 |

  | `listAddressTypesDataJobResults` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `listAddressTypesDataJobRejections` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `applyAddressTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-002 |

  | `pauseAddressTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `resumeAddressTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `cancelAddressTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `retryAddressTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `revalidateAddressTypesDataJobConflicts` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-006 |

  | `submitPhoneNumberTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-001
  |

  | `listPhoneNumberTypesDataJobs` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005
  |

  | `getPhoneNumberTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `readPhoneNumberTypesBySourceKey` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-015 |

  | `listPhoneNumberTypesDataJobResults` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `listPhoneNumberTypesDataJobRejections` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `applyPhoneNumberTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-002
  |

  | `pausePhoneNumberTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004
  |

  | `resumePhoneNumberTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004
  |

  | `cancelPhoneNumberTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004
  |

  | `retryPhoneNumberTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004
  |

  | `revalidatePhoneNumberTypesDataJobConflicts` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-006 |

  | `submitRegionsDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-001 |

  | `listRegionsDataJobs` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `getRegionsDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `readRegionsBySourceKey` | services-crm (factory-generated type routes) | CAP-PFM-DJE-015 |

  | `listRegionsDataJobResults` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `listRegionsDataJobRejections` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005
  |

  | `applyRegionsDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-002 |

  | `pauseRegionsDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `resumeRegionsDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `cancelRegionsDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `retryRegionsDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `revalidateRegionsDataJobConflicts` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-006 |

  | `submitActivityTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-001 |

  | `listActivityTypesDataJobs` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `getActivityTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `readActivityTypesBySourceKey` | services-crm (factory-generated type routes) | CAP-PFM-DJE-015
  |

  | `listActivityTypesDataJobResults` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `listActivityTypesDataJobRejections` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `applyActivityTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-002 |

  | `pauseActivityTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `resumeActivityTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `cancelActivityTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `retryActivityTypesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `revalidateActivityTypesDataJobConflicts` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-006 |

  | `submitActivitiesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-001 |

  | `listActivitiesDataJobs` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `getActivitiesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005 |

  | `readActivitiesBySourceKey` | services-crm (factory-generated type routes) | CAP-PFM-DJE-015 |

  | `listActivitiesDataJobResults` | services-crm (factory-generated type routes) | CAP-PFM-DJE-005
  |

  | `listActivitiesDataJobRejections` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-005 |

  | `applyActivitiesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-002 |

  | `pauseActivitiesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `resumeActivitiesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `cancelActivitiesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `retryActivitiesDataJob` | services-crm (factory-generated type routes) | CAP-PFM-DJE-004 |

  | `revalidateActivitiesDataJobConflicts` | services-crm (factory-generated type routes) |
  CAP-PFM-DJE-006 |


  ### Indexed table assignments


  | Repository | Table | Capabilities |

  |---|---|---|

  | services-platform | `data-jobs.table.ts: data_jobs` | CAP-PFM-DJE-001, CAP-PFM-DJE-005 |

  | services-platform | `data-jobs.table.ts: data_job_items` | CAP-PFM-DJE-001 |

  | services-platform | `data-jobs.table.ts: data_job_batches` | CAP-PFM-DJE-003, CAP-PFM-DJE-004 |

  | services-platform | `data-jobs.table.ts: queued_data_job_batches` | CAP-PFM-DJE-018 |

  | services-platform | `data-jobs.table.ts: data_job_receipts` | CAP-PFM-DJE-003 |

  | services-platform | `data-jobs.table.ts: data_job_rejections` | CAP-PFM-DJE-003, CAP-PFM-DJE-005
  |

  | services-platform | `data-jobs.table.ts: data_job_submissions` | CAP-PFM-DJE-001,
  CAP-PFM-DJE-005 |

  | services-platform | `data-jobs.table.ts: data_id_mappings` | CAP-PFM-DJE-012, CAP-PFM-DJE-015 |

  | services-platform | `data-job-uploads.table.ts: data_job_uploads` | CAP-PFM-DJE-011 |

  | services-platform | `data-runs.table.ts: data_runs` | CAP-PFM-DJE-016 |

  | services-platform | `data-run-steps.table.ts: data_run_steps` | CAP-PFM-DJE-016 |

  | services-platform | `capacity-state-pins.table.ts: capacity_state_pins` | CAP-PFM-DJE-019 |

  | services-crm | `data-jobs.table.ts: data_jobs` | CAP-PFM-DJE-001, CAP-PFM-DJE-005 |

  | services-crm | `data-jobs.table.ts: data_job_items` | CAP-PFM-DJE-001 |

  | services-crm | `data-jobs.table.ts: data_job_batches` | CAP-PFM-DJE-003, CAP-PFM-DJE-004 |

  | services-crm | `data-jobs.table.ts: queued_data_job_batches` | CAP-PFM-DJE-003 |

  | services-crm | `data-jobs.table.ts: data_job_receipts` | CAP-PFM-DJE-003, CAP-PFM-DJE-008 |

  | services-crm | `data-jobs.table.ts: data_job_rejections` | CAP-PFM-DJE-003, CAP-PFM-DJE-005 |

  | services-crm | `data-jobs.table.ts: data_job_submissions` | CAP-PFM-DJE-001, CAP-PFM-DJE-005 |

  | services-crm | `data-jobs.table.ts: data_id_mappings` | CAP-PFM-DJE-012, CAP-PFM-DJE-015 |

  | services-crm | `bulk-data-jobs.table.ts: bulk_data_jobs` | CAP-PFM-DJE-014 |

  | services-crm | `bulk-data-jobs.table.ts: bulk_data_job_steps` | CAP-PFM-DJE-014 |

  | services-crm | `bulk-data-jobs.table.ts: bulk_data_job_events` | CAP-PFM-DJE-014 |


  ### Indexed authorization dependencies


  | Key | Standing | Capabilities |

  |---|---|---|

  | `platform.data-jobs.upload` | published here (Platform data-jobs group) | CAP-PFM-DJE-011 |

  | `hq.data-runs.manage` | published here (HQ data-runs group) | CAP-PFM-DJE-016, CAP-PFM-DJE-017 |

  | `hq.capacity.manage` | published here (HQ capacity group) | CAP-PFM-DJE-019 |

  | `platform.custom-fields.bulk` | required by this module; published by MOD-PFM-MTD |
  CAP-PFM-DJE-018, CAP-PFM-DJE-015 |

  | `crm.contacts.bulk` | required by this module; published by MOD-CRM-ENT | CAP-PFM-DJE-001 to 009
  |

  | `crm.organizations.bulk` | required by this module; published by MOD-CRM-ENT | CAP-PFM-DJE-001,
  007, 008, 012 |

  | `crm.contact-types.bulk` | required by this module; published by MOD-CRM-ENT | CAP-PFM-DJE-010,
  012 |

  | `crm.contact-roles.bulk` | required by this module; published by MOD-CRM-ENT | CAP-PFM-DJE-010,
  012 |

  | `crm.organization-types.bulk` | required by this module; published by MOD-CRM-ENT |
  CAP-PFM-DJE-010, 012 |

  | `crm.address-types.bulk` | required by this module; published by MOD-CRM-ENT | CAP-PFM-DJE-010,
  012 |

  | `crm.phone-number-types.bulk` | required by this module; published by MOD-CRM-ENT |
  CAP-PFM-DJE-010, 012 |

  | `crm.regions.bulk` | required by this module; published by MOD-CRM-REG | CAP-PFM-DJE-012 |

  | `crm.activity-types.bulk` | required by this module; published by MOD-CRM-ACT | CAP-PFM-DJE-012
  |

  | `crm.activities.bulk` | required by this module; published by MOD-CRM-ACT | CAP-PFM-DJE-007, 012
  |

  | `record keys (.update, .delete, .create of each type)` | required beside the bulk key, owned by
  the record's module | CAP-PFM-DJE-001, 007, 008, 018 |

  | `hq.tenants.activate` | dependency, owned by MOD-PFM-TNL | CAP-PFM-DJE-017 |

  | `data.jobs.view, .submit, .control, .rollback (console capabilities)` | console aliases of the
  bulk keys | CAP-PFM-DJE-004, 005, 008, 009 |


  ### Indexed backend suite assignments


  | Suite | File | Capabilities |

  |---|---|---|

  | services-crm e2e | `bulk-data-jobs.e2e.spec.js` | CAP-PFM-DJE-014 |

  | services-crm e2e | `configuration-data-jobs.e2e.spec.js` | CAP-PFM-DJE-001, CAP-PFM-DJE-010 |

  | services-crm e2e | `data-jobs.e2e.spec.js` | CAP-PFM-DJE-001, CAP-PFM-DJE-005 |

  | services-crm e2e | `organization-update.e2e.spec.js` | CAP-PFM-DJE-001, CAP-PFM-DJE-002 |

  | services-crm e2e | `records-by-source-key.e2e.spec.js` | CAP-PFM-DJE-015 |

  | services-crm integration | `bulk-admission` | CAP-PFM-DJE-014 |

  | services-crm integration | `bulk-data-job-failure` | CAP-PFM-DJE-004 |

  | services-crm integration | `bulk-data-job-lane` | CAP-PFM-DJE-014 |

  | services-crm integration | `bulk-data-jobs (jobs)` | CAP-PFM-DJE-014 |

  | services-crm integration | `configuration-data-jobs` | CAP-PFM-DJE-001, CAP-PFM-DJE-010 |

  | services-crm integration | `contact-data-jobs` | CAP-PFM-DJE-001, CAP-PFM-DJE-002,
  CAP-PFM-DJE-003, CAP-PFM-DJE-004, CAP-PFM-DJE-005 |

  | services-crm integration | `contact-delete` | CAP-PFM-DJE-007 |

  | services-crm integration | `contact-update-rollback` | CAP-PFM-DJE-007, CAP-PFM-DJE-008 |

  | services-crm integration | `contact-update-versions` | CAP-PFM-DJE-004, CAP-PFM-DJE-006 |

  | services-crm integration | `data-job-instants` | CAP-PFM-DJE-005 |

  | services-crm integration | `initial-import-guarantees` | CAP-PFM-DJE-003, CAP-PFM-DJE-012,
  CAP-PFM-DJE-017 |

  | services-crm integration | `list-contact-data-jobs` | CAP-PFM-DJE-005 |

  | services-crm integration | `organization-data-jobs` | CAP-PFM-DJE-001 |

  | services-crm integration | `organization-delete` | CAP-PFM-DJE-007 |

  | services-crm integration | `organization-update-conflicts` | CAP-PFM-DJE-006 |

  | services-crm integration | `organization-update-rollback` | CAP-PFM-DJE-008 |

  | services-crm integration | `organization-update-versions` | CAP-PFM-DJE-006 |

  | services-crm integration | `records-by-source-key` | CAP-PFM-DJE-015 |

  | services-crm integration | `activity-imports` | CAP-PFM-DJE-012 |

  | services-crm integration | `contact-upsert-affiliations` | CAP-PFM-DJE-012 |

  | services-crm integration | `record-imports` | CAP-PFM-DJE-012 |

  | services-crm integration | `spreadsheet-columns` | CAP-PFM-DJE-013 |

  | services-crm integration | `bulk-data-jobs.queries` | CAP-PFM-DJE-014 |

  | services-crm integration | `data-job-submissions` | CAP-PFM-DJE-001 |

  | services-crm integration | `data-job-uploads.queries` | CAP-PFM-DJE-014 |

  | services-crm integration | `data-jobs.queries` | CAP-PFM-DJE-005 |

  | services-crm integration | `tenant-workload-policies.queries` | CAP-PFM-DJE-014 |

  | services-crm integration | `data-job-worker` | CAP-PFM-DJE-003 |

  | services-platform e2e | `custom-field-data-jobs.e2e` | CAP-PFM-DJE-018 |

  | services-platform e2e | `custom-object-data-jobs.e2e` | CAP-PFM-DJE-018 |

  | services-platform e2e | `data-jobs.e2e (uploads)` | CAP-PFM-DJE-011 |

  | services-platform e2e | `data-runs.e2e` | CAP-PFM-DJE-016 |

  | services-platform e2e | `records-by-source-key.e2e` | CAP-PFM-DJE-015 |

  | services-platform e2e | `capacity-pins.e2e` | CAP-PFM-DJE-019 |

  | services-platform integration | `data-run-guarantees` | CAP-PFM-DJE-016 |

  | services-platform integration | `data-run-ports` | CAP-PFM-DJE-016 |

  | services-platform integration | `register-run` | CAP-PFM-DJE-016 |

  | services-platform integration | `run-driver` | CAP-PFM-DJE-016 |

  | services-platform integration | `upload-sessions` | CAP-PFM-DJE-011 |

  | services-platform integration | `custom-object-data-jobs` | CAP-PFM-DJE-018 |

  | services-platform integration | `records-by-source-key` | CAP-PFM-DJE-015 |

  | services-platform integration | `data-job-visibility` | CAP-PFM-DJE-005 |

  | services-platform integration | `custom-field-data-jobs` | CAP-PFM-DJE-018 |

  | services-platform integration | `uploads.queries` | CAP-PFM-DJE-011 |

  | services-platform integration | `data-jobs.queries` | CAP-PFM-DJE-005 |

  | services-platform integration | `uploads` | CAP-PFM-DJE-011 |

  | services-platform integration | `capacity-state-pins` | CAP-PFM-DJE-019 |

  | services-platform integration | `capacity-state-pins.queries` | CAP-PFM-DJE-019 |

  | services-platform integration | `capacity-pins` | CAP-PFM-DJE-019 |

  | services-platform integration | `maintain-partitions` | CAP-PFM-DJE-020 |

  | macroservice-libraries integration | `batch-skips` | CAP-PFM-DJE-003 |

  | macroservice-libraries integration | `bulk-data-jobs` | CAP-PFM-DJE-004, CAP-PFM-DJE-014 |

  | macroservice-libraries integration | `data-job-engine` | CAP-PFM-DJE-001, CAP-PFM-DJE-003 |

  | macroservice-libraries integration | `group-dependencies` | CAP-PFM-DJE-012 |

  | macroservice-libraries integration | `group-refusals` | CAP-PFM-DJE-003 |

  | macroservice-libraries integration | `hard-delete-and-rollback` | CAP-PFM-DJE-007,
  CAP-PFM-DJE-008 |

  | macroservice-libraries integration | `keyed-data-jobs` | CAP-PFM-DJE-006, CAP-PFM-DJE-012 |

  | macroservice-libraries integration | `keyed-patches` | CAP-PFM-DJE-006 |

  | macroservice-libraries integration | `prepared-data-jobs` | CAP-PFM-DJE-012 |

  | macroservice-libraries integration | `rollback-and-retry` | CAP-PFM-DJE-004, CAP-PFM-DJE-008 |

  | macroservice-libraries integration | `statement-size` | CAP-PFM-DJE-003 |

  | macroservice-libraries integration | `submission-purge` | CAP-PFM-DJE-005 |

  | macroservice-libraries integration | `tenant-isolation` | CAP-PFM-DJE-001, CAP-PFM-DJE-018 |

  | macroservice-libraries integration | `version-capture` | CAP-PFM-DJE-006 |

  | services-membership integration | `structure-data-operations` | CAP-PFM-DJE-018 |
testing_artifacts:
  capability_test_specifications:
    - id: ATS-PFM-DJE-001
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-001-submit-one-audited-job-that-changes-many-records.md
    - id: ATS-PFM-DJE-002
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-002-preview-what-a-job-will-do-and-approve-exactly-that.md
    - id: ATS-PFM-DJE-003
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-003-apply-every-good-record-and-set-aside-every-bad-one.md
    - id: ATS-PFM-DJE-004
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-004-pause-resume-cancel-or-retry-a-job-safely.md
    - id: ATS-PFM-DJE-005
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-005-follow-a-job-and-trace-every-change-it-made.md
    - id: ATS-PFM-DJE-006
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-006-never-overwrite-a-colleague-s-edit-made-during-a-bulk-change.md
    - id: ATS-PFM-DJE-007
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-007-delete-records-in-bulk-only-after-a-counted-typed-approval.md
    - id: ATS-PFM-DJE-008
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-008-put-a-bulk-change-back-without-losing-later-edits.md
    - id: ATS-PFM-DJE-009
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-009-update-or-delete-selected-records-from-a-list-in-one-dialog.md
    - id: ATS-PFM-DJE-010
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-010-retire-and-reactivate-configuration-items-in-bulk-from-their.md
    - id: ATS-PFM-DJE-011
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-011-bring-a-file-of-any-size-into-rhythm-intact.md
    - id: ATS-PFM-DJE-012
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-012-load-records-from-another-system-by-its-own-keys.md
    - id: ATS-PFM-DJE-013
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-013-map-a-spreadsheet-s-columns-onto-a-record-s-typed-details.md
    - id: ATS-PFM-DJE-014
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-014-run-large-files-without-starving-anyone-else.md
    - id: ATS-PFM-DJE-015
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-015-read-back-what-a-load-wrote-by-the-producer-s-keys.md
    - id: ATS-PFM-DJE-016
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-016-load-a-migration-package-into-a-new-workspace-in-dependency.md
    - id: ATS-PFM-DJE-017
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-017-empty-a-loading-workspace-to-load-it-again-and-open-it-only.md
    - id: ATS-PFM-DJE-018
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-018-offer-a-product-area-s-records-to-the-engine.md
    - id: ATS-PFM-DJE-019
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-019-hold-the-platform-s-protection-state-while-the-database-is.md
    - id: ATS-PFM-DJE-020
      path: >-
        specs/platform/data-job-engine/design/tests/ATS-PFM-DJE-020-keep-monthly-history-tables-partitioned-and-trimmed.md
  feature_acceptance_suites:
    - id: FAS-PFM-DJE-01
      path: specs/platform/data-job-engine/planning/acceptance/FAS-PFM-DJE-01-data-jobs.md
    - id: FAS-PFM-DJE-02
      path: specs/platform/data-job-engine/planning/acceptance/FAS-PFM-DJE-02-protected-bulk-changes.md
    - id: FAS-PFM-DJE-03
      path: specs/platform/data-job-engine/planning/acceptance/FAS-PFM-DJE-03-bulk-actions-from-lists.md
    - id: FAS-PFM-DJE-04
      path: specs/platform/data-job-engine/planning/acceptance/FAS-PFM-DJE-04-file-imports.md
    - id: FAS-PFM-DJE-05
      path: specs/platform/data-job-engine/planning/acceptance/FAS-PFM-DJE-05-workspace-loading.md
    - id: FAS-PFM-DJE-06
      path: specs/platform/data-job-engine/planning/acceptance/FAS-PFM-DJE-06-workload-protection.md
  executable_test_suites:
    - id: TST-PFM-DJE-001
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-001-macroservice-libraries-admission-budget-spec.md
    - id: TST-PFM-DJE-002
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-002-macroservice-libraries-admission-planner-spec.md
    - id: TST-PFM-DJE-003
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-003-macroservice-libraries-admit-batches-spec.md
    - id: TST-PFM-DJE-004
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-004-macroservice-libraries-apply-keyed-item-spec.md
    - id: TST-PFM-DJE-005
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-005-macroservice-libraries-batch-plan-spec.md
    - id: TST-PFM-DJE-006
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-006-macroservice-libraries-bulk-batch-budget-spec.md
    - id: TST-PFM-DJE-007
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-007-macroservice-libraries-bulk-data-job-workflow-spec.md
    - id: TST-PFM-DJE-008
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-008-macroservice-libraries-chunk-plan-spec.md
    - id: TST-PFM-DJE-009
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-009-macroservice-libraries-collection-columns-lanes-spec.md
    - id: TST-PFM-DJE-010
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-010-macroservice-libraries-collection-columns-spec.md
    - id: TST-PFM-DJE-011
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-011-macroservice-libraries-commit-split-spec.md
    - id: TST-PFM-DJE-012
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-012-macroservice-libraries-data-job-actions-spec.md
    - id: TST-PFM-DJE-013
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-013-macroservice-libraries-data-job-rollback-spec.md
    - id: TST-PFM-DJE-014
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-014-macroservice-libraries-data-job-states-spec.md
    - id: TST-PFM-DJE-015
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-015-macroservice-libraries-define-data-operation-spec.md
    - id: TST-PFM-DJE-016
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-016-macroservice-libraries-fail-bulk-data-job-spec.md
    - id: TST-PFM-DJE-017
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-017-macroservice-libraries-hard-delete-spec.md
    - id: TST-PFM-DJE-018
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-018-macroservice-libraries-keyed-item-decision-spec.md
    - id: TST-PFM-DJE-019
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-019-macroservice-libraries-rejection-guard-spec.md
    - id: TST-PFM-DJE-020
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-020-macroservice-libraries-run-data-job-batch-spec.md
    - id: TST-PFM-DJE-021
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-021-macroservice-libraries-sql-data-job-repository-spec.md
    - id: TST-PFM-DJE-022
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-022-macroservice-libraries-statement-size-spec.md
    - id: TST-PFM-DJE-023
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-023-macroservice-libraries-batch-skips-integration-spec.md
    - id: TST-PFM-DJE-024
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-024-macroservice-libraries-bulk-data-jobs-integration-spec.md
    - id: TST-PFM-DJE-025
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-025-macroservice-libraries-data-job-engine-integration-spec.md
    - id: TST-PFM-DJE-026
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-026-macroservice-libraries-group-dependencies-integration-spec.md
    - id: TST-PFM-DJE-027
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-027-macroservice-libraries-group-refusals-integration-spec.md
    - id: TST-PFM-DJE-028
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-028-macroservice-libraries-hard-delete-and-rollback-integration.md
    - id: TST-PFM-DJE-029
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-029-macroservice-libraries-keyed-data-jobs-integration-spec.md
    - id: TST-PFM-DJE-030
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-030-macroservice-libraries-keyed-patches-integration-spec.md
    - id: TST-PFM-DJE-031
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-031-macroservice-libraries-prepared-data-jobs-integration-spec.md
    - id: TST-PFM-DJE-032
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-032-macroservice-libraries-rollback-and-retry-integration-spec.md
    - id: TST-PFM-DJE-033
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-033-macroservice-libraries-statement-size-integration-spec.md
    - id: TST-PFM-DJE-034
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-034-macroservice-libraries-submission-purge-integration-spec.md
    - id: TST-PFM-DJE-035
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-035-macroservice-libraries-tenant-isolation-integration-spec.md
    - id: TST-PFM-DJE-036
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-036-macroservice-libraries-version-capture-integration-spec.md
    - id: TST-PFM-DJE-037
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-037-macroservice-libraries-validate-data-job-request-spec.md
    - id: TST-PFM-DJE-038
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-038-macroservice-libraries-version-capture-spec.md
    - id: TST-PFM-DJE-039
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-039-react-console-CRM-ACC-0640-spec.md
    - id: TST-PFM-DJE-040
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-040-react-console-CRM-ACC-0641-spec.md
    - id: TST-PFM-DJE-041
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-041-react-console-CRM-ACC-0642-spec.md
    - id: TST-PFM-DJE-042
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-042-react-console-CRM-ACC-0643-spec.md
    - id: TST-PFM-DJE-043
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-043-react-console-CRM-ACC-0644-spec.md
    - id: TST-PFM-DJE-044
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-044-react-console-CRM-ACC-0645-spec.md
    - id: TST-PFM-DJE-045
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-045-react-console-CRM-ACC-0646-spec.md
    - id: TST-PFM-DJE-046
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-046-react-console-CRM-ACC-0647-spec.md
    - id: TST-PFM-DJE-047
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-047-react-console-CRM-ACC-0648-spec.md
    - id: TST-PFM-DJE-048
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-048-react-console-CRM-ACC-0649-spec.md
    - id: TST-PFM-DJE-049
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-049-react-console-CRM-ACC-0650-spec.md
    - id: TST-PFM-DJE-050
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-050-react-console-CRM-ACC-0651-spec.md
    - id: TST-PFM-DJE-051
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-051-react-console-CRM-ACC-0652-spec.md
    - id: TST-PFM-DJE-052
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-052-react-console-CRM-ACC-0653-spec.md
    - id: TST-PFM-DJE-053
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-053-react-console-CRM-ACC-0654-spec.md
    - id: TST-PFM-DJE-054
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-054-react-console-CRM-ACC-0655-spec.md
    - id: TST-PFM-DJE-055
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-055-react-console-CRM-ACC-0656-spec.md
    - id: TST-PFM-DJE-056
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-056-react-console-CRM-ACC-0657-spec.md
    - id: TST-PFM-DJE-057
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-057-react-console-CRM-ACC-0658-spec.md
    - id: TST-PFM-DJE-058
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-058-react-console-CRM-ACC-0659-spec.md
    - id: TST-PFM-DJE-059
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-059-react-console-CRM-ACC-0660-spec.md
    - id: TST-PFM-DJE-060
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-060-react-console-CRM-ACC-0661-spec.md
    - id: TST-PFM-DJE-061
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-061-react-console-CRM-ACC-0662-spec.md
    - id: TST-PFM-DJE-062
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-062-react-console-CRM-ACC-0663-spec.md
    - id: TST-PFM-DJE-063
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-063-react-console-CRM-ACC-0664-spec.md
    - id: TST-PFM-DJE-064
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-064-react-console-CRM-ACC-0665-spec.md
    - id: TST-PFM-DJE-065
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-065-react-console-CRM-ACC-0666-spec.md
    - id: TST-PFM-DJE-066
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-066-react-console-CRM-ACC-0667-spec.md
    - id: TST-PFM-DJE-067
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-067-react-console-CRM-ACC-0668-spec.md
    - id: TST-PFM-DJE-068
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-068-react-console-CRM-ACC-0669-spec.md
    - id: TST-PFM-DJE-069
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-069-react-console-CRM-ACC-0670-spec.md
    - id: TST-PFM-DJE-070
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-070-react-console-CRM-ACC-0671-spec.md
    - id: TST-PFM-DJE-071
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-071-react-console-CRM-ACC-0672-spec.md
    - id: TST-PFM-DJE-072
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-072-react-console-CRM-ACC-0673-spec.md
    - id: TST-PFM-DJE-073
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-073-react-console-CRM-ACC-0674-spec.md
    - id: TST-PFM-DJE-074
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-074-react-console-CRM-ACC-0675-spec.md
    - id: TST-PFM-DJE-075
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-075-react-console-CRM-ACC-0676-spec.md
    - id: TST-PFM-DJE-076
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-076-react-console-CRM-ACC-0677-spec.md
    - id: TST-PFM-DJE-077
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-077-react-console-CRM-ACC-0678-spec.md
    - id: TST-PFM-DJE-078
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-078-react-console-CRM-ACC-0679-spec.md
    - id: TST-PFM-DJE-079
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-079-react-console-DJE-ACC-0050-spec.md
    - id: TST-PFM-DJE-080
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-080-react-console-DJE-ACC-0150-spec.md
    - id: TST-PFM-DJE-081
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-081-react-console-DJE-ACC-0151-spec.md
    - id: TST-PFM-DJE-082
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-082-react-console-DJE-ACC-0100-spec.md
    - id: TST-PFM-DJE-083
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-083-react-console-DJE-ACC-0101-spec.md
    - id: TST-PFM-DJE-084
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-084-react-console-DJE-ACC-0102-spec.md
    - id: TST-PFM-DJE-085
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-085-react-console-DJE-ACC-0103-spec.md
    - id: TST-PFM-DJE-086
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-086-react-console-DJE-ACC-0104-spec.md
    - id: TST-PFM-DJE-087
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-087-react-console-DJE-ACC-0105-spec.md
    - id: TST-PFM-DJE-088
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-088-react-console-DJE-ACC-0106-spec.md
    - id: TST-PFM-DJE-089
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-089-react-console-DJE-ACC-0107-spec.md
    - id: TST-PFM-DJE-090
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-090-react-console-DJE-ACC-0108-spec.md
    - id: TST-PFM-DJE-091
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-091-react-console-DJE-ACC-0109-spec.md
    - id: TST-PFM-DJE-092
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-092-react-console-DJE-ACC-0110-spec.md
    - id: TST-PFM-DJE-093
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-093-react-console-DJE-ACC-0111-spec.md
    - id: TST-PFM-DJE-094
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-094-react-console-DJE-ACC-0112-spec.md
    - id: TST-PFM-DJE-095
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-095-react-console-DJE-ACC-0113-spec.md
    - id: TST-PFM-DJE-096
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-096-react-console-DJE-ACC-0114-spec.md
    - id: TST-PFM-DJE-097
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-097-react-console-DJE-ACC-0115-spec.md
    - id: TST-PFM-DJE-098
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-098-react-console-DJE-ACC-0116-spec.md
    - id: TST-PFM-DJE-099
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-099-react-console-DJE-ACC-0117-spec.md
    - id: TST-PFM-DJE-100
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-100-react-console-DJE-ACC-0004-spec.md
    - id: TST-PFM-DJE-101
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-101-react-console-DJE-ACC-0006-spec.md
    - id: TST-PFM-DJE-102
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-102-react-console-plat-m19-spec.md
    - id: TST-PFM-DJE-103
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-103-react-console-data-jobs-bulk-layout-spec.md
    - id: TST-PFM-DJE-104
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-104-react-console-data-jobs-dialogs-layout-spec.md
    - id: TST-PFM-DJE-105
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-105-react-console-data-jobs-wizard-layout-spec.md
    - id: TST-PFM-DJE-106
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-106-react-console-data-jobs-layout-spec.md
    - id: TST-PFM-DJE-107
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-107-services-crm-bulk-data-jobs-e2e-spec.md
    - id: TST-PFM-DJE-108
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-108-services-crm-configuration-data-jobs-e2e-spec.md
    - id: TST-PFM-DJE-109
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-109-services-crm-data-jobs-e2e-spec.md
    - id: TST-PFM-DJE-110
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-110-services-crm-organization-update-e2e-spec.md
    - id: TST-PFM-DJE-111
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-111-services-crm-records-by-source-key-e2e-spec.md
    - id: TST-PFM-DJE-112
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-112-services-crm-bulk-admission-integration-spec.md
    - id: TST-PFM-DJE-113
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-113-services-crm-bulk-data-job-failure-integration-spec.md
    - id: TST-PFM-DJE-114
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-114-services-crm-bulk-data-job-lane-integration-spec.md
    - id: TST-PFM-DJE-115
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-115-services-crm-bulk-data-jobs-integration-spec.md
    - id: TST-PFM-DJE-116
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-116-services-crm-configuration-data-jobs-integration-spec.md
    - id: TST-PFM-DJE-117
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-117-services-crm-contact-data-jobs-integration-spec.md
    - id: TST-PFM-DJE-118
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-118-services-crm-contact-delete-integration-spec.md
    - id: TST-PFM-DJE-119
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-119-services-crm-contact-update-rollback-integration-spec.md
    - id: TST-PFM-DJE-120
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-120-services-crm-contact-update-versions-integration-spec.md
    - id: TST-PFM-DJE-121
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-121-services-crm-data-job-instants-integration-spec.md
    - id: TST-PFM-DJE-122
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-122-services-crm-initial-import-guarantees-integration-spec.md
    - id: TST-PFM-DJE-123
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-123-services-crm-list-contact-data-jobs-integration-spec.md
    - id: TST-PFM-DJE-124
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-124-services-crm-organization-data-jobs-integration-spec.md
    - id: TST-PFM-DJE-125
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-125-services-crm-organization-delete-integration-spec.md
    - id: TST-PFM-DJE-126
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-126-services-crm-organization-update-conflicts-integration-spec.md
    - id: TST-PFM-DJE-127
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-127-services-crm-organization-update-rollback-integration-spec.md
    - id: TST-PFM-DJE-128
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-128-services-crm-organization-update-versions-integration-spec.md
    - id: TST-PFM-DJE-129
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-129-services-crm-records-by-source-key-integration-spec.md
    - id: TST-PFM-DJE-130
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-130-services-crm-activity-imports-integration-spec.md
    - id: TST-PFM-DJE-131
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-131-services-crm-contact-upsert-affiliations-integration-spec.md
    - id: TST-PFM-DJE-132
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-132-services-crm-record-imports-integration-spec.md
    - id: TST-PFM-DJE-133
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-133-services-crm-spreadsheet-columns-integration-spec.md
    - id: TST-PFM-DJE-134
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-134-services-crm-bulk-data-jobs-queries-integration-spec.md
    - id: TST-PFM-DJE-135
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-135-services-crm-data-job-submissions-integration-spec.md
    - id: TST-PFM-DJE-136
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-136-services-crm-data-job-uploads-queries-integration-spec.md
    - id: TST-PFM-DJE-137
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-137-services-crm-data-jobs-queries-integration-spec.md
    - id: TST-PFM-DJE-138
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-138-services-crm-tenant-workload-policies-queries-integration-sp.md
    - id: TST-PFM-DJE-139
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-139-services-crm-data-job-worker-integration-spec.md
    - id: TST-PFM-DJE-140
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-140-services-crm-bulk-data-job-request-spec.md
    - id: TST-PFM-DJE-141
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-141-services-crm-jobs-admitted-of-spec.md
    - id: TST-PFM-DJE-142
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-142-services-crm-bulk-admission-spec.md
    - id: TST-PFM-DJE-143
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-143-services-crm-database-error-classification-spec.md
    - id: TST-PFM-DJE-144
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-144-services-crm-invalid-value-field-paths-spec.md
    - id: TST-PFM-DJE-145
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-145-services-crm-organization-update-spec.md
    - id: TST-PFM-DJE-146
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-146-services-crm-owner-delete-refusal-spec.md
    - id: TST-PFM-DJE-147
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-147-services-crm-record-file-errors-spec.md
    - id: TST-PFM-DJE-148
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-148-services-crm-data-job-upload-format-spec.md
    - id: TST-PFM-DJE-149
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-149-services-crm-sqs-redelivery-spec.md
    - id: TST-PFM-DJE-150
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-150-services-membership-structure-data-operations-integration-sp.md
    - id: TST-PFM-DJE-151
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-151-services-membership-structure-data-operations-spec.md
    - id: TST-PFM-DJE-152
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-152-services-platform-capacity-pins-e2e-spec.md
    - id: TST-PFM-DJE-153
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-153-services-platform-capacity-state-pins-integration-spec.md
    - id: TST-PFM-DJE-154
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-154-services-platform-capacity-state-pins-queries-integration-sp.md
    - id: TST-PFM-DJE-155
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-155-services-platform-capacity-pins-integration-spec.md
    - id: TST-PFM-DJE-156
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-156-services-platform-apply-emergency-throttles-spec.md
    - id: TST-PFM-DJE-157
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-157-services-platform-capacity-aws-clients-spec.md
    - id: TST-PFM-DJE-158
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-158-services-platform-capacity-signals-spec.md
    - id: TST-PFM-DJE-159
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-159-services-platform-decide-state-spec.md
    - id: TST-PFM-DJE-160
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-160-services-platform-publish-state-spec.md
    - id: TST-PFM-DJE-161
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-161-services-platform-run-sentinel-spec.md
    - id: TST-PFM-DJE-162
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-162-services-platform-custom-field-data-jobs-e2e-spec.md
    - id: TST-PFM-DJE-163
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-163-services-platform-custom-object-data-jobs-e2e-spec.md
    - id: TST-PFM-DJE-164
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-164-services-platform-data-jobs-e2e-spec.md
    - id: TST-PFM-DJE-165
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-165-services-platform-data-runs-e2e-spec.md
    - id: TST-PFM-DJE-166
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-166-services-platform-records-by-source-key-e2e-spec.md
    - id: TST-PFM-DJE-167
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-167-services-platform-data-run-guarantees-integration-spec.md
    - id: TST-PFM-DJE-168
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-168-services-platform-custom-field-data-jobs-integration-spec.md
    - id: TST-PFM-DJE-169
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-169-services-platform-custom-object-data-jobs-integration-spec.md
    - id: TST-PFM-DJE-170
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-170-services-platform-data-job-visibility-integration-spec.md
    - id: TST-PFM-DJE-171
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-171-services-platform-records-by-source-key-integration-spec.md
    - id: TST-PFM-DJE-172
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-172-services-platform-data-jobs-queries-integration-spec.md
    - id: TST-PFM-DJE-173
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-173-services-platform-uploads-integration-spec.md
    - id: TST-PFM-DJE-174
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-174-services-platform-uploads-queries-integration-spec.md
    - id: TST-PFM-DJE-175
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-175-services-platform-data-run-ports-integration-spec.md
    - id: TST-PFM-DJE-176
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-176-services-platform-register-run-integration-spec.md
    - id: TST-PFM-DJE-177
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-177-services-platform-run-driver-integration-spec.md
    - id: TST-PFM-DJE-178
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-178-services-platform-upload-sessions-integration-spec.md
    - id: TST-PFM-DJE-179
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-179-services-platform-custom-field-import-values-spec.md
    - id: TST-PFM-DJE-180
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-180-services-platform-custom-object-data-operations-spec.md
    - id: TST-PFM-DJE-181
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-181-services-platform-data-job-call-spec.md
    - id: TST-PFM-DJE-182
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-182-services-platform-data-job-port-spec.md
    - id: TST-PFM-DJE-183
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-183-services-platform-data-job-refusals-spec.md
    - id: TST-PFM-DJE-184
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-184-services-platform-data-jobs-api-handler-seams-spec.md
    - id: TST-PFM-DJE-185
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-185-services-platform-data-run-ports-spec.md
    - id: TST-PFM-DJE-186
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-186-services-platform-data-run-services-spec.md
    - id: TST-PFM-DJE-187
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-187-services-platform-data-run-transient-read-spec.md
    - id: TST-PFM-DJE-188
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-188-services-platform-object-text-spec.md
    - id: TST-PFM-DJE-189
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-189-services-platform-package-manifest-spec.md
    - id: TST-PFM-DJE-190
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-190-services-platform-part-sizing-spec.md
    - id: TST-PFM-DJE-191
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-191-services-platform-records-by-source-key-route-spec.md
    - id: TST-PFM-DJE-192
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-192-services-platform-run-summary-spec.md
    - id: TST-PFM-DJE-193
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-193-services-platform-upload-permission-spec.md
    - id: TST-PFM-DJE-194
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-194-services-platform-maintain-partitions-integration-spec.md
    - id: TST-PFM-DJE-195
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-195-services-platform-scheduled-maintenance-spec.md
    - id: TST-PFM-DJE-196
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-196-services-platform-partitions-maintenance-alarms-spec.md
    - id: TST-PFM-DJE-197
      path: >-
        specs/platform/data-job-engine/implementation/tests/TST-PFM-DJE-197-services-platform-partitions-maintenance-work-spec.md
---

# Data Job Engine

## Purpose

This module describes bulk record work: submitting and inspecting jobs, preparing file inputs, coordinating migration packages and pacing execution against shared capacity. Its capability and acceptance ids connect the recorded product requirements to observed implementations and identified proof gaps.

## Boundary

The ownership declarations above separate engine records and coordination from each application's domain records. Workspace lifecycle, authorization and durable Platform jobs are dependencies with their own specification homes. Partition maintenance remains assigned here pending the ownership decision recorded in the findings.

## Features

| Feature | Concepts | Capabilities | Journeys |
|---|---:|---:|---:|
| `FEAT-PFM-DJE-01` — Recorded bulk work | 1 | 5 | 0 |
| `FEAT-PFM-DJE-02` — Safeguards for bulk changes | 0 | 3 | 1 |
| `FEAT-PFM-DJE-03` — Bulk dialogs on record lists | 0 | 2 | 1 |
| `FEAT-PFM-DJE-04` — Imports from files and producer feeds | 2 | 5 | 2 |
| `FEAT-PFM-DJE-05` — Preparing a workspace with migrated data | 1 | 3 | 1 |
| `FEAT-PFM-DJE-06` — Shared database workload controls | 1 | 2 | 0 |

Five concepts remain active. The permanent Record Outcome concept id is retained as superseded, with its active description incorporated into Data Job. All planning files have final text; the report records the limits of the independent examination and the unresolved findings.

## Capabilities

| Id | Feature | Title | Product intent | Evidence |
|---|---|---|---|---|
| `CAP-PFM-DJE-001` | `FEAT-PFM-DJE-01` | Submit an accountable change across many records | confirmed | observed |
| `CAP-PFM-DJE-002` | `FEAT-PFM-DJE-01` | Review a change before approving its application | confirmed | observed |
| `CAP-PFM-DJE-003` | `FEAT-PFM-DJE-01` | Process valid records and report individual refusals | confirmed | observed |
| `CAP-PFM-DJE-004` | `FEAT-PFM-DJE-01` | Interrupt a job and recover its unfinished work | confirmed | observed |
| `CAP-PFM-DJE-005` | `FEAT-PFM-DJE-01` | Inspect job progress and account for its changes | confirmed | partially-observed |
| `CAP-PFM-DJE-006` | `FEAT-PFM-DJE-02` | Preserve intervening edits during bulk changes | confirmed | observed |
| `CAP-PFM-DJE-007` | `FEAT-PFM-DJE-02` | Approve a counted bulk deletion | confirmed | observed |
| `CAP-PFM-DJE-008` | `FEAT-PFM-DJE-02` | Restore a bulk update while preserving later changes | confirmed | observed |
| `CAP-PFM-DJE-009` | `FEAT-PFM-DJE-03` | Complete selected-record changes from a list dialog | confirmed | partially-observed |
| `CAP-PFM-DJE-010` | `FEAT-PFM-DJE-03` | Manage selected configuration items through recorded jobs | proposed | partially-observed |
| `CAP-PFM-DJE-011` | `FEAT-PFM-DJE-04` | Upload a bounded file for reliable job input | confirmed | observed |
| `CAP-PFM-DJE-012` | `FEAT-PFM-DJE-04` | Import records using their producer identities | confirmed | partially-observed |
| `CAP-PFM-DJE-013` | `FEAT-PFM-DJE-04` | Translate spreadsheet columns into record details | confirmed | observed |
| `CAP-PFM-DJE-014` | `FEAT-PFM-DJE-04` | Process file jobs within shared workload limits | confirmed | observed |
| `CAP-PFM-DJE-015` | `FEAT-PFM-DJE-04` | Reconcile loaded records using the producer’s keys | confirmed | observed |
| `CAP-PFM-DJE-016` | `FEAT-PFM-DJE-05` | Load and reconcile a migration package across its owning applications | proposed | observed |
| `CAP-PFM-DJE-017` | `FEAT-PFM-DJE-05` | Reset a loading workspace and review its release | confirmed | partially-observed |
| `CAP-PFM-DJE-018` | `FEAT-PFM-DJE-05` | Enable product records to use the shared job engine | confirmed | partially-observed |
| `CAP-PFM-DJE-019` | `FEAT-PFM-DJE-06` | Control capacity protection during database pressure | proposed | observed |
| `CAP-PFM-DJE-020` | `FEAT-PFM-DJE-06` | Maintain and retire monthly history partitions | proposed | observed |

## Journeys

| Id | Title | Product intent | E2E policy |
|---|---|---|---|
| `JNY-PFM-DJE-001` | Import contact input, inspect refusals and submit corrections | confirmed | required |
| `JNY-PFM-DJE-002` | Restore an accidental query-wide change after a colleague edits | confirmed | required |
| `JNY-PFM-DJE-003` | Remove a contact type after moving its remaining users | proposed | required |
| `JNY-PFM-DJE-004` | Prepare, reconcile and reopen a workspace after its initial migration | confirmed | optional |
| `JNY-PFM-DJE-005` | Reconcile a recurring producer delivery with staff changes | confirmed | none |

## Testing Hierarchy

Capability test specifications sit in design, feature acceptance suites sit in planning, and the implementation register describes existing executable files. The structured artifact tree names every test artifact. Registration and proposed coverage do not imply approval or a successful run.
