The Complete Guide to Migrating to GitHub Enterprise Managed Users - Part 5: Migration Execution #189386
jmassardo
started this conversation in
Discover: GitHub Best Practices
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
The Complete Guide to Migrating to GitHub Enterprise Managed Users - Part 5: Migration Execution
Phase 5: Migration Execution
Moving repositories, group by group.
With security policies in place and users provisioned, it's time to start migrating. This phase is iterative - you'll repeat it for each team or group of repositories. Start with a pilot group, learn from the experience, then expand.
The Migration Loop
flowchart TB subgraph Loop["Repeat for Each Group"] SELECT["Select next group\n(team/dept/repos)"] --> MIGRATE["Run GEI migration"] MIGRATE --> MANNEQUIN["Reclaim mannequins"] MANNEQUIN --> VALIDATE["Validate & test"] VALIDATE --> TRAIN["Train users"] TRAIN --> CUTOVER["Cutover group"] CUTOVER --> MONITOR["Monitor & support"] MONITOR --> DECISION{"More groups?"} DECISION -->|Yes| SELECT DECISION -->|No| DONE["Migration complete"] end style Loop fill:#f9f9f9,stroke:#333,color:#333 style DONE fill:#c8e6c9,stroke:#388e3c,color:#333 style SELECT fill:#b3e5fc,stroke:#0288d1,color:#333 style MIGRATE fill:#b3e5fc,stroke:#0288d1,color:#333 style MANNEQUIN fill:#b3e5fc,stroke:#0288d1,color:#333 style VALIDATE fill:#b3e5fc,stroke:#0288d1,color:#333 style TRAIN fill:#b3e5fc,stroke:#0288d1,color:#333 style CUTOVER fill:#b3e5fc,stroke:#0288d1,color:#333 style MONITOR fill:#b3e5fc,stroke:#0288d1,color:#333 style DECISION fill:#fff9c4,stroke:#f9a825,color:#333GitHub Migration Tools
GitHub provides several tools for migration depending on your source platform.
GitHub Enterprise Importer (GEI)
GitHub Enterprise Importer is the primary tool for high-fidelity migrations. It supports:
Key features:
Install and use GEI via the GitHub CLI:
Handling Mannequins
When you migrate with GEI, user activity gets linked to placeholder identities called "mannequins." After migration, you'll need to reclaim these mannequins and attribute them to real managed user accounts.
See Reclaiming mannequins for GitHub Enterprise Importer for the process.
Dry Runs and Rollback Planning
Always do a dry run first. GEI supports dry-run migrations that validate everything without actually moving data:
# Dry run a repository migration gh gei migrate-repo \ --github-source-org SOURCE_ORG \ --source-repo REPO_NAME \ --github-target-org TARGET_ORG \ --target-repo REPO_NAME \ --dry-runRollback considerations:
EMU migrations don't have a simple "undo" button. Plan accordingly:
Keep the source active: Don't decommission your source environment until the migrated group is fully validated and productive. Run both in parallel during the transition.
Set a cutover date, not a point of no return: Users can work in the old environment until you're confident the new one is ready. Communication is key.
Repository rollback: If a specific repo migration fails, you can re-run GEI. The source repo is never modified during migration.
User rollback: If SCIM causes issues, you can adjust IdP group assignments. Removing a user from the GitHub app assignment suspends (not deletes) their account.
Document your baseline: Before starting each group's migration, document the current state so you know what "working" looks like.
The real safety net is iteration: By migrating group by group, a problem only affects one team, not your entire organization.
Beta Was this translation helpful? Give feedback.
All reactions