Skip to main content

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