UiPath Documentation
uipath-cli
latest
false
UiPath CLI user guide

uip solution deploy

Syntax and options for `uip solution deploy`, which installs, upgrades, activates, and uninstalls solution deployments in Orchestrator.

uip solution deploy takes a published solution package (see uip solution publish) and installs it into Orchestrator: creates a folder, provisions resources (queues, assets, processes, buckets, connections), and activates the deployment.

This page covers every subcommand under deploy.

Note:

run, status, and list accept --feed <name-or-key> to work with a folder feed. Refer to uip solution feeds to list the feeds you can reach. For more information about folder feeds, refer to Solution feed in the Solutions Management documentation.

SubcommandPurpose
runInstall a deployment from a published package.
upgradeMove an existing deployment to another published version of its package, in place.
statusCheck the state of a deployment, by name or key, or the progress of a pipeline deployment run.
listList existing deployments.
activateActivate a deployment that was installed without auto-activation.
uninstallRemove a deployment and its provisioned resources.
deleteDelete a deployment record that uninstall cannot remove.
config getFetch the default deployment configuration for a package.
config setSet a resource property in a deploy config file.
config linkLink a solution resource to an existing Orchestrator resource.
config unlinkRemove a resource link from a deploy config file.

Every subcommand is authenticated. Run uip login first.

Typical workflow​

deploy config get  →  deploy config set / link  →  deploy run  →  deploy status
                                                       │
                                                       ├─→ deploy activate   (if not auto-activated)
                                                       ├─→ deploy upgrade    (new package version, same deployment)
                                                       └─→ deploy uninstall  (tear down)  →  deploy delete
deploy config get  →  deploy config set / link  →  deploy run  →  deploy status
                                                       │
                                                       ├─→ deploy activate   (if not auto-activated)
                                                       ├─→ deploy upgrade    (new package version, same deployment)
                                                       └─→ deploy uninstall  (tear down)  →  deploy delete

deploy run is keyed on --name. A name that does not exist yet gets a new deployment in a new folder. If the package is already deployed, deploy run stops and points to deploy upgrade, which moves the existing deployment to another version in place. To install a second, separate copy, pass -y, --yes with a different --name.


uip solution deploy run​

Install a solution deployment in Orchestrator from a published package. Creates a new folder (under --parent-folder-path or --parent-folder-key, or the current user's Personal Workspace), provisions every resource described in the package (or in --config-file), and, unless --skip-activate is set, activates it.

The deployment is keyed on --name. Before installing, the command checks whether the package already has a deployment; if so, it stops and points to deploy upgrade. The check is best-effort: a lookup failure only warns, and under an External Application (client-credentials) login an existing deployment is reported as a warning instead of stopping the deploy.

The package is validated against the target before anything is installed. A validation failure ends the run at ValidationFailed with the errors in Instructions, and nothing is installed. The rejected attempt is kept as a pending draft: fix the configuration and re-run the same command, and the server validates the draft again with the new file. Settings and resource links that the file does not name keep the values the draft was rejected with.

Synopsis​

uip solution deploy run \
  --name <deployment-name> \
  --package-name <name> \
  --package-version <version> \
  --folder-name <name> \
  [--parent-folder-path <path> | --parent-folder-key <guid> | --personal-workspace] \
  [--feed <name-or-key>] \
  [--config-file <path>] \
  [--skip-activate] \
  [-y, --yes] \
  [--timeout <seconds>] \
  [--poll-interval <ms>] \
  [--login-validity <minutes>]
uip solution deploy run \
  --name <deployment-name> \
  --package-name <name> \
  --package-version <version> \
  --folder-name <name> \
  [--parent-folder-path <path> | --parent-folder-key <guid> | --personal-workspace] \
  [--feed <name-or-key>] \
  [--config-file <path>] \
  [--skip-activate] \
  [-y, --yes] \
  [--timeout <seconds>] \
  [--poll-interval <ms>] \
  [--login-validity <minutes>]

Options​

LongValueDefaultDescription
-n, --name <deployment-name>text—Required. Name for the deployment. Used by deploy status, deploy upgrade, deploy activate, deploy uninstall, and deploy delete to identify this install.
--package-name <name>text—Required. Solution package name. Use packages list to find available names.
--package-version <version>text—Required. Solution package version.
--folder-name <name>text—Required. Name of the new Orchestrator folder created for this deployment.
--parent-folder-path <path>path—Parent folder path (for example Shared). The deployment folder is created beneath it. Mutually exclusive with --parent-folder-key and --personal-workspace.
--parent-folder-key <key>GUID—Parent folder key. Alternative to --parent-folder-path.
--personal-workspaceflagoffDeploy into the current user's Personal Workspace. The workspace name is resolved from Orchestrator automatically. Requires a user login; an External Application has no Personal Workspace. Mutually exclusive with --parent-folder-path, --parent-folder-key, and --feed.
--feed <name-or-key>texttenant feedDeploy a package published to this feed (name or folder key, from solution feeds list) instead of the tenant feed. This scopes which feed the package comes from — the --parent-folder-path/--parent-folder-key/--personal-workspace flags still control where the Orchestrator folder is created. Requires a user login; an External Application login is refused instead of deploying to the tenant feed. Mutually exclusive with --personal-workspace.
--config-file <path>path—JSON or YAML configuration file. Generate with deploy config get, edit with config set / config link, then pass it here.
--skip-activateflagoffSkip auto-activation; leave the deployment in Inactive (Ready to activate) state. Activate later with deploy activate.
-y, --yesflagoffDeploy even when this package already has a deployment. Without it, the command looks the package up and stops if it is already deployed. The check is best-effort: a lookup failure only warns, and under an External Application (client-credentials) login an existing deployment is reported as a warning instead of stopping the deploy. --yes only skips the check. Re-using an existing deployment's --name updates that deployment in place; pass a different --name for a separate copy.
--timeout <seconds>seconds360Polling timeout applied per phase — deploy, and (when not skipped) activate.
--poll-interval <ms>ms5000Milliseconds between status polls during the deploy and activate phases.
--login-validity <minutes>minutes10Minimum minutes before token expiration to trigger a refresh.

Examples​

Common​
uip solution deploy run \
  --name my-deployment \
  --package-name my-package \
  --package-version 1.0.0 \
  --folder-name MySolution \
  --parent-folder-path "Shared"
uip solution deploy run \
  --name my-deployment \
  --package-name my-package \
  --package-version 1.0.0 \
  --folder-name MySolution \
  --parent-folder-path "Shared"
Skip auto-activation​
uip solution deploy run \
  --name my-deployment \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolution --parent-folder-path "Shared" \
  --skip-activate
uip solution deploy run \
  --name my-deployment \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolution --parent-folder-path "Shared" \
  --skip-activate
Into the Personal Workspace​
uip solution deploy run \
  --name my-deployment \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolution --personal-workspace
uip solution deploy run \
  --name my-deployment \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolution --personal-workspace
A second, independent copy of an already-deployed package​
uip solution deploy run \
  --name my-deployment-2 \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolutionCopy --parent-folder-path "Shared" --yes
uip solution deploy run \
  --name my-deployment-2 \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolutionCopy --parent-folder-path "Shared" --yes
From a folder feed​
uip solution deploy run \
  --name my-deployment \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolution --feed Finance
uip solution deploy run \
  --name my-deployment \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolution --feed Finance
With a customized configuration​
uip solution deploy config get my-package -d ./deploy-config.json
uip solution deploy config set ./deploy-config.json MyQueue maxNumberOfRetries 5

uip solution deploy run \
  --name my-deployment \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolution --parent-folder-path "Shared" \
  --config-file ./deploy-config.json
uip solution deploy config get my-package -d ./deploy-config.json
uip solution deploy config set ./deploy-config.json MyQueue maxNumberOfRetries 5

uip solution deploy run \
  --name my-deployment \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolution --parent-folder-path "Shared" \
  --config-file ./deploy-config.json
Scripting — capture the deployment ID for follow-up calls​
PIPELINE_ID=$(uip solution deploy run \
  --name my-deployment \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolution --parent-folder-path "Shared" \
  --output-filter "PipelineDeploymentId" --output plain)

uip solution deploy status "$PIPELINE_ID"
PIPELINE_ID=$(uip solution deploy run \
  --name my-deployment \
  --package-name my-package --package-version 1.0.0 \
  --folder-name MySolution --parent-folder-path "Shared" \
  --output-filter "PipelineDeploymentId" --output plain)

uip solution deploy status "$PIPELINE_ID"

Data shape (--output json)​

The command waits for the deployment to finish, bounded by --timeout:

{
  "Code": "SolutionDeployRun",
  "Data": {
    "Status": "DeploymentSucceeded",
    "DeploymentKey": "a1b2c3d4-0000-0000-0000-000000000001",
    "PipelineDeploymentId": "b2c3d4e5-0000-0000-0000-000000000001",
    "InstanceId": "c3d4e5f6-0000-0000-0000-000000000001",
    "FolderName": "MySolution",
    "FolderPath": "Shared/MySolution",
    "ActivationStatus": "SuccessfulActivate"
  }
}
{
  "Code": "SolutionDeployRun",
  "Data": {
    "Status": "DeploymentSucceeded",
    "DeploymentKey": "a1b2c3d4-0000-0000-0000-000000000001",
    "PipelineDeploymentId": "b2c3d4e5-0000-0000-0000-000000000001",
    "InstanceId": "c3d4e5f6-0000-0000-0000-000000000001",
    "FolderName": "MySolution",
    "FolderPath": "Shared/MySolution",
    "ActivationStatus": "SuccessfulActivate"
  }
}

A deployment that installed but needs Setup activation in Orchestrator before it can be activated returns Result: Success with ActivationStatus: NeedsSetupToActivate. Do not deploy it again; configure the listed resources and activate it:

{
  "Code": "SolutionDeployRun",
  "Data": {
    "Status": "DeploymentSucceeded",
    "DeploymentKey": "a1b2c3d4-0000-0000-0000-000000000003",
    "PipelineDeploymentId": "b2c3d4e5-0000-0000-0000-000000000003",
    "InstanceId": null,
    "FolderName": "MySolution",
    "FolderPath": "Shared/MySolution",
    "ActivationStatus": "NeedsSetupToActivate",
    "PendingResources": [
      {
        "Kind": "connection",
        "Name": "Outlook",
        "Type": "uipath-microsoft-outlook365",
        "Reason": "[CNS1072] You will need to authenticate this connection before proceeding further"
      }
    ],
    "NextSteps": [
      "Deployment 'my-deployment' is installed at version 1.0.0 but not live: it needs 'Setup activation' before it can be activated.",
      "Resources that need configuration: connection 'Outlook' (uipath-microsoft-outlook365): [CNS1072] You will need to authenticate this connection before proceeding further."
    ]
  }
}
{
  "Code": "SolutionDeployRun",
  "Data": {
    "Status": "DeploymentSucceeded",
    "DeploymentKey": "a1b2c3d4-0000-0000-0000-000000000003",
    "PipelineDeploymentId": "b2c3d4e5-0000-0000-0000-000000000003",
    "InstanceId": null,
    "FolderName": "MySolution",
    "FolderPath": "Shared/MySolution",
    "ActivationStatus": "NeedsSetupToActivate",
    "PendingResources": [
      {
        "Kind": "connection",
        "Name": "Outlook",
        "Type": "uipath-microsoft-outlook365",
        "Reason": "[CNS1072] You will need to authenticate this connection before proceeding further"
      }
    ],
    "NextSteps": [
      "Deployment 'my-deployment' is installed at version 1.0.0 but not live: it needs 'Setup activation' before it can be activated.",
      "Resources that need configuration: connection 'Outlook' (uipath-microsoft-outlook365): [CNS1072] You will need to authenticate this connection before proceeding further."
    ]
  }
}

With --skip-activate, ActivationStatus is Skipped.

RequestedFolderName and FolderNote appear only when the requested --folder-name was already taken: Orchestrator collision-renames the folder rather than reusing it, so the actual FolderName/FolderPath differ from what was requested, and FolderNote explains the rename with a pointer to either use the renamed folder or re-run with a free name.

Terminal deployment statuses: DeploymentSucceeded, DeploymentFailed, ValidationFailed, ConflictFixingError, DeploymentScheduleError. Non-success terminal states exit with 1 and aggregate the validation / conflict / schedule / workflow errors into the Instructions field.

Timeout behaviour​

If the deployment does not reach a terminal state before --timeout elapses, the command exits non-zero with a pointer to deploy status <pipeline-deployment-id> so you can continue monitoring.

Failure modes​

  • The package already has a deployment. Refused unless -y, --yes is passed. Use deploy upgrade to move the existing deployment to a new version, or pass --yes with a different --name to install a second, separate copy.
  • Validation failed. The run ends at ValidationFailed and nothing is installed. The rejected attempt is kept as a pending draft; fix the configuration and re-run the command. When the run was an update of an existing deployment, Instructions also names the deploy upgrade <deployment-key> --discard-draft --version <version> command that discards the draft and upgrades the live version instead.
  • --name has a pending draft for another version. Refused. Re-run with the draft's --package-version to retry the draft, or discard it with deploy upgrade --discard-draft.
  • --name exists, bound to a different --package-name. Fails outright — a deployment name cannot switch packages via deploy run.
  • A deployment for --name is already in progress. Fails — the previous operation must finish first.

uip solution deploy upgrade​

Upgrade an existing deployment to another published version of its package, in place. This is the CLI equivalent of the Upgrade button in Orchestrator. Use it when deploy run stops because the package is already deployed. The deployment's existing configuration is preserved, so values already set on it (for example a credential asset's secret) are not reset to the package defaults.

The package is validated against the target before anything is installed. A validation failure reports the errors and leaves the deployment on its current version. The command waits for the upgrade to finish unless --no-wait is passed; track a running upgrade with deploy status <pipeline-deployment-id>.

Synopsis​

uip solution deploy upgrade <deployment-key> [options]
uip solution deploy upgrade --name <deployment-name> --package-name <name> [options]
uip solution deploy upgrade <deployment-key> [options]
uip solution deploy upgrade --name <deployment-name> --package-name <name> [options]

Address the deployment either by key or by --name with --package-name, not both.

Arguments​

  • [deployment-key] — Key of the deployment to upgrade, as deploy list reports it (Key), or a stored InstallDeploymentKey. The deployment's name, package, current version, and feed are read from the server, so --package-name and --personal-workspace are not needed. Use either this or --name with --package-name.

Options​

LongValueDefaultDescription
-n, --name <deployment-name>text—Name of the deployment to upgrade, as reported by deploy list. Goes with --package-name. The command checks that the name exists before installing, so a mistyped name is refused instead of creating a new deployment.
--package-name <name>text—The deployment's package. Required with --name.
--version <version>textnewest publishedTarget package version. Any published version of the same package is accepted, including an older one. An empty value is refused.
--personal-workspaceflagoffWith --name: upgrade a deployment in your Personal Workspace feed instead of the tenant. With a key, the feed is read from the deployment and this flag is not needed.
--discard-draftflagoffWhen the deployment has a pending draft (an earlier attempt that never completed, usually one rejected by validation), discard the draft first and upgrade the live version. Without it, such a deployment is refused, because the server would re-run the draft with the configuration it was rejected for. With --name, the draft is found only under a user login; under an External Application, pass the deployment key.
--no-waitflagoffReturn as soon as the upgrade is accepted, instead of waiting for it to finish.
--timeout <seconds>seconds300Seconds to wait for the upgrade to finish.
--poll-interval <ms>ms5000Milliseconds between status polls.
--login-validity <minutes>minutes10Minimum minutes before token expiration to trigger a refresh.

Both forms work under an External Application (client-credentials) login, so they can run from a CI/CD pipeline. A deployment in a Personal Workspace or folder feed requires a user login. The --name form has no --feed option; to upgrade a deployment in a folder feed, pass its key.

Examples​

# By key, to the newest published version
uip solution deploy upgrade c3d4e5f6-0000-0000-0000-000000000003

# By name, to the newest published version
uip solution deploy upgrade --name my-deployment --package-name my-package

# To a specific published version (for example from a CI/CD pipeline)
uip solution deploy upgrade --name my-deployment --package-name my-package --version 1.5.0

# Start the upgrade without waiting
uip solution deploy upgrade --name my-deployment --package-name my-package --no-wait

# Discard the pending draft a rejected attempt left behind, then upgrade the live version
uip solution deploy upgrade c3d4e5f6-0000-0000-0000-000000000003 --version 2.0.0 --discard-draft
# By key, to the newest published version
uip solution deploy upgrade c3d4e5f6-0000-0000-0000-000000000003

# By name, to the newest published version
uip solution deploy upgrade --name my-deployment --package-name my-package

# To a specific published version (for example from a CI/CD pipeline)
uip solution deploy upgrade --name my-deployment --package-name my-package --version 1.5.0

# Start the upgrade without waiting
uip solution deploy upgrade --name my-deployment --package-name my-package --no-wait

# Discard the pending draft a rejected attempt left behind, then upgrade the live version
uip solution deploy upgrade c3d4e5f6-0000-0000-0000-000000000003 --version 2.0.0 --discard-draft

Data shape (--output json)​

Upgrade by key:

{
  "Code": "SolutionDeployUpgrade",
  "Data": {
    "Status": "DeploymentSucceeded",
    "Operation": "VersionChange",
    "DeploymentStatus": "SuccessfulActivate",
    "Actions": ["Uninstall", "Upgrade"],
    "DeploymentName": "my-deployment",
    "FromVersion": "1.5.0",
    "ToVersion": "2.0.0",
    "PipelineDeploymentId": "b2c3d4e5-0000-0000-0000-000000000002",
    "DeploymentKey": "d4e5f6a7-0000-0000-0000-000000000004",
    "InstallDeploymentKey": "c3d4e5f6-0000-0000-0000-000000000003"
  }
}
{
  "Code": "SolutionDeployUpgrade",
  "Data": {
    "Status": "DeploymentSucceeded",
    "Operation": "VersionChange",
    "DeploymentStatus": "SuccessfulActivate",
    "Actions": ["Uninstall", "Upgrade"],
    "DeploymentName": "my-deployment",
    "FromVersion": "1.5.0",
    "ToVersion": "2.0.0",
    "PipelineDeploymentId": "b2c3d4e5-0000-0000-0000-000000000002",
    "DeploymentKey": "d4e5f6a7-0000-0000-0000-000000000004",
    "InstallDeploymentKey": "c3d4e5f6-0000-0000-0000-000000000003"
  }
}

With --no-wait:

{
  "Code": "SolutionDeployUpgrade",
  "Data": {
    "Status": "Accepted",
    "DeploymentName": "my-deployment",
    "ToVersion": "2.0.0",
    "PipelineDeploymentId": "b2c3d4e5-0000-0000-0000-000000000002"
  }
}
{
  "Code": "SolutionDeployUpgrade",
  "Data": {
    "Status": "Accepted",
    "DeploymentName": "my-deployment",
    "ToVersion": "2.0.0",
    "PipelineDeploymentId": "b2c3d4e5-0000-0000-0000-000000000002"
  }
}
FieldDescription
StatusTerminal pipeline status (DeploymentSucceeded), or Accepted when --no-wait returned before the upgrade finished.
OperationWhat the server did: VersionChange for a version move, or ConfigurationChange when the requested version was already deployed. Absent with --no-wait.
DeploymentStatusSuccessfulActivate when the new version runs, or SuccessfulInstall when it is installed but waits for activation setup (the previous version keeps running). Absent with --no-wait.
ActionsOperations available on the deployment next (for example SetupActivation, Uninstall, Upgrade).
ActivationStatus, PendingResources, NextStepsPresent when the new version does not run yet, for example ActivationStatus: NeedsSetupToActivate with the resources that need configuration. Same shape as deploy run.
FromVersionVersion deployed before the upgrade. Key form only.
ToVersionVersion the upgrade targeted.
PipelineDeploymentIdID of the pipeline run that performs the upgrade. Pass it to deploy status.
DeploymentKeyKey of the upgraded deployment record. Absent with --no-wait.
InstallDeploymentKeyKey of the original install. It stays the same across upgrades, so it is the key to store. Key form only.
DiscardedDraftKeyKey of the pending draft that --discard-draft deleted. Present only when one was discarded.

Failure modes​

  • Both a key and --name passed, or --name without --package-name. Refused.
  • No deployment found for the key, or for the name in that feed. Refused.
  • The deployment is uninstalled. Refused, because an install would create a new deployment. Use deploy run to deploy the package again.
  • The deployment has a pending draft. Refused unless --discard-draft is passed.
  • The deployment is in a Personal Workspace or folder feed and the login is an External Application. Refused; use a user login.
  • The target version is not published in the feed. Refused.
  • Validation, conflict fixing, scheduling, or the install failed. The command exits with 1 and reports the errors. The deployment stays on the version it was already running. When the failure left a pending draft, Instructions names the --discard-draft command to retry with.
  • Timeout. The upgrade did not finish within --timeout. It may still be running; check it with deploy status <pipeline-deployment-id>.

uip solution deploy status​

Check the state of a deployment by name, or by a deployment key from deploy list or deploy upgrade: operation, activation status, and what is left to do before it runs. The command also takes the pipeline deployment ID from deploy run and returns that run's progress and errors.

Arguments​

  • <deployment> (required) — Deployment name (preferred), a deployment key, or a pipeline deployment ID. A key is resolved across every feed, and a superseded key is answered with the deployment's current record.

Options​

LongValueDefaultDescription
--feed <name-or-key>text—For a deployment name: the feed to look it up in (name or folder key, from solution feeds list). Without --feed or --personal-workspace, a name is looked up across the feeds. Mutually exclusive with --personal-workspace.
--personal-workspaceflagoffFor a deployment name: look it up in your Personal Workspace feed instead of the tenant.
--login-validity <minutes>minutes10Minimum minutes before token expiration to trigger a refresh.

--personal-workspace, and --feed with a deployment name, require a user login; an External Application login is refused.

Examples​

# By deployment name
uip solution deploy status my-deployment

# By deployment key
uip solution deploy status a1b2c3d4-0000-0000-0000-000000000001

# By name, in your Personal Workspace feed
uip solution deploy status my-deployment --personal-workspace

# The pipeline deployment run that deploy run started
uip solution deploy status b2c3d4e5-0000-0000-0000-000000000001
# By deployment name
uip solution deploy status my-deployment

# By deployment key
uip solution deploy status a1b2c3d4-0000-0000-0000-000000000001

# By name, in your Personal Workspace feed
uip solution deploy status my-deployment --personal-workspace

# The pipeline deployment run that deploy run started
uip solution deploy status b2c3d4e5-0000-0000-0000-000000000001

Data shape (--output json)​

A deployment addressed by name or key returns Code: SolutionDeployment. This example is a deployment that is upgraded but not live yet:

{
  "Code": "SolutionDeployment",
  "Data": {
    "DeploymentKey": "a1b2c3d4-0000-0000-0000-000000000002",
    "Superseded": false,
    "CurrentDeploymentKey": "a1b2c3d4-0000-0000-0000-000000000002",
    "InstallDeploymentKey": "a1b2c3d4-0000-0000-0000-000000000001",
    "Name": "my-deployment",
    "PackageName": "my-package",
    "PackageVersion": "2.0.0",
    "NewPackageVersionAvailable": null,
    "Operation": "VersionChange",
    "OperationStatus": "Successful",
    "DeploymentStatus": "SuccessfulInstall",
    "ActivationStatus": "NeedsSetupToActivate",
    "Actions": ["SetupActivation", "Uninstall", "Upgrade"],
    "PendingResources": [
      {
        "Kind": "connection",
        "Name": "Outlook",
        "Type": "uipath-microsoft-outlook365",
        "Reason": "[CNS1072] You will need to authenticate this connection before proceeding further"
      }
    ],
    "NextSteps": [
      "Deployment 'my-deployment' is installed at version 2.0.0 but not live: it needs 'Setup activation' before it can be activated.",
      "Resources that need configuration: connection 'Outlook' (uipath-microsoft-outlook365): [CNS1072] You will need to authenticate this connection before proceeding further."
    ]
  }
}
{
  "Code": "SolutionDeployment",
  "Data": {
    "DeploymentKey": "a1b2c3d4-0000-0000-0000-000000000002",
    "Superseded": false,
    "CurrentDeploymentKey": "a1b2c3d4-0000-0000-0000-000000000002",
    "InstallDeploymentKey": "a1b2c3d4-0000-0000-0000-000000000001",
    "Name": "my-deployment",
    "PackageName": "my-package",
    "PackageVersion": "2.0.0",
    "NewPackageVersionAvailable": null,
    "Operation": "VersionChange",
    "OperationStatus": "Successful",
    "DeploymentStatus": "SuccessfulInstall",
    "ActivationStatus": "NeedsSetupToActivate",
    "Actions": ["SetupActivation", "Uninstall", "Upgrade"],
    "PendingResources": [
      {
        "Kind": "connection",
        "Name": "Outlook",
        "Type": "uipath-microsoft-outlook365",
        "Reason": "[CNS1072] You will need to authenticate this connection before proceeding further"
      }
    ],
    "NextSteps": [
      "Deployment 'my-deployment' is installed at version 2.0.0 but not live: it needs 'Setup activation' before it can be activated.",
      "Resources that need configuration: connection 'Outlook' (uipath-microsoft-outlook365): [CNS1072] You will need to authenticate this connection before proceeding further."
    ]
  }
}
FieldDescription
DeploymentKeyThe key that was requested.
Supersededtrue when a later operation replaced the requested record. The state fields then describe the current record, and NextSteps names the key to use. null when the chain of records could not be read.
CurrentDeploymentKeyKey of the deployment's current record.
InstallDeploymentKeyKey of the original install, stable across upgrades.
DeploymentStatusSuccessfulActivate when the version runs, SuccessfulInstall when it waits for activation or its setup.
ActivationStatusActivation state, for example Active, ReadyToActivate, or NeedsSetupToActivate. null when it could not be read.
ActionsOperations available on the deployment. null when they could not be read.
PendingResourcesResources that need configuration before activation. Present only when the deployment waits for setup.
NextStepsWhat is left before the deployment runs. Absent when it runs.

A pipeline deployment ID returns Code: SolutionDeployStatus with the run's progress:

{
  "Code": "SolutionDeployStatus",
  "Data": {
    "PipelineDeploymentId": "b2c3d4e5-0000-0000-0000-000000000001",
    "Status": "DeploymentSucceeded",
    "DeploymentKey": "a1b2c3d4-0000-0000-0000-000000000001",
    "ConfigurationKey": "...",
    "InstanceId": "c3d4e5f6-0000-0000-0000-000000000001",
    "DeploymentResult": {
      "Name": "my-deployment",
      "PackageName": "my-package",
      "PackageVersion": "1.0.0",
      "Status": "Successful",
      "StartDate": "2026-04-15T10:30:00Z",
      "EndDate": "2026-04-15T10:31:12Z",
      "Errors": null
    }
  }
}
{
  "Code": "SolutionDeployStatus",
  "Data": {
    "PipelineDeploymentId": "b2c3d4e5-0000-0000-0000-000000000001",
    "Status": "DeploymentSucceeded",
    "DeploymentKey": "a1b2c3d4-0000-0000-0000-000000000001",
    "ConfigurationKey": "...",
    "InstanceId": "c3d4e5f6-0000-0000-0000-000000000001",
    "DeploymentResult": {
      "Name": "my-deployment",
      "PackageName": "my-package",
      "PackageVersion": "1.0.0",
      "Status": "Successful",
      "StartDate": "2026-04-15T10:30:00Z",
      "EndDate": "2026-04-15T10:31:12Z",
      "Errors": null
    }
  }
}

The pipeline service tracks a run only while it is active. After the run ends, check the deployment by name or key instead.


uip solution deploy list​

List solution deployments. Shows deployment name, current/target package version, pending operation, activation status, and folder path.

Options​

LongValueDefaultDescription
--folder-path <path>path—Filter by the full path of the folder the deployment was installed into (for example Shared or Shared/Finance). Exact match, not case-sensitive; subfolders are not included. Applied server-side.
--folder-key <key>GUID—Filter by the key of the folder the deployment was installed into. Alternative to --folder-path. Applied server-side.
-l, --limit <number>number50Max deployments to fetch.
--offset <number>number0Number of deployments to skip.
--sort-by <column>textstartTimeColumn to sort by.
--sort-order <direction>Ascending | DescendingDescendingSort direction.
--operation-status <statuses>comma-separated—Server-side filter by operation status. One or more of Draft, Successful, Failed, InProgress, FailedRollback.
--activation-status <statuses>comma-separated—Server-side filter by activation status. One or more of None, Active, Inactive, ActivationFailed, DeactivationFailed, ReadyToActivate, NeedsSetupToActivate.
--personal-workspaceflagoffOnly list deployments from the current user's Personal Workspace feed. Mutually exclusive with --feed.
--feed <name-or-key>text—Only list deployments from this feed (name or folder key, from solution feeds list). Mutually exclusive with --personal-workspace.
--login-validity <minutes>minutes10Minimum minutes before token expiration to trigger a refresh.

Both --operation-status and --activation-status reject values outside these lists, and the error message lists the valid values.

Examples​

uip solution deploy list --limit 20 --folder-path "Shared/Production"

# Spot a pending in-place upgrade
uip solution deploy list --operation-status InProgress
uip solution deploy list --limit 20 --folder-path "Shared/Production"

# Spot a pending in-place upgrade
uip solution deploy list --operation-status InProgress

Data shape (--output json)​

{
  "Code": "SolutionDeployList",
  "Data": [
    {
      "Key": "a1b2c3d4-0000-0000-0000-000000000002",
      "InstallDeploymentKey": "b2c3d4e5-0000-0000-0000-000000000002",
      "Name": "billing-solution",
      "PackageName": "billing-solution",
      "PackageVersion": "1.0.0",
      "CurrentPackageVersion": "1.0.0",
      "TargetPackageVersion": "2.0.0",
      "NewPackageVersionAvailable": "2.0.0",
      "Operation": "VersionChange",
      "OperationStatus": "InProgress",
      "ActivationStatus": "Active",
      "FolderPath": "Shared/Billing",
      "FolderKey": "c3d4e5f6-0000-0000-0000-000000000002",
      "CreatedAt": "2026-04-15T10:30:00Z",
      "Actions": ["Upgrade"]
    }
  ],
  "Pagination": { "Returned": 1, "Limit": 10, "Offset": 0, "Total": 1 }
}
{
  "Code": "SolutionDeployList",
  "Data": [
    {
      "Key": "a1b2c3d4-0000-0000-0000-000000000002",
      "InstallDeploymentKey": "b2c3d4e5-0000-0000-0000-000000000002",
      "Name": "billing-solution",
      "PackageName": "billing-solution",
      "PackageVersion": "1.0.0",
      "CurrentPackageVersion": "1.0.0",
      "TargetPackageVersion": "2.0.0",
      "NewPackageVersionAvailable": "2.0.0",
      "Operation": "VersionChange",
      "OperationStatus": "InProgress",
      "ActivationStatus": "Active",
      "FolderPath": "Shared/Billing",
      "FolderKey": "c3d4e5f6-0000-0000-0000-000000000002",
      "CreatedAt": "2026-04-15T10:30:00Z",
      "Actions": ["Upgrade"]
    }
  ],
  "Pagination": { "Returned": 1, "Limit": 10, "Offset": 0, "Total": 1 }
}

Key is the value deploy upgrade and deploy status accept as a deployment key. NewPackageVersionAvailable is non-null when a newer published version exists than the one currently deployed. Actions lists operations currently available on the deployment (for example ["Upgrade"]).


uip solution deploy activate​

Activate a deployment that was installed without auto-activation. Activation provisions all solution components. activate first prints the pre-activate steps reported by Orchestrator (to stderr, via --log-level info), then calls activate and polls until a terminal state (SuccessfulActivate or FailedActivate).

Arguments​

  • <deployment-name> (required) — Name of the deployment to activate. Use deploy list to find deployment names.

Options​

  • --timeout <seconds> — Activation polling timeout. Defaults to 360.
  • --poll-interval <ms> — Milliseconds between status polls. Defaults to 5000.
  • --login-validity <minutes> — Defaults to 10.

Example​

uip solution deploy activate my-deployment
uip solution deploy activate my-deployment

Data shape (--output json)​

{
  "Code": "SolutionDeployActivate",
  "Data": {
    "Status": "SuccessfulActivate",
    "DeploymentName": "my-deployment",
    "InstanceId": "b2c3d4e5-0000-0000-0000-000000000001"
  }
}
{
  "Code": "SolutionDeployActivate",
  "Data": {
    "Status": "SuccessfulActivate",
    "DeploymentName": "my-deployment",
    "InstanceId": "b2c3d4e5-0000-0000-0000-000000000001"
  }
}

If Orchestrator reports no instanceId (nothing to poll), InstanceId is omitted and the command returns successfully.


uip solution deploy uninstall​

Uninstall a deployed solution. Removes all provisioned resources and the solution folder. This is a permanent operation — there is no undo.

Arguments​

  • <deployment-name> (required) — Name of the deployment to uninstall.

Options​

  • -y, --yes — Required. Confirms this irreversible operation — the CLI never prompts.
  • --timeout <seconds> — Uninstall polling timeout. Defaults to 360.
  • --poll-interval <ms> — Milliseconds between status polls. Defaults to 5000.
  • --login-validity <minutes> — Defaults to 10.

Example​

uip solution deploy uninstall my-deployment --yes
uip solution deploy uninstall my-deployment --yes

Data shape (--output json)​

{
  "Code": "SolutionDeployUninstall",
  "Data": {
    "Status": "SuccessfulUninstall",
    "DeploymentName": "my-deployment",
    "InstanceId": "b2c3d4e5-0000-0000-0000-000000000001"
  }
}
{
  "Code": "SolutionDeployUninstall",
  "Data": {
    "Status": "SuccessfulUninstall",
    "DeploymentName": "my-deployment",
    "InstanceId": "b2c3d4e5-0000-0000-0000-000000000001"
  }
}

Three success shapes are possible, distinguished by which fields appear:

  • Immediate — Orchestrator reports complete: true on the first call; no polling happens. Only Status/DeploymentName appear.
  • Scheduled — Orchestrator schedules the work without returning an instance ID; a Scheduled field is added.
  • Polled — an InstanceId is returned and the command polls it to completion, as shown above.

Failure modes​

  • Missing -y, --yes. The command refuses without confirming.
  • The deployment cannot be uninstalled in its state (inactive after an uninstall, superseded, or left by a failed install). When the record offers Delete, Instructions points to deploy delete.

uip solution deploy delete​

Delete a deployment record from the tenant. Use this for a deployment that deploy uninstall cannot remove: one left inactive after an uninstall, one superseded by a newer version, or one left behind by a failed install. Orchestrator refuses to uninstall those with error 4007.

The command finds the deployment by name across the feeds, then reads its available actions. When the record lists actions but not Delete, the command refuses and names the state and the actions that are available. When the record lists no actions, the request goes to the server, which decides.

Arguments​

  • <deployment-name> (required) — Name of the deployment to delete. Use deploy list to find deployment names.

Options​

  • -y, --yes — Required. Confirms this irreversible operation; the CLI never prompts.
  • --login-validity <minutes> — Defaults to 10.

Example​

uip solution deploy delete my-deployment --yes
uip solution deploy delete my-deployment --yes

Data shape (--output json)​

{
  "Code": "SolutionDeployDelete",
  "Data": {
    "Status": "Deleted",
    "DeploymentName": "my-deployment",
    "DeploymentKey": "a1b2c3d4-0000-0000-0000-000000000001"
  }
}
{
  "Code": "SolutionDeployDelete",
  "Data": {
    "Status": "Deleted",
    "DeploymentName": "my-deployment",
    "DeploymentKey": "a1b2c3d4-0000-0000-0000-000000000001"
  }
}

Failure modes​

  • Missing -y, --yes. The command refuses without confirming.
  • No deployment with that name. Refused.
  • The deployment offers Uninstall but not Delete. Refused. Run deploy uninstall <deployment-name> --yes first, then retry the delete.
  • An operation is in progress on the deployment. Refused. Wait for the operation to finish, then retry.

uip solution deploy config get​

Fetch the default deployment configuration for a published solution package. The config lists every resource the solution will create (queues, assets, processes, buckets, connections, ...) with their default settings. Save it to a file (-d), customize with config set / config link, then pass it to deploy run --config-file.

Arguments​

  • <package-name> (required) — Solution package name. Use packages list.

Options​

LongValueDefaultDescription
--package-version <version>textlatestPackage version.
-d, --destination <path>pathstdoutWrite the configuration to this file instead of stdout.
--format <format>json | yamljsonConfiguration format.
--login-validity <minutes>minutes10Minimum minutes before token expiration to trigger a refresh.

Example​

uip solution deploy config get my-package --package-version 1.0.0 -d ./deploy-config.json

# YAML format
uip solution deploy config get my-package -d ./deploy-config.yaml --format yaml
uip solution deploy config get my-package --package-version 1.0.0 -d ./deploy-config.json

# YAML format
uip solution deploy config get my-package -d ./deploy-config.yaml --format yaml

Data shape (--output json)​

When -d is provided:

{
  "Code": "SolutionDeployConfig",
  "Data": {
    "Status": "Configuration written",
    "OutputPath": "/workspace/deploy-config.json",
    "PackageName": "my-package",
    "PackageVersion": "1.0.0",
    "State": "Ready",
    "Format": "json"
  }
}
{
  "Code": "SolutionDeployConfig",
  "Data": {
    "Status": "Configuration written",
    "OutputPath": "/workspace/deploy-config.json",
    "PackageName": "my-package",
    "PackageVersion": "1.0.0",
    "State": "Ready",
    "Format": "json"
  }
}

When -d is omitted, the configuration is embedded in the response:

{
  "Code": "SolutionDeployConfig",
  "Data": {
    "PackageName": "my-package",
    "PackageVersion": "1.0.0",
    "State": "Ready",
    "Format": "json",
    "Configuration": { "resources": [ "..." ] }
  }
}
{
  "Code": "SolutionDeployConfig",
  "Data": {
    "PackageName": "my-package",
    "PackageVersion": "1.0.0",
    "State": "Ready",
    "Format": "json",
    "Configuration": { "resources": [ "..." ] }
  }
}

uip solution deploy config set​

Edit a resource property in a deploy config file. The file stays local until you pass it to deploy run --config-file.

Arguments​

  • <file> (required) — Path to the deploy config JSON file (produced by config get).
  • <args...> (required) — Depends on --all:
    • Without --all: <resource> <property> <value> — e.g. MyQueue maxNumberOfRetries 5.
    • With --all: <property> <value> — applies to every resource in the file. Only valid for the top-level conflictFixingAction property.

Options​

  • --all — Apply the property to all resources in the file. Only permitted with conflictFixingAction (e.g. UseExisting).

Examples​

Change retries on a single queue​
uip solution deploy config set ./deploy-config.json MyQueue maxNumberOfRetries 5
uip solution deploy config set ./deploy-config.json MyQueue maxNumberOfRetries 5
Set a conflict-fixing policy on every resource​
uip solution deploy config set ./deploy-config.json --all conflictFixingAction UseExisting
uip solution deploy config set ./deploy-config.json --all conflictFixingAction UseExisting

Data shape (--output json)​

Single-resource update:

{
  "Code": "DeployConfigSet",
  "Data": {
    "Resource": "MyQueue",
    "Property": "maxNumberOfRetries",
    "OldValue": 1,
    "NewValue": 5
  }
}
{
  "Code": "DeployConfigSet",
  "Data": {
    "Resource": "MyQueue",
    "Property": "maxNumberOfRetries",
    "OldValue": 1,
    "NewValue": 5
  }
}

Bulk update (--all):

{
  "Code": "DeployConfigSet",
  "Data": {
    "Resource": "all",
    "Property": "conflictFixingAction",
    "NewValue": "UseExisting",
    "ResourceCount": 12
  }
}
{
  "Code": "DeployConfigSet",
  "Data": {
    "Resource": "all",
    "Property": "conflictFixingAction",
    "NewValue": "UseExisting",
    "ResourceCount": 12
  }
}

Link a solution resource to an existing Orchestrator resource, so the deployment reuses it instead of creating a new one. Changes are local — apply them by passing the file to deploy run --config-file.

Arguments​

  • <file> (required) — Path to the deploy config JSON file.
  • <resource> (required) — Resource name or resourceKey from the config file.

Options​

  • -n, --name <name> (required) — Name of the existing Orchestrator resource to link to.
  • --folder-path <path> — Orchestrator folder path where the existing resource lives.

Example​

uip solution deploy config link ./deploy-config.json MyQueue \
  --name ProductionQueue \
  --folder-path "Shared/Production"
uip solution deploy config link ./deploy-config.json MyQueue \
  --name ProductionQueue \
  --folder-path "Shared/Production"

Data shape (--output json)​

{
  "Code": "DeployConfigLink",
  "Data": {
    "Resource": "MyQueue",
    "LinkedTo": {
      "name": "ProductionQueue",
      "folderPath": "Shared/Production"
    }
  }
}
{
  "Code": "DeployConfigLink",
  "Data": {
    "Resource": "MyQueue",
    "LinkedTo": {
      "name": "ProductionQueue",
      "folderPath": "Shared/Production"
    }
  }
}

Remove a link set with config link. On the next deploy run --config-file, the resource is created instead of reused.

Arguments​

  • <file> (required) — Path to the deploy config JSON file.
  • <resource> (required) — Resource name or resourceKey to unlink.

Example​

uip solution deploy config unlink ./deploy-config.json MyQueue
uip solution deploy config unlink ./deploy-config.json MyQueue

Data shape (--output json)​

{
  "Code": "DeployConfigUnlink",
  "Data": {
    "Resource": "MyQueue",
    "UnlinkedFrom": "ProductionQueue"
  }
}
{
  "Code": "DeployConfigUnlink",
  "Data": {
    "Resource": "MyQueue",
    "UnlinkedFrom": "ProductionQueue"
  }
}

Failure modes​

  • Resource not currently linked. The command refuses the unlink and points to config link.

See also​

Was this page helpful?

Connect

Need help? Support(opens in new window)

Want to learn? UiPath Academy(opens in new window)

Have questions? UiPath Forum(opens in new window)

Stay updated