Job Configuration - Overview

This page provides an overview about import and export jobs in DJUST via SFTP or API Connector.


✅ 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:

  • FTP
  • API Connector
⚠️

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).
  • 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.

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

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.

⚠️

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

Entity

Job objectives

SFTP

API Connector

ACCOUNT

Create or update your Customer Accounts

ASSORTMENT

Create or update your Assortments

ATTRIBUTE

Create or update your Attributes

CATALOG_VIEW

Create or update your Catalog Views

CLASSIFICATION_CATEGORY

Create or update your Classifications

CUSTOMER_USER

Create or update your Customer Users

INCIDENT

Update your Incident status

NAVIGATION_CATEGORY

Create or update your Navigations

OFFER

Create or update your Offers (inventory and price)

ORDER

Create or update External Orders Update your Internal Orders

ORDER_UPDATE

Update your Internal Orders

ORDER_STATUS

Update your Order Status

✅ (XML only)

PRODUCT

Create or update your Products

PRODUCT_TAG

Create or update your Product Tags

RELATED_PRODUCT

Create or update your Related Products

STORE

Create or update your Stores

SUPPLIER

Create 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
AttributeMust be created before using in classifications or products.
SupplierRequired before Offers.
AccountRepresents a B2B customer entity.
StoreRepresents 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