doc/user/group/import/_index.md
{{< details >}}
{{< /details >}}
{{< history >}}
bulk_import_enabled introduced in GitLab 15.8. bulk_import feature flag removed.bulk_import_projects feature flag removed in GitLab 15.10.{{< /history >}}
You can migrate GitLab groups:
Migration by direct transfer creates a new copy of the group. If you want to move groups instead of copying groups, you can transfer groups if the groups are in the same GitLab instance. Transferring groups instead of migrating them is a faster and more complete option.
You can migrate groups in two ways:
If you migrate from GitLab.com to a GitLab Self-Managed or GitLab Dedicated instance, an administrator can create users on the instance.
On GitLab Self-Managed and GitLab Dedicated, by default migrating group items is not available. To show the feature, an administrator can enable it in application settings.
Migrating groups by direct transfer copies the groups from one place to another. You can:
Not all group and project resources are copied. See list of copied resources below:
After you start a migration, you should not make any changes to imported groups or projects on the source instance because these changes might not be copied to the destination instance.
You are encouraged to leave your feedback about migrating by direct transfer in the feedback issue.
Migrating groups by using direct transfer in the GitLab UI migrates all projects in the group. If you want to migrate only specific projects in the group by using direct transfer, you must use the API.
DiffNote::NoteDiffFileCreationError error. When this error occurs, the diff of a note on a merge request's diff
is missing, but the note and the merge request are still imported.Estimating the duration of migration by direct transfer is difficult. The following factors affect migration duration:
There's no exact formula to reliably estimate a migration. However, the average durations of each pipeline worker importing a project {{< glossary-tooltip text="relation" >}} can help you to get an idea of how long importing your projects might take.
In this context, a relation is a type of exportable item.
| Project resource type | Average time (in seconds) to import a record |
|---|---|
| Empty Project | 2.4 |
| Repository | 20 |
| Project Attributes | 1.5 |
| Members | 0.2 |
| Labels | 0.1 |
| Milestones | 0.07 |
| Badges | 0.1 |
| Issues | 0.1 |
| Snippets | 0.05 |
| Snippet Repositories | 0.5 |
| Boards | 0.1 |
| Merge Requests | 1 |
| External Pull Requests | 0.5 |
| Protected Branches | 0.1 |
| Project Feature | 0.3 |
| Container Expiration Policy | 0.3 |
| Service Desk Setting | 0.3 |
| Releases | 0.1 |
| CI Pipelines | 0.2 |
| Commit Notes | 0.05 |
| Wiki | 10 |
| Uploads | 0.5 |
| LFS Objects | 0.5 |
| Design | 0.1 |
| Auto DevOps | 0.1 |
| Pipeline Schedules | 0.5 |
| References | 5 |
| Push rule | 0.1 |
Though it's difficult to predict migration duration, the following have been observed:
If you are migrating large projects and encounter problems with timeouts or duration of the migration, try reducing migration duration.
For default limits, see migration by direct transfer limits.
You can test the maximum relation size limit by using these APIs:
If either API produces files larger than the maximum relation size limit, group migration by direct transfer fails.
After migration:
If you used a private network on your source instance to hide content from the general public, make sure to have a similar setup on the destination instance, or to import into a private group.