- Overview
- Requirements
- Installation
- Q&A: Deployment templates
- Downloading the installation packages
- Install-uipath.sh Parameters
- Enabling Redis High Availability Add-On for the cluster
- Document Understanding configuration file
- Adding a dedicated agent node with GPU support
- Connecting Task Mining application
- Adding a dedicated agent Node for Task Mining
- Adding a Dedicated Agent Node for Automation Suite Robots
- Post-installation
- Cluster administration
- Monitoring and alerting
- Migration and upgrade
- Migration options
- Step 1: Moving the Identity organization data from standalone to Automation Suite
- Step 2: Restoring the standalone product database
- Step 3: Backing up the platform database in Automation Suite
- Step 4: Merging organizations in Automation Suite
- Step 5: Updating the migrated product connection strings
- Step 6: Migrating standalone Insights
- Step 7: Deleting the default tenant
- B) Single tenant migration
- Product-specific configuration
- Best practices and maintenance
- Troubleshooting
- How to troubleshoot services during installation
- How to uninstall the cluster
- How to clean up offline artifacts to improve disk space
- How to clear Redis data
- How to enable Istio logging
- How to manually clean up logs
- How to clean up old logs stored in the sf-logs bucket
- How to disable streaming logs for AI Center
- How to debug failed Automation Suite installations
- How to delete images from the old installer after upgrade
- How to automatically clean up Longhorn snapshots
- How to disable TX checksum offloading
- How to address weak ciphers in TLS 1.2
- Unable to run an offline installation on RHEL 8.4 OS
- Error in Downloading the Bundle
- Offline installation fails because of missing binary
- Certificate issue in offline installation
- First installation fails during Longhorn setup
- SQL connection string validation error
- Prerequisite check for selinux iscsid module fails
- Azure disk not marked as SSD
- Failure after certificate update
- Antivirus causes installation issues
- Automation Suite not working after OS upgrade
- Automation Suite requires backlog_wait_time to be set to 0
- Volume unable to mount due to not being ready for workloads
- Unable to launch Automation Hub and Apps with proxy setup
- Failure to upload or download data in objectstore
- PVC resize does not heal Ceph
- Failure to resize PVC
- Failure to resize objectstore PVC
- Rook Ceph or Looker pod stuck in Init state
- StatefulSet volume attachment error
- Failure to create persistent volumes
- Storage reclamation patch
- Backup failed due to TooManySnapshots error
- All Longhorn replicas are faulted
- Setting a timeout interval for the management portals
- Update the underlying directory connections
- Authentication not working after migration
- Kinit: Cannot find KDC for realm <AD Domain> while getting initial credentials
- Kinit: Keytab contains no suitable keys for *** while getting initial credentials
- GSSAPI operation failed due to invalid status code
- Alarm received for failed Kerberos-tgt-update job
- SSPI provider: Server not found in Kerberos database
- Login failed for AD user due to disabled account
- ArgoCD login failed
- Failure to get the sandbox image
- Pods not showing in ArgoCD UI
- Redis probe failure
- RKE2 server fails to start
- Secret not found in UiPath namespace
- ArgoCD goes into progressing state after first installation
- Unexpected inconsistency; run fsck manually
- MongoDB pods in CrashLoopBackOff or pending PVC provisioning after deletion
- MongoDB Pod Fails to Upgrade From 4.4.4-ent to 5.0.7-ent
- Unhealthy services after cluster restore or rollback
- Pods stuck in Init:0/X
- Prometheus in CrashloopBackoff state with out-of-memory (OOM) error
- Missing Ceph-rook metrics from monitoring dashboards
- Pods cannot communicate with FQDN in a proxy environment
- Using the Automation Suite Diagnostics Tool
- Using the Automation Suite Support Bundle Tool
- Exploring Logs
Preparing Orchestrator
To migrate Orchestrator from standalone to Automation Suite, you must gather settings and various files from the standalone installation and apply them to the Automation Suite installation.
web.config
, appSettings
, storage, NLog, credential stores, encryption keys, and encryption key per tenant.
To migrate Orchestrator from standalone to Automation Suite, you must gather settings and various files from the standalone installation and apply them to the Automation Suite installation.
While only part of the settings are configurable at installation time, all of them should be available for post-install configuration.
- To configure settings at installation time, add them in the
cluster_config.json
file; - Updating the settings after the installation completes depends on what the setting scope is and if a feature is available for configuration from app-of-apps parameters or not.
uipath
bucket under orchestrator/plugins/nlog
or orchestrator/plugins/securestore
.
You can add custom configuration as follows:
- by editing the application parameters in ArgoCD (parameter overrides);
- by editing the files inside the Kubernetes ConfigMap
orchestrator-customconfig
from the namespaceuipath
.
web.config
settings do not have an equivalent or are implemented in Automation Suite using other mechanisms.
The options that you do need to configure are the following:
security.requestFiltering.requestLimits.maxAllowedContentLength
security.requestFiltering.requestLimits.maxAllowedContentLength
Note the value of this setting for later use. Decide if you need to configure it in Automation Suite. Its default value is 300MiB.
appSettings
or secureAppSettings
section of the UiPath.Orchestrator.dll.config
configuration file. You can add custom appSettings
and secureAppSettings
to the orchestrator-customconfig
config map.
UiPath.Orchestrator.dll.config
configuration file's appSettings
section, identify any modified or added settings. Save these settings in a .json
file, so they are available in later steps.
You can decrypt any protected app configuration section with Orchestrator CLI protected-configuration option. You only need to use the settings you have changed or added and are still relevant in Automation Suite.
appSettings.custom.json
file as shown in the following example:
{
"ExampleSetting.Enabled": true,
"ExampleSetting.Type": "BasicExample",
"ExampleSetting.Count": 3
}
{
"ExampleSetting.Enabled": true,
"ExampleSetting.Type": "BasicExample",
"ExampleSetting.Count": 3
}
Decide what you need for the storage migration and if your current storage configuration stays the same or if you would instead let Automation Suite manage the storage for you. Automation Suite offers the option to store the blobs in Ceph, which can be used in all Orchestrator pods. In the case of a migration, you must copy the existing files to the current blob storage.
rclone
, you can copy the data to Orchestrator. If you use Ceph, then no other configuration is required, as this is the default
option.
Storage.Location
key. Since Automation Suite runs on Linux machines, you cannot rely on integrated authentication for accessing the network
share, so you need the credentials of an account that can access it.
Storage.Location
and Storage.Type
settings to the appSettings.custom.json
.
You can do the following customizations to NLog:
- change existing targets
- add new targets
- add NLog extensions
Review the NLog section of the configuration file, and build the NLog custom configuration. To enable robot logs storage in Elasticsearch, you can provide the username, password, and URI as Automation Suite parameters, and the target are configured automatically. To enable custom scenarios for robot logs, you need to configure the target manually.
If NLog extensions are needed, create a folder containing all the extensions and their dependencies.
nlogextensions
. By default, Orchestrator loads the following extensions, so you do not need to include them in the folder or the NLog configuration:
NLog.Targets.ElasticSearch
UiPath.Orchestrator.Logs.Elasticsearch
Microsoft.ApplicationInsights.NLogTarget
NLog.Extensions.AzureEventHub
NLog.Targets.ElasticSearch
UiPath.Orchestrator.Logs.Elasticsearch
Microsoft.ApplicationInsights.NLogTarget
NLog.Extensions.AzureEventHub
nlog.custom.config
file containing the standard sections: extensions, targets and rules.
assemblyFile
, and the path of the assembly relative to the nlogextensions
folder.
/opt/app-root/app/nlog.config.json
location.
nlog.custom.config
file that writes logs to Azure Blob:
{
"NLog": {
"autoReload": false,
"throwConfigExceptions": false,
"internalLogLevel": "Warn",
"internalLogToConsole": true,
"default-wrapper": {
"type": "UiPrettyExceptionWrapper"
},
"extensions": [
{ "assembly": "UiPath.Orchestrator.Logs.DatabaseBulk.NLogTarget" }
],
"targets": {
"robotElasticBuffer": {
"type": "BufferingWrapper",
"flushTimeout": 5000,
"target": {
"type": "ElasticSearch",
"name": "robotElastic",
"requireAuth": false,
"uri": "",
"username": "",
"password": "",
"index": "${event-properties:item=indexName}-${date:format=yyyy.MM}",
"documentType": "logEvent",
"includeAllProperties": true,
"layout": "${message}",
"excludedProperties": "agentSessionId,tenantId,indexName"
}
},
"serverElasticBuffer": {
"type": "BufferingWrapper",
"flushTimeout": 5000,
"target": {
"type": "ElasticSearch",
"name": "serverElastic",
"requireAuth": false,
"uri": "",
"username": "",
"password": "",
"index": "serverdiagnostics-${date:format=yyyy.MM}",
"documentType": "logEvent",
"includeAllProperties": true,
"layout": "${machinename} ${message}"
}
},
"database": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 60,
"timeToSleepBetweenBatches": 1,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Default}",
"tableName": "[dbo].[Logs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "Int",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "Int",
"name": "Level",
"propertyItem": "levelOrdinal"
},
{
"dbType": "NVarChar",
"name": "WindowsIdentity",
"propertyItem": "windowsIdentity"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "NVarChar",
"name": "Message"
},
{
"dbType": "NVarChar",
"name": "RawMessage",
"propertyItem": "rawMessage"
},
{
"dbType": "NVarChar",
"name": "RobotName",
"propertyItem": "robotName"
},
{
"dbType": "BigInt",
"name": "MachineId",
"propertyItem": "machineId"
},
{
"dbType": "UniqueIdentifier",
"name": "UserKey",
"propertyItem": "userKey"
},
{
"dbType": "NVarChar",
"name": "HostMachineName",
"propertyItem": "machineName"
}
]
}
},
"monitoring": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 60,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Default}",
"tableName": "[stats].[ErrorLogs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "BigInt",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "UniqueIdentifier",
"name": "CorrelationId",
"propertyItem": "Correlation"
},
{
"dbType": "Int",
"name": "Source",
"propertyItem": "logSource"
},
{
"dbType": "Int",
"name": "Level",
"propertyItem": "levelOrdinal"
},
{
"dbType": "BigInt",
"name": "RobotId",
"propertyItem": "robotId"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "BigInt",
"name": "QueueDefinitionId",
"propertyItem": "queueId"
},
{
"dbType": "NVarChar",
"name": "Message"
}
]
}
},
"insightsRobotLogs": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 60,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Insights}",
"tableName": "[dbo].[RobotLogs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "Int",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "NVarChar",
"name": "WindowsIdentity",
"propertyItem": "windowsIdentity"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "NVarChar",
"name": "RawMessage",
"propertyItem": "rawMessage"
},
{
"dbType": "NVarChar",
"name": "RobotName",
"propertyItem": "robotName"
},
{
"dbType": "BigInt",
"name": "MachineId",
"propertyItem": "machineId"
},
{
"dbType": "NVarChar",
"name": "Message"
},
{
"dbType": "Int",
"name": "LevelOrdinal",
"propertyItem": "levelOrdinal"
},
{
"dbType": "Int",
"name": "NumCustomFields",
"layout": "${ui-robot-logs-num-custom-fields}"
}
]
}
},
"stdout": {
"type": "Console",
"layout": {
"type": "JsonLayout",
"includeAllProperties": true,
"Attributes": [
{
"name": "ts",
"layout": "${longdate}"
},
{
"name": "traceId",
"layout": "${aspnet-TraceIdentifier}"
},
{
"name": "level",
"layout": "${level:upperCase=true}"
},
{
"name": "logger",
"layout": "${logger}"
},
{
"name": "message",
"layout": "${message}"
},
{
"name": "exception",
"layout": "${onexception:${ui-pretty-exception}}"
}
]
}
}
},
"rules": {
"10_Robot_Insights": {
"logger": "Robot.*",
"ruleName": "insightsRobotLogsRule",
"minLevel": "Info",
"writeTo": "insightsRobotLogs",
"enabled": false,
"final": false,
"filters": {
"defaultAction": "Ignore",
"when": {
"condition": "level >= LogLevel.Error or ends-with('${message}',' execution ended')",
"action": "Log"
}
}
},
"20_Robot_Primary": {
"logger": "Robot.*",
"ruleName": "primaryRobotLogsTarget",
"writeTo": "database",
"minLevel": "Trace",
"maxLevel": "Fatal",
"final": true
},
"30_Business_Exceptions": {
"logger": "BusinessException.*",
"minLevel": "Info",
"writeTo": "",
"enabled": true,
"final": true
},
"40_Monitoring": {
"logger": "Monitoring.*",
"minLevel": "Warn",
"maxLevel": "Fatal",
"writeTo": "monitoring",
"final": true
},
"70_Final": {
"logger": "*",
"minLevel": "Info",
"maxLevel": "Fatal",
"writeTo": "stdout",
"final": false
}
}
}
}
{
"NLog": {
"autoReload": false,
"throwConfigExceptions": false,
"internalLogLevel": "Warn",
"internalLogToConsole": true,
"default-wrapper": {
"type": "UiPrettyExceptionWrapper"
},
"extensions": [
{ "assembly": "UiPath.Orchestrator.Logs.DatabaseBulk.NLogTarget" }
],
"targets": {
"robotElasticBuffer": {
"type": "BufferingWrapper",
"flushTimeout": 5000,
"target": {
"type": "ElasticSearch",
"name": "robotElastic",
"requireAuth": false,
"uri": "",
"username": "",
"password": "",
"index": "${event-properties:item=indexName}-${date:format=yyyy.MM}",
"documentType": "logEvent",
"includeAllProperties": true,
"layout": "${message}",
"excludedProperties": "agentSessionId,tenantId,indexName"
}
},
"serverElasticBuffer": {
"type": "BufferingWrapper",
"flushTimeout": 5000,
"target": {
"type": "ElasticSearch",
"name": "serverElastic",
"requireAuth": false,
"uri": "",
"username": "",
"password": "",
"index": "serverdiagnostics-${date:format=yyyy.MM}",
"documentType": "logEvent",
"includeAllProperties": true,
"layout": "${machinename} ${message}"
}
},
"database": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 60,
"timeToSleepBetweenBatches": 1,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Default}",
"tableName": "[dbo].[Logs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "Int",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "Int",
"name": "Level",
"propertyItem": "levelOrdinal"
},
{
"dbType": "NVarChar",
"name": "WindowsIdentity",
"propertyItem": "windowsIdentity"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "NVarChar",
"name": "Message"
},
{
"dbType": "NVarChar",
"name": "RawMessage",
"propertyItem": "rawMessage"
},
{
"dbType": "NVarChar",
"name": "RobotName",
"propertyItem": "robotName"
},
{
"dbType": "BigInt",
"name": "MachineId",
"propertyItem": "machineId"
},
{
"dbType": "UniqueIdentifier",
"name": "UserKey",
"propertyItem": "userKey"
},
{
"dbType": "NVarChar",
"name": "HostMachineName",
"propertyItem": "machineName"
}
]
}
},
"monitoring": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 60,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Default}",
"tableName": "[stats].[ErrorLogs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "BigInt",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "UniqueIdentifier",
"name": "CorrelationId",
"propertyItem": "Correlation"
},
{
"dbType": "Int",
"name": "Source",
"propertyItem": "logSource"
},
{
"dbType": "Int",
"name": "Level",
"propertyItem": "levelOrdinal"
},
{
"dbType": "BigInt",
"name": "RobotId",
"propertyItem": "robotId"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "BigInt",
"name": "QueueDefinitionId",
"propertyItem": "queueId"
},
{
"dbType": "NVarChar",
"name": "Message"
}
]
}
},
"insightsRobotLogs": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 60,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Insights}",
"tableName": "[dbo].[RobotLogs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "Int",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "NVarChar",
"name": "WindowsIdentity",
"propertyItem": "windowsIdentity"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "NVarChar",
"name": "RawMessage",
"propertyItem": "rawMessage"
},
{
"dbType": "NVarChar",
"name": "RobotName",
"propertyItem": "robotName"
},
{
"dbType": "BigInt",
"name": "MachineId",
"propertyItem": "machineId"
},
{
"dbType": "NVarChar",
"name": "Message"
},
{
"dbType": "Int",
"name": "LevelOrdinal",
"propertyItem": "levelOrdinal"
},
{
"dbType": "Int",
"name": "NumCustomFields",
"layout": "${ui-robot-logs-num-custom-fields}"
}
]
}
},
"stdout": {
"type": "Console",
"layout": {
"type": "JsonLayout",
"includeAllProperties": true,
"Attributes": [
{
"name": "ts",
"layout": "${longdate}"
},
{
"name": "traceId",
"layout": "${aspnet-TraceIdentifier}"
},
{
"name": "level",
"layout": "${level:upperCase=true}"
},
{
"name": "logger",
"layout": "${logger}"
},
{
"name": "message",
"layout": "${message}"
},
{
"name": "exception",
"layout": "${onexception:${ui-pretty-exception}}"
}
]
}
}
},
"rules": {
"10_Robot_Insights": {
"logger": "Robot.*",
"ruleName": "insightsRobotLogsRule",
"minLevel": "Info",
"writeTo": "insightsRobotLogs",
"enabled": false,
"final": false,
"filters": {
"defaultAction": "Ignore",
"when": {
"condition": "level >= LogLevel.Error or ends-with('${message}',' execution ended')",
"action": "Log"
}
}
},
"20_Robot_Primary": {
"logger": "Robot.*",
"ruleName": "primaryRobotLogsTarget",
"writeTo": "database",
"minLevel": "Trace",
"maxLevel": "Fatal",
"final": true
},
"30_Business_Exceptions": {
"logger": "BusinessException.*",
"minLevel": "Info",
"writeTo": "",
"enabled": true,
"final": true
},
"40_Monitoring": {
"logger": "Monitoring.*",
"minLevel": "Warn",
"maxLevel": "Fatal",
"writeTo": "monitoring",
"final": true
},
"70_Final": {
"logger": "*",
"minLevel": "Info",
"maxLevel": "Fatal",
"writeTo": "stdout",
"final": false
}
}
}
}
nlogextensions
is copied in the object store in the well known plugins location. The Orchestrator Configurator Tool can automatically do
that while also updating the NLog configuration. The script automatically changes nlog.custom.config
to prefix each assemblyFile from the extensions array with /var/orchestrator/plugins/nlog/
if not already prefixed.
You can migrate custom plugins for credentials stores to Automation Suite. To do that, update the configuration in the config map, and copy the plugins assemblies to the corresponding object store bucket.
- The plugins must work on Linux.
- The plugins must not write to any storage, apart from
/tmp
.
The following credential stores plugins automatically are deployed to Orchestrator in Automation Suite:
UiPath.Orchestrator.AzureKeyVault.SecureStore.dll
-
UiPath.Orchestrator.SecureStore.CyberArkCCP.dll
securestoreplugins
.
appSettings.custom.json
file as follows:
-
to disable default plugins, add the config
Plugins.SecureStores.Default
with an empty string value inappSettings.custom.json
; -
add all custom plugins to the
Plugins.SecureStores
setting, separated by;
inappSettings.custom.json
; -
add any custom plugin settings as follows:
Plugins.SecureStores.<<FriendlyName>>.<<SettingName>>
.
securestoreplugins
plugin folder is copied in the object store in the well known plugins location.
Plugins.SecureStores
are loaded from this folder.
Plugins.SecureStore.Default
are loaded from the plugins folder in the Orchestrator app folder.
By default, at installation time, Orchestrator generates an encryption key to be used for the sensitive information in the database. You must migrate this key if you want to reuse a database on a new Orchestrator deployment.
To retrieve the encryption key, take the following steps:
- Decrypt the
secureAppSettings
section of theUiPath.Orchestrator.dll.config
file, if needed. For details, see Encrypting UiPath.Orchestrator.dll.config Sections. - Retrieve the encryption key from
UiPath.Orchestrator.dll.config
. For details, see EncryptionKey.
The encryption key certificate is installed in the Windows certificate store. You must provide the certificate to the Automation Suite environment so that it becomes available to the Orchestrator pods.
CertificatesStoreLocation
and Azure.KeyVault.CertificateThumbprint
settings are no longer required in Automation Suite, but you can use the CertificatePassword
if needed.
Take the following steps:
- Review the appSettings and obtain the
AzureKeyVault.*
settings. - Store the
Azure.KeyVault.VaultAddress
,Azure.KeyVault.ClientId
, andAzure.KeyVault.DirectoryId
for later use. - Retrieve the certificate, and if necessary, the certificate password.