Job Configuration - Export - FTP
This documentation describes how to configure an Export Job to SFTP from DJUST Back-Office to export Orders data in either XML or JSON format.
✅ Prerequisites
Before creating an export job, ensure you have:
- An active FTP connection. See How to configure an FTP client .
- A FTP destination folder ready to receive exported files.
⚙️ FTP Export Job Configuration
Creation
To configure an import job from the DJUST back office:
Step 1 – Access the Data Hub
- Go to the Data Hub section
- Click + Create a new job
- Select Export
Step 2 – Job configuration
- Fill in the information:
- Job name (must be unique)
- Export method: SFTP Client
- Client Connection
- Path of the output folder
- Export format (
XMLorJSON) - Object to export (eg. Order)
- File name format:
ShortorStandard(Long) - Trigger status(es)
File Name Format PreviewWhen selecting a file name format (
ShortorStandard), the interface displays a preview of the generated file name. This helps you verify the naming convention before saving the configuration. See the File name section below for details on each format.
Trigger StatusWhen an entity reaches one of the selected statuses for the first time, an export is triggered. If the status remains unchanged, no further export will occur — regardless of whether there are changes on the entity or not.
For more details about Order statuses, refer to this page: Order lifecycle and statuses.
- Click Create.
Manage and Update
Once the export job has been created, you can manage it from the Data Hub interface.
- Go to the Data Hub > Export section.
- In the list of jobs, locate the job you want to update.
- Click the ⚙️ icon to open the configuration.
Update
- You can update any of the following:
- FTP client
- Path of the output folder
- Export format (
XMLorJSON) - Trigger status(es)
- Click Save to apply changes.
Delete an Export Job
- Click "Delete job" to permanently remove the job (⚠️ This action is irreversible).
📄 Exported File Structure
File name
Two file name formats are supported when exporting orders:
Short format
{{ORDERID}}.{{FORMAT}}
- ORDERID: internal Order Logistic Id
- FORMAT: xml or json
Example: 172-189-1896838-1.xml
Long format
MONO-STORE
DJUST_{{ORDERID}}_{{SUPPLIERID}}_{{TIMESTAMP}}_orders.{{FORMAT}}
MULTI-STORES
DJUST_{{ORDERID}}_{{SUPPLIERID}}_{{STOREID}}_{{TIMESTAMP}}_orders.{{FORMAT}}
- ORDERID: internal Order Logistic Id
- SUPPLIERID: external Supplier Id
- STOREID : external Store Id
- TIMESTAMP: export timestamp
- FORMAT: xml or json
Example: DJUST_172-189-1896838-1_123_20240604T103000_orders.json
Exported data
- Each export file contains a single Order Logistic, including one or more associated Order Lines.
- The structure reflects the full snapshot of the order at the time of export, capturing details such as:
- Order metadata (reference, timestamps, status)
- Customer, shipping and billing address snapshots
- Supplier information
- Pricing details
- Order lines with product and variant metadata
- Custom fields if applicable
Example - XML File
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Order xmlns="http://djust.com/export/type">
<createdAt>2025-03-24T14:32:31.824Z</createdAt>
<updatedAt>2025-03-24T15:25:26.674Z</updatedAt>
<reference>174-282-6749427-1</reference>
<id>0000033819</id>
<orderCommercialReference>174-282-6749427</orderCommercialReference>
<incidentDeclared>false</incidentDeclared>
<supplierSnapshot>
<name>XYZ</name>
<totalOffers>0</totalOffers>
<totalOrders>0</totalOrders>
<totalSales>0</totalSales>
<externalId>1234</externalId>
<paymentDueDate>
<paymentDueDateDelay>0</paymentDueDateDelay>
<paymentDueDateMode>SIMPLE</paymentDueDateMode>
</paymentDueDate>
</supplierSnapshot>
<shippingAddressSnapshot>
<externalId>e94da29f-e980-4afd-ae5b-6e933df6797e</externalId>
<country>France</country>
<label>Siège</label>
<fullName>M.Y</fullName>
<address>10 Rue Henner</address>
<additionalAddress></additionalAddress>
<city>Paris</city>
<state>Ile de France</state>
<zipcode>75009</zipcode>
<phone>060000000</phone>
</shippingAddressSnapshot>
<billingAddressSnapshot>
<externalId>e94da29f-e980-4afd-ae5b-6e933df6797e</externalId>
<country>France</country>
<label>Siège</label>
<fullName>M.Y</fullName>
<address>10 Rue Henner</address>
<additionalAddress></additionalAddress>
<city>Paris</city>
<state>Ile de France</state>
<zipcode>75009</zipcode>
<phone>060000000</phone>
</billingAddressSnapshot>
<customerUserSnapshot>
<accountExternalId>1284</accountExternalId>
<accountName>Y</accountName>
<accountTvaNumber>FR116545461231</accountTvaNumber>
<civility>MR</civility>
<firstName>John</firstName>
<lastName>Y</lastName>
<email>[email protected]</email>
</customerUserSnapshot>
<status>ACCEPTED_BY_SUPPLIER</status>
<paymentStatus>PAID</paymentStatus>
<payments>
<payment>
<amount>140.94</amount>
<transactionId>payin_m_01JQ4C4CG458102RSA1T6JRY5F</transactionId>
</payment>
</payments>
<paymentOption>CREDIT_CARD</paymentOption>
<orderLogisticPrices>
<totalShippingFees>0.0</totalShippingFees>
<totalItemPrice>117.45</totalItemPrice>
<totalOrderPrice>140.94</totalOrderPrice>
<totalTaxAmount>23.49</totalTaxAmount>
<totalPriceWithoutTax>117.45</totalPriceWithoutTax>
<totalPriceWithTax>140.94</totalPriceWithTax>
<totalShippingTaxAmount>0.0</totalShippingTaxAmount>
<totalShippingFeesWithoutTax>0.0</totalShippingFeesWithoutTax>
<totalShippingFeesWithTax>0.0</totalShippingFeesWithTax>
<totalProductTaxAmount>23.49</totalProductTaxAmount>
<totalProductWithoutTax>117.45</totalProductWithoutTax>
<totalProductWithTax>140.94</totalProductWithTax>
<currency>EUR</currency>
</orderLogisticPrices>
<lines>
<line>
<id>0000033820</id>
<quantity>1</quantity>
<orderLogisticLinePriceDto>
<price>117.45</price>
<itemPriceWithoutTaxes>117.45</itemPriceWithoutTaxes>
<taxRate>20.0</taxRate>
<taxAmount>23.49</taxAmount>
<priceWithTaxes>140.94</priceWithTaxes>
<type>ACCOUNT</type>
<typeValue>TEST SAGE</typeValue>
<itemPerPack>1</itemPerPack>
<quantityPerItem>1.0</quantityPerItem>
<externalSource>EXTERN</externalSource>
<currency>EUR</currency>
<packingType>UNIT</packingType>
<externalOfferId>RC-EX3A</externalOfferId>
<shippingPriceWithoutTaxes>0.0</shippingPriceWithoutTaxes>
<shippingTaxAmount>0.0</shippingTaxAmount>
<shippingPriceWithTaxes>0.0</shippingPriceWithTaxes>
<totalItemPrice>117.45</totalItemPrice>
<totalItemPriceWithTaxes>140.94</totalItemPriceWithTaxes>
<totalPriceWithTaxes>140.94</totalPriceWithTaxes>
<totalItemTaxAmount>23.49</totalItemTaxAmount>
<totalPriceWithoutTaxes>117.45</totalPriceWithoutTaxes>
<totalTaxes>23.49</totalTaxes>
</orderLogisticLinePriceDto>
<orderLogisticLineProductDto>
<name>RC-EX</name>
<externalId>RC-EX</externalId>
<classificationCategory>TELECOMANDE</classificationCategory>
<brand>MI</brand>
</orderLogisticLineProductDto>
<orderLogisticLineProductVariantDto>
<externalId>RC-EX</externalId>
<name>RC-EX</name>
<externalReference>RC-EX</externalReference>
<mainImageUrl>https://dam.pre-prod.djust-app.com/0000000085/12307/OZNRC_EX_bo.webp</mainImageUrl>
</orderLogisticLineProductVariantDto>
<incidentDeclared>false</incidentDeclared>
<customFieldValues/>
</line>
</lines>
<shippingType>STD</shippingType>
<partiallyDeclinedBySupplier>false</partiallyDeclinedBySupplier>
<customFieldValues>
<customField>
<externalId>datelivraison</externalId>
<type>DATE</type>
<simpleValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">2025-03-31</simpleValue>
</customField>
<customField>
<externalId>CMD</externalId>
<type>TEXT</type>
<simpleValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">TEST</simpleValue>
</customField>
<customField>
<externalId>REF_CHANTIER</externalId>
<type>TEXT</type>
<simpleValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">842</simpleValue>
</customField>
<customField>
<externalId>typelivraison</externalId>
<type>LIST_TEXT</type>
<listValue>
<value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">Classic</value>
</listValue>
</customField>
</customFieldValues>
</Order>Example - JSON File
{
"createdAt":"2024-05-28T15:01:29.000+00:00",
"updatedAt":"2024-05-28T15:01:29.430+00:00",
"reference":"171-690-8488913-1",
"externalId":null,
"orderCommercialReference":"171-690-8488913",
"incidentDeclared":"false",
"supplierSnapshot":{
"name":"Supplier DJUST",
"description":null,
"totalOffers":61,
"totalOrders":1698,
"totalSales":0,
"returnPolicy":null,
"externalId":"2007",
"paymentDueDate":{
"paymentDueDateDelay":5,
"paymentDueDateMode":"END_OF_MONTH"
}
},
"shippingAddressSnapshot":{
"externalId":"e1c60d99-b5bc-4ae3-9009-61aceddd3b4d",
"country":"France",
"label":"",
"fullName":"Alex",
"address":"21 Rue La Boétie",
"additionalAddress":"",
"city":"Paris",
"state":"Ile-de-France",
"zipcode":"75008 ",
"phone":""
},
"billingAddressSnapshot":{
"externalId":"e1c60d99-b5bc-4ae3-9009-61aceddd3b4d",
"country":"France",
"label":"",
"fullName":"Alex",
"address":"21 Rue La Boétie",
"additionalAddress":"",
"city":"Paris",
"state":"Ile-de-France",
"zipcode":"75008 ",
"phone":""
},
"customerUserSnapshot":{
"accountExternalId":"39d6f200-4bdb-436b-b12f-f160fa8f9fba",
"accountName":"Alex",
"accountTvaNumber":"",
"civility":"MR",
"firstName":"Alex",
"lastName":"X",
"email":"[email protected]"
},
"status":"WAITING_CUSTOMER_APPROVAL",
"paymentStatus":"AUTHORIZED",
"paymentOption":"DIRECT_PAYMENT",
"orderLogisticPrices":{
"totalShippingFees":5.75,
"totalItemPrice":8.49,
"totalOrderPrice":9.94,
"totalTaxAmount":1.45,
"totalPriceWithoutTax":8.49,
"totalPriceWithTax":9.94,
"totalShippingTaxAmount":0.75,
"totalShippingFeesWithoutTax":5.0,
"totalShippingFeesWithTax":5.75,
"totalProductTaxAmount":0.7,
"totalProductWithoutTax":3.49,
"totalProductWithTax":4.19,
"currency":"EUR"
},
"initialPrice":null,
"lines":{
"line":[
{
"id":"0002617149",
"quantity":1,
"orderLogisticLinePriceDto":{
"price":3.49,
"itemPriceWithoutTaxes":3.49,
"taxRate":20.0,
"taxAmount":0.7,
"priceWithTaxes":4.19,
"type":"PUBLIC",
"typeValue":null,
"itemPerPack":1,
"quantityPerItem":1.0,
"externalSource":"MIRAKL",
"currency":"EUR",
"packingType":"UNIT",
"externalOfferId":"2034",
"taxInformation":null,
"shippingPriceWithoutTaxes":5.0,
"shippingTaxAmount":0.75,
"shippingPriceWithTaxes":5.75,
"totalItemPrice":3.49,
"totalItemPriceWithTaxes":4.19,
"totalPriceWithTaxes":9.94,
"totalItemTaxAmount":0.7,
"totalPriceWithoutTaxes":8.49,
"totalTaxes":1.45
},
"orderLogisticLineProductDto":{
"name":"L20 Smooth body medium-neck basin mixer, Cold Start, XL handle",
"externalId":"27ae19af-bed7-4520-b18b-8abe04973bfa",
"classificationCategory":"Basin",
"brand":"Roca"
},
"orderLogisticLineProductVariantDto":{
"externalId":"27ae19af-bed7-4520-b18b-8abe04973bfa",
"name":"L20 Smooth body medium-neck basin mixer, Cold Start, XL handle",
"externalReference":"27ae19af-bed7-4520-b18b-8abe04973bfa",
"gtin":null,
"mpn":null,
"mainImageUrl":"https://dam.test.djust-app.com/0000000002/10839/637216128ce4f918f246bf0bca13325_bo.webp"
},
"status":null,
"incidentDeclared":"false",
"paymentStatus":null,
"customFieldValues":{
"customField":[
]
}
}
]
},
"orderOrigin":"CART",
"shippingType":"STD",
"partiallyDeclinedBySupplier":"false",
"customFieldValues":{
"customField":[
]
}
}🔁 Retry Logic
If an export fails (e.g., due to a network error or SFTP access issue), DJUST will:
- Retry the export up to 5 times
- Use a fixed interval of 15 minutes between retries
If all retries fail, the job is marked as failed and must be manually reviewed by an operator.
🧠 Key Business Rules
- Only one destination per export job (no multi-FTP support).
- No filtering on exported data by account or store. However, export jobs can be configured with one or more suppliers, and the job listing API (
GET /v1/mapper/jobout) supports filtering bysupplierExternalIds(multi-value, OR logic). - The lead-time-to-ship field is included in exported orders (both XML and CSV formats).
Supplier Management on Export Jobs
Export jobs can be scoped to specific suppliers. In addition to the full replacement via PUT, two partial operations are available to manage suppliers without overwriting the entire job configuration:
Add suppliers — PATCH /v2/jobouts/{jobOutId}/suppliers — operationId: ADM-JOBOUT-200
- Merges the provided suppliers into the existing list. Duplicates are silently ignored.
- Body:
{ "supplierExternalIds": ["SUP-ACME-001", "SUP-BETA-002"] } - Response:
204 No Content - Access:
dj-client: OPERATOR
Remove suppliers — DELETE /v2/jobouts/{jobOutId}/suppliers — operationId: ADM-JOBOUT-300
- Removes the provided suppliers from the existing list. Absent suppliers are silently ignored.
- Body:
{ "supplierExternalIds": ["SUP-ACME-001"] } - Response:
204 No Content - Access:
dj-client: OPERATOR
Warning: If all suppliers are removed from an export job, the job exports orders for all suppliers (default behavior). ThesupplierExternalIdsfield must contain at least one element.
Important (v3.113): OnPOSTandPUTendpoints for export jobs, the fieldsuppliers(array of internal IDs) has been replaced bysupplierExternalIds(array of external IDs). The oldsuppliersfield is no longer accepted and returns a400error. OnGETendpoints, thesuppliersfield now returns an array of objects{ externalId, name }instead of an array of internal ID strings. The listing filtersupplierIdshas been renamed tosupplierExternalIds. The list of returned suppliers is filtered based on the stores accessible by the connected operator.
Deprecation:GET /v1/mapper/jobout/{jobOutId}is deprecated in favor ofGET /v2/mapper/jobout/{id}. Migrate to the v2 endpoint.
Updated 20 days ago
