Group archiving functionality - Requirements

Release Notes

You are now able to archive a group including the subgroups and projects it contains. Previously, you could only archive projects. If you wanted to archive a group, each project had to be archived separately and the original group would still appear when searching for groups. Now, the entire group can be archived in one action and once archived will not appear in the search any longer.

Problem

One of the most highly requested features for grouptenant scale is to add the ability to archive groups. Currently, only projects can be archived. Customers would also like to have the ability to archive entire groups and all the objects contained by a group. At the moment, they achieve this by archiving projects one by one, which is tedious, and it leaves them with empty groups that are still visible in the search.

Goals

From the customer side, the expectations are the following:

  • I want to archive groups, so that I know which projects belong together
  • I want to be able to unarchive groups
  • I expect an archived group not to appear in searches
  • I expect archived groups to be there forever
  • I don't want to have to archive each project separately
  • I don't want to see them in the overview, I only want to see active projects
  • I don't want to remove users when archiving
  • I want an option to remove archived groups from visibility

For more detailed customer feedback, see here, here and here.

From the engineering side, the expectations are the following:

  • Archiving is a functionality that is already available on the project level. We do not want to duplicate the code, but rather use the namespace framework to provide the archiving functionality for both groups and projects.
  • The behaviour would be in line with project archiving behaviour:
    • When you archive a project, the repository, packages, issues, merge requests, and all other features are read-only. Archived projects are also hidden from project listings.
    • When you archive a group, the repository, packages, issues, merge requests, and all other features of the subgroups and projects they contain are are read-only.

Proposal

  • When archived, a group and its contents will be displayed in the Inactive tab of group listing pages
  • An archived group can be discovered in the Inactive tab based on the group visibility and membership status. A private archived group should only be accessible to its members. A public archived group can be discovered by anyone.
  • When archived, all features of the group, subgroups and projects they contain are are read-only.
  • When archived, a group and its contents can be unarchived by locating the group, clicking "Edit" and selecting "Unarchive"
  • When archived, a group and its contents will not appear in the search results, unless the search specifically focuses on archived content
  • Only group Owners should be able to archive and unarchive a group
  • When archiving a group and its projects, a project within the group cannot be unarchived independent of the rest of the group
  • When archived, groups cannot be transferred

Possible later enhancements

To-Do

  • Migrate the archiving functionality to the namespace framework. Currently this is only available for projects. See &8690.
  • Build a POC for this functionality based on the namespace framework. We want this functionality also to be available for groups.
  • Since this would be the first time for grouptenant scale to build new functionality based on the namespace framework, document any questions that arise to guide the development of future, similar features for other team members
  • Create issues in &8690 to address any points uncovered while working on the POC so that the feature can be made release-ready
Edited by Christina Lohr