- Overview
- Get started
- Concepts
- Using UiPath CLI
- How-to guides
- CI/CD recipes
- Command reference
- Overview
- Exit codes
- Global options
- uip codedagent
- uip coder
- uip context-grounding
- uip docsai
- uip function
- uip guardrails
- uip llm-configuration
- uip llm-gateway
- uip model-hub
- add-test-data-entity
- add-test-data-queue
- add-test-data-variation
- analyze
- build
- create-project
- diff
- find-activities
- get-analyzer-rules
- get-default-activity-xaml
- get-errors
- get-manual-test-cases
- get-manual-test-steps
- get-library-object-repository
- get-object-repository
- get-versions
- get-workflow-example
- indicate-application
- indicate-element
- inspect-package
- install-data-fabric-entities
- install-or-update-packages
- list-data-fabric-entities
- list-instances
- list-workflow-examples
- pack
- publish
- remote
- restore
- run, debug & execution
- run-file
- search-templates
- start-studio
- stop-execution
- tm
- uia
- uip tasks
- uip traces
- uip traces feedback
- Migration
- Reference & support
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.
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.
| Subcommand | Purpose |
|---|---|
run | Install a deployment from a published package. |
upgrade | Move an existing deployment to another published version of its package, in place. |
status | Check the state of a deployment, by name or key, or the progress of a pipeline deployment run. |
list | List existing deployments. |
activate | Activate a deployment that was installed without auto-activation. |
uninstall | Remove a deployment and its provisioned resources. |
delete | Delete a deployment record that uninstall cannot remove. |
config get | Fetch the default deployment configuration for a package. |
config set | Set a resource property in a deploy config file. |
config link | Link a solution resource to an existing Orchestrator resource. |
config unlink | Remove 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
| Long | Value | Default | Description |
|---|---|---|---|
-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-workspace | flag | off | Deploy 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> | text | tenant feed | Deploy 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-activate | flag | off | Skip auto-activation; leave the deployment in Inactive (Ready to activate) state. Activate later with deploy activate. |
-y, --yes | flag | off | Deploy 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> | seconds | 360 | Polling timeout applied per phase — deploy, and (when not skipped) activate. |
--poll-interval <ms> | ms | 5000 | Milliseconds between status polls during the deploy and activate phases. |
--login-validity <minutes> | minutes | 10 | Minimum 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, --yesis passed. Usedeploy upgradeto move the existing deployment to a new version, or pass--yeswith a different--nameto install a second, separate copy. - Validation failed. The run ends at
ValidationFailedand 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,Instructionsalso names thedeploy upgrade <deployment-key> --discard-draft --version <version>command that discards the draft and upgrades the live version instead. --namehas a pending draft for another version. Refused. Re-run with the draft's--package-versionto retry the draft, or discard it withdeploy upgrade --discard-draft.--nameexists, bound to a different--package-name. Fails outright — a deployment name cannot switch packages viadeploy run.- A deployment for
--nameis 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, asdeploy listreports it (Key), or a storedInstallDeploymentKey. The deployment's name, package, current version, and feed are read from the server, so--package-nameand--personal-workspaceare not needed. Use either this or--namewith--package-name.
Options
| Long | Value | Default | Description |
|---|---|---|---|
-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> | text | newest published | Target package version. Any published version of the same package is accepted, including an older one. An empty value is refused. |
--personal-workspace | flag | off | With --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-draft | flag | off | When 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-wait | flag | off | Return as soon as the upgrade is accepted, instead of waiting for it to finish. |
--timeout <seconds> | seconds | 300 | Seconds to wait for the upgrade to finish. |
--poll-interval <ms> | ms | 5000 | Milliseconds between status polls. |
--login-validity <minutes> | minutes | 10 | Minimum 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"
}
}
| Field | Description |
|---|---|
Status | Terminal pipeline status (DeploymentSucceeded), or Accepted when --no-wait returned before the upgrade finished. |
Operation | What the server did: VersionChange for a version move, or ConfigurationChange when the requested version was already deployed. Absent with --no-wait. |
DeploymentStatus | SuccessfulActivate 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. |
Actions | Operations available on the deployment next (for example SetupActivation, Uninstall, Upgrade). |
ActivationStatus, PendingResources, NextSteps | Present when the new version does not run yet, for example ActivationStatus: NeedsSetupToActivate with the resources that need configuration. Same shape as deploy run. |
FromVersion | Version deployed before the upgrade. Key form only. |
ToVersion | Version the upgrade targeted. |
PipelineDeploymentId | ID of the pipeline run that performs the upgrade. Pass it to deploy status. |
DeploymentKey | Key of the upgraded deployment record. Absent with --no-wait. |
InstallDeploymentKey | Key of the original install. It stays the same across upgrades, so it is the key to store. Key form only. |
DiscardedDraftKey | Key of the pending draft that --discard-draft deleted. Present only when one was discarded. |
Failure modes
- Both a key and
--namepassed, or--namewithout--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 runto deploy the package again. - The deployment has a pending draft. Refused unless
--discard-draftis 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
1and reports the errors. The deployment stays on the version it was already running. When the failure left a pending draft,Instructionsnames the--discard-draftcommand to retry with. - Timeout. The upgrade did not finish within
--timeout. It may still be running; check it withdeploy 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
| Long | Value | Default | Description |
|---|---|---|---|
--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-workspace | flag | off | For a deployment name: look it up in your Personal Workspace feed instead of the tenant. |
--login-validity <minutes> | minutes | 10 | Minimum 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."
]
}
}
| Field | Description |
|---|---|
DeploymentKey | The key that was requested. |
Superseded | true 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. |
CurrentDeploymentKey | Key of the deployment's current record. |
InstallDeploymentKey | Key of the original install, stable across upgrades. |
DeploymentStatus | SuccessfulActivate when the version runs, SuccessfulInstall when it waits for activation or its setup. |
ActivationStatus | Activation state, for example Active, ReadyToActivate, or NeedsSetupToActivate. null when it could not be read. |
Actions | Operations available on the deployment. null when they could not be read. |
PendingResources | Resources that need configuration before activation. Present only when the deployment waits for setup. |
NextSteps | What 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
| Long | Value | Default | Description |
|---|---|---|---|
--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> | number | 50 | Max deployments to fetch. |
--offset <number> | number | 0 | Number of deployments to skip. |
--sort-by <column> | text | startTime | Column to sort by. |
--sort-order <direction> | Ascending | Descending | Descending | Sort 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-workspace | flag | off | Only 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> | minutes | 10 | Minimum 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. Usedeploy listto find deployment names.
Options
--timeout <seconds>— Activation polling timeout. Defaults to360.--poll-interval <ms>— Milliseconds between status polls. Defaults to5000.--login-validity <minutes>— Defaults to10.
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 to360.--poll-interval <ms>— Milliseconds between status polls. Defaults to5000.--login-validity <minutes>— Defaults to10.
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: trueon the first call; no polling happens. OnlyStatus/DeploymentNameappear. - Scheduled — Orchestrator schedules the work without returning an instance ID; a
Scheduledfield is added. - Polled — an
InstanceIdis 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,Instructionspoints todeploy 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. Usedeploy listto find deployment names.
Options
-y, --yes— Required. Confirms this irreversible operation; the CLI never prompts.--login-validity <minutes>— Defaults to10.
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
Uninstallbut notDelete. Refused. Rundeploy uninstall <deployment-name> --yesfirst, 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. Usepackages list.
Options
| Long | Value | Default | Description |
|---|---|---|---|
--package-version <version> | text | latest | Package version. |
-d, --destination <path> | path | stdout | Write the configuration to this file instead of stdout. |
--format <format> | json | yaml | json | Configuration format. |
--login-validity <minutes> | minutes | 10 | Minimum 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 byconfig 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-levelconflictFixingActionproperty.
- Without
Options
--all— Apply the property to all resources in the file. Only permitted withconflictFixingAction(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
}
}
uip solution deploy config link
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 orresourceKeyfrom 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"
}
}
}
uip solution deploy config unlink
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 orresourceKeyto 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.
Related commands
uip solution publish— required step beforedeploy run.uip solution packages list— discover package names and versions.uip or— inspect or create the Orchestrator resources thatdeploy config linkreferences.
See also
- Your first pipeline — pack → publish → deploy run walkthrough.
- Authentication and Configuration — session setup and per-tenant defaults.
uip solutionoverview.
- Typical workflow
- uip solution deploy run
- Synopsis
- Options
- Examples
- Data shape (--output json)
- Timeout behaviour
- Failure modes
- uip solution deploy upgrade
- Synopsis
- Arguments
- Options
- Examples
- Data shape (--output json)
- Failure modes
- uip solution deploy status
- Arguments
- Options
- Examples
- Data shape (--output json)
- uip solution deploy list
- Options
- Examples
- Data shape (--output json)
- uip solution deploy activate
- Arguments
- Options
- Example
- Data shape (--output json)
- uip solution deploy uninstall
- Arguments
- Options
- Example
- Data shape (--output json)
- Failure modes
- uip solution deploy delete
- Arguments
- Options
- Example
- Data shape (--output json)
- Failure modes
- uip solution deploy config get
- Arguments
- Options
- Example
- Data shape (--output json)
- uip solution deploy config set
- Arguments
- Options
- Examples
- Data shape (--output json)
- uip solution deploy config link
- Arguments
- Options
- Example
- Data shape (--output json)
- uip solution deploy config unlink
- Arguments
- Example
- Data shape (--output json)
- Failure modes
- Related commands
- See also