Job Configuration - Overview

This page provides an overview about import and export jobs in DJUST via SFTP, API Connector or an uploaded file (File import).


✅ Introduction

Data Synchronization

DJUST supports two types of data synchronization jobs:

  • Import Jobs – Bring external data into DJUST.
  • Export Jobs – Send data from DJUST to external systems.

Jobs can be configured to work with either:

⚠️

REST APIs

The API connector works only with REST architecture APIs and does not work with SOAP or GraphQL APIs.

💡

Hybrid method available for API Connector

You can configure an API Connector to retrieve a .csv file by making a GET request to a URL returned by a previous API call.

Execution Modes

Jobs can be triggered in several ways:

  • Manually: Triggered by an admin user from the DJUST back office (Data Hub section). For a File import job, the operator drops a CSV file and starts the import directly from the job page — see Job Configuration - Import - File.
  • Scheduled: Automatically run at regular intervals using cron-based scheduling (e.g., every 30 min, daily). All scheduled times are expressed in UTC.
  • Event-driven (for exports): Triggered when an event occurs — typically a status change on an object like an Order.

Simultaneous execution of a job

Simultaneous execution of a job (running multiple import processes at the same time for a given job) is not allowed. This prevents data conflicts that can occur when executions modify the same records or rely on each other.

When a new execution is triggered while another is still running, the system behavior depends on the job configuration:

  • RUN_IMMEDIATELY: the new execution is queued with the status JOB_PENDING and will start as soon as the previous one completes.
  • WAIT_FOR_NEXT: the new execution is skipped with the status JOB_SKIPPED, and only the next scheduled execution will be considered.

This setting can be configured individually for each import job.

Duplicating a Job

You can create a copy of an existing job to quickly set up a similar import or export with the same configuration. This is useful when you need multiple jobs with similar mappings but different source files or schedules.

What is copied:

  • All mapping configuration and settings from the source job.

What is not copied:

  • The scheduler (cron) configuration — the new job's scheduler is reset and disabled.
  • The new job is created in an inactive state.

Naming:

  • The duplicated job is named {Source job name} - COPY. If that name already exists, a numeric suffix is added (e.g., - COPY (1), - COPY (2)).

API endpoint:

  • POST /v1/mapper/jobs/{jobId}/duplicate — operationId: ADM-JOB-100
  • Access: dj-client: OPERATOR
  • Response: 200 OK with the new job's id.
{
  "id": "a9b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Stopping a Job Execution

If a job execution becomes stuck or needs to be interrupted, operators can manually stop it directly from the Back-Office.

A "Stop execution" button is available on the job detail page for each execution currently in progress. The button is visible only when the execution is in one of the following stoppable statuses:

  • JOB_INITIALIZING
  • JOB_STARTED
  • INTEGRATION_WAITING
  • INTEGRATION_STARTED
  • JOB_PENDING
⚠️

Warning: Stopping an execution is irreversible. A confirmation dialog is displayed before the action is performed.

Once the execution is stopped, the execution list refreshes automatically. Completed or failed executions do not display the stop button.

Requirements:

  • Permission: MAPPER_WRITE

API endpoints:

Execution ID

Each job execution (import and export) is assigned a unique execution ID. This identifier is displayed in the Back-Office:

  • In the execution history list, via a dedicated column.
  • In the execution detail view, below the execution date.

A Copy button allows you to copy the ID in one click to share it with DJUST support when reporting an incident.

✅

Tip: When reporting an issue on a specific job execution, always include the execution ID. This eliminates ambiguity when multiple executions occur on the same day or at similar times.

The execution ID corresponds to the jobStatusId field (for imports) or exportIntegrationId field (for exports) returned by the API. If a job has never been executed, no ID is displayed.

Failure Notification

When an import execution fails, a notification email is sent to the configured recipient. This notification relies on the new_job_execution_failed Back Office email template.

That template now ships with a default version, so the notification is sent even on a tenant that has never configured its own content — no preliminary setup is required for a failed execution to be reported.

The email recapitulates the name and the type of the import concerned, its start and end dates and times, the recipient, a direct link to the execution, and the identifier of the failed execution.

✅

Tip: The execution identifier carried by the email is the same one described in Execution ID. Include it when reporting the failure to DJUST support — it removes any ambiguity between several executions of the same job.

A tenant that has already customised this template keeps its own content: the custom template still takes precedence over the default one. See Email templater for how to edit it and for the available variables.

Execution History — Search and Filter

The execution history for both import/indexation and export jobs can be retrieved via API with search and filter capabilities:

  • Search by ID: use the search query parameter to perform a partial match (contains) on the execution ID.
  • Filter by status: use the statuses query parameter (multi-value) to filter executions by status. Unknown status values are silently ignored.
  • Pagination: standard DJUST paginated response (content, numberOfElements, number, size, first, last, empty).
  • Sorting: configurable via the sort query parameter.

Import / Indexation jobs:

  • Endpoint: GET /v2/jobs/{jobId}/executions — operationId: ADM-JOB-550
  • Access: dj-client: OPERATOR
  • Parameters: search (partial match on execution ID), statuses (multi-value, matching job lifecycle statuses), sort (default: createdAt,desc), page, size
  • Response: 200 OK

Identifying the processed source file

Each execution returned for an import job carries a metadata array of key/value entries. For an execution of a File import job, this array holds the snapshot of the source file:

metadata keyDescription
fileNameName of the source file processed by this execution. Kept after the file itself has been purged, so the execution history stays readable over time.
fileIdIdentifier of the source file, present only while the file is still available. The entry disappears from the array once the file has been deleted or purged.

An execution of an FTP/SFTP or API job returns an empty metadata array.

{
  "content": [
    {
      "id": "3f1c8e02-5a47-4c11-9d3b-70e2a9c1b845",
      "status": "INTEGRATION_COMPLETED",
      "createdAt": "2026-08-20T09:15:00.000Z",
      "startedAt": "2026-08-20T09:15:02.000Z",
      "endedAt": "2026-08-20T09:16:41.000Z",
      "metadata": [
        { "key": "fileName", "value": "offers-2026-08.csv" },
        { "key": "fileId", "value": "f47ac10b-58cc-4372-a567-0e02b2c3d479" }
      ]
    }
  ],
  "numberOfElements": 1,
  "number": 0,
  "size": 20,
  "first": true,
  "last": true,
  "empty": false
}
⚠️

Warning: The fileName and fileId fields previously exposed at the root of each execution have been removed from the ADM-JOB-550 response. The metadata array is now the only source for the file snapshot. Any consumer reading content[].fileName or content[].fileId must switch to the content[].metadata[] entries with the same keys.

✅

Tip: In the Back-Office, the execution history of a File import job displays a File column fed by the fileName entry, without any additional lookup. The column is not displayed on API or FTP/SFTP jobs.

Export jobs:

  • Endpoint: GET /v2/jobouts/{jobOutId}/executions — operationId: ADM-JOBOUT-550
  • Access: dj-client: OPERATOR
  • Parameters: search (partial match on execution ID), statuses (values: SUCCESS, ERROR), sort (default: executedAt,desc), page, size
  • Response: 200 OK

If no search or filter parameter is provided, all executions are returned.

Identifying the exported object

Each entry returned by ADM-JOBOUT-550 describes one export attempt on one object. Two fields let you identify that object:

FieldTypeDescription
jobOutTypeORDER | INCIDENTType of the exported object. It tells you which resource itemId and reference point to.
referencestringBusiness reference of the exported object (for example, the order reference).
itemIdstring (nullable)Internal DJUST identifier of the exported object. Use it to call the corresponding API or to build a link to the object's detail page.

Use itemId — not reference — whenever you need to fetch the exported object programmatically: it is the identifier expected by the DJUST resource APIs, so no prior lookup by reference is needed.

{
  "content": [
    {
      "id": "e7c1f2a4b93d4e51",
      "itemId": "a1b2c3d4e5f6",
      "reference": "168-123-1861251-1",
      "jobOutType": "ORDER",
      "status": "SUCCESS",
      "executedAt": "2026-08-06T09:12:45.000Z"
    },
    {
      "id": "9f3b7d18c2ae4b60",
      "itemId": null,
      "reference": "168-123-1743902-1",
      "jobOutType": "ORDER",
      "status": "ERROR",
      "executedAt": "2025-11-14T17:03:12.000Z"
    }
  ],
  "numberOfElements": 2,
  "number": 0,
  "size": 20,
  "first": true,
  "last": true,
  "empty": false
}
⚠️

Warning: itemId is null for executions that ran before the field was introduced. Historical executions cannot be linked back to their object, so always handle the null case instead of assuming an identifier is present.

✅

Tip: In the Back-Office, the reference displayed on each export execution is a direct link to the exported object's detail page. Executions with itemId: null are displayed as plain text, without a link.

Adding itemId is a backward-compatible change: no existing field of the response has been modified or removed.

⚠️

Deprecation: The following legacy endpoints remain functional but are deprecated. Migrate to the v2 endpoints listed above.

  • GET /v1/mapper/status/all/{jobId} → replaced by GET /v2/jobs/{jobId}/executions
  • GET /v1/mapper/jobout/{jobOutId}/exported-item-statuses → replaced by GET /v2/jobouts/{jobOutId}/executions

Import Full Mode

By default, when an import file (CSV or API Connector) sends a null or empty value for an attribute or custom field, the existing value in DJUST is preserved — the field is not modified.

When the Import Full mode is enabled on a job, the behavior changes:

  • Attributes whose value is null in the import file are deleted from the target entity.
  • Custom fields whose value is null are also deleted from the target entity.

This mode is useful when you need to keep your DJUST data in perfect sync with an external source system (e.g., ERP or PIM), including the removal of values that no longer exist in the source.

Configuration

The import mode is configured as a boolean parameter on import job configuration:

  • Default value: false (standard mode — null values are ignored, existing data is preserved)
  • Configurable at: job creation and job update
  • Visible in: job read (GET /job/{id})
  • Applies to: CSV/SFTP, API Connector, and Mirakl import jobs

Scope of the import mode

The import mode applies differently depending on the type of data:

  • For attributes: the import mode is configured at the Product job level. When enabled, attributes with null values in the import file are deleted from the product.
  • For custom fields: the import mode is configured per entity. Each of the following entity types has its own toggle: Offer, Supplier, Account, Navigation Category, Classification Category, Customer User, and Order. This allows you to enable full synchronization for some entities while keeping standard mode for others.
⚠️

Warning: Enabling Import Full mode means that any attribute or custom field not present (or set to null) in the import file will be removed from the entity in DJUST. A confirmation warning is displayed in the Back-Office before saving a job with this mode enabled. Make sure your import files contain the complete set of values you want to retain.

✅

Tip: All existing jobs retain the default behavior (standard mode). No action is required unless you explicitly want to enable full synchronization.


🧩 Entity-Based Configuration

Jobs are entity-specific, meaning each job is designed to handle a single type of data within DJUST.

The availability of each entity depends on the chosen method (SFTP or API Connector) as not all entities are supported across both.

Importable Entities per Method

EntityJob objectivesSFTPAPI Connector
ACCOUNTCreate or update your Customer Accounts✅✅
ASSORTMENTCreate or update your Assortments✅✅
ATTRIBUTECreate or update your Attributes✅❌
CATALOG_VIEWCreate or update your Catalog Views❌✅
CLASSIFICATION_CATEGORYCreate or update your Classifications✅❌
CUSTOMER_USERCreate or update your Customer Users✅❌
INCIDENTUpdate your Incident status❌✅
NAVIGATION_CATEGORYCreate or update your Navigations✅❌
OFFERCreate or update your Offers (inventory and price)✅✅
ORDERCreate or update External Orders
Update your Internal Orders
✅✅
ORDER_UPDATEUpdate your Internal Orders❌✅
ORDER_STATUSUpdate your Order Status✅
(XML only)
✅
PRODUCTCreate or update your Products✅✅
PRODUCT_TAGCreate or update your Product Tags✅❌
RELATED_PRODUCTCreate or update your Related Products✅❌
STORECreate or update your Stores✅❌
SUPPLIERCreate or update your Suppliers✅✅

Exportable Entities per Method

EntityJob objectivesSFTPAPI Connector
ORDERExport your Orders information✅✅
INCIDENTExport your Incidents information❌✅

Automatic Export Settings

The general settings exportOrderEnabled and exportIncidentEnabled (returned by GET /v1/settings/general) are automatically managed by the platform based on export job lifecycle:

  • When an export job is created (ORDER or INCIDENT), the corresponding setting is automatically activated.
  • When the last export job of a given type is deleted, the corresponding setting is automatically deactivated.

These two fields are read-only via the API: they are returned by GET /v1/settings/general but silently ignored when sent in a PUT /v1/settings/general or PATCH /v1/settings/general request. No action is required from integrators — existing API calls continue to work as before.

⚠️

Warning: PUT /v1/settings/general is deprecated. Use PATCH /v1/settings/general for partial updates — only the fields you provide are modified, avoiding accidental overwrites of other settings.

✅

Tip: You do not need to manually manage these settings. Simply create or delete export jobs, and the platform keeps the settings in sync automatically.


🏪 Multi-Store Behavior

  • By default, import jobs are cross-store.
  • The NAVIGATION import via FTP must always be scoped to a store within the Navigation Job Configuration.
  • ORDER import jobs can optionally be scoped to a specific store using the storeExternalIds parameter (via POST /v2/mapper/jobs or PUT /v1/mapper/jobs/{jobId}). When configured, all imported orders are assigned to the default store view of the specified store. Without this parameter, orders are assigned to the default store view of the tenant's default store. If the referenced store is invalid or does not exist, the job creation or update returns an HTTP 400 error.

Entity Dependencies

Some entities depend on others being imported first. While the overall import sequence can be adjusted, respecting these dependencies ensures data consistency and prevents import errors.

Here is a recommended import order based on data prerequisites:

EntityPrerequisitesNotes
Attribute—Must be created before using in classifications or products.
Supplier—Required before Offers.
Account—Represents a B2B customer entity.
Store—Represents a store in the merchant website
ClassificationAttributeNeeded before importing Navigation or Products.
NavigationClassificationRelies on existing classification structure.
ProductClassificationMust be imported before Offers, Tags, and Assortments.
OfferProduct, SupplierLinks a product to a supplier with commercial terms.
Product TagProductCannot be imported before products exist.
Related ProductProductCannot be imported before products exist.
AssortmentProductAssortments group products and require products to be available.
Customer UserAccountA user is always linked to an existing account.


Data Trimming

During import (both CSV/SFTP and API Connector), leading and trailing whitespace characters are automatically trimmed from all field values. Internal spaces within a value are preserved.

Input valueAfter trimming
" my value ""my value"
" leading space""leading space"
"trailing space ""trailing space"
"value with spaces""value with spaces"

This applies to both import and export mapping fields.


📌

Best Practices

✔️ Only run jobs for data that has actually changed. Avoid full re-imports unless necessary, especially for large catalogs.

✔️ Importing entities in the correct order helps avoid failures due to missing references


Did this page help you?