Skip to main content
Version: 3.3

Transfers

A transfer is the upload or download (either successful or failed) of one file through a Pipeline, from its Source Endpoint to its Destination Endpoint.

Whenever a transfer is initiated, UDMG creates a Transfer Record that contains information about the transfer, including its status, protocol, and other metadata.

Transfer Records are used to track the progress of transfers and to provide visibility into their execution. You can monitor and manage Transfer Records through the Transfers Dashboard and the UDMG REST API.

UDMG supports transfers in both directions: UDMG as Server and UDMG as Client.

In UDMG as Server Pipelines, transfers are initiated by external partners who connect to UDMG and start a transfer through one of the supported protocols:

Meanwhile, in UDMG as Client Pipelines, transfers are always initiated by UDMG Admins through an API request (see Transfers vs. Scheduled Transfers).

Transfer Statuses

Transfer Records can have one of the following statuses:

StatusDescription
PendingFor UDMG as Client Pipeline transfers only. The transfer was scheduled via the UDMG REST API, but its scheduled execution time has not yet been reached.
StartedThe file transfer was initiated.
RunningThe file transfer is in progress.
ProcessingThe file transfer is currently being processed, such as during ICAP scanning or Tasks execution.
UploadingFor Microsoft Azure Files transfers only. The file is currently in a temporary directory during upload. See Microsoft Azure Files Exception.
CompletedThe file transfer completed successfully.
FailedThe file transfer failed due to a system failure, task failure, or because it was aborted.
CancelledThe file transfer was canceled by an Admin.
StoppedThe file transfer was stopped.

Managing Transfers

Canceling a Transfer

Users can cancel an existing Transfer through the UDMG REST API.

warning

If the Transfer was created by a Scheduled Transfer, canceling it without also canceling the Scheduled Transfer may allow new Transfers to be triggered immediately after. See Cancellation Behavior.

Endpoint

Use this endpoint to request cancellation of the Transfer:

PUT /api/v1/domains/{domainName}/transfers/cancel/{transferId}

Authentication

This endpoint requires authentication.

The authenticated User must have an Admin Role within the Domain.

Parameters

ParameterDescription
{domainName}The name of the Domain that owns the Transfer.
{transferId}The UUID of the Transfer to cancel.

Response Example

JSON
{
"uuid": "a1a4aa99-1ef2-4779-87a2-049af0255666",
"updatedAt": "2026-04-23T20:34:12.276365357Z",
"version": 1,
"transferId": 285544,
"sessionId": 285479,
"sessionUUID": "7a23faf3-9d8d-42a7-bb31-c686cc234e43",
"accountName": "partner-user",
"protocol": "SFTP",
"pipeline": "inbound-files",
"endpointSource": "partner-sftp",
"endpointSourceType": "local:sftp:server",
"endpointDestination": "shared-storage",
"endpointDestinationType": "local::filesystem",
"source": "/uploads/report.csv",
"destination": "/var/data/inbound/report.csv",
"workDirectory": "/var/udmg/work",
"progress": 3129344,
"fileSize": 0,
"isSend": false,
"isSchedule": false,
"scheduleId": 0,
"status": "Cancelled",
"cancelReason": "action: cancel by user: udmg.domain-admin",
"startedAt": "2026-04-23T20:33:56.246752686Z",
"completedAt": "2026-04-23T20:34:12.276364569Z"
}

Canceling All Transfers

Cancels all in-progress Transfers for the specified Domain.

warning

If the Transfers were created by Scheduled Transfers, canceling active Transfers without also canceling the Scheduled Transfers may allow new Transfers to be triggered immediately after. See Cancellation Behavior.

API Endpoint

PUT /api/v1/domains/{domainName}/transfers/cancel-all

Authentication

This endpoint requires authentication using a valid UDMG username and password.

Permissions

The authenticated User must have one of the following Roles:

  • System Administrator (within its Domain)
  • Domain Administrator (within its Domain)

Path Parameters

ParameterDescription
domainNameThe name of the Domain whose Transfers will be canceled.

Request Body

PropertyDescription
reasonOptional reason for the cancellation.

Response

Returns a summary of the cancellation result.

Example
JSON
{
"cancel-all": {
"count": 3,
"message": "Successfully cancelled 3 transfers",
"status": "success"
}
}

Transfers vs. Scheduled Transfers

A Transfer must not be confused with a Scheduled Transfer, as they are related but distinct Records in UDMG.

A Transfer is a single execution: one file moved through a Pipeline. Each execution produces exactly one Transfer Record with its own status lifecycle.

A Scheduled Transfer only applies to UDMG as Client Pipelines. A Scheduled Transfer is a transfer request created through the UDMG REST API for a UDMG as Client Pipeline.

When a Scheduled Transfer is submitted, UDMG creates a Scheduled Transfer Record, waits until the specified execution time, and then starts the transfer using the selected Pipeline, creating one or more Transfer Records.

Scheduled Transfers are used for both immediate transfers and transfers scheduled to run in the future.

One Transfer Record

In a standard and successful case, one Scheduled Transfer creates exactly one Transfer Record.

The Scheduled Transfer Record includes:

  • scheduleId: unique ID of this Scheduled Transfer Record.
  • transferId: ID of the Transfer Record created for this transfer.
  • transferAttempt[0].transferId: matches the top-level transferId.
  • matchFiles: number of files transferred (1 in this case).
Scheduled Transfer Record
{
"scheduleId": 22,
"transferId": 81,
"pipeline": "push_lfs_2_sftp",
"username": "udmg.sys-admin",
"source": "/outbound/report-2026-07.csv",
"destination": "partner/inbound/report-2026-07.csv",
"schedule": "2026-07-01T06:00:00Z",
"status": "Completed",
"executedAt": "2026-07-01T06:00:01.041009Z",
"completedAt": "2026-07-01T06:00:02.045332Z",
"transferAttempt": [
{
"attemptNumber": 1,
"transferId": 81,
"startedAt": "2026-07-01T06:00:01.041009Z",
"completedAt": "2026-07-01T06:00:02.045332Z"
}
],
"matchFiles": 1
}

The corresponding Transfer Record includes:

  • transferId: matches the transferId on the Scheduled Transfer Record.
  • isSchedule: set to true, indicating this Transfer was triggered by a Scheduled Transfer.
  • scheduleId: ID of the parent Scheduled Transfer Record.
Transfer Record
{
"uuid": "3c481a2e-e2a7-474e-8d2d-2907a14e41a8",
"updatedAt": "2026-07-01T06:00:02.609389957Z",
"transferId": 81,
"sessionId": 134,
"sessionUUID": "2c10b7c2-f57a-419c-810d-2750d8e24c26",
"accountName": "udmg.sys-admin",
"protocol": "SFTP",
"pipeline": "push_lfs_2_sftp",
"endpointSource": "local-lfs",
"endpointSourceType": "local::filesystem",
"endpointDestination": "partner-sftp",
"endpointDestinationType": "remote:sftp:server",
"source": "/outbound/report-2026-07.csv",
"destination": "partner/inbound/report-2026-07.csv",
"workDirectory": "/tmp/udmg",
"progress": 0,
"fileSize": 0,
"isSend": true,
"isSchedule": true,
"scheduleId": 22,
"status": "Completed",
"startedAt": "2026-07-01T06:00:01.041009Z",
"completedAt": "2026-07-01T06:00:02.045332Z"
}

Multiple Transfer Records

One Scheduled Transfer can result in multiple Transfer Records if it uses a Wildcard or if the transfer is retried due to a failure. Unlike the single-file case, the Scheduled Transfer Record has no transferId.

The Scheduled Transfer Record includes:

  • scheduleId: unique ID of this Scheduled Transfer Record.
  • transferAttempt[0].transferId: 0, because there is no single Transfer Record to reference.
  • matchFiles: number of files that matched (2 here).
Scheduled Transfer Record
{
"scheduleId": 4,
"pipeline": "push_lfs_2_sftp",
"username": "udmg.sys-admin",
"source": "/outbound/",
"schedule": "2026-07-01T06:00:00Z",
"status": "Completed",
"executedAt": "2026-07-01T06:00:01.018080Z",
"completedAt": "2026-07-01T06:00:02.201716Z",
"transferAttempt": [
{
"attemptNumber": 1,
"transferId": 0,
"startedAt": "2026-07-01T06:00:01.018080Z",
"completedAt": "2026-07-01T06:00:02.201716Z"
}
],
"matchFiles": 2
}

Each corresponding Transfer Record includes:

  • isSchedule: set to true, indicating this Transfer was triggered by a Scheduled Transfer.
  • scheduleId: ID of the parent Scheduled Transfer Record.
{
"transferId": 10,
"accountName": "udmg.sys-admin",
"pipeline": "push_lfs_2_sftp",
"source": "/outbound/report-2026-07-01.csv",
"destination": "partner/inbound/report-2026-07-01.csv",
"isSend": true,
"isSchedule": true,
"scheduleId": 4,
"status": "Completed",
"startedAt": "2026-07-01T06:00:01.036160Z",
"completedAt": "2026-07-01T06:00:01.070308Z"
}

For more details, refer to Scheduled Transfers.