Knowledge HubFile Operations

File Operations

Move, copy, archive, and clean up files as part of an automated workflow — without writing a pipeline. File Operation, Custom Command, and Condition steps let you orchestrate file handling (FTP/SFTP servers, cloud object storage, HDFS) alongside your pipelines and child orchestrators, all from the same drag-and-drop DAG editor.

Overview

File Operations adds three new step types to the Orchestrator DAG editor, alongside the existing Pipeline, Orchestrator, and Parallel Group steps:

These steps live entirely inside orchestrators. They are not available on the pipeline canvas — pipelines remain focused on data transformation, while orchestrators sequence pipelines, sub-orchestrators, and now file/command housekeeping into a single automated flow.

Typical use case: Wait for a vendor to drop a file on SFTP, unzip it, run the ingestion pipeline, archive the processed file, and clean up — all as one scheduled orchestrator, with no manual steps in between.

File Storage Connections

File Operation steps run against a Connection you already have configured (the same connections used elsewhere in DataKnits). Supported connection types include:

CategorySupported Types
File TransferFTP, SFTP
Cloud Object StorageAmazon S3, Azure Blob Storage, Azure Data Lake Storage (ADLS), Google Cloud Storage (GCS), Oracle Cloud Infrastructure (OCI) Object Storage
Distributed File SystemHDFS

When you select a connection inside a File Operation step, the panel shows its native method and supported capabilities — this tells you upfront which operations that particular connection can perform before you configure the rest of the step.

Adding Steps to an Orchestrator

  1. Open an existing orchestrator (or create a new one) and go to its Editor tab.
  2. In the toolbar above the canvas, click Add File Op, Add Custom Command, or Add Condition.
  3. A new step card appears on the canvas. Click it to open the configuration panel on the right.
  4. Fill in the step's fields (covered below), then drag the green (Success) or red (Failure) connector on the right edge of the step to another step to wire up the flow.
  5. Click Save DAG when you're done.

File Operation Step

Click a File Operation step to configure it in the right-hand panel:

FieldDescription
OperationThe action to perform. See Operations Reference below.
ConnectionWhich file store this step runs against.
Source PathThe file or folder path to act on. Supports ${param.NAME} substitution.
Destination PathShown for MOVE, RENAME, PUT, ZIP, and UNZIP — where the result should end up.
Local Path (ETL host)Shown for GET and PUT — the path on the DataKnits execution host used as the local side of the transfer.
Execution Mode (override)Leave as Provider default unless you need to force a specific transport. See Execution Modes.
Output ParamOptional. Give this a name (e.g. FILE_COUNT) to publish the step's result — such as the number of files listed — for use by later steps as ${param.FILE_COUNT}.

Operations Reference

OperationWhat it doesFields used
LISTLists files/folders at the source path. Useful for checking whether new files have arrived, combined with a downstream Condition step.Source Path
GETDownloads a file from the connection to the DataKnits host.Source Path, Local Path
PUTUploads a file from the DataKnits host to the connection.Source Path, Local Path, Destination Path
DELETEDeletes a file or folder at the source path.Source Path
MOVEMoves a file/folder from the source path to the destination path (e.g. into an archive folder).Source Path, Destination Path
RENAMERenames a file/folder in place.Source Path, Destination Path
ZIPCompresses the source path into an archive at the destination path.Source Path, Destination Path
UNZIPExtracts an archive at the source path into the destination path.Source Path, Destination Path

Execution Modes

By default, each connection uses its natural transport method automatically. Override this only when your environment requires a specific transport:

ModeWhen to use it
REST / SDKUses the cloud provider's API/SDK directly — the default for S3, Azure Blob, ADLS, GCS, and OCI.
OS Command (local)Runs the operation as a local shell command on the DataKnits host.
SSH (remote shell)Runs the operation over an SSH session on a remote server.
Cloud CLIShells out to the relevant cloud command-line tool (aws, az, gsutil, oci, or hdfs) instead of the SDK — useful when your organization standardizes on CLI-based tooling.

Custom Command Step

Use a Custom Command step for anything outside the standard file operations — running a legacy shell script, invoking a third-party CLI, or performing custom cleanup logic.

FieldDescription
TemplateOptional. If your administrator has published a reusable command template, pick it here instead of typing the command inline.
Run OnLocal OS, Remote SSH, or Cloud CLI.
OS TypeLinux (bash), Windows (cmd), Windows (PowerShell), or AIX / Unix.
Command BodyThe inline command to run (hidden if a Template is selected). Supports ${param.NAME} substitution.
Timeout (sec)How long to wait before the step is marked failed. Default 120 seconds.
Success WhenExit code == 0 (default), stdout contains… a pattern you specify, or Any (always treated as success, ignoring the exit code).
Output ParamOptional name under which the command's stdout/exit result is published for downstream steps.

Condition Step

A Condition step evaluates a boolean expression against the orchestrator's current parameter values. If the expression is true, the flow follows the step's Success route; if false, it follows the Failure route.

FieldDescription
DescriptionA plain-language label, e.g. "If LOAD_DATE is today, route success; else route failure".
Expressione.g. ${param.FILE_COUNT} > 0 && ${param.ENV} == "PROD". Supported operators: == != > >= < <= && || !. Use quotes around string literals.
Common pattern: LIST step (with an Output Param like FILE_COUNT) → Condition step checking ${param.FILE_COUNT} > 0 → only run the ingestion pipeline when files actually arrived.

Using Parameters (${param.NAME})

Every path, command body, and expression field in these steps supports ${param.NAME} substitution, resolved at run time against the orchestrator's declared parameters.

Routing, Retries & Alerts

File Operation, Custom Command, and Condition steps use the same routing model as pipeline and orchestrator steps:

Worked Example: Watch, Ingest, Archive

  1. Add a File Operation step: Operation LIST, Connection = your SFTP connection, Source Path /incoming/${param.LOAD_DATE}/, Output Param FILE_COUNT.
  2. Add a Condition step: Expression ${param.FILE_COUNT} > 0. Route its Success edge to the pipeline that ingests the data.
  3. After the pipeline's Success route, add a second File Operation step: Operation MOVE, Source Path /incoming/${param.LOAD_DATE}/orders.csv, Destination Path /archive/${param.LOAD_DATE}/orders.csv.
  4. Optionally add a Custom Command step afterward to clean up any temporary local files.
  5. Save the DAG and attach a schedule under the orchestrator's Schedule tab.

Troubleshooting

SymptomLikely cause / fix
Connection list is empty in the File Operation panelNo connection of a supported type (FTP/SFTP/S3/Azure Blob/ADLS/GCS/OCI/HDFS) has been created yet — add one under Connections first.
Step fails immediately with a permissions/authentication errorTest the underlying connection (Connections → your connection → Test) before troubleshooting the orchestrator step itself.
Custom Command times outIncrease Timeout (sec), or switch Run On if the command was written for a different shell/OS.
Condition step always routes to FailureConfirm the upstream step's Output Param name exactly matches the name used in the expression, and that the upstream step actually ran before the condition (check its position in the routing chain).