Transfer a top-level group into an Organization
This epic covers the work required for Protocells.
Provide the ability to transfer top level groups into an Organization.
The below is a high level flowchart representation. Click a node to visit the corresponding epic.
```mermaid
graph TD
A[Cohort #1] -->|Iterate cohort list| B[Mark TLG Isolated]
B -->|Iterate isolated TLGs| C[Send opt-out email]
C -->|X days elapsed| D[Mark User/TLG as opted-in]
C -->|User click| E[Mark User/TLG as opted-out]
D -->|Traverse opt-ins| F[Promote TLG to Organization]
F -->|Enforce Isolation| G[Fully Isolated Organization]
G -.-> H[Data Migration Process]
style H stroke-dasharray: 5 5
click A "https://gitlab.com/gitlab-com/gl-infra/mstaff/-/issues/474"
click B "https://gitlab.com/groups/gitlab-org/-/epics/19385"
click C "https://gitlab.com/groups/gitlab-org/-/epics/11839"
click D "https://gitlab.com/groups/gitlab-org/-/epics/11839"
click E "https://gitlab.com/groups/gitlab-org/-/epics/11839"
click F "https://gitlab.com/groups/gitlab-org/-/epics/19385"
click G "https://gitlab.com/groups/gitlab-org/-/epics/18089"
click H "https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/1626"
```
# FY26Q3 Target
**The ability to transfer a very small top level group into a new Organization.**
We need a facility that will work as a one off for Q3 and then ramp into transferring hundreds of thousands of TLGs after that.
I setup a new trial user account with username `alex-nofriends` and accepted all defaults during signup. I was left with the following group `https://gitlab.com/alex-nofriends-group` (don't link this in any way please!). I will leave the account as is to define a minimal top-level group data footprint to target as our first TLG. You have my consent to move this into an Organization.
## Exit criteria (FY26Q4)
* GitLab team members will be able to call an Admin API to trigger the transfer of a top-level group to a new Organization.
* Ability to successfully transfer `alex-nofriends-group` and `alex-nofriends` user.
* Work should be kept updated with the table(s) in https://gitlab.com/groups/gitlab-com/gl-infra/tenant-scale/-/wikis/Sharding-Priorities
<!-- STATUS NOTE START -->
## Status 2025-11-10
:tada: **achievements**:
- Moved the following issues out of this epic into a future iteration since they're not immediately relevant:
* https://gitlab.com/gitlab-org/gitlab/-/issues/571543+
* https://gitlab.com/gitlab-org/gitlab/-/issues/571542+
- Merged https://gitlab.com/gitlab-org/gitlab/-/merge_requests/210812+
:issue-blocked: **blockers**:
- None
:arrow_forward: **next**:
- Finishing up this epic. Then we need to move on to https://gitlab.com/groups/gitlab-org/-/epics/19841+
_Copied from https://gitlab.com/groups/gitlab-org/-/epics/19413#note_2877228906_
<!-- STATUS NOTE END -->
epic