About migrations between IdPs and tenants
While using Enterprise Managed Users, you may need to migrate your enterprise to a new tenant on your IdP, or to a different identity management system. For example, you might be ready to migrate from a test environment to your production environment, or your company may decide to use a new identity system.
Before you migrate to a new authentication and provisioning configuration, review the prerequisites and guidelines for preparation. When you're ready to migrate, you'll disable authentication and provisioning for your enterprise, then reconfigure both. You cannot edit your existing configuration for authentication and provisioning.
GitHub will delete the existing SCIM identities associated with your enterprise's managed user accounts when authentication is disabled for the enterprise. For more details on the impact of disabling authentication for an enterprise with enterprise managed users, See Disabling authentication for Enterprise Managed Users.
After authentication and provisioning is reconfigured at the end of the migration, users and groups must be re-provisioned from the new IdP/tenant. When the users are re-provisioned, GitHub will compare the normalized SCIM userName
attribute values to the GitHub usernames (the portion before the _[shortcode]
) in the enterprise in order to link the SCIM identities from the new IdP/tenant to existing enterprise managed user accounts. For more information, see Username considerations for external authentication.
Prerequisites
- When you began using GitHub Enterprise Cloud, you must have chosen to create an enterprise with managed users. For more information, see Choosing an enterprise type for GitHub Enterprise Cloud.
- Review and understand the requirements for integration with Enterprise Managed Users from an external identity management system. To simplify configuration and support, you can use a single partner IdP for a "paved-path" integration. Alternatively, you can configure authentication using a system that adheres to the Security Assertion Markup Language (SAML) 2.0 and System for Cross-domain Identity Management (SCIM) 2.0 standards. For more information, see About Enterprise Managed Users.
- You must have already configured authentication and SCIM provisioning for your enterprise.
Preparing for migration
To migrate to a new configuration for authentication and provisioning, you must first disable authentication and provisioning for your enterprise. Before you disable your existing configuration, review the following considerations:
-
Before you migrate, determine whether the values of the normalized SCIM
userName
attribute will remain the same for managed user accounts in the new environment. These normalized SCIMuserName
attribute values must remain the same for users in order for the SCIM identities provisioned from the new IdP/tenant to get properly linked to the existing enterprise managed user accounts. For more information, see Username considerations for external authentication.- If the normalized SCIM
userName
values will remain the same after the migration, you can complete the migration yourself. - If the normalized SCIM
userName
values will change after the migration, GitHub will need to help with your migration. For more information, see Migrating when the normalized SCIMuserName
values will change.
- If the normalized SCIM
-
Do not remove any users or groups from the application for Enterprise Managed Users on your identity management system until after your migration is complete.
-
GitHub will delete any personal access tokens or SSH keys associated with your enterprise's managed user accounts. Plan for a migration window after reconfiguration during which you can create and provide new credentials to any external integrations.
-
As part of the migration steps below, GitHub will delete all of the SCIM-provisioned groups in your enterprise when authentication is disabled for the enterprise. For more information, see Disabling authentication for Enterprise Managed Users.
If any of these SCIM-provisioned IdP groups are linked to teams in your enterprise, this will remove the link between these teams on GitHub and IdP groups, and these links are not automatically reinstated after the migration. GitHub will also remove all members from the previously linked teams. You may experience disruption if you use groups on your identity management system to manage access to organizations or licenses. GitHub recommends that you use the REST API to list team connections and group membership before you migrate, and to reinstate connections afterwards. For more information, see REST API endpoints for external groups in the REST API documentation.
Migrating to a new IdP or tenant
To migrate to a new IdP or tenant, you must complete the following tasks.
- Validate matching SCIM
userName
attributes. - Download single sign-on recovery codes.
- Disable provisioning on your current IdP.
- Disable authentication for your enterprise.
- Validate suspension of your enterprise's members.
- Reconfigure authentication and provisioning.
1. Validate matching SCIM userName
attributes
For a seamless migration, ensure that the SCIM userName
attribute on your new SCIM provider matches the attribute on your old SCIM provider. If these attributes don't match, see Migrating when the normalized SCIM userName
values will change.
2. Download single sign-on recovery codes
If you don't already have single sign-on recovery codes for your enterprise, download the codes now. For more information, see Downloading your enterprise account's single sign-on recovery codes.
3. Disable provisioning on your current IdP
- On your current IdP, deactivate provisioning in the application for Enterprise Managed Users.
- If you use Entra ID, navigate to the "Provisioning" tab of the application, and then click Stop provisioning.
- If you use Okta, navigate to the "Provisioning" tab of the application, click the Integration tab, and then click Edit. Deselect Enable API integration.
- If you use PingFederate, navigate to the channel settings in the application. From the Activation & Summary tab, click Active or Inactive to toggle the provisioning status, and then click Save. For more information about managing provisioning, see Reviewing channel settings and Managing channels in the PingFederate documentation.
- If you use another identity management system, consult the system's documentation, support team, or other resources.
4. Disable authentication for your enterprise
- Use a recovery code to sign into GitHub as the setup user, whose username is your enterprise's shortcode suffixed with
_admin
. For more information about the setup user, see Getting started with Enterprise Managed Users. - Disable authentication for your enterprise. For more information, see Disabling authentication for Enterprise Managed Users.
- Wait up to an hour for GitHub to suspend your enterprise's members, delete the linked SCIM identities, and delete the SCIM-provisioned IdP groups.
5. Validate suspension of your enterprise's members
After you disable authentication in your GitHub enterprise settings, GitHub will suspend all of the managed user accounts (with the exception of the setup user account) in your enterprise. You can validate suspension of your enterprise's members on GitHub.
- View the suspended members in your enterprise. For more information, see Viewing people in your enterprise.
- If all of the managed user accounts in your enterprise are not yet suspended, continue waiting and monitoring in GitHub before proceeding with the next step.
6. Reconfigure authentication and provisioning
After you validate the suspension of your enterprise's members, reconfigure authentication and provisioning.
- Configure authentication using SAML or OIDC SSO. For more information, see Configuring authentication for Enterprise Managed Users.
- Configure SCIM provisioning. For more information, see Configuring SCIM provisioning for Enterprise Managed Users.
7. Make sure users and groups are reprovisioned from the new IdP/tenant
- To unsuspend your managed user accounts and allow them to sign in to GitHub, the users must be reprovisioned from the new IdP/tenant. This links the SCIM identities from the new IdP/tenant to the existing enterprise managed user accounts. An enterprise managed user must have a linked SCIM identity in order to sign in.
- When reprovisioning the IdP user accounts, if a user has been successfully linked to their SCIM identity from the new IdP/tenant, you will see an
SSO identity linked
link on their page in your enterprise settings, which will show aSCIM identity
section with SCIM attributes. For more information, see Viewing people in your enterprise. - You can also review related
external_identity.*
anduser.unsuspend
events in the enterprise audit log. For more information, see Audit log events for your enterprise
- When reprovisioning the IdP user accounts, if a user has been successfully linked to their SCIM identity from the new IdP/tenant, you will see an
- Groups must be reprovisioned from the new IdP/tenant as well.
- When reprovisioning the IdP groups, monitor the progress in GitHub, and review related
external_group.provision
,external_group.scim_api_failure
, andexternal_group.scim_api_success
events in the enterprise audit log. For more information, see Managing team memberships with identity provider groups and Audit log events for your enterprise.
- When reprovisioning the IdP groups, monitor the progress in GitHub, and review related
- Once IdP groups have been reprovisioned to the enterprise, admins can link the groups to teams in the enterprise as needed.
Migrating when the normalized SCIM userName
values will change
If the normalized SCIM userName
values will change, GitHub must provision a new enterprise account for your migration. Contact our sales team for help.