Rolling back an upgrade

If you want to roll back to a previous version of IBM RPA, follow the procedure.

Procedure

Note:IBM MQ does not support rollback. You can roll back an IBM RPA upgrade to a previous version without rolling back IBM MQ. If you need to downgrade IBM MQ, delete the IBM RPA instance and the IBM MQ PersistentVolume and Persistent Volume Claims and install the previous version of IBM RPA.
  1. Backup all of your PersistentVolumes and the SQL database before you start the rollback process in case you need to revert. See How to back up, clone, and migrate PVCs on OpenShift.

  2. Set the replicas field to 0 in the IBM RPA CR. For example:

    apiVersion: rpa.automation.ibm.com/v1beta1
    kind: RoboticProcessAutomation
    metadata:
    name: rpa-sample
    spec:
    license:
        accept: true
    version: 1.2.0
    tls: {}
    api:
        externalConnection:
        secretName: rpa-db
        firstTenant:
        name: ibm
        owner:
            email: superuser@example.com
            name: superuser
        replicas: 0
        smtp:
        port: 587
        server: smtp.example.com
        userSecret:
            secretName: rpa-smtp
        storage: {}
    ui:
        replicas: 0
    ocr:
        replicas: 0
    
  3. Downgrade the operand version from your current version to a previous version in the version field. For example, if your current version is 1.2.0, you can downgrade it to 1.1.0:

    apiVersion: rpa.automation.ibm.com/v1beta1
    kind: RoboticProcessAutomation
    metadata:
    name: rpa-sample
    spec:
    license:
        accept: true
    version: 1.1.0
    tls: {}
    api:
        externalConnection:
        secretName: rpa-db
        firstTenant:
        groupMappings:
            adminGroups: IBM Development
            superAdminsGroups: IBM Manager
            userGroups: IBM User
        name: ibm
        owner:
            email: superuser@example.com
            name: superuser
        replicas: 0
        smtp:
        port: 587
        server: smtp.example.com
        userSecret:
            secretName: rpa-smtp
        storage: {}
    ui:
        replicas: 0
    ocr:
        replicas: 0
    
  4. Run the SQL database migration:

    DELETE FROM [dbo].[PermissionPermissionActions]
    DELETE FROM [dbo].[PermissionResource]
    DELETE FROM [dbo].[PermissionAction]
    DELETE FROM [dbo].[Permission]
    DELETE FROM [dbo].[PermissionGroup]
    DELETE FROM [dbo].[PermissionRoles]
    DELETE FROM [dbo].[TeamRoles]
    DELETE FROM [dbo].[RelatedTeam]
    DELETE FROM [dbo].[Team]
    DELETE FROM [dbo].[Role]
    DELETE [dbo].[__MigrationHistory]
    WHERE (([MigrationId] = N'202112011208285_RbacSeedAndData_Migration') AND ([ContextKey] = N'WDG.Automation.Data.Migrations.Configuration'))
    DECLARE @var0 nvarchar(128)
    SELECT @var0 = name
    FROM sys.default_constraints
    WHERE parent_object_id = object_id(N'dbo.TenantCredentialConfiguration')
    AND col_name(parent_object_id, parent_column_id) = 'PrivateKeyPassword';
    IF @var0 IS NOT NULL
        EXECUTE('ALTER TABLE [dbo].[TenantCredentialConfiguration] DROP CONSTRAINT [' + @var0 + ']')
    ALTER TABLE [dbo].[TenantCredentialConfiguration] DROP COLUMN [PrivateKeyPassword]
    DELETE [dbo].[__MigrationHistory]
    WHERE (([MigrationId] = N'202112011206422_AddCredentialConfigurationPrivateKeyPassword_Migration') AND ([ContextKey] = N'WDG.Automation.Data.Migrations.Configuration'))
    IF object_id(N'[dbo].[FK_dbo.TenantPolicy_dbo.Tenant_TenantId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[TenantPolicy] DROP CONSTRAINT [FK_dbo.TenantPolicy_dbo.Tenant_TenantId]
    IF object_id(N'[dbo].[FK_dbo.TenantPolicy_dbo.User_ModifiedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[TenantPolicy] DROP CONSTRAINT [FK_dbo.TenantPolicy_dbo.User_ModifiedById]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ModifiedById' AND object_id = object_id(N'[dbo].[TenantPolicy]', N'U'))
        DROP INDEX [IX_ModifiedById] ON [dbo].[TenantPolicy]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_TenantId' AND object_id = object_id(N'[dbo].[TenantPolicy]', N'U'))
        DROP INDEX [IX_TenantId] ON [dbo].[TenantPolicy]
    DROP TABLE [dbo].[TenantPolicy]
    DELETE [dbo].[__MigrationHistory]
    WHERE (([MigrationId] = N'202112011202489_AddTenantPolicy_Migration') AND ([ContextKey] = N'WDG.Automation.Data.Migrations.Configuration'))
    IF object_id(N'[dbo].[FK_dbo.ScriptVersionMetadata_dbo.ScriptVersion_ScriptVersionId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[ScriptVersionMetadata] DROP CONSTRAINT [FK_dbo.ScriptVersionMetadata_dbo.ScriptVersion_ScriptVersionId]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ScriptVersionId' AND object_id = object_id(N'[dbo].[ScriptVersionMetadata]', N'U'))
        DROP INDEX [IX_ScriptVersionId] ON [dbo].[ScriptVersionMetadata]
    DROP TABLE [dbo].[ScriptVersionMetadata]
    DELETE [dbo].[__MigrationHistory]
    WHERE (([MigrationId] = N'202112011158582_AddScriptVersionMetadata_Migration') AND ([ContextKey] = N'WDG.Automation.Data.Migrations.Configuration'))
    CREATE TABLE [dbo].[OidcTenantRole] (
        [Id] [uniqueidentifier] NOT NULL,
        [OidcGroupName] [nvarchar](max),
        [RoleId] [uniqueidentifier] NOT NULL,
        [TenantId] [uniqueidentifier] NOT NULL,
        CONSTRAINT [PK_dbo.OidcTenantRole] PRIMARY KEY ([Id])
    )
    IF object_id(N'[dbo].[FK_dbo.TeamUsers_dbo.Team_TeamId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[TeamUsers] DROP CONSTRAINT [FK_dbo.TeamUsers_dbo.Team_TeamId]
    IF object_id(N'[dbo].[FK_dbo.TeamUsers_dbo.User_UserId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[TeamUsers] DROP CONSTRAINT [FK_dbo.TeamUsers_dbo.User_UserId]
    IF object_id(N'[dbo].[FK_dbo.UserRoles_dbo.Role_RoleId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[UserRoles] DROP CONSTRAINT [FK_dbo.UserRoles_dbo.Role_RoleId]
    IF object_id(N'[dbo].[FK_dbo.UserRoles_dbo.User_UserId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[UserRoles] DROP CONSTRAINT [FK_dbo.UserRoles_dbo.User_UserId]
    IF object_id(N'[dbo].[FK_dbo.LdapGroupUsers_dbo.LdapGroup_LdapGroupId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[LdapGroupUsers] DROP CONSTRAINT [FK_dbo.LdapGroupUsers_dbo.LdapGroup_LdapGroupId]
    IF object_id(N'[dbo].[FK_dbo.LdapGroupUsers_dbo.User_UserId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[LdapGroupUsers] DROP CONSTRAINT [FK_dbo.LdapGroupUsers_dbo.User_UserId]
    IF object_id(N'[dbo].[FK_dbo.Team_dbo.Tenant_TenantId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Team] DROP CONSTRAINT [FK_dbo.Team_dbo.Tenant_TenantId]
    IF object_id(N'[dbo].[FK_dbo.RelatedTeam_dbo.Team_RelatedId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[RelatedTeam] DROP CONSTRAINT [FK_dbo.RelatedTeam_dbo.Team_RelatedId]
    IF object_id(N'[dbo].[FK_dbo.RelatedTeam_dbo.Team_TeamId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[RelatedTeam] DROP CONSTRAINT [FK_dbo.RelatedTeam_dbo.Team_TeamId]
    IF object_id(N'[dbo].[FK_dbo.TeamRoles_dbo.Role_RoleId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[TeamRoles] DROP CONSTRAINT [FK_dbo.TeamRoles_dbo.Role_RoleId]
    IF object_id(N'[dbo].[FK_dbo.TeamRoles_dbo.Team_TeamId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[TeamRoles] DROP CONSTRAINT [FK_dbo.TeamRoles_dbo.Team_TeamId]
    IF object_id(N'[dbo].[FK_dbo.Role_dbo.Tenant_TenantId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Role] DROP CONSTRAINT [FK_dbo.Role_dbo.Tenant_TenantId]
    IF object_id(N'[dbo].[FK_dbo.PermissionRoles_dbo.Role_RoleId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionRoles] DROP CONSTRAINT [FK_dbo.PermissionRoles_dbo.Role_RoleId]
    IF object_id(N'[dbo].[FK_dbo.PermissionRoles_dbo.Permission_PermissionId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionRoles] DROP CONSTRAINT [FK_dbo.PermissionRoles_dbo.Permission_PermissionId]
    IF object_id(N'[dbo].[FK_dbo.Permission_dbo.PermissionGroup_PermissionGroupId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Permission] DROP CONSTRAINT [FK_dbo.Permission_dbo.PermissionGroup_PermissionGroupId]
    IF object_id(N'[dbo].[FK_dbo.PermissionGroup_dbo.User_ModifiedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionGroup] DROP CONSTRAINT [FK_dbo.PermissionGroup_dbo.User_ModifiedById]
    IF object_id(N'[dbo].[FK_dbo.PermissionGroup_dbo.User_DeactivatedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionGroup] DROP CONSTRAINT [FK_dbo.PermissionGroup_dbo.User_DeactivatedById]
    IF object_id(N'[dbo].[FK_dbo.PermissionGroup_dbo.User_CreatedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionGroup] DROP CONSTRAINT [FK_dbo.PermissionGroup_dbo.User_CreatedById]
    IF object_id(N'[dbo].[FK_dbo.Permission_dbo.User_ModifiedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Permission] DROP CONSTRAINT [FK_dbo.Permission_dbo.User_ModifiedById]
    IF object_id(N'[dbo].[FK_dbo.Permission_dbo.User_DeactivatedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Permission] DROP CONSTRAINT [FK_dbo.Permission_dbo.User_DeactivatedById]
    IF object_id(N'[dbo].[FK_dbo.Permission_dbo.User_CreatedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Permission] DROP CONSTRAINT [FK_dbo.Permission_dbo.User_CreatedById]
    IF object_id(N'[dbo].[FK_dbo.PermissionPermissionActions_dbo.PermissionAction_ActionId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionPermissionActions] DROP CONSTRAINT [FK_dbo.PermissionPermissionActions_dbo.PermissionAction_ActionId]
    IF object_id(N'[dbo].[FK_dbo.PermissionPermissionActions_dbo.Permission_PermissionId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionPermissionActions] DROP CONSTRAINT [FK_dbo.PermissionPermissionActions_dbo.Permission_PermissionId]
    IF object_id(N'[dbo].[FK_dbo.PermissionResource_dbo.PermissionAction_ActionId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionResource] DROP CONSTRAINT [FK_dbo.PermissionResource_dbo.PermissionAction_ActionId]
    IF object_id(N'[dbo].[FK_dbo.PermissionAction_dbo.User_ModifiedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionAction] DROP CONSTRAINT [FK_dbo.PermissionAction_dbo.User_ModifiedById]
    IF object_id(N'[dbo].[FK_dbo.PermissionAction_dbo.User_DeactivatedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionAction] DROP CONSTRAINT [FK_dbo.PermissionAction_dbo.User_DeactivatedById]
    IF object_id(N'[dbo].[FK_dbo.PermissionAction_dbo.User_CreatedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[PermissionAction] DROP CONSTRAINT [FK_dbo.PermissionAction_dbo.User_CreatedById]
    IF object_id(N'[dbo].[FK_dbo.Role_dbo.Role_ParentId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Role] DROP CONSTRAINT [FK_dbo.Role_dbo.Role_ParentId]
    IF object_id(N'[dbo].[FK_dbo.Role_dbo.User_ModifiedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Role] DROP CONSTRAINT [FK_dbo.Role_dbo.User_ModifiedById]
    IF object_id(N'[dbo].[FK_dbo.Role_dbo.User_DeactivatedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Role] DROP CONSTRAINT [FK_dbo.Role_dbo.User_DeactivatedById]
    IF object_id(N'[dbo].[FK_dbo.Role_dbo.User_CreatedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Role] DROP CONSTRAINT [FK_dbo.Role_dbo.User_CreatedById]
    IF object_id(N'[dbo].[FK_dbo.Team_dbo.User_ModifiedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Team] DROP CONSTRAINT [FK_dbo.Team_dbo.User_ModifiedById]
    IF object_id(N'[dbo].[FK_dbo.TeamLdapGroups_dbo.LdapGroup_LdapGroupId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[TeamLdapGroups] DROP CONSTRAINT [FK_dbo.TeamLdapGroups_dbo.LdapGroup_LdapGroupId]
    IF object_id(N'[dbo].[FK_dbo.TeamLdapGroups_dbo.Team_TeamId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[TeamLdapGroups] DROP CONSTRAINT [FK_dbo.TeamLdapGroups_dbo.Team_TeamId]
    IF object_id(N'[dbo].[FK_dbo.LdapGroup_dbo.Tenant_TenantId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[LdapGroup] DROP CONSTRAINT [FK_dbo.LdapGroup_dbo.Tenant_TenantId]
    IF object_id(N'[dbo].[FK_dbo.Team_dbo.User_DeactivatedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Team] DROP CONSTRAINT [FK_dbo.Team_dbo.User_DeactivatedById]
    IF object_id(N'[dbo].[FK_dbo.Team_dbo.User_CreatedById]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Team] DROP CONSTRAINT [FK_dbo.Team_dbo.User_CreatedById]
    IF object_id(N'[dbo].[FK_dbo.Tenant_dbo.User_OwnerId]', N'F') IS NOT NULL
        ALTER TABLE [dbo].[Tenant] DROP CONSTRAINT [FK_dbo.Tenant_dbo.User_OwnerId]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_TeamId' AND object_id = object_id(N'[dbo].[TeamUsers]', N'U'))
        DROP INDEX [IX_TeamId] ON [dbo].[TeamUsers]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_UserId' AND object_id = object_id(N'[dbo].[TeamUsers]', N'U'))
        DROP INDEX [IX_UserId] ON [dbo].[TeamUsers]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_RoleId' AND object_id = object_id(N'[dbo].[UserRoles]', N'U'))
        DROP INDEX [IX_RoleId] ON [dbo].[UserRoles]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_UserId' AND object_id = object_id(N'[dbo].[UserRoles]', N'U'))
        DROP INDEX [IX_UserId] ON [dbo].[UserRoles]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_LdapGroupId' AND object_id = object_id(N'[dbo].[LdapGroupUsers]', N'U'))
        DROP INDEX [IX_LdapGroupId] ON [dbo].[LdapGroupUsers]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_UserId' AND object_id = object_id(N'[dbo].[LdapGroupUsers]', N'U'))
        DROP INDEX [IX_UserId] ON [dbo].[LdapGroupUsers]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_RelatedId' AND object_id = object_id(N'[dbo].[RelatedTeam]', N'U'))
        DROP INDEX [IX_RelatedId] ON [dbo].[RelatedTeam]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_TeamId' AND object_id = object_id(N'[dbo].[RelatedTeam]', N'U'))
        DROP INDEX [IX_TeamId] ON [dbo].[RelatedTeam]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_RoleId' AND object_id = object_id(N'[dbo].[TeamRoles]', N'U'))
        DROP INDEX [IX_RoleId] ON [dbo].[TeamRoles]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_TeamId' AND object_id = object_id(N'[dbo].[TeamRoles]', N'U'))
        DROP INDEX [IX_TeamId] ON [dbo].[TeamRoles]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_RoleId' AND object_id = object_id(N'[dbo].[PermissionRoles]', N'U'))
        DROP INDEX [IX_RoleId] ON [dbo].[PermissionRoles]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_PermissionId' AND object_id = object_id(N'[dbo].[PermissionRoles]', N'U'))
        DROP INDEX [IX_PermissionId] ON [dbo].[PermissionRoles]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ActionId' AND object_id = object_id(N'[dbo].[PermissionPermissionActions]', N'U'))
        DROP INDEX [IX_ActionId] ON [dbo].[PermissionPermissionActions]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_PermissionId' AND object_id = object_id(N'[dbo].[PermissionPermissionActions]', N'U'))
        DROP INDEX [IX_PermissionId] ON [dbo].[PermissionPermissionActions]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_LdapGroupId' AND object_id = object_id(N'[dbo].[TeamLdapGroups]', N'U'))
        DROP INDEX [IX_LdapGroupId] ON [dbo].[TeamLdapGroups]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_TeamId' AND object_id = object_id(N'[dbo].[TeamLdapGroups]', N'U'))
        DROP INDEX [IX_TeamId] ON [dbo].[TeamLdapGroups]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_DeactivatedById' AND object_id = object_id(N'[dbo].[PermissionGroup]', N'U'))
        DROP INDEX [IX_DeactivatedById] ON [dbo].[PermissionGroup]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ModifiedById' AND object_id = object_id(N'[dbo].[PermissionGroup]', N'U'))
        DROP INDEX [IX_ModifiedById] ON [dbo].[PermissionGroup]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_CreatedById' AND object_id = object_id(N'[dbo].[PermissionGroup]', N'U'))
        DROP INDEX [IX_CreatedById] ON [dbo].[PermissionGroup]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ActionId' AND object_id = object_id(N'[dbo].[PermissionResource]', N'U'))
        DROP INDEX [IX_ActionId] ON [dbo].[PermissionResource]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_DeactivatedById' AND object_id = object_id(N'[dbo].[PermissionAction]', N'U'))
        DROP INDEX [IX_DeactivatedById] ON [dbo].[PermissionAction]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ModifiedById' AND object_id = object_id(N'[dbo].[PermissionAction]', N'U'))
        DROP INDEX [IX_ModifiedById] ON [dbo].[PermissionAction]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_CreatedById' AND object_id = object_id(N'[dbo].[PermissionAction]', N'U'))
        DROP INDEX [IX_CreatedById] ON [dbo].[PermissionAction]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_DeactivatedById' AND object_id = object_id(N'[dbo].[Permission]', N'U'))
        DROP INDEX [IX_DeactivatedById] ON [dbo].[Permission]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ModifiedById' AND object_id = object_id(N'[dbo].[Permission]', N'U'))
        DROP INDEX [IX_ModifiedById] ON [dbo].[Permission]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_CreatedById' AND object_id = object_id(N'[dbo].[Permission]', N'U'))
        DROP INDEX [IX_CreatedById] ON [dbo].[Permission]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_PermissionGroupId' AND object_id = object_id(N'[dbo].[Permission]', N'U'))
        DROP INDEX [IX_PermissionGroupId] ON [dbo].[Permission]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_DeactivatedById' AND object_id = object_id(N'[dbo].[Role]', N'U'))
        DROP INDEX [IX_DeactivatedById] ON [dbo].[Role]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ModifiedById' AND object_id = object_id(N'[dbo].[Role]', N'U'))
        DROP INDEX [IX_ModifiedById] ON [dbo].[Role]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_CreatedById' AND object_id = object_id(N'[dbo].[Role]', N'U'))
        DROP INDEX [IX_CreatedById] ON [dbo].[Role]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ParentId' AND object_id = object_id(N'[dbo].[Role]', N'U'))
        DROP INDEX [IX_ParentId] ON [dbo].[Role]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'UK_RoleName' AND object_id = object_id(N'[dbo].[Role]', N'U'))
        DROP INDEX [UK_RoleName] ON [dbo].[Role]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_TenantId' AND object_id = object_id(N'[dbo].[LdapGroup]', N'U'))
        DROP INDEX [IX_TenantId] ON [dbo].[LdapGroup]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_DeactivatedById' AND object_id = object_id(N'[dbo].[Team]', N'U'))
        DROP INDEX [IX_DeactivatedById] ON [dbo].[Team]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ModifiedById' AND object_id = object_id(N'[dbo].[Team]', N'U'))
        DROP INDEX [IX_ModifiedById] ON [dbo].[Team]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_CreatedById' AND object_id = object_id(N'[dbo].[Team]', N'U'))
        DROP INDEX [IX_CreatedById] ON [dbo].[Team]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'UK_TeamName' AND object_id = object_id(N'[dbo].[Team]', N'U'))
        DROP INDEX [UK_TeamName] ON [dbo].[Team]
    IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_OwnerId' AND object_id = object_id(N'[dbo].[Tenant]', N'U'))
        DROP INDEX [IX_OwnerId] ON [dbo].[Tenant]
    DECLARE @var1 nvarchar(128)
    SELECT @var1 = name
    FROM sys.default_constraints
    WHERE parent_object_id = object_id(N'dbo.Tenant')
    AND col_name(parent_object_id, parent_column_id) = 'OwnerId';
    IF @var1 IS NOT NULL
        EXECUTE('ALTER TABLE [dbo].[Tenant] DROP CONSTRAINT [' + @var1 + ']')
    ALTER TABLE [dbo].[Tenant] DROP COLUMN [OwnerId]
    DECLARE @var2 nvarchar(128)
    SELECT @var2 = name
    FROM sys.default_constraints
    WHERE parent_object_id = object_id(N'dbo.User')
    AND col_name(parent_object_id, parent_column_id) = 'DistinguishedName';
    IF @var2 IS NOT NULL
        EXECUTE('ALTER TABLE [dbo].[User] DROP CONSTRAINT [' + @var2 + ']')
    ALTER TABLE [dbo].[User] DROP COLUMN [DistinguishedName]
    DROP TABLE [dbo].[TeamUsers]
    DROP TABLE [dbo].[UserRoles]
    DROP TABLE [dbo].[LdapGroupUsers]
    DROP TABLE [dbo].[RelatedTeam]
    DROP TABLE [dbo].[TeamRoles]
    DROP TABLE [dbo].[PermissionRoles]
    DROP TABLE [dbo].[PermissionPermissionActions]
    DROP TABLE [dbo].[TeamLdapGroups]
    DROP TABLE [dbo].[PermissionGroup]
    DROP TABLE [dbo].[PermissionResource]
    DROP TABLE [dbo].[PermissionAction]
    DROP TABLE [dbo].[Permission]
    DROP TABLE [dbo].[Role]
    DROP TABLE [dbo].[LdapGroup]
    DROP TABLE [dbo].[Team]
    CREATE INDEX [IX_TenantId] ON [dbo].[OidcTenantRole]([TenantId])
    CREATE INDEX [IX_RoleId] ON [dbo].[OidcTenantRole]([RoleId])
    ALTER TABLE [dbo].[OidcTenantRole] ADD CONSTRAINT [FK_dbo.OidcTenantRole_dbo.Tenant_TenantId] FOREIGN KEY ([TenantId]) REFERENCES [dbo].[Tenant] ([Id])
    ALTER TABLE [dbo].[OidcTenantRole] ADD CONSTRAINT [FK_dbo.OidcTenantRole_dbo.AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [dbo].[AspNetRoles] ([Id])
    DELETE [dbo].[__MigrationHistory]
    WHERE (([MigrationId] = N'202110081751038_AddRbac_Migration') AND ([ContextKey] = N'WDG.Automation.Data.Migrations.Configuration'))
    CREATE TABLE [dbo].[LdapUser] (
        [Id] [uniqueidentifier] NOT NULL,
        [LdapDN] [nvarchar](max),
        CONSTRAINT [PK_dbo.LdapUser] PRIMARY KEY ([Id])
    )
    CREATE TABLE [dbo].[LdapGroup] (
        [Id] [uniqueidentifier] NOT NULL,
        [LdapDN] [nvarchar](max),
        CONSTRAINT [PK_dbo.LdapGroup] PRIMARY KEY ([Id])
    )
    CREATE TABLE [dbo].[LdapProvider] (
        [Id] [uniqueidentifier] NOT NULL,
        [IP] [nvarchar](max),
        [Port] [int] NOT NULL,
        [UserName] [nvarchar](max),
        [UserPassword] [nvarchar](max),
        [IsDeactivated] [bit] NOT NULL,
        [DeactivationDate] [datetime],
        [CreatedById] [uniqueidentifier],
        [ModifiedById] [uniqueidentifier],
        [DeactivatedById] [uniqueidentifier],
        [ModificationDate] [datetime],
        [CreationDate] [datetime] NOT NULL,
        CONSTRAINT [PK_dbo.LdapProvider] PRIMARY KEY ([Id])
    )
    CREATE TABLE [dbo].[LdapTenantRole] (
        [Id] [uniqueidentifier] NOT NULL,
        [GroupDn] [nvarchar](max),
        [RoleId] [uniqueidentifier] NOT NULL,
        [TenantId] [uniqueidentifier] NOT NULL,
        CONSTRAINT [PK_dbo.LdapTenantRole] PRIMARY KEY ([Id])
    )
    CREATE TABLE [dbo].[LdapTenant] (
        [TenantId] [uniqueidentifier] NOT NULL,
        [Id] [uniqueidentifier] NOT NULL,
        [LdapDN] [nvarchar](max),
        CONSTRAINT [PK_dbo.LdapTenant] PRIMARY KEY ([TenantId])
    )
    CREATE INDEX [IX_Id] ON [dbo].[LdapUser]([Id])
    CREATE INDEX [IX_Id] ON [dbo].[LdapGroup]([Id])
    CREATE INDEX [IX_DeactivatedById] ON [dbo].[LdapProvider]([DeactivatedById])
    CREATE INDEX [IX_ModifiedById] ON [dbo].[LdapProvider]([ModifiedById])
    CREATE INDEX [IX_CreatedById] ON [dbo].[LdapProvider]([CreatedById])
    CREATE INDEX [IX_TenantId] ON [dbo].[LdapTenantRole]([TenantId])
    CREATE INDEX [IX_RoleId] ON [dbo].[LdapTenantRole]([RoleId])
    CREATE INDEX [IX_TenantId] ON [dbo].[LdapTenant]([TenantId])
    ALTER TABLE [dbo].[LdapUser] ADD CONSTRAINT [FK_dbo.LdapUser_dbo.User_Id] FOREIGN KEY ([Id]) REFERENCES [dbo].[User] ([Id])
    ALTER TABLE [dbo].[LdapGroup] ADD CONSTRAINT [FK_dbo.LdapGroup_dbo.Group_Id] FOREIGN KEY ([Id]) REFERENCES [dbo].[Group] ([Id])
    ALTER TABLE [dbo].[LdapProvider] ADD CONSTRAINT [FK_dbo.LdapProvider_dbo.User_ModifiedById] FOREIGN KEY ([ModifiedById]) REFERENCES [dbo].[User] ([Id])
    ALTER TABLE [dbo].[LdapProvider] ADD CONSTRAINT [FK_dbo.LdapProvider_dbo.User_DeactivatedById] FOREIGN KEY ([DeactivatedById]) REFERENCES [dbo].[User] ([Id])
    ALTER TABLE [dbo].[LdapProvider] ADD CONSTRAINT [FK_dbo.LdapProvider_dbo.User_CreatedById] FOREIGN KEY ([CreatedById]) REFERENCES [dbo].[User] ([Id])
    ALTER TABLE [dbo].[LdapTenantRole] ADD CONSTRAINT [FK_dbo.LdapTenantRole_dbo.Tenant_TenantId] FOREIGN KEY ([TenantId]) REFERENCES [dbo].[Tenant] ([Id])
    ALTER TABLE [dbo].[LdapTenantRole] ADD CONSTRAINT [FK_dbo.LdapTenantRole_dbo.AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [dbo].[AspNetRoles] ([Id])
    ALTER TABLE [dbo].[LdapTenant] ADD CONSTRAINT [FK_dbo.LdapTenant_dbo.Tenant_TenantId] FOREIGN KEY ([TenantId]) REFERENCES [dbo].[Tenant] ([Id])
    DELETE [dbo].[__MigrationHistory]
    WHERE (([MigrationId] = N'202110081748225_RemoveLdap_Migration') AND ([ContextKey] = N'WDG.Automation.Data.Migrations.Configuration'))
    DECLARE @var3 nvarchar(128)
    SELECT @var3 = name
    FROM sys.default_constraints
    WHERE parent_object_id = object_id(N'dbo.Tenant')
    AND col_name(parent_object_id, parent_column_id) = 'AuditIgnoreReadRequests';
    IF @var3 IS NOT NULL
        EXECUTE('ALTER TABLE [dbo].[Tenant] DROP CONSTRAINT [' + @var3 + ']')
    ALTER TABLE [dbo].[Tenant] DROP COLUMN [AuditIgnoreReadRequests]
    DECLARE @var4 nvarchar(128)
    SELECT @var4 = name
    FROM sys.default_constraints
    WHERE parent_object_id = object_id(N'dbo.Tenant')
    AND col_name(parent_object_id, parent_column_id) = 'AuditLogOnDatabase';
    IF @var4 IS NOT NULL
        EXECUTE('ALTER TABLE [dbo].[Tenant] DROP CONSTRAINT [' + @var4 + ']')
    ALTER TABLE [dbo].[Tenant] DROP COLUMN [AuditLogOnDatabase]
    DELETE [dbo].[__MigrationHistory]
    WHERE (([MigrationId] = N'202109102021333_AuditLogTenantFields_Migration') AND ([ContextKey] = N'WDG.Automation.Data.Migrations.Configuration'))
    
  5. Set the 'replicas` field in the IBM RPA CR back to its previous value:

    apiVersion: rpa.automation.ibm.com/v1beta1
    kind: RoboticProcessAutomation
    metadata:
    name: rpa-sample
    spec:
    license:
        accept: true
    version: 1.1.0
    tls: {}
    api:
        externalConnection:
        secretName: rpa-db
        firstTenant:
        groupMappings:
            adminGroups: IBM Development
            superAdminsGroups: IBM Manager
            userGroups: IBM User
        name: ibm
        owner:
            email: superuser@example.com
            name: superuser
        replicas: 1
        smtp:
        port: 587
        server: smtp.example.com
        userSecret:
            secretName: rpa-smtp
        storage: {}
    ui:
        replicas: 1
    ocr:
        replicas: 1