UiPath Documentation
orchestrator
2023.10
false
UiPath logo, featuring letters U and I in white

Orchestrator installation guide

Last updated Mar 24, 2026

Before you upgrade

Please make sure to perform these steps before you upgrade to 2023.4+. They help ensure that, once the upgrade is done, you can get started in no time, with zero issues.

  1. Back up your database to remove any data loss risks.
  2. Run the pre-upgrade database maintenance script below.

This script removes all expired or consumed grants from the database. This helps speed up the [identity].[PersistedGrants] primary key and index re-creation, and, as such, the database migration.

DECLARE @Now DATETIME2 = GETUTCDATE()
DECLARE @ConsumedGrantsGracePeriod DATETIME2 = DATEADD(hour, -2, @Now)

DECLARE @ConsumedDeleted int = 1
DECLARE @ExpiredDeleted int = 1
DECLARE @BatchSize int = 500
DECLARE @ConsumedBatchesDeleted int = 0
DECLARE @ExpiredBatchesDeleted int = 0

SET LOCK_TIMEOUT 0
SET DEADLOCK_PRIORITY LOW

WHILE (@ConsumedDeleted=1 OR @ExpiredDeleted=1)
BEGIN

  IF @ConsumedDeleted=1
  BEGIN
    BEGIN TRY
      DELETE TOP(@BatchSize) FROM [identity].[PersistedGrants] WHERE [ConsumedTime] IS NOT NULL AND [ConsumedTime] < @ConsumedGrantsGracePeriod AND [Type] <> 'reference_token'
      IF @@ROWCOUNT = 0
        SET @ConsumedDeleted=0
      ELSE
        SET @ConsumedBatchesDeleted = @ConsumedBatchesDeleted + 1
    END TRY
    BEGIN CATCH
      PRINT 'Failed to delete consumed grants'
    END CATCH
  END

  IF @ExpiredDeleted=1
  BEGIN
    BEGIN TRY
      DELETE TOP(@BatchSize) FROM [identity].[PersistedGrants] WHERE [Expiration] < @Now AND [Type] <> 'reference_token'
      IF @@ROWCOUNT = 0
        SET @ExpiredDeleted=0
      ELSE
        SET @ExpiredBatchesDeleted = @ExpiredBatchesDeleted + 1
    END TRY
    BEGIN CATCH
      PRINT 'Failed to delete expired grants'
    END CATCH
  END

  PRINT 'Consumed batches deleted: ' + CONVERT(nvarchar(32), @ConsumedBatchesDeleted)
  PRINT 'Expired batches deleted: ' + CONVERT(nvarchar(32), @ExpiredBatchesDeleted)

  -- Wait for 10 seconds between deletes
  IF (@ExpiredDeleted=1 OR @ConsumedDeleted=1)
    WAITFOR DELAY '00:00:05.000'

END
DECLARE @Now DATETIME2 = GETUTCDATE()
DECLARE @ConsumedGrantsGracePeriod DATETIME2 = DATEADD(hour, -2, @Now)

DECLARE @ConsumedDeleted int = 1
DECLARE @ExpiredDeleted int = 1
DECLARE @BatchSize int = 500
DECLARE @ConsumedBatchesDeleted int = 0
DECLARE @ExpiredBatchesDeleted int = 0

SET LOCK_TIMEOUT 0
SET DEADLOCK_PRIORITY LOW

WHILE (@ConsumedDeleted=1 OR @ExpiredDeleted=1)
BEGIN

  IF @ConsumedDeleted=1
  BEGIN
    BEGIN TRY
      DELETE TOP(@BatchSize) FROM [identity].[PersistedGrants] WHERE [ConsumedTime] IS NOT NULL AND [ConsumedTime] < @ConsumedGrantsGracePeriod AND [Type] <> 'reference_token'
      IF @@ROWCOUNT = 0
        SET @ConsumedDeleted=0
      ELSE
        SET @ConsumedBatchesDeleted = @ConsumedBatchesDeleted + 1
    END TRY
    BEGIN CATCH
      PRINT 'Failed to delete consumed grants'
    END CATCH
  END

  IF @ExpiredDeleted=1
  BEGIN
    BEGIN TRY
      DELETE TOP(@BatchSize) FROM [identity].[PersistedGrants] WHERE [Expiration] < @Now AND [Type] <> 'reference_token'
      IF @@ROWCOUNT = 0
        SET @ExpiredDeleted=0
      ELSE
        SET @ExpiredBatchesDeleted = @ExpiredBatchesDeleted + 1
    END TRY
    BEGIN CATCH
      PRINT 'Failed to delete expired grants'
    END CATCH
  END

  PRINT 'Consumed batches deleted: ' + CONVERT(nvarchar(32), @ConsumedBatchesDeleted)
  PRINT 'Expired batches deleted: ' + CONVERT(nvarchar(32), @ExpiredBatchesDeleted)

  -- Wait for 10 seconds between deletes
  IF (@ExpiredDeleted=1 OR @ConsumedDeleted=1)
    WAITFOR DELAY '00:00:05.000'

END
  1. Migrate your classic folders to modern folders, so as to ensure uninterrupted executions. These are the changes that you can expect at this point in the classic folders removal process.

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated