# Start Import Job To start importing a file into a storage, use the following request. Fields (cells) in a file, that contain a special character (comma, semicolon, CR, LF, or double quote), must be "escaped" by enclosing them in double quotes. Header names can not contain any dot. In order to successfully perform file upload use file upload for up to 10MB or Upload via Upload Request approach for larger than 10MB. and are not allowed to be present together. Use one of the below instructions for your case: 1) File size 10MB : Request Upload Including this sample CSV file in the default configuration. Supported columns (matched by ignoring letter case) with their mappings are the following: | Column Name | Target Path in the latest Business Partner Model | Wiki Page of Attribute in CDQ Data Model | | ------- | -------- | -------- | | CUSTOMER NUMBER | $.externalId | Business Partner External ID | | VENDOR NUMBER | $.externalId when is not available | Business Partner External ID | | NAME | $.names\0\].value, $.names\[0\].type.technicalKey = [LOCAL | Business Partner Name Value | | TAX NUMBER 1 | $.identifiers\identifierId\].value in identifierId of if exists, otherwise, new identifier of [STCD1 type mapping, applied for | Identifier Value | | TAX NUMBER 1 TYPE | $.identifiers\identifierId\].type | [Identifier Type | | TAX NUMBER 2 | $.identifiers\identifierId\].value in identifierId of if exists, otherwise, new identifier of [STCD2 type mapping, applied for | Identifier Value | | TAX NUMBER 2 TYPE | $.identifiers\identifierId\].type | [Identifier Type | | TAX NUMBER 3 | $.identifiers\identifierId\].value in identifierId of if exists, otherwise, new identifier of [STCD3 type mapping, applied for | Identifier Value | | TAX NUMBER 3 TYPE | $.identifiers\identifierId\].type | [Identifier Type | | TAX NUMBER 4 | $.identifiers\identifierId\].value in identifierId of if exists, otherwise, new identifier of [STCD4 type mapping, applied for | Identifier Value | | TAX NUMBER 4 TYPE | $.identifiers\identifierId\].type | [Identifier Type | | TAX NUMBER 5 | $.identifiers\identifierId\].value in identifierId of if exists, otherwise, new identifier of [STCD5 type mapping, applied for | Identifier Value | | TAX NUMBER 5 TYPE | $.identifiers\identifierId\].type | [Identifier Type | | VAT NUMBER | $.identifiers\identifierId\].value in identifierId of if exists, otherwise, new identifier of [STCEG type mapping, applied for | Identifier Value | | VAT NUMBER TYPE | $.identifiers\identifierId\].type | [Identifier Type | | COUNTRY | address.country.(value, shortName) in $.addresses\0\] (+ in $.addresses\[1\] when exists for non-France) | [Country | | REGION | address.administrativeAreas\0\].value in $.addresses\[0\] (+ in $.addresses\[1\] when exists for non-France) | [Administrative Area Value | | POSTAL CODE | address.postCodes\0\].value in $.addresses\[0\] (+ in $.addresses\[1\] when exists for non-France) | [Post Code Value | | CITY | address.localities\0\].value in $.addresses\[0\] (+ in $.addresses\[1\] when exists for non-France) | [Locality Value | | STREET | address.thoroughfares\0\].value | [Thoroughfare Value | | HOUSE NUMBER | address.thoroughfares\0\].number | [Thoroughfare Number | | PO BOX | address.postalDeliveryPoints\0\].value, address.postalDeliveryPoints\[0\].type.technicalKey = [POST_OFFICE_BOX in $.addresses\0\] in [France, in $.addresses\[1\] for non-France | https://meta.cdq.com/Business_partner/external_id | Alternatively, CUSTOM_DATA_MAPPER feature can be used to enable record transformation based on the Data Mapper Definition provided either via a field or assigned to provided data source. Input file could contain customized columns naming effectively mapped to the Business Partner model via data mapper, shown in this sample CSV. Input file for CUSTOM_DATA_MAPPER feature can also contain only one column with a stringified JSON representation of a record. Based on the Data Mapper Definition, data is transformed to the Business Partner model. In case UPSERT_BY_EXTERNAL_ID feature is used, external ID value needs to be included: * in a column which name is provided via a request property * in the JSON representation in the attribute mapped to externalId via data mapper Below is the sample CSV file for -based configuration containing external ID column named MyId. The maximum number of columns is 512 The response is shown below. Use the returned to poll the import job status. These imports, in default import samples, lead to the following Business Partners in the storage. The imported rows are represented as stringified JSONs. Input file which first 100 data lines except header are corrupted is canceled without further processing. Importing data to Data Mirror requires using "UPSERT_BY_EXTERNAL_ID" feature. Otherwise, Bad Request is reported. Endpoint: POST /jobs/importjobs Version: 5 Security: apiKey ## Request fields (multipart/form-data): - `file` (string) XLSX or CSV file to be uploaded (SOAP currently only supports CSV). Supports up to 10MB of file size. For the file size greater than 10MB use Upload via Upload Request approach. Example: "CH-import.csv" - `url` (string) Url to file which will be used to import data from. Recommended. The file can be uploaded via [File Upload](https://developer.cdq.com/documentation/instructions/uploading-cvs-xls-data/) passing through from the result object. Example: "customer-uploads/CH-import.csv" - `storageId` (string, required) Target storage ID for this import. Example: "72d6900fce6b326088f5d9d91049e3e6" - `dataSource` (string) Unique identifier for a Data Source of the Storage. Example: "648824a691d8d2503d65103e" - `externalIdColumn` (string) The name of the column which will be mapped to external ID. This is required if feature UPSERT_BY_EXTERNAL_ID is activated. Example: "BP_EXTERNAL_ID" - `dataMapperDefinitionId` (string) The ID of data mapper to be used to transform the data before importing it. This or a data source is required if feature CUSTOM_DATA_MAPPER is activated. Disabled when CUSTOM_DATA_MAPPER feature is not provided in a request. Example: "6400955811c68a034bcef311" - `featuresOn` (array) List of features to be activated. Enum: "ACCEPT_EMPTY_VALUES", "UPSERT_BY_EXTERNAL_ID", "CUSTOM_DATA_MAPPER", "FULL_UPDATE", "LAB_USE_QUEUES", "LAB_USE_BACKPRESSURE" ## Response 200 fields (application/json): - `id` (string) Unique identifier of a job. Example: "35f23c03-1c22-45fe-9484-3ffe769325de" - `name` (string) Name of a Job. Example: "Process vendor data." - `description` (string) Detailed description of a Job. Example: "I started this job to improve quality of our data." - `createdBy` (string) Creator of a resource. Example: "76248934691294444" - `createdAt` (string) Date of creation (ISO 8601-compliant). Example: "2025-09-09T13:03:09Z" - `modifiedAt` (string) Date of modification (ISO 8601-compliant). Example: "2025-09-09T13:03:09Z" - `progress` (integer) Progress (%) of the job. Example: "77" - `status` (string) Job execution status. Enum: "ARCHIVED", "UNKNOWN", "CREATED", "PERSISTED", "SCHEDULED", "WAITING", "COULDNT_START", "RUNNING", "FINISHED", "DIED", "CANCELED", "FAILED" - `statusMessage` (string) Additional information to explain the status. Example: "The job failed because storage is empty." - `storageId` (string) Unique identifier of the Storage. Example: "72d6900fce6b326088f5d9d91049e3e6" - `dataSource` (string) Unique identifier for a Data Source of the Storage. Example: "648824a691d8d2503d65103e" - `dataMapperDefinitionId` (string) ID of related Data Mapper Definition that is used for mapping data of this Business Partner Storage. Example: "6440dba32b30176c5917b1b7" - `dataTransformationDefinitionId` (string) Unique identifier for a data transformation definition. Example: "SAP.ODM" - `externalIdColumn` (string) The name of the column which will be mapped to external ID. This is required if feature UPSERT_BY_EXTERNAL_ID is activated. Example: "BP_EXTERNAL_ID" - `featureOn` (array) List of features which are activated for the Import Job. Example: ["UPSERT_BY_EXTERNAL_ID"] - `result` (object) The result of the Import Job. - `result.statistics` (object) The statistics of the Import Job. - `result.statistics.numberOfInserts` (integer) Number of inserted Business Partners. Example: "10" - `result.statistics.numberOfUpdates` (integer) Number of updated Business Partners. Example: "10" - `result.statistics.numberOfFailed` (integer) Number of failed Business Partners. Example: "10" - `result.statistics.skipped` (array) List of skipped lines. - `result.statistics.skipped.line` (integer) The line number of the corrupted line. Example: "10" - `result.statistics.skipped.column` (integer) The column number of the corrupted line. Example: "10" - `result.statistics.skippedStartAfter` (string) The line number of the first skipped line. Example: "10" - `result.statistics.skippedNextStartAfter` (string) The line number of the next skipped line. Example: "20" - `domain` (string) Domain of a Business Partner Storage. Example: "BusinessPartner" ## Response 400 fields (application/json): - `status` (object) Details about status or error of a service - `status.code` (integer) RFC 7231 status code for this error. Example: "400" - `status.technicalKey` (string) Technical key describing the status or error Example: "OK" - `status.details` (array) - `status.details.id` (integer, required) 9-digit code which is uniquely identifying a message Example: 200000004 - `status.details.message` (string, required) Human-readable message which may also be presented in user interface. Example: "Business Partner Name is mandatory." - `status.details.technicalKey` (string) Technical key to uniquely identify a message. Example: "JOB_FINISHED" - `status.details.jsonPath` (string) JSONPath as specified by the IETF standard Example: "$.businessPartner.names[0].value" - `status.details.jsonRecord` (string) Object provided in plain JSON format. Example: "{ \"key\" : \"value\"}" - `status.path` (string) Requested path which caused this error. Example: "/v2/businesspartners/lookup" - `status.timestamp` (string) ISO 8601 representation of the timestamp. Example: "2025-09-09T13:03:09Z"