Migrating groups using file exports (deprecated)

Version history
  • Introduced in GitLab 13.0 as an experimental feature. May change in future releases.
  • Deprecated in GitLab 14.6.
caution
This feature was deprecated in GitLab 14.6 and replaced by a different migration method. To follow progress on a solution for offline environments, see the relevant issue.

You can export groups, with all their related data, from one GitLab instance to another. You can also:

Enable export for a group

Prerequisite:

  • You must have the Owner role for the group.

To enable import and export for a group:

  1. On the top bar, select Menu > Admin.
  2. On the left sidebar, select Settings > General.
  3. Expand Visibility and access controls.
  4. In the Import sources section, select the checkboxes for the sources you want.

Important Notes

Note the following:

  • Exports are stored in a temporary directory and are deleted every 24 hours by a specific worker.
  • To preserve group-level relationships from imported projects, run the Group Import/Export first, to allow projects to be imported into the desired group structure.
  • Imported groups are given a private visibility level, unless imported into a parent group.
  • If imported into a parent group, a subgroup inherits the same level of visibility unless otherwise restricted.
  • To preserve the member list and their respective permissions on imported groups, review the users in these groups. Make sure these users exist before importing the desired groups.

Exported contents

The following items are exported:

  • Milestones
  • Labels
  • Boards and Board Lists
  • Badges
  • Subgroups (including all the aforementioned data)
  • Epics
  • Events
  • Wikis (Introduced in GitLab 13.9)

The following items are not exported:

  • Projects
  • Runner tokens
  • SAML discovery tokens
note
For more details on the specific data persisted in a group export, see the import_export.yml file.

Export a group

Prerequisites:

  • You must have the Owner role for the group.

To export the contents of a group:

  1. On the top bar, select Menu > Groups and find your group.
  2. On the left sidebar, select Settings > General.
  3. In the Advanced section, select Export Group.
  4. After the export is generated, you should receive an email with a link to the exported contents in a compressed tar archive, with contents in NDJSON format.
  5. Alternatively, you can download the export from the UI:

    1. Return to your group’s Settings > General page.
    2. In the Advanced section, select Download export. You can also generate a new file by selecting Regenerate export.
note
The maximum import file size can be set by the Administrator, default is 0 (unlimited). As an administrator, you can modify the maximum import file size. To do so, use the max_import_size option in the Application settings API or the Admin Area. Default modified from 50MB to 0 in GitLab 13.8.

You can also use the group import/export API.

Between CE and EE

You can export groups from the Community Edition to the Enterprise Edition and vice versa.

The Enterprise Edition retains some group data that isn’t part of the Community Edition. If you’re exporting a group from the Enterprise Edition to the Community Edition, you may lose this data. For more information, see downgrading from EE to CE.

Import the group

  1. Create a new group:
    • On the top bar, select New () and then New group.
    • On an existing group’s page, select the New subgroup button.
  2. Select Import group.
  3. Enter your group name.
  4. Accept or modify the associated group URL.
  5. Select Choose file.
  6. Select the file that you exported in the Export a group section.
  7. To begin importing, select Import group.

Your newly imported group page appears after the operation completes.

Automate group and project import

For information on automating user, group, and project import API calls, see Automate group and project import.

Version history

14.0+

In GitLab 14.0, the JSON format is no longer supported for project and group exports. To allow for a transitional period, you can still import any JSON exports. The new format for imports and exports is NDJSON.

13.0+

GitLab can import bundles that were exported from a different GitLab deployment. This ability is limited to two previous GitLab minor releases, which is similar to our process for Security Releases.

For example:

Current version Can import bundles exported from
13.0 13.0, 12.10, 12.9
13.1 13.1, 13.0, 12.10

Rate Limits

To help avoid abuse, by default, users are rate limited to:

Request Type Limit
Export 6 groups per minute
Download export 1 download per group per minute
Import 6 groups per minute

GitLab.com may have different settings from the defaults.