---
id: TST-PFM-DJE-162
title: Custom field data jobs
kind: api-lifecycle
product_area: platform
module: data-job-engine
revision: 1
status: draft
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  macroservice-libraries: 54536a441935c6e09fdb7f96f0bec71c52ba4e03
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repository: services-platform
files:
  - modules/data-jobs/tests/e2e/custom-field-data-jobs.e2e.spec.js
implements: []
environment: local
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: 5
isolation: >-
  Suite-owned fixture records, job identifiers and workspace contexts; teardown removes the fixture
  data.
evidence:
  - 'services-platform:modules/data-jobs/tests/e2e/custom-field-data-jobs.e2e.spec.js'
assertion_inventory:
  - the custom field definition data-job API (end to end)
  - a caller who may load a tenant’s definitions
  - accepts the job and answers where to read it
  - 'writes both definitions, because an apply applies them in the submitting request'
  - answers the job with its state and its counters
  - 'answers what became of each definition, under the record id a definition has'
  - answers no rejections for a job that had none
  - lists the job
  - 'answers the same job for a submission repeated under one idempotency key, writing no second one'
  - refuses a job id the tenant holds none of with a 404
  - 'refuses a body that names neither records nor a dataset, naming the field'
  - refuses an object type Platform performs no data operation for
  - a caller who may change definitions one at a time but not in bulk
  - 'is refused every one of the ten routes, before a handler runs'
  - 'writes no definition and no job of its own, measured as the owner after the refusals'
  - 'leaves the validated job exactly where it was, so no refusal half-happened'
  - admits the administrator to the same routes (the positive control)
  - a caller holding the bulk key and no right over a definition
  - >-
    is refused a submission, because the route admits either record key and this caller holds
    neither
  - writes no job and no definition for the refused submission
  - an administrator of another customer
  - 'is answered as if the tenant’s jobs did not exist, on every route'
  - 'is answered the same way for a job that exists and for one nobody holds, so neither says which'
  - leaves the job and the definitions as its own tenant’s administrator left them
  - an anonymous caller
  - 'is refused every route, because none of them is public'
  - writes nothing
registration_note: Registration describes existing source; the suite is not executed by this documentation job.
---

# Custom field data jobs

## Verification Boundary

The suite checks requests through the local production dispatcher and signed caller evaluation. The structured assertion inventory records the checks present at the pinned revision.

## What This Suite Proves

The existing checks exercise custom field data jobs. The specification bindings identify the narrower outcomes supported by those assertions.

## What It Does Not Prove

Local execution does not establish deployed queue, storage or service behavior. Independent test cases do not establish a complete cross-feature process.

## Real Dependencies and Test Doubles

The owning service exercises production persistence and domain behavior against real Postgres. The fixture supplies caller contexts; queue delivery, storage and external calls are doubled where the file installs a test port.

## Must Not Be Doubled

The database effects, security context and production operation under examination remain real. Their outcomes cannot be replaced with canned success responses.
