Migrate Boards with the Group

Problem to solve

For the Group Migration to be a viable solution for the users migrating Groups, we need to achieve parity with the Group Export/Import feature.

As part of the larger epic targeting parity with Group Export/Import, this issue adds Boards to Group Migration.

Proposed Solution

  • Expose created_at and updated_at on GraphQL (#326126 (closed))
  • GraphQL query
query groupBoards($full_path: ID!, $cursor: String) {
  group(fullPath: $full_path) {
    boards(first: $per_page, after: $cursor) {
      page_info: pageInfo {
        has_next_page: hasNextPage
        end_cursor: endCursor
      }
      nodes {
        name
        weight
        hide_backlog_list: hideBacklogList
        hide_closed_list: hideClosedList
        created_at: createdAt
        updated_at: updatedAt
        labels {
          nodes {
            title
          }
        }
        iteration {
          iid
        }
        milestone {
          iid
        }
        assignee {
          public_email: publicEmail
        }
      }
    }
  }
}
  • Needs to be done first: #326129 (closed) and #326157 (closed)
  • milestone, assignee, iteration are EE specific features - these values will be as null in CE. The transformation of these values must be done in an EE extension.
  • Associations Mapping:
    • assignee: Use the BulkImports::Common::Transformers::UserReferenceTransformer
    • iteration: use the iid to find the already imported Iteration
    • milestone: We need to change the milestone importer to import iid to be able to trust on it to map the milestone correctly. (🚫 Blocked for now)
    • labels: Extract the add_labels (https://gitlab.com/gitlab-org/gitlab/blob/master/ee/lib/ee/bulk_imports/groups/transformers/epic_attributes_transformer.rb#L46) to a generic BulkImports::Common::Transformers::LabelReferenceTransformer to use in the Epics pipeline and in the Boards pipeline. This will also be useful in the future for issues and merge requests.

Future iterations

Migrating Board Lists has been split into a separate issue: #292430 (closed)

Documentation

Following documentation should be updated with the fields added in this issue:

  • User docs: https://docs.gitlab.com/ee/user/group/import/
  • Dev docs: https://docs.gitlab.com/ee/development/bulk_import.html

This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.

Edited Apr 26, 2023 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading