[SPIKE] Identify strategy to manage seat assignment at primary integration points
Background
This issue is part of [Seat Assignment Model] Backend Foundation (&16982)
In #565402 (closed) the following locations were identified as primary integration points requiring seat assignment coverage:
Service Layer Integration:
Members::CreateService#after_executeMembers::UpdateService#post_updateMembers::ApproveAccessRequestService#after_executeMembers::DestroyService#after_execute
SCIM Service Integration:
Gitlab::Scim::Group::ProvisioningService#create_user_and_memberGitlab::Scim::Group::DeprovisioningService#remove_group_accessGitlab::Scim::Group::ReprovisioningService#add_member
SAML Integration:
Gitlab::Auth::GroupSaml::MembershipUpdater#add_default_membership- SAML group sync worker completions
LDAP Integration:
Gitlab::Auth::Ldap::Sync::Group#add_or_update_user_membership
Model Callback Integration:
Member#refresh_member_authorized_projectsMember#after_accept_inviteMember#after_accept_request
Proposal
In this issue we want to explore strategies to manage seat assignment at these primary integrations.
Result
Agreed upon strategy to manage seat assignments at these primary integrations, in consideration for future extension.
Considerations
- Each location should trigger seat assignment creation/updates through a centralized service to ensure consistency.
- Implement idempotent operations to handle duplicate triggers.
- Consider async processing for bulk operations to avoid performance impacts.
- Ensure proper error handling and rollback mechanisms for failed seat assignments.
Edited by Katherine Richards