From 3cadbf4f046a0b94a5b39ab4bc7b62ef690da2da Mon Sep 17 00:00:00 2001 From: Jared McCannon Date: Tue, 24 Feb 2026 14:12:29 -0600 Subject: [PATCH 1/3] Cleaning up code around feature flag. removing old implementation. will remove flag in subsequent pr. --- .../OrganizationUsersController.cs | 2 +- .../v1/RestoreOrganizationUserCommand.cs | 8 ++--- .../RestoreOrganizationUserCommandTests.cs | 36 ------------------- 3 files changed, 3 insertions(+), 43 deletions(-) diff --git a/src/Api/AdminConsole/Controllers/OrganizationUsersController.cs b/src/Api/AdminConsole/Controllers/OrganizationUsersController.cs index 6d2dd61aa125..88f9f11e3e91 100644 --- a/src/Api/AdminConsole/Controllers/OrganizationUsersController.cs +++ b/src/Api/AdminConsole/Controllers/OrganizationUsersController.cs @@ -693,6 +693,7 @@ public async Task> PatchBul [HttpPut("{id}/restore")] [Authorize] + [Obsolete("This endpoint is deprecated. Use _vNext endpoint instead. This will be removed in a future release.")] public async Task RestoreAsync(Guid orgId, Guid id) { await RestoreOrRevokeUserAsync(orgId, id, (orgUser, userId) => _restoreOrganizationUserCommand.RestoreUserAsync(orgUser, userId, null)); @@ -701,7 +702,6 @@ public async Task RestoreAsync(Guid orgId, Guid id) [HttpPut("{id}/restore/vnext")] [Authorize] - [RequireFeature(FeatureFlagKeys.DefaultUserCollectionRestore)] public async Task RestoreAsync_vNext(Guid orgId, Guid id, [FromBody] OrganizationUserRestoreRequest request) { await RestoreOrRevokeUserAsync(orgId, id, (orgUser, userId) => _restoreOrganizationUserCommand.RestoreUserAsync(orgUser, userId, request.DefaultUserCollectionName)); diff --git a/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/v1/RestoreOrganizationUserCommand.cs b/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/v1/RestoreOrganizationUserCommand.cs index dd9c73a21d5b..f695b435969b 100644 --- a/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/v1/RestoreOrganizationUserCommand.cs +++ b/src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/v1/RestoreOrganizationUserCommand.cs @@ -108,7 +108,6 @@ private async Task RepositoryRestoreUserAsync(OrganizationUser organizationUser, if (organizationUser.UserId.HasValue && (await policyRequirementQuery.GetAsync(organizationUser.UserId.Value)).State == OrganizationDataOwnershipState.Enabled && status == OrganizationUserStatusType.Confirmed - && featureService.IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) && !string.IsNullOrWhiteSpace(defaultCollectionName)) { await collectionRepository.CreateDefaultCollectionsAsync(organizationUser.OrganizationId, @@ -251,11 +250,8 @@ public async Task>> RestoreUsersAsync(Guid } } - if (featureService.IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore)) - { - await CreateDefaultCollectionsForConfirmedUsersAsync(organizationId, defaultCollectionName, - result.Where(r => r.Item2 == "").Select(x => x.Item1).ToList()); - } + await CreateDefaultCollectionsForConfirmedUsersAsync(organizationId, defaultCollectionName, + result.Where(r => r.Item2 == "").Select(x => x.Item1).ToList()); return result; } diff --git a/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/RestoreOrganizationUserCommandTests.cs b/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/RestoreOrganizationUserCommandTests.cs index 29c996cee99f..f99d2821e682 100644 --- a/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/RestoreOrganizationUserCommandTests.cs +++ b/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/RestoreOrganizationUserCommandTests.cs @@ -1188,10 +1188,6 @@ public async Task RestoreUser_WithDataOwnershipPolicyEnabled_AndConfirmedUser_Cr organizationUser.Email = null; // This causes user to restore to Confirmed status RestoreUser_Setup(organization, owner, organizationUser, sutProvider); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - SetupOrganizationDataOwnershipPolicy( sutProvider, organizationUser.UserId!.Value, @@ -1223,10 +1219,6 @@ public async Task RestoreUser_WithDataOwnershipPolicyDisabled_DoesNotCreateDefau organizationUser.Email = null; // This causes user to restore to Confirmed status RestoreUser_Setup(organization, owner, organizationUser, sutProvider); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - SetupOrganizationDataOwnershipPolicy( sutProvider, organizationUser.UserId!.Value, @@ -1254,10 +1246,6 @@ public async Task RestoreUser_WithNullDefaultCollectionName_DoesNotCreateDefault organizationUser.Email = null; // This causes user to restore to Confirmed status RestoreUser_Setup(organization, owner, organizationUser, sutProvider); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - SetupOrganizationDataOwnershipPolicy( sutProvider, organizationUser.UserId!.Value, @@ -1288,10 +1276,6 @@ public async Task RestoreUser_WithEmptyOrWhitespaceDefaultCollectionName_DoesNot organizationUser.Email = null; // This causes user to restore to Confirmed status RestoreUser_Setup(organization, owner, organizationUser, sutProvider); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - SetupOrganizationDataOwnershipPolicy( sutProvider, organizationUser.UserId!.Value, @@ -1323,10 +1307,6 @@ public async Task RestoreUser_UserRestoredToInvitedStatus_DoesNotCreateDefaultCo organizationUser.Key = null; RestoreUser_Setup(organization, owner, organizationUser, sutProvider); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - // Act await sutProvider.Sut.RestoreUserAsync(organizationUser, owner.Id, defaultCollectionName); @@ -1351,10 +1331,6 @@ public async Task RestoreUser_WithNoUserId_DoesNotCreateDefaultCollection( organizationUser.Key = null; RestoreUser_Setup(organization, owner, organizationUser, sutProvider); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - // Act await sutProvider.Sut.RestoreUserAsync(organizationUser, owner.Id, defaultCollectionName); @@ -1382,10 +1358,6 @@ public async Task RestoreUsers_Bulk_WithDataOwnershipPolicy_CreatesCollectionsFo var organizationUserRepository = sutProvider.GetDependency(); var userService = Substitute.For(); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - // orgUser1: Will restore to Confirmed (Email = null) orgUser1.Email = null; orgUser1.OrganizationId = organization.Id; @@ -1443,10 +1415,6 @@ public async Task RestoreUsers_Bulk_WithMixedPolicyStates_OnlyCreatesForEnabledP var organizationUserRepository = sutProvider.GetDependency(); var userService = Substitute.For(); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - // Both users will restore to Confirmed orgUser1.Email = null; orgUser1.OrganizationId = organization.Id; @@ -1500,10 +1468,6 @@ public async Task RestoreUsers_Bulk_WithNullCollectionName_DoesNotCreateAnyColle var organizationUserRepository = sutProvider.GetDependency(); var userService = Substitute.For(); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - // Both users will restore to Confirmed orgUser1.Email = null; orgUser1.OrganizationId = organization.Id; From a97551089ea3c2cbffecd9f55d4a7c6153242fca Mon Sep 17 00:00:00 2001 From: Jared McCannon Date: Tue, 24 Feb 2026 15:07:03 -0600 Subject: [PATCH 2/3] Remove unused feature flag --- src/Core/Constants.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Core/Constants.cs b/src/Core/Constants.cs index e9806f47c1d1..ec9b02ec7088 100644 --- a/src/Core/Constants.cs +++ b/src/Core/Constants.cs @@ -141,7 +141,6 @@ public static class FeatureFlagKeys public const string AutomaticConfirmUsers = "pm-19934-auto-confirm-organization-users"; public const string ScimRevokeV2 = "pm-32394-scim-revoke-put-v2"; public const string PM23845_VNextApplicationCache = "pm-24957-refactor-memory-application-cache"; - public const string DefaultUserCollectionRestore = "pm-30883-my-items-restored-users"; public const string RefactorMembersComponent = "pm-29503-refactor-members-inheritance"; public const string BulkReinviteUI = "pm-28416-bulk-reinvite-ux-improvements"; public const string UpdateJoinOrganizationEmailTemplate = "pm-28396-update-join-organization-email-template"; From 582f5e211e31d42ac2c79a45d2a73c50c8abb59c Mon Sep 17 00:00:00 2001 From: Jared McCannon Date: Mon, 2 Mar 2026 11:06:48 -0600 Subject: [PATCH 3/3] Fixing test from merge --- .../RestoreOrganizationUserCommandTests.cs | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/RestoreOrganizationUserCommandTests.cs b/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/RestoreOrganizationUserCommandTests.cs index 453259d2d3af..1b3e5fb8eb76 100644 --- a/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/RestoreOrganizationUserCommandTests.cs +++ b/test/Core.Test/AdminConsole/OrganizationFeatures/OrganizationUsers/RestoreUser/RestoreOrganizationUserCommandTests.cs @@ -1521,10 +1521,6 @@ public async Task RestoreUserAsync_UseMyItemsDisabled_DoesNotCreateCollection( RestoreUser_Setup(organization, owner, orgUser, sutProvider); organization.UseMyItems = false; - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - // User will restore to Confirmed orgUser.Email = null; orgUser.OrganizationId = organization.Id; @@ -1554,10 +1550,6 @@ public async Task RestoreUserAsync_UseMyItemsEnabled_CreatesCollection( RestoreUser_Setup(organization, owner, orgUser, sutProvider); organization.UseMyItems = true; - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - // User will restore to Confirmed orgUser.Email = null; orgUser.OrganizationId = organization.Id; @@ -1594,10 +1586,6 @@ public async Task RestoreUsersAsync_UseMyItemsDisabled_DoesNotCreateCollections( var organizationUserRepository = sutProvider.GetDependency(); var userService = Substitute.For(); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - // Both users will restore to Confirmed orgUser1.Email = null; orgUser1.OrganizationId = organization.Id; @@ -1651,10 +1639,6 @@ public async Task RestoreUsersAsync_UseMyItemsEnabled_CreatesCollections( var organizationUserRepository = sutProvider.GetDependency(); var userService = Substitute.For(); - sutProvider.GetDependency() - .IsEnabled(FeatureFlagKeys.DefaultUserCollectionRestore) - .Returns(true); - // Both users will restore to Confirmed orgUser1.Email = null; orgUser1.OrganizationId = organization.Id;