Skip to content

Commit

Permalink
[SM-1075] Fix bulk remove organization users with Secrets Manager (#4197
Browse files Browse the repository at this point in the history
)

* Fix OrganizationUser_DeleteByIds procedure

* Add db migration
  • Loading branch information
Thomas-Avery committed Jun 21, 2024
1 parent c4f176a commit 8a1b64a
Show file tree
Hide file tree
Showing 2 changed files with 122 additions and 2 deletions.
22 changes: 20 additions & 2 deletions src/Sql/dbo/Stored Procedures/OrganizationUser_DeleteByIds.sql
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,29 @@ BEGIN

SET @BatchSize = @@ROWCOUNT

COMMIT TRANSACTION GoupUser_DeleteMany_GroupUsers
COMMIT TRANSACTION GroupUser_DeleteMany_GroupUsers
END

SET @BatchSize = 100;

-- Delete User Access Policies
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION AccessPolicy_DeleteMany_Users

DELETE TOP(@BatchSize) AP
FROM
[dbo].[AccessPolicy] AP
INNER JOIN
@Ids I ON I.Id = AP.OrganizationUserId

SET @BatchSize = @@ROWCOUNT

COMMIT TRANSACTION AccessPolicy_DeleteMany_Users
END

EXEC [dbo].[OrganizationSponsorship_OrganizationUsersDeleted] @Ids

SET @BatchSize = 100;

-- Delete OrganizationUsers
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
CREATE OR ALTER PROCEDURE [dbo].[OrganizationUser_DeleteByIds]
@Ids [dbo].[GuidIdArray] READONLY
AS
BEGIN
SET NOCOUNT ON

EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationUserIds] @Ids

DECLARE @UserAndOrganizationIds [dbo].[TwoGuidIdArray]

INSERT INTO @UserAndOrganizationIds
(Id1, Id2)
SELECT
UserId,
OrganizationId
FROM
[dbo].[OrganizationUser] OU
INNER JOIN
@Ids OUIds ON OUIds.Id = OU.Id
WHERE
UserId IS NOT NULL AND
OrganizationId IS NOT NULL

BEGIN
EXEC [dbo].[SsoUser_DeleteMany] @UserAndOrganizationIds
END

DECLARE @BatchSize INT = 100

-- Delete CollectionUsers
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION CollectionUser_DeleteMany_CUs

DELETE TOP(@BatchSize) CU
FROM
[dbo].[CollectionUser] CU
INNER JOIN
@Ids I ON I.Id = CU.OrganizationUserId

SET @BatchSize = @@ROWCOUNT

COMMIT TRANSACTION CollectionUser_DeleteMany_CUs
END

SET @BatchSize = 100;

-- Delete GroupUsers
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION GroupUser_DeleteMany_GroupUsers

DELETE TOP(@BatchSize) GU
FROM
[dbo].[GroupUser] GU
INNER JOIN
@Ids I ON I.Id = GU.OrganizationUserId

SET @BatchSize = @@ROWCOUNT

COMMIT TRANSACTION GroupUser_DeleteMany_GroupUsers
END

SET @BatchSize = 100;

-- Delete User Access Policies
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION AccessPolicy_DeleteMany_Users

DELETE TOP(@BatchSize) AP
FROM
[dbo].[AccessPolicy] AP
INNER JOIN
@Ids I ON I.Id = AP.OrganizationUserId

SET @BatchSize = @@ROWCOUNT

COMMIT TRANSACTION AccessPolicy_DeleteMany_Users
END

EXEC [dbo].[OrganizationSponsorship_OrganizationUsersDeleted] @Ids

SET @BatchSize = 100;

-- Delete OrganizationUsers
WHILE @BatchSize > 0
BEGIN
BEGIN TRANSACTION OrganizationUser_DeleteMany_OUs

DELETE TOP(@BatchSize) OU
FROM
[dbo].[OrganizationUser] OU
INNER JOIN
@Ids I ON I.Id = OU.Id

SET @BatchSize = @@ROWCOUNT

COMMIT TRANSACTION OrganizationUser_DeleteMany_OUs
END
END
GO

0 comments on commit 8a1b64a

Please sign in to comment.