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).
- Push
- Pull
Transfer Statuses
Transfer Records can have one of the following statuses:
| Status | Description |
|---|---|
Pending | For 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. |
Started | The file transfer was initiated. |
Running | The file transfer is in progress. |
Processing | The file transfer is currently being processed, such as during ICAP scanning or Tasks execution. |
Uploading | For Microsoft Azure Files transfers only. The file is currently in a temporary directory during upload. See Microsoft Azure Files Exception. |
Completed | The file transfer completed successfully. |
Failed | The file transfer failed due to a system failure, task failure, or because it was aborted. |
Cancelled | The file transfer was canceled by an Admin. |
Stopped | The file transfer was stopped. |
Managing Transfers
Canceling a Transfer
Users can cancel an existing Transfer through the UDMG REST API.
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
| Parameter | Description |
|---|---|
{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.
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
| Parameter | Description |
|---|---|
domainName | The name of the Domain whose Transfers will be canceled. |
Request Body
| Property | Description |
|---|---|
reason | Optional 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-leveltransferId.matchFiles: number of files transferred (1in this case).
{
"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 thetransferIdon the Scheduled Transfer Record.isSchedule: set totrue, indicating this Transfer was triggered by a Scheduled Transfer.scheduleId: ID of the parent Scheduled 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 (2here).
{
"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 totrue, indicating this Transfer was triggered by a Scheduled Transfer.scheduleId: ID of the parent Scheduled Transfer Record.
- Transfer Record (File 1)
- Transfer Record (File 2)
{
"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"
}
{
"transferId": 11,
"accountName": "udmg.sys-admin",
"pipeline": "push_lfs_2_sftp",
"source": "/outbound/report-2026-07-02.csv",
"destination": "partner/inbound/report-2026-07-02.csv",
"isSend": true,
"isSchedule": true,
"scheduleId": 4,
"status": "Completed",
"startedAt": "2026-07-01T06:00:01.039553Z",
"completedAt": "2026-07-01T06:00:01.073216Z"
}
For more details, refer to Scheduled Transfers.