This article describes how to import files and records to Azure Data Lake Storage Gen2 (ADLS Gen2).
Create an Azure Data Lake Storage Gen2 import
Start creating an import to Azure Data Lake Storage Gen2 in either of the following ways:
- From the Build menu, select Flows > Create flow. Then, click Add destination/lookup.
– or –
- From the Resources menu, select Imports. Then, click + Create import.
From the Application drop-down list, select Azure Data Lake Storage Gen2 and your available Azure Data Lake Storage Gen2 connection.
When prompted, select the type of import you want to create:
- Transfer files into destination application — upload files to an ADLS Gen2 container. See Transfer files into Azure Data Lake Storage Gen2.
- Look up additional files (per record) — retrieve files from ADLS Gen2 on a per-record basis. See Export files from Azure Data Lake Storage Gen2.
Note: Execution logs aren't currently available for Transfer files into destination application steps. Import records into destination application steps do support execution logs, since they run through integrator.io's HTTP-based framework.
Transfer files into Azure Data Lake Storage Gen2
General
Name (required): Provide a clear and distinguishable name. You will have the option to choose this import throughout integrator.io, and a unique identifier will prove helpful later when selecting among a list of imports that you've created.
Description (optional): Describe your import so that you and others can quickly understand its purpose. Be sure to highlight any nuances that a user should be aware of before using this import in a flow. As you make changes to the resource, be sure to keep this description up to date.
Connection (required): The Azure Data Lake Storage Gen2 connection to use for your import.
One to many: Set to Yes (advanced) to send each record to multiple destinations. Defaults to No.
Generate files from record: Choose Yes to build a new file (CSV, JSON, XML, and so on) from record data. Choose No to transfer raw files as-is (PDF, images, and so forth).
How would you like to generate files?
This section appears only if Generate files from record is set to Yes.
File type (required): Select the type of file you want to generate. Acceptable file types include:
- CSV (or any delimited text file)
- EDI X12
- EDIFACT
- Fixed Width
- JSON
- XLSX
- XML
CSV (or any delimited text file)
Sample file (that would be generated): Upload a sample file representing the record structure of the files to transfer. integrator.io uses the sample to auto-configure fields and assist with mapping. The sample does not need to be large — five records is sufficient — but it should contain all fields you want to work with.
Include header: Check this box to set the first row in your CSV file as column names.
How many files would you like to generate?: Select One file per flow run to create a single file containing all records processed during the flow run. Select One file per page of records to generate a separate file for each page of records.
Note: Post-aggregate hooks fire only when How many files would you like to generate? is set to One file per flow run.
CSV generator helper: Use the CSV generator helper to visualize how integrator.io builds CSV files from the JSON records processed by your flow.
Column delimiter: Select the delimiter that separates fields in a record. The default is a comma.
Row delimiter: Select the delimiter that separates rows. The default is a line feed.
EDI X12
EDI profile: Select an existing EDI profile or click + to create one.
Generic definition: Select a document type to convert canonical data to an EDI document.
EDI generator helper: Launch the EDI generator helper to test file definition rules.
How many files would you like to generate?: Select One file per page of records or One file per key.
EDIFACT
EDI profile: Select an existing EDI profile or click + to create one.
Generic definition: Select a document type to convert canonical data to an EDIFACT document.
How many files would you like to generate?: Select One file per page of records or One file per key.
Fixed Width
Format: Select the document type for your trading partner.
File generator helper: Launch the file generator helper to test file definition rules.
JSON
Sample file (that would be generated): Upload a sample file representing the record structure of the files to transfer.
How many files would you like to generate?: Select One file per flow run or One file per page of records.
XLSX
Sample file (that would be generated): Upload a sample file representing the record structure of the files to transfer.
Include header: Check this box to set the first row as column names.
How many files would you like to generate?: Select One file per flow run or One file per page of records.
XML
Sample file (that would be generated): Upload a sample file representing the record structure of the files to transfer.
How many files would you like to generate?: Select One file per flow run or One file per page of records.
Where would you like the files transferred?
Container name (required): Enter the name of the Azure Data Lake Storage Gen2 container where you want to upload files. You can also select a container from the drop-down list, which is populated by calling Azure's List Filesystems API against your connection. If the list comes back empty — including when your Service Principal has access scoped to specific containers rather than the whole storage account — the drop-down simply shows no results; type the container name directly instead. You can use handlebars syntax to set the container name dynamically.
Path (required): Enter the full target path for the uploaded file, including any folder path — for example, raw/2026/04/23/orders.csv. You can use handlebars syntax to generate dynamic paths. If any directory in the path doesn't exist yet — for example, raw/2026/04/ hasn't been created — integrator.io creates the missing directories automatically as part of the upload. You don't need to add a separate Create directory step before importing.
Append to existing file: Available only when File type is set to CSV. Check this box to add new rows to the end of the existing file at the target Path, instead of replacing it. integrator.io uses Azure's Append + Flush protocol to write the new rows. If the target file doesn't exist yet, integrator.io creates it on the first run — no error. Leave this box unchecked (or select any other File type) to overwrite the existing file at the target path, which is the default behavior.
Tip: Azure Data Lake Storage Gen2 does not support duplicate file names at the same path — each import to the same Path either overwrites or appends to the existing file. To ensure each upload creates a distinct file, add a dynamic value such as {{timestamp}} to your Path.
Note: When Append to existing file is checked, Compress files, Encrypt files, Content-Type, and Custom metadata below are disabled, with a tooltip explaining why. Each of these settings applies at file-creation time and can't be reapplied to an existing file during an append operation.
Note: If two flows append to the same file at the same time, Azure may return a lease conflict. integrator.io automatically retries up to 3 times with exponential backoff before surfacing an error to the flow.
Advanced
Compress files: Compresses your import data as a .zip file before uploading to ADLS Gen2. Disabled when Append to existing file is checked.
Encrypt files: Use this cryptographic system to encrypt generated files before uploading. This option is enabled only when your connection is configured with at least one PGP cryptographic system. Disabled when Append to existing file is checked.
File encoding: Select the character encoding for generated files. Defaults to UTF-8. Other supported values include Windows-1252 and UTF-16LE. When appending, the encoding must match the existing file's encoding, and integrator.io does not emit a byte-order mark (BOM) on append writes regardless of this setting, since a BOM mid-file would corrupt the target.
Content-Type: Select the Content-Type for the uploaded file. Defaults to Do not override, which causes integrator.io to send the Content-Type matching the selected File type automatically — for example, JSON files are uploaded as application/json and CSV files as text/csv. Select a specific value or enter a custom one only if you need to override this behavior. Supports handlebars syntax for dynamic values. Disabled when Append to existing file is checked.
Custom metadata: Add name/value pairs to attach as custom metadata to the uploaded file. Each pair is stored as an x-ms-meta-* header on the file and can be used for downstream categorization, compliance tagging, or lifecycle policies. You can use handlebars syntax in the value field to reference dynamic data — for example, name Environment, value {{{environment}}}. Handlebars is supported on values only, not on names. Disabled when Append to existing file is checked.
Blob key path: Enter the path to the blob key in the record payload when transferring raw files without file generation.
Custom settings
Click Launch form builder to create a custom settings form for this import, or edit the Settings JSON directly.
Look up additional files (per record)
You can configure Azure Data Lake Storage Gen2 as a file lookup in a flow to retrieve files on a per-record basis. The lookup form is identical to the export form described above. The only meaningful difference is that the lookup runs once per record rather than once per flow run, so the Container, Directory path, and File filtering conditions fields typically reference data from the incoming record using handlebars syntax — for example, {{{record.orderId}}}.
If no matching file is found, the lookup follows the standard not-found behavior: fail, return empty, or skip, depending on how the lookup is configured.
To add a file lookup, click Add lookup in the flow builder, select Azure Data Lake Storage Gen2, and select Look up additional files (per record).
Note: When writing scripts or transforms that reference ADLS Gen2 file metadata, fileMeta includes name, path, contentLength, lastModified, etag, contentType, contentMD5, owner, group, permissions, resourceType (file or directory), and metadata (custom headers parsed into an object). File size is available as both fileMeta.fileSize and fileMeta.filesize. The path is available as fileMeta.path, and also as fileMeta.name (aliased to the leaf name), so scripts written for Azure Blob continue to work unchanged.
Save your import
- Click Save to save your current settings.
- Click Save & close to save your changes and exit the page.
- Click Close to exit without saving.