UiPath Documentation
uipath-cli
latest
false
UiPath CLI user guide

uip tm project

Syntax and options for `uip tm project`, which manages Test Manager projects, the tenant default project, project settings, and whole-project export and import as .tmh packages.

uip tm project manages Test Manager projects on the current tenant. A Test Manager project is the top-level container for requirements, test cases, test sets, and executions; project-scoped uip tm commands take --project-key or --project-id to select a project. When you pass both, --project-id is used.

The same group reads and sets the tenant default project, reads and updates project settings, and copies a whole project out to a .tmh package or in from one with export and import. Test Manager runs export and import as background migration jobs, which uip tm migration inspects and downloads.

Synopsis​

uip tm project list [--filter <text>] [--limit <number>] [--offset <number>]
uip tm project get-default
uip tm project create --name <name> --project-key <key> [--description <text>]
uip tm project update --project-key <key> [--name <name>] [--description <text>] [--set-default]
uip tm project delete --project-key <key> -y
uip tm project set-default-folder (--project-key <key> | --project-id <id>) --folder-key <uuid>
uip tm project clear-default-folder (--project-key <key> | --project-id <id>)
uip tm project owners list --project-key <key...>
uip tm project settings get (--project-key <key> | --project-id <id>)
uip tm project settings update (--project-key <key> | --project-id <id>) [--time-zone <iana-name>] [--execution-name-format <template>]
uip tm project export (--project-key <key> | --project-id <id>) [--include <content...>] [--exclude <content...>] [--wait --output-file <path> [--overwrite] [--timeout <seconds>] [--poll-interval <seconds>]]
uip tm project import (--project-key <key> | --project-id <id> | --create-project [--new-project-name <name>] [--new-project-key <key>]) --file <path> [--include <content...>] [--exclude <content...>] [--wait [--timeout <seconds>] [--poll-interval <seconds>]]
uip tm project list [--filter <text>] [--limit <number>] [--offset <number>]
uip tm project get-default
uip tm project create --name <name> --project-key <key> [--description <text>]
uip tm project update --project-key <key> [--name <name>] [--description <text>] [--set-default]
uip tm project delete --project-key <key> -y
uip tm project set-default-folder (--project-key <key> | --project-id <id>) --folder-key <uuid>
uip tm project clear-default-folder (--project-key <key> | --project-id <id>)
uip tm project owners list --project-key <key...>
uip tm project settings get (--project-key <key> | --project-id <id>)
uip tm project settings update (--project-key <key> | --project-id <id>) [--time-zone <iana-name>] [--execution-name-format <template>]
uip tm project export (--project-key <key> | --project-id <id>) [--include <content...>] [--exclude <content...>] [--wait --output-file <path> [--overwrite] [--timeout <seconds>] [--poll-interval <seconds>]]
uip tm project import (--project-key <key> | --project-id <id> | --create-project [--new-project-name <name>] [--new-project-key <key>]) --file <path> [--include <content...>] [--exclude <content...>] [--wait [--timeout <seconds>] [--poll-interval <seconds>]]

All verbs honor the global options and the standard exit codes. Every verb accepts --log-level <level> for verbosity (debug, info, warn, error; default Information).

uip tm project list​

List the Test Manager projects on the current tenant. IsDefault is true on the tenant default project.

Arguments​

None.

Options​

FlagDescription
--filter <text>Filter projects by name.
--limit <number>Maximum number of projects to return per page. Defaults to 50.
--offset <number>Number of results to skip. Defaults to 0.

Example​

uip tm project list --limit 20 --offset 0
uip tm project list --limit 20 --offset 0

Data shape​

{
  "Code": "ProjectsList",
  "Data": [
    {
      "Id": "a1b2c3d4-0000-0000-0000-000000000001",
      "ProjectKey": "DEMO",
      "Name": "Demo Project",
      "Description": "Smoke tests",
      "Active": true,
      "AuthorizationEnabled": false,
      "SapConfigured": false,
      "Created": "2025-01-01T00:00:00Z",
      "CreatedBy": "alice@example.com",
      "Updated": "2025-06-01T00:00:00Z",
      "UpdatedBy": "bob@example.com",
      "IsDefault": true
    }
  ]
}
{
  "Code": "ProjectsList",
  "Data": [
    {
      "Id": "a1b2c3d4-0000-0000-0000-000000000001",
      "ProjectKey": "DEMO",
      "Name": "Demo Project",
      "Description": "Smoke tests",
      "Active": true,
      "AuthorizationEnabled": false,
      "SapConfigured": false,
      "Created": "2025-01-01T00:00:00Z",
      "CreatedBy": "alice@example.com",
      "Updated": "2025-06-01T00:00:00Z",
      "UpdatedBy": "bob@example.com",
      "IsDefault": true
    }
  ]
}

uip tm project get-default​

Get the tenant default Test Manager project. If the tenant has no default project, the command creates one and returns it.

The default project is the one project list marks with IsDefault: true. When you run tests without specifying a project, Test Manager stores the results in the default project, as described in Run without a project. To make a different project the default, use project update --set-default.

Creating the default project needs a Test Manager license, the TM.Projects scope, and the tenant Project.Create permission. If a default project exists that you cannot open, the command fails with a permission error; ask a Test Manager administrator for access, or use a project from project list.

Arguments​

None.

Options​

None.

Example​

uip tm project get-default
uip tm project get-default

Data shape​

{
  "Code": "ProjectGetDefault",
  "Data": {
    "Id": "a1b2c3d4-0000-0000-0000-000000000001",
    "ProjectKey": "DEMO",
    "Name": "Default Project",
    "Description": "Default project for automated test executions.",
    "Active": true,
    "AuthorizationEnabled": true,
    "SapConfigured": false,
    "Created": "2026-10-01T00:00:00Z",
    "CreatedBy": "alice@example.com",
    "Updated": "2026-10-01T00:00:00Z",
    "UpdatedBy": "alice@example.com",
    "IsDefault": true
  }
}
{
  "Code": "ProjectGetDefault",
  "Data": {
    "Id": "a1b2c3d4-0000-0000-0000-000000000001",
    "ProjectKey": "DEMO",
    "Name": "Default Project",
    "Description": "Default project for automated test executions.",
    "Active": true,
    "AuthorizationEnabled": true,
    "SapConfigured": false,
    "Created": "2026-10-01T00:00:00Z",
    "CreatedBy": "alice@example.com",
    "Updated": "2026-10-01T00:00:00Z",
    "UpdatedBy": "alice@example.com",
    "IsDefault": true
  }
}

uip tm project create​

Create a Test Manager project. The new project is active.

Arguments​

None.

Options​

FlagDescription
--name <name>Required. Project name.
--project-key <key>Required. Project key, the prefix of every object key in the project. For example, object keys in project DEMO look like DEMO:1.
--description <text>Free-form project description. Defaults to empty.

Example​

uip tm project create \
  --name "Demo Project" \
  --project-key DEMO \
  --description "Smoke tests"
uip tm project create \
  --name "Demo Project" \
  --project-key DEMO \
  --description "Smoke tests"

Data shape​

{
  "Code": "ProjectCreate",
  "Data": {
    "ProjectKey": "DEMO",
    "Id": "a1b2c3d4-0000-0000-0000-000000000001",
    "Name": "Demo Project",
    "Description": "Smoke tests",
    "IsDefault": false
  }
}
{
  "Code": "ProjectCreate",
  "Data": {
    "ProjectKey": "DEMO",
    "Id": "a1b2c3d4-0000-0000-0000-000000000001",
    "Name": "Demo Project",
    "Description": "Smoke tests",
    "IsDefault": false
  }
}

uip tm project update​

Update a project's name or description, make it the tenant default project, or both. Fields you omit keep their current values.

Arguments​

None.

Options​

FlagDescription
--project-key <key>Required. The project to update.
--name <name>New name.
--description <text>New description.
--set-defaultMake this project the tenant default project, the one get-default returns. Who can open the project does not change. A user needs to be a tenant administrator; an external application needs the TM.Administration and TM.Projects scopes.

With --set-default and --name or --description, the rename runs first. If setting the default then fails, the error message states that the project was updated but did not become the default.

Examples​

# Rename a project
uip tm project update --project-key DEMO --name "Demo Project (2026)"

# Make a project the tenant default
uip tm project update --project-key DEMO --set-default
# Rename a project
uip tm project update --project-key DEMO --name "Demo Project (2026)"

# Make a project the tenant default
uip tm project update --project-key DEMO --set-default

Data shape​

{
  "Code": "ProjectUpdate",
  "Data": {
    "ProjectKey": "DEMO",
    "Id": "a1b2c3d4-0000-0000-0000-000000000001",
    "Name": "Demo Project (2026)",
    "Description": "Smoke tests",
    "IsDefault": false
  }
}
{
  "Code": "ProjectUpdate",
  "Data": {
    "ProjectKey": "DEMO",
    "Id": "a1b2c3d4-0000-0000-0000-000000000001",
    "Name": "Demo Project (2026)",
    "Description": "Smoke tests",
    "IsDefault": false
  }
}

uip tm project delete​

Delete a Test Manager project by its key. Deletion is permanent and removes the project's test cases, test sets, and execution history.

Arguments​

None.

Options​

FlagDescription
--project-key <key>Required. The project to delete.
-y, --yesRequired. Confirms the irreversible operation. The CLI never prompts; without --yes the command returns Result: "Failure" and exits 1.

Example​

uip tm project delete --project-key DEMO --yes
uip tm project delete --project-key DEMO --yes

Data shape​

{
  "Code": "ProjectDelete",
  "Data": {
    "ProjectKey": "DEMO",
    "Id": "a1b2c3d4-0000-0000-0000-000000000001",
    "Result": "Deleted"
  }
}
{
  "Code": "ProjectDelete",
  "Data": {
    "ProjectKey": "DEMO",
    "Id": "a1b2c3d4-0000-0000-0000-000000000001",
    "Result": "Deleted"
  }
}

uip tm project set-default-folder​

Set the default Orchestrator folder for the project. Test sets created afterwards inherit this folder unless you set another one.

Arguments​

None.

Options​

FlagDescription
--project-key <key>Test Manager project key. Pass this or --project-id.
--project-id <id>Test Manager project ID. Use instead of --project-key. When you pass both, --project-id is used.
--folder-key <uuid>Required. Orchestrator folder key (UUID). Get it from uip or folders list.

Example​

uip tm project set-default-folder \
  --project-key DEMO \
  --folder-key f0f0f0f0-0000-0000-0000-000000000001
uip tm project set-default-folder \
  --project-key DEMO \
  --folder-key f0f0f0f0-0000-0000-0000-000000000001

Data shape​

{
  "Code": "ProjectSetDefaultFolder",
  "Data": {
    "ProjectKey": "DEMO",
    "FolderKey": "f0f0f0f0-0000-0000-0000-000000000001",
    "Result": "Updated"
  }
}
{
  "Code": "ProjectSetDefaultFolder",
  "Data": {
    "ProjectKey": "DEMO",
    "FolderKey": "f0f0f0f0-0000-0000-0000-000000000001",
    "Result": "Updated"
  }
}

ProjectKey is returned with --project-id too.

uip tm project clear-default-folder​

Remove the default Orchestrator folder from a project. After clearing, new test sets do not inherit a folder automatically.

Arguments​

None.

Options​

FlagDescription
--project-key <key>Test Manager project key. Pass this or --project-id.
--project-id <id>Test Manager project ID. Use instead of --project-key. When you pass both, --project-id is used.

Example​

uip tm project clear-default-folder --project-key DEMO
uip tm project clear-default-folder --project-key DEMO

Data shape​

{
  "Code": "ProjectClearDefaultFolder",
  "Data": {
    "ProjectKey": "DEMO",
    "Result": "Cleared"
  }
}
{
  "Code": "ProjectClearDefaultFolder",
  "Data": {
    "ProjectKey": "DEMO",
    "Result": "Cleared"
  }
}

uip tm project owners list​

List the owners of one or more Test Manager projects in a single call.

Arguments​

None.

Options​

FlagDescription
--project-key <key...>Required. One or more project keys, space-separated or with the flag repeated.

Examples​

# List owners of a single project
uip tm project owners list --project-key DEMO

# List owners of two projects in one call
uip tm project owners list --project-key DEMO DEMO2
# List owners of a single project
uip tm project owners list --project-key DEMO

# List owners of two projects in one call
uip tm project owners list --project-key DEMO DEMO2

Data shape​

{
  "Code": "ProjectOwnersList",
  "Data": [
    {
      "ProjectKey": "DEMO",
      "ProjectId": "a1b2c3d4-0000-0000-0000-000000000001",
      "Owners": [
        {
          "Identifier": "b2c3d4e5-0000-0000-0000-000000000001",
          "LocalIdentifier": "c3d4e5f6-0000-0000-0000-000000000001",
          "IdentityName": "jane.doe@example.com",
          "DisplayName": "Jane Doe",
          "Email": "jane.doe@example.com",
          "FirstName": "Jane",
          "LastName": "Doe",
          "ObjectType": "user",
          "Source": "AzureAD"
        }
      ]
    },
    {
      "ProjectKey": "DEMO2",
      "ProjectId": "a2b3c4d5-0000-0000-0000-000000000002",
      "Owners": []
    }
  ]
}
{
  "Code": "ProjectOwnersList",
  "Data": [
    {
      "ProjectKey": "DEMO",
      "ProjectId": "a1b2c3d4-0000-0000-0000-000000000001",
      "Owners": [
        {
          "Identifier": "b2c3d4e5-0000-0000-0000-000000000001",
          "LocalIdentifier": "c3d4e5f6-0000-0000-0000-000000000001",
          "IdentityName": "jane.doe@example.com",
          "DisplayName": "Jane Doe",
          "Email": "jane.doe@example.com",
          "FirstName": "Jane",
          "LastName": "Doe",
          "ObjectType": "user",
          "Source": "AzureAD"
        }
      ]
    },
    {
      "ProjectKey": "DEMO2",
      "ProjectId": "a2b3c4d5-0000-0000-0000-000000000002",
      "Owners": []
    }
  ]
}

uip tm project settings get​

Show the settings of a Test Manager project.

Arguments​

None.

Options​

FlagDescription
--project-key <key>Test Manager project key. Pass this or --project-id.
--project-id <id>Test Manager project ID. Use instead of --project-key. When you pass both, --project-id is used.

Example​

uip tm project settings get --project-key DEMO
uip tm project settings get --project-key DEMO

Data shape​

{
  "Code": "ProjectSettingsGet",
  "Data": {
    "Id": "d1e2f3a4-0000-0000-0000-000000000001",
    "ProjectId": "a1b2c3d4-0000-0000-0000-000000000001",
    "ProjectKey": "DEMO",
    "TimeZone": "Europe/Bucharest",
    "ExecutionNameFormat": "{Execution.Type} - {TestSet.Name} - {Execution.StartTime|yyyyMMdd.HHmmss}",
    "MaxNumberOfTestSteps": 250,
    "FolderKey": null,
    "GovernanceEnabled": false,
    "GovernanceSettings": null
  }
}
{
  "Code": "ProjectSettingsGet",
  "Data": {
    "Id": "d1e2f3a4-0000-0000-0000-000000000001",
    "ProjectId": "a1b2c3d4-0000-0000-0000-000000000001",
    "ProjectKey": "DEMO",
    "TimeZone": "Europe/Bucharest",
    "ExecutionNameFormat": "{Execution.Type} - {TestSet.Name} - {Execution.StartTime|yyyyMMdd.HHmmss}",
    "MaxNumberOfTestSteps": 250,
    "FolderKey": null,
    "GovernanceEnabled": false,
    "GovernanceSettings": null
  }
}

settings update changes only TimeZone and ExecutionNameFormat. To change FolderKey, use set-default-folder. The other fields are read-only through the CLI.

uip tm project settings update​

Update a project's time zone, its execution name format, or both.

Arguments​

None.

Options​

FlagDescription
--project-key <key>Test Manager project key. Pass this or --project-id.
--project-id <id>Test Manager project ID. Use instead of --project-key. When you pass both, --project-id is used.
--time-zone <iana-name>Project time zone as an IANA name, for example Europe/Bucharest or UTC. Windows time zone names such as Romance Standard Time are rejected.
--execution-name-format <template>Template for generated test execution names. Default: {Execution.Type} - {TestSet.Name} - {Execution.StartTime|yyyyMMdd.HHmmss}.

Pass --time-zone, --execution-name-format, or both. Passing neither fails with Result: "ValidationError" and ErrorCode: "invalid_argument", and sends no request.

The execution name template supports these placeholders. Text outside braces is literal.

PlaceholderValue
{TestSet.Name}Test set name.
{Execution.Type}manual, automated, autonomous, exploratory, or unspecified.
{Execution.StartTime}Start time. Add a .NET date format after a pipe, for example {Execution.StartTime|yyyyMMdd.HHmmss}.
{TestSet.<custom field name>}Value of a test set custom field.

A template longer than 1024 characters is rejected. A shorter template whose rendered name is longer than 1024 characters is truncated with ....

Examples​

uip tm project settings update --project-id a1b2c3d4-0000-0000-0000-000000000001 --time-zone Europe/Bucharest

uip tm project settings update --project-key DEMO --time-zone UTC --execution-name-format "{TestSet.Name} - {Execution.StartTime|yyyyMMdd}"
uip tm project settings update --project-id a1b2c3d4-0000-0000-0000-000000000001 --time-zone Europe/Bucharest

uip tm project settings update --project-key DEMO --time-zone UTC --execution-name-format "{TestSet.Name} - {Execution.StartTime|yyyyMMdd}"

Data shape​

{
  "Code": "ProjectSettingsUpdate",
  "Data": {
    "ProjectId": "a1b2c3d4-0000-0000-0000-000000000001",
    "TimeZone": "Europe/Bucharest",
    "Result": "Updated"
  }
}
{
  "Code": "ProjectSettingsUpdate",
  "Data": {
    "ProjectId": "a1b2c3d4-0000-0000-0000-000000000001",
    "TimeZone": "Europe/Bucharest",
    "Result": "Updated"
  }
}

ProjectKey is present when you pass --project-key. TimeZone and ExecutionNameFormat are present when you set them. The time zone is applied first, in its own request: when the time zone update fails, the execution name format isn't changed, and when the execution name format is then rejected, the new time zone stays applied and the error message says so.

uip tm project export​

Export a project to a .tmh package. Test Manager builds the package in a background migration job and sends no completion notification. Without --wait, the command returns the job and you check it with migration get, then fetch the package with migration download. With --wait, the command polls until the job finishes and writes the package to --output-file.

The package holds the project's requirements, test cases, test sets, labels, custom field values, attachments, and executions. --include and --exclude switch the optional content in the following table.

ContentDefaultAdds
automationIncludedAutomation information linked to test cases.
governanceExcludedGovernance information.
project-configExcludedProject configuration. Needs a Test Cloud tenant; other tenants reject it with HTTP 403.
promptsExcludedUser-defined prompts from the project prompt library.

Arguments​

None.

Options​

FlagDescription
--project-key <key>Test Manager project key. Pass this or --project-id.
--project-id <id>Test Manager project ID. Use instead of --project-key. When you pass both, --project-id is used.
--include <content...>Content to add to the package, space-separated: governance, project-config, prompts, automation.
--exclude <content...>Content to leave out of the package, space-separated, from the same set. Naming the same content in --include and --exclude is refused.
--waitPoll until the export finishes, then download the package to --output-file.
--output-file <path>Where to write the .tmh package. Required with --wait. The parent directory must exist.
--overwriteReplace --output-file if it already exists. Without it, an existing file is refused before the export starts.
--timeout <seconds>Maximum seconds to wait; 0 means no timeout. Requires --wait. Defaults to 1800.
--poll-interval <seconds>Seconds between status checks. Requires --wait. Defaults to 10.

Without --wait, --output-file, --overwrite, --timeout, and --poll-interval have no effect, and the CLI logs a warning. If the job ends as Failed or Cancelled, or the wait times out, nothing is written. After a timeout the job keeps running; fetch its package later with migration download.

Examples​

# Export, wait for the job, and write the package
uip tm project export \
  --project-id a1b2c3d4-0000-0000-0000-000000000001 \
  --wait \
  --output-file demo.tmh

# Start the export with governance information and without automation information, and return the job
uip tm project export \
  --project-key DEMO \
  --include governance \
  --exclude automation
# Export, wait for the job, and write the package
uip tm project export \
  --project-id a1b2c3d4-0000-0000-0000-000000000001 \
  --wait \
  --output-file demo.tmh

# Start the export with governance information and without automation information, and return the job
uip tm project export \
  --project-key DEMO \
  --include governance \
  --exclude automation

Data shape (with --wait)​

{
  "Code": "MigrationExport",
  "Data": {
    "Id": "e5f6a7b8-0000-0000-0000-000000000001",
    "Type": "ExportProject",
    "Status": "Completed",
    "OutputFile": "demo.tmh",
    "Bytes": 481203
  }
}
{
  "Code": "MigrationExport",
  "Data": {
    "Id": "e5f6a7b8-0000-0000-0000-000000000001",
    "Type": "ExportProject",
    "Status": "Completed",
    "OutputFile": "demo.tmh",
    "Bytes": 481203
  }
}

Data shape (without --wait)​

{
  "Code": "MigrationExport",
  "Data": {
    "Id": "e5f6a7b8-0000-0000-0000-000000000001",
    "Type": "ExportProject",
    "Status": "Ready",
    "Created": "2026-09-17T10:00:00.000Z",
    "Updated": "2026-09-17T10:00:00.000Z",
    "CreatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "UpdatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "ProjectId": "a1b2c3d4-0000-0000-0000-000000000001",
    "TenantId": "d4e5f6a7-0000-0000-0000-000000000004"
  },
  "Instructions": "The export runs in the background. Check it with: uip tm migration get --project-id a1b2c3d4-0000-0000-0000-000000000001 --job-id e5f6a7b8-0000-0000-0000-000000000001. Once it reads Completed, fetch the package with: uip tm migration download --project-id a1b2c3d4-0000-0000-0000-000000000001 --job-id e5f6a7b8-0000-0000-0000-000000000001 --output-file <path>"
}
{
  "Code": "MigrationExport",
  "Data": {
    "Id": "e5f6a7b8-0000-0000-0000-000000000001",
    "Type": "ExportProject",
    "Status": "Ready",
    "Created": "2026-09-17T10:00:00.000Z",
    "Updated": "2026-09-17T10:00:00.000Z",
    "CreatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "UpdatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "ProjectId": "a1b2c3d4-0000-0000-0000-000000000001",
    "TenantId": "d4e5f6a7-0000-0000-0000-000000000004"
  },
  "Instructions": "The export runs in the background. Check it with: uip tm migration get --project-id a1b2c3d4-0000-0000-0000-000000000001 --job-id e5f6a7b8-0000-0000-0000-000000000001. Once it reads Completed, fetch the package with: uip tm migration download --project-id a1b2c3d4-0000-0000-0000-000000000001 --job-id e5f6a7b8-0000-0000-0000-000000000001 --output-file <path>"
}

Data without --wait is the migration job as migration get returns it.

uip tm project import​

Import a .tmh package into an existing project, or into a new project created from the package. The CLI uploads the file in chunks and Test Manager processes it in a background migration job. Without --wait, the command returns the job; check it with migration get. With --wait, the command polls until the job finishes.

--include and --exclude switch automation (included by default), governance, and project-config (both excluded by default). Importing project-config needs a Test Cloud tenant; other tenants reject it with HTTP 403.

Arguments​

None.

Options​

FlagDescription
--project-key <key>Key of the project to import into. Pass this, --project-id, or --create-project.
--project-id <id>ID of the project to import into. Use instead of --project-key. When you pass both, --project-id is used.
--file <path>Required. The .tmh package to import, as written by project export. The CLI reads the whole file into memory and refuses packages over 2 GiB, empty files, and files without a valid manifest.json.
--create-projectCreate the target project from the name, key, and description recorded in the package. The project stays inactive until the import finishes. Cannot be combined with --project-key or --project-id.
--new-project-name <name>With --create-project: name for the new project in place of the package's name.
--new-project-key <key>With --create-project: key for the new project in place of the package's key. Must be free in this tenant.
--include <content...>Content to bring in, space-separated: governance, project-config, automation.
--exclude <content...>Content to leave out, space-separated, from the same set. Naming the same content in --include and --exclude is refused.
--waitPoll until the import finishes.
--timeout <seconds>Maximum seconds to wait; 0 means no timeout. Requires --wait. Defaults to 14400.
--poll-interval <seconds>Seconds between status checks. Requires --wait. Defaults to 10.
Warning:

A failed import can leave part of the package in the target project. Check or delete that project before you import again, or import into a new project with --create-project --new-project-key <key>. If --wait times out, the import keeps running in the background; check it with migration get, because running the command again imports everything a second time.

A project that --create-project made stays in place, inactive, when the import fails. Delete it with project delete, or import into it with --project-key.

Examples​

# Import into an existing project and return the job
uip tm project import \
  --project-id a1b2c3d4-0000-0000-0000-000000000001 \
  --file demo.tmh

# Create a project from the package without automation information, and wait for the import
uip tm project import \
  --create-project \
  --new-project-key DEMO2 \
  --file demo.tmh \
  --exclude automation \
  --wait
# Import into an existing project and return the job
uip tm project import \
  --project-id a1b2c3d4-0000-0000-0000-000000000001 \
  --file demo.tmh

# Create a project from the package without automation information, and wait for the import
uip tm project import \
  --create-project \
  --new-project-key DEMO2 \
  --file demo.tmh \
  --exclude automation \
  --wait

Data shape (with --wait)​

{
  "Code": "MigrationImport",
  "Data": {
    "Id": "e5f6a7b8-0000-0000-0000-000000000002",
    "Type": "ImportProject",
    "Status": "Completed",
    "SchemaVersion": "1.0.18",
    "Created": "2026-09-17T10:05:00.000Z",
    "Updated": "2026-09-17T10:06:40.000Z",
    "ExecutionStarted": "2026-09-17T10:05:04.000Z",
    "ExecutionFinished": "2026-09-17T10:06:40.000Z",
    "CreatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "UpdatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "TenantId": "d4e5f6a7-0000-0000-0000-000000000004",
    "ProjectId": "a2b3c4d5-0000-0000-0000-000000000002",
    "ProjectCreated": true,
    "PackageName": "demo.tmh",
    "Bytes": 481203,
    "Chunks": 1
  }
}
{
  "Code": "MigrationImport",
  "Data": {
    "Id": "e5f6a7b8-0000-0000-0000-000000000002",
    "Type": "ImportProject",
    "Status": "Completed",
    "SchemaVersion": "1.0.18",
    "Created": "2026-09-17T10:05:00.000Z",
    "Updated": "2026-09-17T10:06:40.000Z",
    "ExecutionStarted": "2026-09-17T10:05:04.000Z",
    "ExecutionFinished": "2026-09-17T10:06:40.000Z",
    "CreatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "UpdatedBy": "c3d4e5f6-0000-0000-0000-000000000003",
    "TenantId": "d4e5f6a7-0000-0000-0000-000000000004",
    "ProjectId": "a2b3c4d5-0000-0000-0000-000000000002",
    "ProjectCreated": true,
    "PackageName": "demo.tmh",
    "Bytes": 481203,
    "Chunks": 1
  }
}

Data is the migration job as migration get returns it, plus the target ProjectId, ProjectCreated (true when --create-project made the project), the uploaded PackageName, its size in Bytes, and the number of upload Chunks. Without --wait, the command returns once the upload finishes, and the response carries Instructions with the migration get command for the job.

  • migration: check and download the jobs behind export and import.
  • project-permissions: the permissions you hold on a project.
  • prompts: the project prompt library that export --include prompts packages.
  • testcases: create test cases inside a project.
  • testsets: group test cases into executable suites.

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