automation-suite
2024.10
true
- Overview
- Requirements
- Recommended: Deployment templates
- Manual: Preparing the installation
- Manual: Preparing the installation
- Step 1: Configuring the OCI-compliant registry for offline installations
- Step 2: Configuring the external objectstore
- Step 3: Configuring High Availability Add-on
- Step 4: Configuring Microsoft SQL Server
- Step 5: Configuring the load balancer
- Step 6: Configuring the DNS
- Step 7: Configuring the disks
- Step 8: Configuring kernel and OS level settings
- Step 9: Configuring the node ports
- Step 10: Applying miscellaneous settings
- Step 12: Validating and installing the required RPM packages
- Step 13: Generating cluster_config.json
- Cluster_config.json Sample
- General configuration
- Profile configuration
- Certificate configuration
- Database configuration
- External Objectstore configuration
- Pre-signed URL configuration
- ArgoCD configuration
- External OCI-compliant registry configuration
- Disaster recovery: Active/Passive and Active/Active configurations
- High Availability Add-on configuration
- Orchestrator-specific configuration
- Insights-specific configuration
- Process Mining-specific configuration
- Document Understanding-specific configuration
- Automation Suite Robots-specific configuration
- AI Center-specific configuration
- Monitoring configuration
- Optional: Configuring the proxy server
- Optional: Enabling resilience to zonal failures in a multi-node HA-ready production cluster
- Optional: Passing custom resolv.conf
- Optional: Increasing fault tolerance
- Adding a dedicated agent node with GPU support
- Adding a dedicated agent Node for Task Mining
- Connecting Task Mining application
- Adding a Dedicated Agent Node for Automation Suite Robots
- Step 15: Configuring the temporary Docker registry for offline installations
- Step 16: Validating the prerequisites for the installation
- Manual: Performing the installation
- Post-installation
- Cluster administration
- Managing products
- Getting Started with the Cluster Administration portal
- Migrating objectstore from persistent volume to raw disks
- Migrating from in-cluster to external High Availability Add-on
- Migrating data between objectstores
- Migrating in-cluster objectstore to external objectstore
- Migrating to an external OCI-compliant registry
- Switching to the secondary cluster manually in an Active/Passive setup
- Disaster Recovery: Performing post-installation operations
- Converting an existing installation to multi-site setup
- Guidelines on upgrading an Active/Passive or Active/Active deployment
- Guidelines on backing up and restoring an Active/Passive or Active/Active deployment
- Monitoring and alerting
- Migration and upgrade
- Migrating between Automation Suite clusters
- Upgrading Automation Suite
- Downloading the installation packages and getting all the files on the first server node
- Retrieving the latest applied configuration from the cluster
- Updating the cluster configuration
- Configuring the OCI-compliant registry for offline installations
- Executing the upgrade
- Performing post-upgrade operations
- 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 disable TX checksum offloading
- How to manually set the ArgoCD log level to Info
- How to expand AI Center storage
- How to generate the encoded pull_secret_value for external registries
- How to address weak ciphers in TLS 1.2
- How to check the TLS version
- How to schedule Ceph backup and restore data
- 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
- 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
- Support bundle log collection failure
- Data loss when reinstalling or upgrading Insights following Automation Suite upgrade
- Unable to access Automation Hub following upgrade to Automation Suite 2024.10.0
- Single-node upgrade fails at the fabric stage
- Upgrade fails due to unhealthy Ceph
- RKE2 not getting started due to space issue
- Volume unable to mount and remains in attach/detach loop state
- Upgrade fails due to classic objects in the Orchestrator database
- Ceph cluster found in a degraded state after side-by-side upgrade
- Unhealthy Insights component causes the migration to fail
- Service upgrade fails for Apps
- In-place upgrade timeouts
- Docker registry migration stuck in PVC deletion stage
- AI Center provisioning failure after upgrading to 2023.10 or later
- Upgrade fails in offline environments
- SQL validation fails during upgrade
- snapshot-controller-crds pod in CrashLoopBackOff state after upgrade
- Upgrade fails due to overridden Insights PVC sizes
- Setting a timeout interval for the management portals
- 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
- Update the underlying directory connections
- Partial failure to restore backup in Automation Suite 2024.10.0
- 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
- MongoDB pods in CrashLoopBackOff or pending PVC provisioning after deletion
- Pods stuck in Init:0/X
- Missing Ceph-rook metrics from monitoring dashboards
- Running High Availability with Process Mining
- Process Mining ingestion failed when logged in using Kerberos
- After Disaster Recovery Dapr is not working properly for Process Mining
- Unable to connect to AutomationSuite_ProcessMining_Warehouse database using a pyodbc format connection string
- Airflow installation fails with sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string ''
- How to add an IP table rule to use SQL Server port 1433
- Automation Suite certificate is not trusted from the server where CData Sync is running
- Task Mining troubleshooting
- Running the diagnostics tool
- Using the Automation Suite support bundle
- Exploring Logs
Unable to access Automation Hub following upgrade to Automation Suite 2024.10.0

Automation Suite on Linux Installation Guide
Last updated Feb 3, 2025
Unable to access Automation Hub following upgrade to Automation Suite 2024.10.0
After upgrading to Automation Suite 2024.10.0, you can no longer access Automation Hub due to database schema discrepancies. We fixed the issue in Automation Suite 2024.10.1.
To address the problem, you must run the following SQL script on the
AutomationSuite_Automation_Hub
database:
-- IMPORTANT:
-- This script should be executed in the AutomationSuite_Automation_Hub database.
-- Purpose:
-- This script resolves potential issues encountered during the upgrade to version 2024.10.0 of Automation Hub.
-- Please replace placeholders with actual data before running the script.
-- Assumptions:
-- The customer has an existing Automation Hub instance running a version prior to 2024.10.0.
-- Variables:
-- @AccountName: Logical name of the Automation Suite organization. Replace '<USER_INPUT>' with the actual name.
-- @TenantName: Logical name of the Automation Suite tenant. Replace '<USER_INPUT>' with the actual name.
-- Note:
-- The script will terminate if any errors occur and will provide error details for debugging.
SET XACT_ABORT ON;
-- Replace placeholders with actual values
DECLARE @AccountName NVARCHAR(255) = '<USER_INPUT>';
DECLARE @TenantName NVARCHAR(255) = '<USER_INPUT>';
-- DO NOT EDIT ANYTHING BELOW THIS POINT --
BEGIN TRY
BEGIN TRANSACTION;
-- Validate placeholders
IF @AccountName = '<USER_INPUT>' OR
@TenantName = '<USER_INPUT>'
BEGIN
RAISERROR('Placeholders were not replaced with actual values. Please update the script and retry.', 16, 1);
RETURN;
END;
-- Declare variables for tenant information
DECLARE @TenantUUID NVARCHAR(255);
DECLARE @TsTablePrefix NVARCHAR(255);
-- Retrieve tenant_uuid from the cloud_tenants table based on TenantName and AccountName
DECLARE @sql NVARCHAR(MAX);
DECLARE @params NVARCHAR(MAX);
SET @sql = N'SELECT @TenantUUID = tenant_uuid
FROM ah.cloud_tenants
WHERE cloud_TenantName = @TenantName
AND cloud_AccountName = @AccountName;';
SET @params = N'@TenantName NVARCHAR(255), @AccountName NVARCHAR(255), @TenantUUID NVARCHAR(255) OUTPUT';
EXEC sp_executesql @sql,
@params,
@TenantName = @TenantName,
@AccountName = @AccountName,
@TenantUUID = @TenantUUID OUTPUT;
-- Abort if tenant_uuid is not found
IF @TenantUUID IS NULL
BEGIN
RAISERROR('No tenant found for the provided TenantName and AccountName. Script execution aborted.', 16, 1);
RETURN;
END;
-- Retrieve tenant_db_table_prefix from tenants table using tenant_uuid
SET @sql = N'SELECT @TsTablePrefix = tenant_db_table_prefix
FROM ah.tenants
WHERE tenant_uuid = @TenantUUID;';
SET @params = N'@TenantUUID NVARCHAR(255), @TsTablePrefix NVARCHAR(255) OUTPUT';
EXEC sp_executesql @sql,
@params,
@TenantUUID = @TenantUUID,
@TsTablePrefix = @TsTablePrefix OUTPUT;
-- Abort if tenant_db_table_prefix is not found
IF @TsTablePrefix IS NULL
BEGIN
RAISERROR('No tenant found in the tenants table for the provided tenant_uuid. Script execution aborted.', 16, 1);
RETURN;
END;
-- Drop the default constraint for assignment_days column
DECLARE @ConstraintName NVARCHAR(200);
SELECT @ConstraintName = dc.name
FROM sys.default_constraints dc
INNER JOIN sys.columns c
ON dc.parent_object_id = c.object_id
AND dc.parent_column_id = c.column_id
WHERE c.object_id = OBJECT_ID(@TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates')
AND c.name = 'assignment_days';
IF @ConstraintName IS NOT NULL
BEGIN
EXEC('ALTER TABLE ' + @TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates DROP CONSTRAINT [' + @ConstraintName + ']');
END;
-- Recreate the default constraint for assignment_days
DECLARE @UniqueConstraintName NVARCHAR(255) = '[' + @TsTablePrefix + 'DF_assignment_days]';
BEGIN
EXEC('ALTER TABLE ' + @TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates ADD CONSTRAINT ' + @UniqueConstraintName + ' DEFAULT 0.00 FOR assignment_days');
END
-- Drop the index on the assignment_days column
IF EXISTS (SELECT 1
FROM sys.indexes
WHERE name = 'assignment_days'
AND object_id = OBJECT_ID(@TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates')
)
BEGIN
EXEC('DROP INDEX assignment_days ON ' + @TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates');
END;
-- Alter the assignment_days column
EXEC('ALTER TABLE ' + @TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates ALTER COLUMN assignment_days NUMERIC(15, 2) NOT NULL');
-- Recreate the index on assignment_days
EXEC('CREATE NONCLUSTERED INDEX assignment_days ON ' + @TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates (assignment_days ASC)');
-- Insert a record into the migrations table
EXEC('INSERT INTO ' + @TsTablePrefix + 'migrations (name, run_on) VALUES (''tenants/20230925145641-edit-cba-one-time-costs-estimates-table-column'', CURRENT_TIMESTAMP)');
-- Commit the transaction
COMMIT TRANSACTION;
PRINT 'Script executed successfully.';
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
-- Output error details
PRINT 'Error occurred during script execution:';
PRINT 'Error Number: ' + CAST(ERROR_NUMBER() AS VARCHAR(10));
PRINT 'Error Severity: ' + CAST(ERROR_SEVERITY() AS VARCHAR(10));
PRINT 'Error State: ' + CAST(ERROR_STATE() AS VARCHAR(10));
PRINT 'Error Procedure: ' + ISNULL(ERROR_PROCEDURE(), '');
PRINT 'Error Line: ' + CAST(ERROR_LINE() AS VARCHAR(10));
PRINT 'Error Message: ' + ERROR_MESSAGE();
END CATCH;
-- IMPORTANT:
-- This script should be executed in the AutomationSuite_Automation_Hub database.
-- Purpose:
-- This script resolves potential issues encountered during the upgrade to version 2024.10.0 of Automation Hub.
-- Please replace placeholders with actual data before running the script.
-- Assumptions:
-- The customer has an existing Automation Hub instance running a version prior to 2024.10.0.
-- Variables:
-- @AccountName: Logical name of the Automation Suite organization. Replace '<USER_INPUT>' with the actual name.
-- @TenantName: Logical name of the Automation Suite tenant. Replace '<USER_INPUT>' with the actual name.
-- Note:
-- The script will terminate if any errors occur and will provide error details for debugging.
SET XACT_ABORT ON;
-- Replace placeholders with actual values
DECLARE @AccountName NVARCHAR(255) = '<USER_INPUT>';
DECLARE @TenantName NVARCHAR(255) = '<USER_INPUT>';
-- DO NOT EDIT ANYTHING BELOW THIS POINT --
BEGIN TRY
BEGIN TRANSACTION;
-- Validate placeholders
IF @AccountName = '<USER_INPUT>' OR
@TenantName = '<USER_INPUT>'
BEGIN
RAISERROR('Placeholders were not replaced with actual values. Please update the script and retry.', 16, 1);
RETURN;
END;
-- Declare variables for tenant information
DECLARE @TenantUUID NVARCHAR(255);
DECLARE @TsTablePrefix NVARCHAR(255);
-- Retrieve tenant_uuid from the cloud_tenants table based on TenantName and AccountName
DECLARE @sql NVARCHAR(MAX);
DECLARE @params NVARCHAR(MAX);
SET @sql = N'SELECT @TenantUUID = tenant_uuid
FROM ah.cloud_tenants
WHERE cloud_TenantName = @TenantName
AND cloud_AccountName = @AccountName;';
SET @params = N'@TenantName NVARCHAR(255), @AccountName NVARCHAR(255), @TenantUUID NVARCHAR(255) OUTPUT';
EXEC sp_executesql @sql,
@params,
@TenantName = @TenantName,
@AccountName = @AccountName,
@TenantUUID = @TenantUUID OUTPUT;
-- Abort if tenant_uuid is not found
IF @TenantUUID IS NULL
BEGIN
RAISERROR('No tenant found for the provided TenantName and AccountName. Script execution aborted.', 16, 1);
RETURN;
END;
-- Retrieve tenant_db_table_prefix from tenants table using tenant_uuid
SET @sql = N'SELECT @TsTablePrefix = tenant_db_table_prefix
FROM ah.tenants
WHERE tenant_uuid = @TenantUUID;';
SET @params = N'@TenantUUID NVARCHAR(255), @TsTablePrefix NVARCHAR(255) OUTPUT';
EXEC sp_executesql @sql,
@params,
@TenantUUID = @TenantUUID,
@TsTablePrefix = @TsTablePrefix OUTPUT;
-- Abort if tenant_db_table_prefix is not found
IF @TsTablePrefix IS NULL
BEGIN
RAISERROR('No tenant found in the tenants table for the provided tenant_uuid. Script execution aborted.', 16, 1);
RETURN;
END;
-- Drop the default constraint for assignment_days column
DECLARE @ConstraintName NVARCHAR(200);
SELECT @ConstraintName = dc.name
FROM sys.default_constraints dc
INNER JOIN sys.columns c
ON dc.parent_object_id = c.object_id
AND dc.parent_column_id = c.column_id
WHERE c.object_id = OBJECT_ID(@TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates')
AND c.name = 'assignment_days';
IF @ConstraintName IS NOT NULL
BEGIN
EXEC('ALTER TABLE ' + @TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates DROP CONSTRAINT [' + @ConstraintName + ']');
END;
-- Recreate the default constraint for assignment_days
DECLARE @UniqueConstraintName NVARCHAR(255) = '[' + @TsTablePrefix + 'DF_assignment_days]';
BEGIN
EXEC('ALTER TABLE ' + @TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates ADD CONSTRAINT ' + @UniqueConstraintName + ' DEFAULT 0.00 FOR assignment_days');
END
-- Drop the index on the assignment_days column
IF EXISTS (SELECT 1
FROM sys.indexes
WHERE name = 'assignment_days'
AND object_id = OBJECT_ID(@TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates')
)
BEGIN
EXEC('DROP INDEX assignment_days ON ' + @TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates');
END;
-- Alter the assignment_days column
EXEC('ALTER TABLE ' + @TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates ALTER COLUMN assignment_days NUMERIC(15, 2) NOT NULL');
-- Recreate the index on assignment_days
EXEC('CREATE NONCLUSTERED INDEX assignment_days ON ' + @TsTablePrefix + 'process_cost_benefit_one_time_costs_estimates (assignment_days ASC)');
-- Insert a record into the migrations table
EXEC('INSERT INTO ' + @TsTablePrefix + 'migrations (name, run_on) VALUES (''tenants/20230925145641-edit-cba-one-time-costs-estimates-table-column'', CURRENT_TIMESTAMP)');
-- Commit the transaction
COMMIT TRANSACTION;
PRINT 'Script executed successfully.';
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
-- Output error details
PRINT 'Error occurred during script execution:';
PRINT 'Error Number: ' + CAST(ERROR_NUMBER() AS VARCHAR(10));
PRINT 'Error Severity: ' + CAST(ERROR_SEVERITY() AS VARCHAR(10));
PRINT 'Error State: ' + CAST(ERROR_STATE() AS VARCHAR(10));
PRINT 'Error Procedure: ' + ISNULL(ERROR_PROCEDURE(), '');
PRINT 'Error Line: ' + CAST(ERROR_LINE() AS VARCHAR(10));
PRINT 'Error Message: ' + ERROR_MESSAGE();
END CATCH;