# 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.

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](https://docs.uipath.com/orchestrator/standalone/2024.10/installation-guide/backup-and-restore#backup-and-restore) 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
   ```
3. [Migrate](https://docs.uipath.com/orchestrator/standalone/2022.10/user-guide/migrating-from-classic-folders-to-modern-folders) your classic folders to modern folders, so as to ensure uninterrupted executions. [These](https://docs.uipath.com/overview/other/latest/overview/classic-folders-removal) are the changes that you can expect at this point in the classic folders removal process.
