summaryrefslogtreecommitdiff
path: root/doc/user/group
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user/group')
-rw-r--r--doc/user/group/clusters/index.md2
-rw-r--r--doc/user/group/epics/img/related_epic_block_v14_9.pngbin0 -> 31319 bytes
-rw-r--r--doc/user/group/epics/img/related_epics_add_v14_9.pngbin0 -> 27785 bytes
-rw-r--r--doc/user/group/epics/img/related_epics_remove_v14_9.pngbin0 -> 5034 bytes
-rw-r--r--doc/user/group/epics/index.md1
-rw-r--r--doc/user/group/epics/linked_epics.md79
-rw-r--r--doc/user/group/import/img/import_panel_v14_1.pngbin17447 -> 0 bytes
-rw-r--r--doc/user/group/import/img/new_group_navigation_v13_8.pngbin8644 -> 0 bytes
-rw-r--r--doc/user/group/import/index.md22
-rw-r--r--doc/user/group/index.md87
-rw-r--r--doc/user/group/iterations/index.md28
-rw-r--r--doc/user/group/planning_hierarchy/img/epic-view-ancestors-in-sidebar_v14_6.pngbin24780 -> 5010 bytes
-rw-r--r--doc/user/group/planning_hierarchy/img/issue-view-parent-epic-in-sidebar_v14_6.pngbin25077 -> 4994 bytes
-rw-r--r--doc/user/group/planning_hierarchy/img/view-project-work-item-hierarchy_v14_8.pngbin38783 -> 0 bytes
-rw-r--r--doc/user/group/planning_hierarchy/index.md20
-rw-r--r--doc/user/group/roadmap/img/epics_state_dropdown_v14_3.pngbin6994 -> 0 bytes
-rw-r--r--doc/user/group/roadmap/index.md17
-rw-r--r--doc/user/group/saml_sso/group_managed_accounts.md2
-rw-r--r--doc/user/group/saml_sso/index.md37
-rw-r--r--doc/user/group/saml_sso/scim_setup.md20
-rw-r--r--doc/user/group/settings/group_access_tokens.md2
-rw-r--r--doc/user/group/subgroups/img/mention_subgroups.pngbin14783 -> 0 bytes
-rw-r--r--doc/user/group/subgroups/index.md263
-rw-r--r--doc/user/group/value_stream_analytics/img/vsa_stage_table_v14_7.pngbin242008 -> 79595 bytes
-rw-r--r--doc/user/group/value_stream_analytics/index.md461
25 files changed, 538 insertions, 503 deletions
diff --git a/doc/user/group/clusters/index.md b/doc/user/group/clusters/index.md
index b2b16321488..0da7eaa4d55 100644
--- a/doc/user/group/clusters/index.md
+++ b/doc/user/group/clusters/index.md
@@ -12,7 +12,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
WARNING:
This feature was [deprecated](https://gitlab.com/groups/gitlab-org/configure/-/epics/8) in GitLab 14.5. To connect clusters to GitLab,
-use the [GitLab Agent](../../clusters/agent/index.md).
+use the [GitLab agent](../../clusters/agent/index.md).
Similar to [project-level](../../project/clusters/index.md) and
[instance-level](../../instance/clusters/index.md) Kubernetes clusters,
diff --git a/doc/user/group/epics/img/related_epic_block_v14_9.png b/doc/user/group/epics/img/related_epic_block_v14_9.png
new file mode 100644
index 00000000000..7b5824b84d1
--- /dev/null
+++ b/doc/user/group/epics/img/related_epic_block_v14_9.png
Binary files differ
diff --git a/doc/user/group/epics/img/related_epics_add_v14_9.png b/doc/user/group/epics/img/related_epics_add_v14_9.png
new file mode 100644
index 00000000000..3da6eeaff43
--- /dev/null
+++ b/doc/user/group/epics/img/related_epics_add_v14_9.png
Binary files differ
diff --git a/doc/user/group/epics/img/related_epics_remove_v14_9.png b/doc/user/group/epics/img/related_epics_remove_v14_9.png
new file mode 100644
index 00000000000..2cdded5965f
--- /dev/null
+++ b/doc/user/group/epics/img/related_epics_remove_v14_9.png
Binary files differ
diff --git a/doc/user/group/epics/index.md b/doc/user/group/epics/index.md
index d6f87a026b8..149c5362ac9 100644
--- a/doc/user/group/epics/index.md
+++ b/doc/user/group/epics/index.md
@@ -62,6 +62,7 @@ You can also consult the [group permissions table](../../permissions.md#group-me
## Related topics
- [Manage epics](manage_epics.md) and multi-level child epics.
+- Link [related epics](linked_epics.md) based on a type of relationship.
- Create workflows with [epic boards](epic_boards.md).
- [Turn on notifications](../../profile/notifications.md) for about epic events.
- [Award an emoji](../../award_emojis.md) to an epic or its comments.
diff --git a/doc/user/group/epics/linked_epics.md b/doc/user/group/epics/linked_epics.md
new file mode 100644
index 00000000000..b695bae39e4
--- /dev/null
+++ b/doc/user/group/epics/linked_epics.md
@@ -0,0 +1,79 @@
+---
+stage: Plan
+group: Product Planning
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Linked epics **(ULTIMATE)**
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/353473) in GitLab 14.9 [with a flag](../../../administration/feature_flags.md) named `related_epics_widget`. Enabled by default.
+
+FLAG:
+On self-managed GitLab, by default this feature is available. To hide the feature,
+ask an administrator to [disable the feature flag](../../../administration/feature_flags.md)
+named `related_epics_widget`. On GitLab.com, this feature is available.
+
+Linked epics are a bi-directional relationship between any two epics and appear in a block below
+the epic description. You can link epics in different groups.
+
+The relationship only shows up in the UI if the user can see both epics. When you try to close an
+epic that has open blockers, a warning is displayed.
+
+NOTE:
+To manage linked epics through our API, visit the [epic links API documentation](../../../api/linked_epics.md).
+
+## Add a linked epic
+
+Prerequisites:
+
+- You must have at least the Reporter role for both groups.
+- For GitLab SaaS: the epic that you're editing must be in a group on GitLab Ultimate.
+ The epics you're linking can be in a group on a lower tier.
+
+To link one epic to another:
+
+1. In the **Linked epics** section of an epic,
+ select the add linked epic button (**{plus}**).
+1. Select the relationship between the two epics. Either:
+ - **relates to**
+ - **[blocks](#blocking-epics)**
+ - **[is blocked by](#blocking-epics)**
+1. Enter the epic number or paste in the full URL of the epic.
+
+ ![Adding a related epic](img/related_epics_add_v14_9.png)
+
+ Epics of the same group can be specified just by the reference number.
+ Epics from a different group require additional information like the
+ group name. For example:
+
+ - The same group: `&44`
+ - Different group: `group&44`
+
+ Valid references are added to a temporary list that you can review.
+
+1. Select **Add**.
+
+The linked epics are then displayed on the epic grouped by relationship.
+
+![Related epic block](img/related_epic_block_v14_9.png)
+
+## Remove a linked epic
+
+Prerequisites:
+
+- You must have at least the Reporter role for the epic's group.
+
+To remove a linked epic, in the **Linked epics** section of an epic,
+select **Remove** (**{close}**) next to
+each epic.
+
+The relationship is removed from both epics.
+
+![Removing a related epic](img/related_epics_remove_v14_9.png)
+
+## Blocking epics
+
+When you [add a linked epic](#add-a-linked-epic), you can show that it **blocks** or
+**is blocked by** another epic.
+
+If you try to close a blocked epic using the "Close epic" button, a confirmation message appears.
diff --git a/doc/user/group/import/img/import_panel_v14_1.png b/doc/user/group/import/img/import_panel_v14_1.png
deleted file mode 100644
index 52791a82c3c..00000000000
--- a/doc/user/group/import/img/import_panel_v14_1.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/group/import/img/new_group_navigation_v13_8.png b/doc/user/group/import/img/new_group_navigation_v13_8.png
deleted file mode 100644
index 40be3dd41d2..00000000000
--- a/doc/user/group/import/img/new_group_navigation_v13_8.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/group/import/index.md b/doc/user/group/import/index.md
index cdc3fe02a53..0c16b535ed1 100644
--- a/doc/user/group/import/index.md
+++ b/doc/user/group/import/index.md
@@ -132,3 +132,25 @@ migrated:
- image URL
- Boards
- Board Lists
+
+## Troubleshooting Group Migration
+
+In a [rails console session](../../../administration/operations/rails_console.md#starting-a-rails-console-session),
+you can find the failure or error messages for the group import attempt using:
+
+```shell
+# Get relevant import records
+import = BulkImports::Entity.where(namespace_id: Group.id).bulk_import
+
+# Alternative lookup by user
+import = BulkImport.where(user_id: User.find(...)).last
+
+# Get list of import entities. Each entity represents either a group or a project
+entities = import.entities
+
+# Get a list of entity failures
+entities.map(&:failures).flatten
+
+# Alternative failure lookup by status
+entities.where(status: [-1]).pluck(:destination_name, :destination_namespace, :status)
+```
diff --git a/doc/user/group/index.md b/doc/user/group/index.md
index ec76dc52516..4b9ff7f64e8 100644
--- a/doc/user/group/index.md
+++ b/doc/user/group/index.md
@@ -46,19 +46,16 @@ the immediate parent group.
### Namespaces
-In GitLab, a namespace is a unique name and URL for a user, a group, or subgroup.
-
-- `http://gitlab.example.com/username`
-- `http://gitlab.example.com/groupname`
-- `http://gitlab.example.com/groupname/subgroup_name`
+In GitLab, a namespace is a unique name for a user, a group, or subgroup under
+which a project can be created.
For example, consider a user named Alex:
-1. Alex creates an account with the username `alex`: `https://gitlab.example.com/alex`
-1. Alex creates a group for their team with the group name `alex-team`.
- The group and its projects are available at: `https://gitlab.example.com/alex-team`
-1. Alex creates a subgroup of `alex-team` with the subgroup name `marketing`.
- The subgroup and its projects are available at: `https://gitlab.example.com/alex-team/marketing`
+| GitLab URL | Namespace |
+| ---------- | --------- |
+| Alex creates an account with the username `alex`: `https://gitlab.example.com/alex`. | The namespace in this case is `alex`. |
+| Alex creates a group for their team with the group name `alex-team`. The group and its projects are available at: `https://gitlab.example.com/alex-team`. | The namespace in this cases is `alex-team`. |
+| Alex creates a subgroup of `alex-team` with the subgroup name `marketing`. The subgroup and its projects are available at: `https://gitlab.example.com/alex-team/marketing`. | The namespace in this case is `alex-team/marketing`. |
## Create a group
@@ -87,6 +84,7 @@ You can give a user access to all projects in a group.
1. On the top bar, select **Menu > Groups** and find your group.
1. On the left sidebar, select **Group information > Members**.
+1. Select **Invite members**.
1. Fill in the fields.
- The role applies to all projects in the group. [Learn more about permissions](../permissions.md).
- On the **Access expiration date**, the user can no longer access projects in the group.
@@ -174,6 +172,7 @@ Filter a group to find members. By default, all members in the group and subgrou
- To view members in the group only, select **Membership = Direct**.
- To view members of the group and its subgroups, select **Membership = Inherited**.
- To view members with two-factor authentication enabled or disabled, select **2FA = Enabled** or **Disabled**.
+ - [In GitLab 14.0 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/349887), to view GitLab users created by [SAML SSO](saml_sso/index.md) or [SCIM provisioning](saml_sso/scim_setup.md) select **Enterprise = true**.
### Search a group
@@ -207,31 +206,24 @@ A to-do item is created for all the group and subgroup members.
## Change the default branch protection of a group
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7583) in GitLab 12.9.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7583) in GitLab 12.9.
+> - [Settings moved and renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/340403) in GitLab 14.9.
By default, every group inherits the branch protection set at the global level.
-To change this setting for a specific group:
-
-1. On the top bar, select **Menu > Groups**.
-1. Select **Your Groups**.
-1. Find the group and select it.
-1. From the left menu, select **Settings > General**.
-1. Expand the **Permissions and group features** section.
-1. Select the desired option in the **Default branch protection** dropdown list.
-1. Select **Save changes**.
+To change this setting for a specific group, see [group level default branch protection](../project/repository/branches/default.md#group-level-default-branch-protection).
-To change this setting globally, see [Default branch protection](../admin_area/settings/visibility_and_access_controls.md#protect-default-branches).
+To change this setting globally, see [initial default branch protection](../project/repository/branches/default.md#instance-level-default-branch-protection).
NOTE:
-In [GitLab Premium or higher](https://about.gitlab.com/pricing/), GitLab administrators can choose to [disable group owners from updating the default branch protection](../admin_area/settings/visibility_and_access_controls.md#prevent-overrides-of-default-branch-protection).
+In [GitLab Premium or higher](https://about.gitlab.com/pricing/), GitLab administrators can choose to [disable group owners from updating the default branch protection](../project/repository/branches/default.md#prevent-overrides-of-default-branch-protection).
## Add projects to a group
There are two different ways to add a new project to a group:
-- Select a group, and then click **New project**. You can then continue [creating your project](../../user/project/working_with_projects.md#create-a-project).
-- While you are creating a project, select a group from the dropdown menu.
+- Select a group, and then select **New project**. You can then continue [creating your project](../../user/project/working_with_projects.md#create-a-project).
+- While you are creating a project, select a group from the dropdown list.
![Select group](img/select_group_dropdown_13_10.png)
@@ -256,7 +248,7 @@ To change this setting globally, see [Default project creation protection](../ad
## Group activity analytics **(PREMIUM)**
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207164) in GitLab 12.10 as a [beta feature](https://about.gitlab.com/handbook/product/#beta).
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207164) in GitLab 12.10 as a [Beta feature](../../policy/alpha-beta-support.md#beta-features).
For a group, you can view how many merge requests, issues, and members were created in the last 90 days.
@@ -283,12 +275,8 @@ To view the activity feed in Atom format, select the
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/18328) in GitLab 12.7.
> - [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/247208) in GitLab 13.11 from a form to a modal window [with a flag](../feature_flags.md). Disabled by default.
> - Modal window [enabled on GitLab.com and self-managed](https://gitlab.com/gitlab-org/gitlab/-/issues/247208) in GitLab 14.8.
-
-FLAG:
-On self-managed GitLab, by default the modal window feature is available.
-To hide the feature, ask an administrator to [disable the feature flag](../../administration/feature_flags.md)
-named `invite_members_group_modal`.
-On GitLab.com, this feature is available.
+> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/352526) in GitLab 14.9.
+ [Feature flag `invite_members_group_modal`](https://gitlab.com/gitlab-org/gitlab/-/issues/352526) removed.
Similar to how you [share a project with a group](../project/members/share_project_with_groups.md),
you can share a group with another group. Members get direct access
@@ -308,7 +296,7 @@ All the members of the `Engineering` group are added to the `Frontend` group.
## Manage group memberships via LDAP **(PREMIUM SELF)**
-Group syncing allows LDAP groups to be mapped to GitLab groups. This provides more control over per-group user management. To configure group syncing, edit the `group_base` **DN** (`'OU=Global Groups,OU=GitLab INT,DC=GitLab,DC=org'`). This **OU** contains all groups that will be associated with GitLab groups.
+Group syncing allows LDAP groups to be mapped to GitLab groups. This provides more control over per-group user management. To configure group syncing, edit the `group_base` **DN** (`'OU=Global Groups,OU=GitLab INT,DC=GitLab,DC=org'`). This **OU** contains all groups that are associated with GitLab groups.
Group links can be created by using either a CN or a filter. To create these group links, go to the group's **Settings > LDAP Synchronization** page. After configuring the link, it may take more than an hour for the users to sync with the GitLab group.
@@ -325,9 +313,9 @@ To create group links via CN:
1. Select the **LDAP Server** for the link.
1. As the **Sync method**, select `LDAP Group cn`.
-1. In the **LDAP Group cn** field, begin typing the CN of the group. There is a dropdown menu with matching CNs in the configured `group_base`. Select your CN from this list.
+1. In the **LDAP Group cn** field, begin typing the CN of the group. There is a dropdown list with matching CNs in the configured `group_base`. Select your CN from this list.
1. In the **LDAP Access** section, select the [permission level](../permissions.md) for users synced in this group.
-1. Select the **Add Synchronization** button.
+1. Select **Add Synchronization**.
<!-- vale gitlab.Spelling = YES -->
@@ -339,7 +327,7 @@ To create group links via filter:
1. As the **Sync method**, select `LDAP user filter`.
1. Input your filter in the **LDAP User filter** box. Follow the [documentation on user filters](../../administration/auth/ldap/index.md#set-up-ldap-user-filter).
1. In the **LDAP Access** section, select the [permission level](../permissions.md) for users synced in this group.
-1. Select the **Add Synchronization** button.
+1. Select **Add Synchronization**.
### Override user permissions **(PREMIUM SELF)**
@@ -347,7 +335,7 @@ LDAP user permissions can be manually overridden by an administrator. To overrid
1. Go to your group's **Group information > Members** page.
1. In the row for the user you are editing, select the pencil (**{pencil}**) icon.
-1. Select the brown **Edit permissions** button in the modal.
+1. Select **Edit permissions** in the modal.
Now you can edit the user's permissions from the **Members** page.
@@ -375,7 +363,7 @@ Changing a group's path (group URL) can have unintended side effects. Read
before you proceed.
If you are changing the path so it can be claimed by another group or user,
-you may need to rename the group too. Both names and paths must
+you must rename the group too. Both names and paths must
be unique.
To retain ownership of the original namespace and protect the URL redirects,
@@ -384,7 +372,7 @@ create a new group and transfer projects to it instead.
To change your group path (group URL):
1. Go to your group's **Settings > General** page.
-1. Expand the **Path, transfer, remove** section.
+1. Expand the **Advanced** section.
1. Under **Change group URL**, enter a new name.
1. Select **Change group URL**.
@@ -467,7 +455,7 @@ To restore a group that is marked for deletion:
This setting is only available on top-level groups. It affects all subgroups.
-When checked, any group within the top-level group hierarchy can be shared only with other groups within the hierarchy.
+When checked, any group in the top-level group hierarchy can be shared only with other groups in the hierarchy.
For example, with these groups:
@@ -496,7 +484,7 @@ To prevent a project from being shared with other groups:
1. Go to the group's **Settings > General** page.
1. Expand the **Permissions and group features** section.
-1. Select **Prevent sharing a project within `<group_name>` with other groups**.
+1. Select **Prevent sharing a project in `<group_name>` with other groups**.
1. Select **Save changes**.
This setting applies to all subgroups unless overridden by a group owner. Groups already
@@ -559,6 +547,8 @@ Decreasing the user cap does not approve pending members.
When the number of billable users reaches the user cap, any new member is put in a pending state
and must be approved.
+Pending members do not count as billable. Members count as billable only after they have been approved and are no longer in a pending state.
+
Prerequisite:
- You must be assigned the Owner role) for the group.
@@ -586,7 +576,7 @@ To prevent members from being added to projects in a group:
1. Go to the group's **Settings > General** page.
1. Expand the **Permissions and group features** section.
-1. Under **Member lock**, select **Prevent adding new members to project membership within this group**.
+1. Under **Membership**, select **Prevent adding new members to projects within this group**.
1. Select **Save changes**.
All users who previously had permissions can no longer add members to a group.
@@ -601,7 +591,7 @@ You can export a list of members in a group or subgroup as a CSV.
1. Go to your group or subgroup and select either **Group information > Members** or **Subgroup information > Members**.
1. Select **Export as CSV**.
-1. Once the CSV file has been generated, it is emailed as an attachment to the user that requested it.
+1. After the CSV file has been generated, it is emailed as an attachment to the user that requested it.
## Restrict group access by IP address **(PREMIUM)**
@@ -646,7 +636,7 @@ To restrict group access by IP address:
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7297) in GitLab 12.2.
> - Support for specifying multiple email domains [added](https://gitlab.com/gitlab-org/gitlab/-/issues/33143) in GitLab 13.1.
-> - Support for restricting access to projects within the group [added](https://gitlab.com/gitlab-org/gitlab/-/issues/14004) in GitLab 14.1.2.
+> - Support for restricting access to projects in the group [added](https://gitlab.com/gitlab-org/gitlab/-/issues/14004) in GitLab 14.1.2.
You can prevent users with email addresses in specific domains from being added to a group and its projects.
@@ -663,7 +653,7 @@ Any time you attempt to add a new user, the user's [primary email](../profile/in
Only users with a [primary email](../profile/index.md#change-your-primary-email) that matches any of the configured email domain restrictions
can be added to the group.
-Some domains cannot be restricted. These are the most popular public email domains, such as:
+The most popular public email domains cannot be restricted, such as:
- `gmail.com`, `yahoo.com`, `aol.com`, `icloud.com`
- `hotmail.com`, `hotmail.co.uk`, `hotmail.fr`
@@ -718,9 +708,10 @@ To disable email notifications:
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21301) in GitLab 12.6.
You can prevent users from being added to a conversation and getting notified when
-anyone mentions a group in which those users are members.
+anyone [mentions a group](../discussions/index.md#mentions)
+in which those users are members.
-Groups with disabled mentions are visualized accordingly in the autocompletion dropdown.
+Groups with disabled mentions are visualized accordingly in the autocompletion dropdown list.
This is particularly helpful for groups with a large number of users.
@@ -806,9 +797,7 @@ The group's new subgroups have push rules set for them based on either:
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/285458) in GitLab 13.9. [Deployed behind the `group_merge_request_approval_settings_feature_flag` flag](../../administration/feature_flags.md), disabled by default.
> - [Enabled by default](https://gitlab.com/gitlab-org/gitlab/-/issues/285410) in GitLab 14.5.
-
-FLAG:
-On self-managed GitLab, by default this feature is available. To hide the feature per group, ask an administrator to [disable the feature flag](../../administration/feature_flags.md) named `group_merge_request_approval_settings_feature_flag`. On GitLab.com, this feature is available.
+> - [Feature flag `group_merge_request_approval_settings_feature_flag`](https://gitlab.com/gitlab-org/gitlab/-/issues/343872) removed in GitLab 14.9.
Group approval rules manage [project merge request approval rules](../project/merge_requests/approvals/index.md)
at the top-level group level. These rules [cascade to all projects](../project/merge_requests/approvals/settings.md#settings-cascading)
diff --git a/doc/user/group/iterations/index.md b/doc/user/group/iterations/index.md
index c0bd6f1a672..b5912a0b40e 100644
--- a/doc/user/group/iterations/index.md
+++ b/doc/user/group/iterations/index.md
@@ -142,6 +142,7 @@ To view an iteration report, go to the iterations list page and select an iterat
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/222750) in GitLab 13.6.
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/269972) in GitLab 13.7.
+> - Scoped burnup and burndown charts in subgroups and projects [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/326029) in GitLab 14.9.
The iteration report includes [burndown and burnup charts](../../project/milestones/burndown_and_burnup_charts.md),
similar to how they appear when viewing a [milestone](../../project/milestones/index.md).
@@ -149,6 +150,33 @@ similar to how they appear when viewing a [milestone](../../project/milestones/i
Burndown charts help track completion progress of total scope, and burnup charts track the daily
total count and weight of issues added to and completed in a given timebox.
+#### Iteration charts scoped to subgroups or projects
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/326029) in GitLab 14.9.
+
+You can view burndown and burnup charts for iterations created for a group in any of its
+subgroups or projects.
+When you do this, the charts only count the issues that belong to the subgroup or project.
+
+For example, suppose a group has two projects named `Project 1` and `Project 2`.
+Each project has a single issue assigned to the same iteration from the group.
+
+An iteration report generated for the group shows issue counts for all the group's projects:
+
+- Completed: 0 of 2
+- Incomplete: 0 of 2
+- Unstarted: 2 of 2
+- Burndown chart total issues: 2
+- Burnup chart total issues: 2
+
+An iteration report generated for `Project 1` shows only issues that belong to this project:
+
+- Completed: 0 of 1
+- Incomplete: 0 of 1
+- Unstarted: 1 of 1
+- Burndown chart total issues: 1
+- Burnup chart total issues: 1
+
### Group issues by label
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/225500) in GitLab 13.8.
diff --git a/doc/user/group/planning_hierarchy/img/epic-view-ancestors-in-sidebar_v14_6.png b/doc/user/group/planning_hierarchy/img/epic-view-ancestors-in-sidebar_v14_6.png
index 373b861239b..d4ba8acf9b9 100644
--- a/doc/user/group/planning_hierarchy/img/epic-view-ancestors-in-sidebar_v14_6.png
+++ b/doc/user/group/planning_hierarchy/img/epic-view-ancestors-in-sidebar_v14_6.png
Binary files differ
diff --git a/doc/user/group/planning_hierarchy/img/issue-view-parent-epic-in-sidebar_v14_6.png b/doc/user/group/planning_hierarchy/img/issue-view-parent-epic-in-sidebar_v14_6.png
index 95a5777674a..f3b6a80ea66 100644
--- a/doc/user/group/planning_hierarchy/img/issue-view-parent-epic-in-sidebar_v14_6.png
+++ b/doc/user/group/planning_hierarchy/img/issue-view-parent-epic-in-sidebar_v14_6.png
Binary files differ
diff --git a/doc/user/group/planning_hierarchy/img/view-project-work-item-hierarchy_v14_8.png b/doc/user/group/planning_hierarchy/img/view-project-work-item-hierarchy_v14_8.png
deleted file mode 100644
index 2ddd551ee46..00000000000
--- a/doc/user/group/planning_hierarchy/img/view-project-work-item-hierarchy_v14_8.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/group/planning_hierarchy/index.md b/doc/user/group/planning_hierarchy/index.md
index 934421e8a9a..6ffc47923f2 100644
--- a/doc/user/group/planning_hierarchy/index.md
+++ b/doc/user/group/planning_hierarchy/index.md
@@ -5,7 +5,7 @@ group: Product Planning
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
---
-# Planning hierarchies **(FREE)**
+# Planning hierarchies **(PREMIUM)**
Planning hierarchies are an integral part of breaking down your work in GitLab.
To understand how you can use epics and issues together in hierarchies, remember the following:
@@ -20,21 +20,7 @@ To learn about hierarchies in general, common frameworks, and using GitLab for
portfolio management, see
[How to use GitLab for Agile portfolio planning and project management](https://about.gitlab.com/blog/2020/11/11/gitlab-for-agile-portfolio-planning-project-management/).
-## View planning hierarchies
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/340844/) in GitLab 14.8.
-
-To view the planning hierarchy in a project:
-
-1. On the top bar, select **Menu > Projects** and find your project.
-1. On the left sidebar, select **Project information > Planning hierarchy**.
-
-Under **Current structure**, you can see a hierarchy diagram that matches your current planning hierarchy.
-The work items outside your subscription plan show up below **Unavailable structure**.
-
-![Screenshot showing hierarchy page](img/view-project-work-item-hierarchy_v14_8.png)
-
-## Hierarchies with epics **(PREMIUM)**
+## Hierarchies with epics
With epics, you can achieve the following hierarchy:
@@ -74,7 +60,7 @@ In an issue, you can view the parented epic above the issue in the right sidebar
![epics state dropdown](img/issue-view-parent-epic-in-sidebar_v14_6.png)
-## View ancestry of an epic **(PREMIUM)**
+## View ancestry of an epic
In an epic, you can view the ancestors as parents in the right sidebar under **Ancestors**.
diff --git a/doc/user/group/roadmap/img/epics_state_dropdown_v14_3.png b/doc/user/group/roadmap/img/epics_state_dropdown_v14_3.png
deleted file mode 100644
index 171876e34a9..00000000000
--- a/doc/user/group/roadmap/img/epics_state_dropdown_v14_3.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/group/roadmap/index.md b/doc/user/group/roadmap/index.md
index f10dc3bc22a..89c5c6ed466 100644
--- a/doc/user/group/roadmap/index.md
+++ b/doc/user/group/roadmap/index.md
@@ -24,12 +24,12 @@ When you hover over an epic bar, a popover appears with the epic's title, start
weight completed.
You can expand epics that contain child epics to show their child epics in the roadmap.
-You can click the chevron (**{chevron-down}**) next to the epic title to expand and collapse the
+You can select the chevron (**{chevron-down}**) next to the epic title to expand and collapse the
child epics.
On top of the milestone bars, you can see their title.
When you hover over a milestone bar or title, a popover appears with its title, start date, and due
-date. You can also click the chevron (**{chevron-down}**) next to the **Milestones** heading to
+date. You can also select the chevron (**{chevron-down}**) next to the **Milestones** heading to
toggle the list of the milestone bars.
![roadmap view](img/roadmap_view_v14_3.png)
@@ -47,10 +47,6 @@ Filtering roadmaps by milestone might not be available to you. Check the **versi
When you want to explore a roadmap, there are several ways to make it easier by sorting epics or
filtering them by what's important for you.
-A dropdown menu lets you show only open or closed epics. By default, all epics are shown.
-
-![epics state dropdown](img/epics_state_dropdown_v14_3.png)
-
You can sort epics in the Roadmap view by:
- Start date
@@ -74,18 +70,15 @@ Roadmaps can also be [visualized inside an epic](../epics/index.md#roadmap-in-ep
### Roadmap settings
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/345158) in GitLab 14.8 [with a flag](../../../administration/feature_flags.md) named `roadmap_settings`. Enabled by default.
-
-FLAG:
-On self-managed GitLab, by default this feature is not available. To make it available, ask an administrator to [enable the feature flag](../../../administration/feature_flags.md) named `roadmap_settings`.
-On GitLab.com, this feature is available but can be configured by GitLab.com administrators only.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/345158) in GitLab 14.8 [with a flag](../../../administration/feature_flags.md) named `roadmap_settings`. Enabled by default.
+> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/350830) in GitLab 14.9. Feature flag `roadmap_settings`removed.
When you enable the roadmap settings sidebar, you can use it to refine epics shown in the roadmap.
You can configure the following:
- Select date range.
-- Turn milestones on or off and select whether to show all, group, sub-group, or project milestones.
+- Turn milestones on or off and select whether to show all, group, subgroup, or project milestones.
- Show all, open, or closed epics.
- Turn progress tracking for child issues on or off and select whether
to use issue weights or counts.
diff --git a/doc/user/group/saml_sso/group_managed_accounts.md b/doc/user/group/saml_sso/group_managed_accounts.md
index aeb7db923a9..bffaef40800 100644
--- a/doc/user/group/saml_sso/group_managed_accounts.md
+++ b/doc/user/group/saml_sso/group_managed_accounts.md
@@ -65,7 +65,7 @@ This restriction also applies to projects forked from or to those groups.
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/34648) in GitLab 12.9.
-Groups with group-managed accounts can disallow forking of projects to destinations outside the group.
+Groups with group-managed accounts can prevent forking of projects to destinations outside the group.
To do so, enable the "Prohibit outer forks" option in **Settings > SAML SSO**.
When enabled **at the parent group level**, projects within the group can be forked
only to other destinations within the group (including its subgroups).
diff --git a/doc/user/group/saml_sso/index.md b/doc/user/group/saml_sso/index.md
index 14c4447c5c6..8ebcd9f62d0 100644
--- a/doc/user/group/saml_sso/index.md
+++ b/doc/user/group/saml_sso/index.md
@@ -176,7 +176,7 @@ See the [troubleshooting page](../../../administration/troubleshooting/group_sam
### Okta setup notes
-Please follow the Okta documentation on [setting up a SAML application in Okta](https://developer.okta.com/docs/guides/build-sso-integration/saml2/overview/) with the notes below for consideration.
+Please follow the Okta documentation on [setting up a SAML application in Okta](https://developer.okta.com/docs/guides/build-sso-integration/saml2/main/) with the notes below for consideration.
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
For a demo of the Okta SAML setup including SCIM, see [Demo: Okta Group SAML & SCIM setup](https://youtu.be/0ES9HsZq0AQ).
@@ -214,6 +214,35 @@ we recommend the ["Use the OneLogin SAML Test Connector" documentation](https://
Recommended `NameID` value: `OneLogin ID`.
+### Change the SAML app
+
+To change the SAML app used for sign in:
+
+- If the NameID is not identical in both the existing and new SAML apps, users must:
+ 1. [Unlink the current SAML identity](#unlinking-accounts).
+ 1. [Link their identity](#user-access-and-management) to the new SAML app.
+- If the NameID is identical, no change is required.
+
+### Migrate to a different SAML provider
+
+You can migrate to a different SAML provider. During the migration process users will not be able to access any of the SAML groups.
+To mitigate this, you can disable [SSO enforcement](#sso-enforcement).
+
+To migrate SAML providers:
+
+1. [Configure](#configure-your-identity-provider) the group with the new identity provider SAML app.
+1. Ask users to [unlink their account from the group](#unlinking-accounts).
+1. Ask users to [link their account to the new SAML app](#linking-saml-to-your-existing-gitlabcom-account).
+
+### Change email domains
+
+To migrate users to a new email domain, users must:
+
+1. Add their new email as the primary email to their accounts and verify it.
+1. [Unlink their account from the group](#unlinking-accounts).
+1. [Link their account to the group](#linking-saml-to-your-existing-gitlabcom-account).
+1. (Optional) Remove their old email from the account.
+
## User access and management
> [Improved](https://gitlab.com/gitlab-org/gitlab/-/issues/268142) in GitLab 13.7.
@@ -610,12 +639,6 @@ Alternatively, when users need to [link SAML to their existing GitLab.com accoun
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| As mentioned in the [NameID](#nameid) section, if the NameID changes for any user, the user can be locked out. This is a common problem when an email address is used as the identifier. | Follow the steps outlined in the ["SAML authentication failed: User has already been taken"](#message-saml-authentication-failed-user-has-already-been-taken) section. |
-### I need to change my SAML app
-
-If the NameID is identical in both SAML apps, then no change is required.
-
-Otherwise, to change the SAML app used for sign in, users need to [unlink the current SAML identity](#unlinking-accounts) and then [link their identity](#user-access-and-management) to the new SAML app.
-
### I need additional information to configure my identity provider
Many SAML terms can vary between providers. It is possible that the information you are looking for is listed under another name.
diff --git a/doc/user/group/saml_sso/scim_setup.md b/doc/user/group/saml_sso/scim_setup.md
index d1e9ba29378..331288e33a1 100644
--- a/doc/user/group/saml_sso/scim_setup.md
+++ b/doc/user/group/saml_sso/scim_setup.md
@@ -51,7 +51,7 @@ Once [Group Single Sign-On](index.md) has been configured, we can:
The SAML application that was created during [Single sign-on](index.md) setup for [Azure](https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/view-applications-portal) now needs to be set up for SCIM. You can refer to [Azure SCIM setup documentation](https://docs.microsoft.com/en-us/azure/active-directory/app-provisioning/use-scim-to-provision-users-and-groups#getting-started).
-1. In your app, go to the Provisioning tab, and set the **Provisioning Mode** to **Automatic**.
+1. In your app, go to the Provisioning tab, and set the **Provisioning Mode** to **Automatic**.
Then fill in the **Admin Credentials**, and save. The **Tenant URL** and **secret token** are the items
retrieved in the [previous step](#gitlab-configuration).
@@ -60,7 +60,7 @@ The SAML application that was created during [Single sign-on](index.md) setup fo
- **Settings**: We recommend setting a notification email and selecting the **Send an email notification when a failure occurs** checkbox.
You also control what is actually synced by selecting the **Scope**. For example, **Sync only assigned users and groups** only syncs the users and groups assigned to the application. Otherwise, it syncs the whole Active Directory.
- - **Mappings**: We recommend keeping **Provision Azure Active Directory Users** enabled, and disable **Provision Azure Active Directory Groups**.
+ - **Mappings**: We recommend keeping **Provision Azure Active Directory Users** enabled, and disable **Provision Azure Active Directory Groups**.
Leaving **Provision Azure Active Directory Groups** enabled does not break the SCIM user provisioning, but it causes errors in Azure AD that may be confusing and misleading.
1. You can then test the connection by selecting **Test Connection**. If the connection is successful, save your configuration before moving on. See below for [troubleshooting](#troubleshooting).
@@ -100,12 +100,14 @@ Once synchronized, changing the field mapped to `id` and `externalId` may cause
### Okta configuration steps
-Before you start this section, complete the [GitLab configuration](#gitlab-configuration) process.
-Make sure that you've also set up a SAML application for [Okta](https://developer.okta.com/docs/guides/build-sso-integration/saml2/overview/),
-as described in the [Okta setup notes](index.md#okta-setup-notes)
+Before you start this section:
-Make sure that the Okta setup matches our documentation exactly, especially the NameID
-configuration. Otherwise, the Okta SCIM app may not work properly.
+- Check that you are using Okta [Lifecycle Management](https://www.okta.com/products/lifecycle-management/) product. This product tier is required to use SCIM on Okta. To check which Okta product you are using, check your signed Okta contract, contact your Okta AE, CSM, or Okta support.
+- Complete the [GitLab configuration](#gitlab-configuration) process.
+- Complete the setup for SAML application for [Okta](https://developer.okta.com/docs/guides/build-sso-integration/saml2/overview/), as described in the [Okta setup notes](index.md#okta-setup-notes).
+- Check that your Okta SAML setup matches our documentation exactly, especially the NameID configuration. Otherwise, the Okta SCIM app may not work properly.
+
+After the above steps are complete:
1. Sign in to Okta.
1. Ensure you are in the Admin section by selecting the **Admin** button located in the top right. The admin button is not visible from the admin page.
@@ -169,7 +171,7 @@ We recommend users do this prior to turning on sync, because while synchronizati
New users and existing users on subsequent visits can access the group through the identify provider's dashboard or by visiting links directly.
-[In GitLab 14.0 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/325712), GitLab users created with a SCIM identity display with an **Enterprise** badge in the **Members** view.
+[In GitLab 14.0 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/325712), GitLab users created by [SAML SSO](index.md#user-access-and-management) or SCIM provisioning display with an **Enterprise** badge in the **Members** view.
![Enterprise badge for users created with a SCIM identity](img/member_enterprise_badge_v14_0.png)
@@ -244,7 +246,7 @@ It is important not to update these to incorrect values, since this causes users
### I need to change my SCIM app
-Individual users can follow the instructions in the ["SAML authentication failed: User has already been taken"](index.md#i-need-to-change-my-saml-app) section.
+Individual users can follow the instructions in the ["SAML authentication failed: User has already been taken"](index.md#change-the-saml-app) section.
Alternatively, users can be removed from the SCIM app which de-links all removed users. Sync can then be turned on for the new SCIM app to [link existing users](#user-access-and-linking-setup).
diff --git a/doc/user/group/settings/group_access_tokens.md b/doc/user/group/settings/group_access_tokens.md
index 769943cd5d8..6b20f1763d4 100644
--- a/doc/user/group/settings/group_access_tokens.md
+++ b/doc/user/group/settings/group_access_tokens.md
@@ -44,7 +44,7 @@ To create a group access token:
1. On the top bar, select **Menu > Groups** and find your group.
1. On the left sidebar, select **Settings > Access Tokens**.
-1. Enter a name.
+1. Enter a name. The token name is visible to any user with permissions to view the group.
1. Optional. Enter an expiry date for the token. The token will expire on that date at midnight UTC.
1. Select a role for the token.
1. Select the [desired scopes](#scopes-for-a-group-access-token).
diff --git a/doc/user/group/subgroups/img/mention_subgroups.png b/doc/user/group/subgroups/img/mention_subgroups.png
deleted file mode 100644
index ec370add4f9..00000000000
--- a/doc/user/group/subgroups/img/mention_subgroups.png
+++ /dev/null
Binary files differ
diff --git a/doc/user/group/subgroups/index.md b/doc/user/group/subgroups/index.md
index 46dea81ae9f..a98f213bb3f 100644
--- a/doc/user/group/subgroups/index.md
+++ b/doc/user/group/subgroups/index.md
@@ -2,189 +2,176 @@
stage: Manage
group: Authentication and Authorization
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
-type: reference, howto, concepts
---
# Subgroups **(FREE)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/2772) in GitLab 9.0.
-GitLab supports up to 20 levels of subgroups, also known as nested groups or hierarchical groups.
-
-By using subgroups you can do the following:
-
-- **Separate internal / external organizations.** Since every group
- can have its own visibility level ([public, internal, or private](../../../development/permissions.md#general-permissions)),
- you're able to host groups for different purposes under the same umbrella.
-- **Organize large projects.** For large projects, subgroups makes it
- potentially easier to separate permissions on parts of the source code.
-- **Make it easier to manage people and control visibility.** Give people
- different [permissions](../../permissions.md#group-members-permissions) depending on their group [membership](#membership).
-
-For more information on allowed permissions in groups and projects, see
-[visibility levels](../../../development/permissions.md#general-permissions).
-
-## Overview
-
-A group can have many subgroups inside it, and at the same time a group can have
-only one immediate parent group. It resembles a directory behavior or a nested items list:
-
-- Group 1
- - Group 1.1
- - Group 1.2
- - Group 1.2.1
- - Group 1.2.2
- - Group 1.2.2.1
-
-In a real world example, imagine maintaining a GNU/Linux distribution with the
-first group being the name of the distribution, and subsequent groups split as follows:
-
-- Organization Group - GNU/Linux distro
- - Category Subgroup - Packages
- - (project) Package01
- - (project) Package02
- - Category Subgroup - Software
- - (project) Core
- - (project) CLI
- - (project) Android app
- - (project) iOS app
- - Category Subgroup - Infra tools
- - (project) Ansible playbooks
-
-Another example of GitLab as a company would be the following:
-
-- Organization Group - GitLab
- - Category Subgroup - Marketing
- - (project) Design
- - (project) General
- - Category Subgroup - Software
- - (project) GitLab CE
- - (project) GitLab EE
- - (project) Omnibus GitLab
- - (project) GitLab Runner
- - (project) GitLab Pages daemon
- - Category Subgroup - Infra tools
- - (project) Chef cookbooks
- - Category Subgroup - Executive team
-
-When performing actions such as transferring or importing a project between
-subgroups, the behavior is the same as when performing these actions at the
-`group/project` level.
-
-## Creating a subgroup
-
-Users can create subgroups if they are explicitly added as an Owner (or
-Maintainer, if that setting is enabled) to an immediate parent group, even if group
-creation is disabled by an administrator in their settings.
+You can organize GitLab [groups](../index.md) into subgroups. You can use subgroups to:
+
+- Separate internal and external organizations. Because every subgroup can have its own
+ [visibility level](../../../development/permissions.md#general-permissions), you can host groups for different
+ purposes under the same parent group.
+- Organize large projects. You can use subgroups to give different access to parts of
+ the source code.
+- Manage people and control visibility. Give a user a different
+ [role](../../permissions.md#group-members-permissions) for each group they're [a member of](#subgroup-membership).
+
+Subgroups can:
+
+- Belong to one immediate parent group.
+- Have many subgroups.
+- Be nested up to 20 levels.
+- Use [runners](../../../ci/runners/index.md) registered to parent groups:
+ - Secrets configured for the parent group are available to subgroup jobs.
+ - Users with the Maintainer role in projects that belong to subgroups can see the details of runners registered to
+ parent groups.
+
+For example:
+
+```mermaid
+graph TD
+ subgraph "Parent group"
+ subgraph "Subgroup A"
+ subgraph "Subgroup A1"
+ G["Project E"]
+ end
+ C["Project A"]
+ D["Project B"]
+ E["Project C"]
+ end
+ subgraph "Subgroup B"
+ F["Project D"]
+ end
+ end
+```
+
+## Create a subgroup
+
+Users with the at least the Maintainer role on a group can create subgroups immediately below the group, unless
+[configured otherwise](#change-who-can-create-subgroups). These users can create subgroups even if group creation is
+[disabled by an Administrator](../../admin_area/index.md#prevent-a-user-from-creating-groups) in the user's settings.
To create a subgroup:
-1. On the top bar, select **Menu > Groups** and find the parent group.
-1. In the top right, select **New subgroup**.
+1. On the top bar, select **Menu > Groups** and find and select the parent group to add a subgroup to.
+1. On the parent group's overview page, in the top right, select **New subgroup**.
1. Select **Create group**.
-1. Fill in the fields. View a list of [reserved names](../../reserved_names.md)
- that cannot be used as group names.
+1. Fill in the fields. View a list of [reserved names](../../reserved_names.md) that cannot be used as group names.
1. Select **Create group**.
### Change who can create subgroups
-To create a subgroup you must either be an Owner or a Maintainer of the
-group, depending on the group's setting.
+To create a subgroup, you must have at least the Maintainer role on the group, depending on the group's setting. By
+default:
-By default:
+- In GitLab 12.2 or later, users with at least the Maintainer role can create subgroups.
+- In GitLab 12.1 or earlier, only users with the Owner role can create subgroups.
-- In GitLab 12.2 or later, both Owners and Maintainers can create subgroups.
-- In GitLab 12.1 or earlier, only Owners can create subgroups.
+To change who can create subgroups on a group:
-You can change this setting:
-
-- As group owner:
- 1. Select the group.
+- As a user with the Owner role on the group:
+ 1. On the top bar, select **Menu > Groups** and find the group.
1. On the left sidebar, select **Settings > General**.
1. Expand **Permissions and group features**.
+ 1. Select a role from the **Allowed to create subgroups** dropdown.
- As an administrator:
1. On the top bar, select **Menu > Admin**.
1. On the left sidebar, select **Overview > Groups**.
1. Select the group, and select **Edit**.
+ 1. Select a role from the **Allowed to create subgroups** dropdown.
For more information, view the [permissions table](../../permissions.md#group-members-permissions).
-## Membership
-
-When you add a member to a group, that member is also added to all subgroups.
-Permission level is inherited from the group's parent. This model allows access to
-subgroups if you have membership in one of its parents.
+## Subgroup membership
-Jobs for pipelines in subgroups can use [runners](../../../ci/runners/index.md) registered to the parent group(s).
-This means secrets configured for the parent group are available to subgroup jobs.
+When you add a member to a group, that member is also added to all subgroups. The user's permissions are inherited from
+the group's parent.
-In addition, maintainers of projects that belong to subgroups can see the details of runners registered to parent group(s).
+Subgroup members can:
-The group permissions for a member can be changed only by Owners, and only on
-the **Members** page of the group the member was added.
+1. Be [direct members](../../project/members/index.md#add-users-to-a-project) of the subgroup.
+1. [Inherit membership](../../project/members/index.md#inherited-membership) of the subgroup from the subgroup's parent group.
+1. Be a member of a group that was [shared with the subgroup's top-level group](../index.md#share-a-group-with-another-group).
-You can tell if a member has inherited the permissions from a parent group by
-looking at the group's **Members** page.
+```mermaid
+flowchart RL
+ subgraph Group A
+ A(Direct member)
+ B{{Shared member}}
+ subgraph Subgroup A
+ H(1. Direct member)
+ C{{2. Inherited member}}
+ D{{Inherited member}}
+ E{{3. Shared member}}
+ end
+ A-->|Direct membership of Group A\nInherited membership of Subgroup A|C
+ end
+ subgraph Group C
+ G(Direct member)
+ end
+ subgraph Group B
+ F(Direct member)
+ end
+ F-->|Group B\nshared with\nGroup A|B
+ B-->|Inherited membership of Subgroup A|D
+ G-->|Group C shared with Subgroup A|E
+```
-![Group members page](img/group_members_v14_4.png)
+Group permissions for a member can be changed only by:
-From the image above, we can deduce the following things:
+- Users with the Owner role on the group.
+- Changing the configuration of the group the member was added to.
-- There are 5 members that have access to the group `four`.
-- User 0 is a Reporter and has inherited their permissions from group `one`
- which is above the hierarchy of group `four`.
-- User 1 is a Developer and has inherited their permissions from group
- `one/two` which is above the hierarchy of group `four`.
-- User 2 is a Developer and has inherited their permissions from group
- `one/two/three` which is above the hierarchy of group `four`.
-- For User 3 the **Source** column indicates **Direct member**, therefore they belong to
- group `four`, the one we're inspecting.
-- Administrator is the Owner and member of **all** subgroups and for that reason,
- as with User 3, the **Source** column indicates **Direct member**.
+### Determine membership inheritance
-Members can be [filtered by inherited or direct membership](../index.md#filter-a-group).
+To see if a member has inherited the permissions from a parent group:
-### Overriding the ancestor group membership
+1. On the top bar, select **Menu > Groups** and find the group.
+1. Select **Group information > Members**.
-NOTE:
-You must be an Owner of a group to be able to add members to it.
+Members list for an example subgroup _Four_:
-NOTE:
-A user's permissions in a subgroup cannot be lower than in any of its ancestor groups.
-Therefore, you cannot reduce a user's permissions in a subgroup with respect to its ancestor groups.
+![Group members page](img/group_members_v14_4.png)
-To override a user's membership of an ancestor group (the first group they were
-added to), add the user to the new subgroup again with a higher set of permissions.
+In the screenshot above:
+
+- Five members have access to group _Four_.
+- User 0 has the Reporter role on group _Four_, and has inherited their permissions from group _One_:
+ - User 0 is a direct member of group _One_.
+ - Group _One_ is above group _Four_ in the hierarchy.
+- User 1 has the Developer role on group _Four_ and inherited their permissions from group _Two_:
+ - User 0 is a direct member of group _Two_, which is a subgroup of group _One_.
+ - Groups _One / Two_ are above group _Four_ in the hierarchy.
+- User 2 has the Developer role on group _Four_ and has inherited their permissions from group _Three_:
+ - User 0 is a direct member of group _Three_, which is a subgroup of group _Two_. Group _Two_ is a subgroup of group
+ _One_.
+ - Groups _One / Two / Three_ are above group _Four_ the hierarchy.
+- User 3 is a direct member of group _Four_. This means they get their Maintainer role directly from group _Four_.
+- Administrator has the Owner role on group _Four_ and is a member of all subgroups. For that reason, as with User 3,
+ the **Source** column indicates they are a direct member.
-For example, if User 1 was first added to group `one/two` with Developer
-permissions, then they inherit those permissions in every other subgroup
-of `one/two`. To give them the Maintainer role for group `one/two/three/four`,
-you would add them again in that group as Maintainer. Removing them from that group,
-the permissions fall back to those of the ancestor group.
+Members can be [filtered by inherited or direct membership](../index.md#filter-a-group).
-## Mentioning subgroups
+### Override ancestor group membership
-Mentioning groups (`@group`) in issues, commits and merge requests, would
-notify all members of that group. Now with subgroups, there is more granular
-support if you want to split your group's structure. Mentioning works as before
-and you can choose the group of people to be notified.
+Users with the Owner role on a subgroup can add members to it.
-![Mentioning subgroups](img/mention_subgroups.png)
+You can't give a user a role on a subgroup that's lower than the roles they have on ancestor groups. To override a user's
+role on an ancestor group, add the user to the subgroup again with a higher role. For example:
-## Limitations
+- If User 1 is added to group _Two_ with the Developer role, they inherit that role in every subgroup of group _Two_.
+- To give User 1 the Maintainer role on group _Four_ (under _One / Two / Three_), add them again to group _Four_ with
+ the Maintainer role.
+- If User 1 is removed from group _Four_, their role falls back to their role on group _Two_. They have the Developer
+ role on group _Four_ again.
-Here's a list of what you can't do with subgroups:
+## Mention subgroups
-- [GitLab Pages](../../project/pages/index.md) supports projects hosted under
- a subgroup, but not subgroup websites.
- That means that only the highest-level group supports
- [group websites](../../project/pages/getting_started_part_one.md#gitlab-pages-default-domain-names),
- although you can have project websites under a subgroup.
-- It is not possible to share a project with a group that's an ancestor of
- the group the project is in. That means you can only share as you walk down
- the hierarchy. For example, `group/subgroup01/project` **cannot** be shared
- with `group`, but can be shared with `group/subgroup02` or
- `group/subgroup01/subgroup03`.
+Mentioning subgroups ([`@<subgroup_name>`](../../discussions/index.md#mentions)) in issues, commits, and merge requests
+notifies all members of that group. Mentioning works the same as for projects and groups, and you can choose the group
+of people to be notified.
<!-- ## Troubleshooting
diff --git a/doc/user/group/value_stream_analytics/img/vsa_stage_table_v14_7.png b/doc/user/group/value_stream_analytics/img/vsa_stage_table_v14_7.png
index c9074cbb5ea..7c3305792bb 100644
--- a/doc/user/group/value_stream_analytics/img/vsa_stage_table_v14_7.png
+++ b/doc/user/group/value_stream_analytics/img/vsa_stage_table_v14_7.png
Binary files differ
diff --git a/doc/user/group/value_stream_analytics/index.md b/doc/user/group/value_stream_analytics/index.md
index ccf77f79fd9..5ea8512ed5a 100644
--- a/doc/user/group/value_stream_analytics/index.md
+++ b/doc/user/group/value_stream_analytics/index.md
@@ -2,84 +2,155 @@
type: reference
stage: Manage
group: Optimize
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
---
# Value stream analytics for groups **(PREMIUM)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/196455) in GitLab 12.9 for groups.
-Value stream analytics measures the time spent to go from an
-[idea to production](https://about.gitlab.com/blog/2016/08/05/continuous-integration-delivery-and-deployment-with-gitlab/#from-idea-to-production-with-gitlab)
-(also known as cycle time) for each of your projects or groups. Value stream analytics displays the median time
-spent in each stage defined in the process.
+Value stream analytics provides metrics about each stage of your software development process.
-Value stream analytics can help you quickly determine the velocity of a given
-group. It points to bottlenecks in the development process, enabling management
-to uncover, triage, and identify the root cause of slowdowns in the software development life cycle.
+Use value stream analytics to identify:
-For information on how to contribute to the development of value stream analytics, see our [contributor documentation](../../../development/value_stream_analytics.md).
+- The amount of time it takes to go from an idea to production.
+- The velocity of a given project.
+- Bottlenecks in the development process.
+- Factors that cause your software development lifecycle to slow down.
-To view value stream analytics for groups:
+Value stream analytics is also available for [projects](../../analytics/value_stream_analytics.md).
+
+## View value stream analytics
+
+> - Date range filter [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13216) in GitLab 12.4
+> - Filtering [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13216) in GitLab 13.3
+> - Horizontal stage path [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/12196) in 13.0 and [feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/323982) in 13.12
+
+You must have at least the Reporter role to view value stream analytics for groups.
+
+To view value stream analytics for your group:
1. On the top bar, select **Menu > Groups** and find your group.
1. On the left sidebar, select **Analytics > Value stream**.
+1. To view metrics for each stage, above the **Filter results** text box, select a stage.
+1. Optional. Filter the results:
+ 1. Select the **Filter results** text box.
+ 1. Select a parameter.
+ 1. Select a value or enter text to refine the results.
+ 1. To adjust the date range:
+ - In the **From** field, select a start date.
+ - In the **To** field, select an end date. The charts and list show workflow items created
+ during the date range.
+1. Optional. Sort results by ascending or descending:
+ - To sort by most recent or oldest workflow item, select the **Merge requests** or **Issues**
+ header. The header name differs based on the stage you select.
+ - To sort by most or least amount of time spent in each stage, select the **Time** header.
+
+A badge next to the workflow items table header shows the number of workflow items that
+completed during the selected stage.
+
+The table shows a list of related workflow items for the selected stage. Based on the stage you select, this can be:
+
+- CI/CD jobs
+- Issues
+- Merge requests
+- Pipelines
-Value stream analytics at the group level includes data for the selected group and its subgroups.
+## View metrics for each development stage
-NOTE:
-[Value stream analytics for projects](../../analytics/value_stream_analytics.md) is also available.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/210315) in GitLab 13.0.
+> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/323982) in GitLab 13.12.
+
+Value stream analytics shows the median time spent by issues or merge requests in each development stage.
+
+To view the median time spent in each stage by a group:
+
+1. On the top bar, select **Menu > Groups** and find your group.
+1. On the left sidebar, select **Analytics > Value stream**.
+1. Optional. Filter the results:
+ 1. Select the **Filter results** text box.
+ 1. Select a parameter.
+ 1. Select a value or enter text to refine the results.
+ 1. To adjust the date range:
+ - In the **From** field, select a start date.
+ - In the **To** field, select an end date.
+1. To view the metrics for each stage, above the **Filter results** text box, hover over a stage.
+
+## View the lead time and cycle time for issues
+
+Value stream analytics shows the lead time and cycle time for issues in your groups:
+
+- Lead time: Median time from when the issue was created to when it was closed.
+- Cycle time: Median time from first commit to issue closed. Commits are associated with issues when users [cross-link them in the commit message](../../project/issues/crosslinking_issues.md#from-commit-messages).
+
+To view the lead time and cycle time for issues:
+
+1. On the top bar, select **Menu > Groups** and find your group.
+1. On the left sidebar, select **Analytics > Value stream**.
+1. Optional. Filter the results:
+ 1. Select the **Filter results** text box.
+ 1. Select a parameter.
+ 1. Select a value or enter text to refine the results.
+ 1. To adjust the date range:
+ - In the **From** field, select a start date.
+ - In the **To** field, select an end date.
+
+The **Lead Time** and **Cycle Time** metrics display below the **Filter results** text box.
+
+## View lead time for changes for merge requests **(ULTIMATE)**
-## Default stages
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/340150) in GitLab 14.5.
-The stages tracked by value stream analytics by default represent the [GitLab flow](../../../topics/gitlab_flow.md).
-These stages can be customized in value stream analytics for groups.
+Lead time for changes is the median duration between when a merge request is merged and when it's deployed to production.
-- **Issue** (Tracker)
- - Time to schedule an issue (by milestone or by adding it to an issue board)
-- **Plan** (Board)
- - Time to first commit
-- **Code** (IDE)
- - Time to create a merge request
-- **Test** (CI)
- - Time it takes GitLab CI/CD to test your code
-- **Review** (Merge Request/MR)
- - Time spent on code review
-- **Staging** (Continuous Deployment)
- - Time between merging and deploying to production
+To view the lead time for changes for merge requests in your group:
-## Filter the analytics data
+1. On the top bar, select **Menu > Groups** and find your group.
+1. On the left sidebar, select **Analytics > Value stream**.
+1. Optional. Filter the results:
+ 1. Select the **Filter results** text box.
+ 1. Select a parameter.
+ 1. Select a value or enter text to refine the results.
+ 1. To adjust the date range:
+ - In the **From** field, select a start date.
+ - In the **To** field, select an end date.
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13216) in GitLab 13.3
+The **Lead Time for Changes** metrics display below the **Filter results** text box.
-GitLab provides the ability to filter analytics based on the following parameters:
+## View number of successful deployments **(PREMIUM)**
-- Milestones (Group level)
-- Labels (Group level)
-- Author
-- Assignees
+> DORA API-based deployment metrics for value stream analytics for groups were [moved](https://gitlab.com/gitlab-org/gitlab/-/issues/337256) from GitLab Ultimate to GitLab Premium in 14.3.
-To filter results:
+To view deployment metrics, you must have a
+[production environment configured](../../../ci/environments/index.md#deployment-tier-of-environments).
-1. Select a group.
-1. Click on the filter bar.
-1. Select a parameter to filter by.
-1. Select a value from the autocompleted results, or type to refine the results.
+Value stream analytics shows the following deployment metrics for your group:
+
+- Deploys: The number of successful deployments in the date range.
+- Deployment Frequency: The average number of successful deployments per day in the date range.
-![Value stream analytics filter bar](img/vsa_filter_bar_v13_12.png "Active filter bar for value stream analytics")
+To view deployment metrics for your group:
-### Date ranges
+1. On the top bar, select **Menu > Groups** and find your group.
+1. On the left sidebar, select **Analytics > Value stream**.
+1. Optional. Filter the results:
+ 1. Select the **Filter results** text box.
+ 1. Select a parameter.
+ 1. Select a value or enter text to refine the results.
+ 1. To adjust the date range:
+ - In the **From** field, select a start date.
+ - In the **To** field, select an end date.
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13216) in GitLab 12.4.
+The **Deploys** and **Deployment Frequency** metrics display below the **Filter results** text box.
-GitLab provides the ability to filter analytics based on a date range.
-Data is shown for workflow items created during the selected date range. To filter results:
+Deployment metrics are calculated based on data from the
+[DORA API](../../../api/dora/metrics.md#devops-research-and-assessment-dora-key-metrics-api).
-1. Select a group.
-1. Optionally select a project.
-1. Select a date range using the available date pickers.
+NOTE:
+In GitLab 13.9 and later, metrics are calculated based on when the deployment was finished.
+In GitLab 13.8 and earlier, metrics are calculated based on when the deployment was created.
-### Upcoming date filter change
+## Upcoming date filter change
In the [epics](https://gitlab.com/groups/gitlab-org/-/epics/6046), we plan to alter
the date filter behavior to filter the end event time of the currently selected stage.
@@ -92,82 +163,72 @@ If you were to look at the metrics for the last three months, this issue would n
the stage metrics. With the new date filter, this item would be included.
DISCLAIMER:
-This page contains information related to upcoming products, features, and functionality.
+This section contains information related to upcoming products, features, and functionality.
It is important to note that the information presented is for informational purposes only.
Please do not rely on this information for purchasing or planning purposes.
As with all projects, the items mentioned on this page are subject to change or delay.
The development, release, and timing of any products, features, or functionality remain at the
sole discretion of GitLab Inc.
-## How metrics are measured
-
-> DORA API-based deployment metrics for value stream analytics for groups were [moved](https://gitlab.com/gitlab-org/gitlab/-/issues/337256) from GitLab Ultimate to GitLab Premium in 14.3.
-
-The "Time" metrics near the top of the page are measured as follows:
+## How value stream analytics measures stages
-- **Lead time**: median time from issue created to issue closed.
-- **Cycle time**: median time from first commit to issue closed. (You can associate a commit with an
- issue by [crosslinking in the commit message](../../project/issues/crosslinking_issues.md#from-commit-messages).)
-- **Lead Time for Changes**: median time between when a merge request is merged and deployed to a
-production environment for all merge requests deployed in the given time period.
-[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/340150) in GitLab 14.5.
-
-- **Lead Time for Changes**: median duration between merge request merge and deployment to a production environment for all MRs deployed in the given time period. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/340150) in GitLab 14.5.
-
-The "Recent Activity" metrics near the top of the page are measured as follows:
-
-- **New Issues:** the number of issues created in the date range.
-- **Deploys:** the number of deployments to production in the date range.
-- **Deployment Frequency:** the average number of deployments to production
- per day in the date range.
-
-To see deployment metrics, you must have a [production environment configured](../../../ci/environments/index.md#deployment-tier-of-environments).
+Value stream analytics measures each stage from its start event to its end event.
-NOTE:
-In GitLab 13.9 and later, deployment metrics are calculated based on when the deployment was finished.
-In GitLab 13.8 and earlier, deployment metrics are calculated based on when the deployment was created.
+For example, a stage might start when a user adds a label to an issue, and ends when they add another label.
+Items aren't included in the stage time calculation if they have not reached the end event.
-You can learn more about these metrics in our [analytics definitions](../../analytics/index.md).
+Each stage of value stream analytics is further described in the table below.
-![Value stream analytics time metrics](img/vsa_time_metrics_v13_12.png "Time metrics for value stream analytics")
+| Stage | Measurement method |
+| ------- | -------------------- |
+| Issue | The median time between creating an issue and taking action to solve it, by either labeling it or adding it to a milestone, whichever comes first. The label is tracked only if it already has an [issue board list](../../project/issue_board.md) created for it. |
+| Plan | The median time between the action you took for the previous stage, and pushing the first commit to the branch. The first commit on the branch triggers the separation between **Plan** and **Code**. At least one of the commits in the branch must contain the related issue number (for example, `#42`). If none of the commits in the branch mention the related issue number, it is not considered in the measurement time of the stage. |
+| Code | The median time between pushing a first commit (previous stage) and creating a merge request (MR) related to that commit. The key to keep the process tracked is to include the [issue closing pattern](../../project/issues/managing_issues.md#default-closing-pattern) in the description of the merge request. For example, `Closes #xxx`, where `xxx` is the number of the issue related to this merge request. If the closing pattern is not present, then the calculation uses the creation time of the first commit in the merge request as the start time. |
+| Test | The median time to run the entire pipeline for that project. It's related to the time GitLab CI/CD takes to run every job for the commits pushed to that merge request. It is basically the start->finish time for all pipelines. |
+| Review | The median time taken to review a merge request that has a closing issue pattern, between its creation and until it's merged. |
+| Staging | The median time between merging a merge request that has a closing issue pattern until the very first deployment to a [production environment](#how-value-stream-analytics-identifies-the-production-environment). If there isn't a production environment, this is not tracked. |
-## How the stages are measured
+## Example workflow
-Value stream analytics measures each stage from its start event to its end event.
-For example, a stage might start when one label is added to an issue, and end when another label is added.
-Value stream analytics excludes work in progress, meaning it ignores any items that have not reached the end event.
+This example shows a workflow through all seven stages in one day.
-Each stage of value stream analytics is further described in the table below.
+If a stage does not include a start and a stop time, its data is not included in the median time.
+In this example, milestones have been created and CI/CD for testing and setting environments is configured.
-| **Stage** | **Description** |
-| --------- | --------------- |
-| Issue | Measures the median time between creating an issue and taking action to solve it, by either labeling it or adding it to a milestone, whatever comes first. The label is tracked only if it already has an [issue board list](../../project/issue_board.md) created for it. |
-| Plan | Measures the median time between the action you took for the previous stage, and pushing the first commit to the branch. The very first commit of the branch is the one that triggers the separation between **Plan** and **Code**, and at least one of the commits in the branch needs to contain the related issue number (for example, `#42`). If none of the commits in the branch mention the related issue number, it is not considered to the measurement time of the stage. |
-| Code | Measures the median time between pushing a first commit (previous stage) and creating a merge request (MR) related to that commit. The key to keep the process tracked is to include the [issue closing pattern](../../project/issues/managing_issues.md#closing-issues-automatically) to the description of the merge request (for example, `Closes #xxx`, where `xxx` is the number of the issue related to this merge request). If the closing pattern is not present, then the calculation takes the creation time of the first commit in the merge request as the start time. |
-| Test | Measures the median time to run the entire pipeline for that project. It's related to the time GitLab CI/CD takes to run every job for the commits pushed to that merge request defined in the previous stage. It is basically the start->finish time for all pipelines. |
-| Review | Measures the median time taken to review the merge request that has a closing issue pattern, between its creation and until it's merged. |
-| Staging | Measures the median time between merging the merge request with a closing issue pattern until the very first deployment to a [production environment](#how-the-production-environment-is-identified). If there isn't a production environment, this is not tracked. |
+- 09:00: Create issue. **Issue** stage starts.
+- 11:00: Add issue to a milestone, start work on the issue, and create a branch locally.
+ **Issue** stage stops and **Plan** stage starts.
+- 12:00: Make the first commit.
+- 12:30: Make the second commit to the branch that mentions the issue number.
+ **Plan** stage stops and **Code** stage starts.
+- 14:00: Push branch and create a merge request that contains the
+ [issue closing pattern](../../project/issues/managing_issues.md#closing-issues-automatically).
+ **Code** stage stops and **Test** and **Review** stages start.
+- GitLab CI/CD takes 5 minutes to run scripts defined in [`.gitlab-ci.yml`](../../../ci/yaml/index.md).
+- 19:00: Merge the merge request. **Review** stage stops and **Staging** stage starts.
+- 19:30: Deployment to the `production` environment finishes. **Staging** stops.
-How this works, behind the scenes:
+Value stream analytics records the following times for each stage:
-1. Issues and merge requests are grouped together in pairs, such that for each
- `<issue, merge request>` pair, the merge request has the [issue closing pattern](../../project/issues/managing_issues.md#closing-issues-automatically)
- for the corresponding issue. All other issues and merge requests are **not**
- considered.
-1. Then the `<issue, merge request>` pairs are filtered out by last XX days (specified
- by the UI - default is 90 days). So it prohibits these pairs from being considered.
-1. For the remaining `<issue, merge request>` pairs, we check the information that
- we need for the stages, like issue creation date, merge request merge time,
- and so on.
+- **Issue**: 09:00 to 11:00: 2 hrs
+- **Plan**: 11:00 to 12:00: 1 hr
+- **Code**: 12:00 to 14:00: 2 hrs
+- **Test**: 5 minutes
+- **Review**: 14:00 to 19:00: 5 hrs
+- **Staging**: 19:00 to 19:30: 30 minutes
-To sum up, anything that doesn't follow [GitLab flow](../../../topics/gitlab_flow.md) is not tracked and the
-value stream analytics dashboard does not present any data for:
+There are some additional considerations for this example:
-- Merge requests that do not close an issue.
-- Issues not labeled with a label present in the issue board or for issues not assigned a milestone.
-- Staging stage, if the project has no [production environment](#how-the-production-environment-is-identified).
+- This example demonstrates that it doesn't matter if your first
+ commit doesn't mention the issue number, you can do this later in any commit
+ on the branch you are working on.
+- The **Test** stage is used in the calculation for the overall time of
+ the cycle. It is included in the **Review** process, as every MR should be
+ tested.
+- This example illustrates only **one cycle** of the seven stages. The value stream analytics dashboard
+ shows the median time for multiple cycles.
-## How the production environment is identified
+## How value stream analytics identifies the production environment
Value stream analytics identifies production environments by looking for project
[environments](../../../ci/yaml/index.md#environment) with a name matching any of these patterns:
@@ -179,149 +240,22 @@ These patterns are not case-sensitive.
You can change the name of a project environment in your GitLab CI/CD configuration.
-## Example workflow
-
-Below is an example workflow of a single cycle that happens in a
-single day through all noted stages. Note that if a stage does not include a start
-and a stop time, its data is not included in the median time. It is assumed that
-milestones are created and a CI for testing and setting environments is configured.
-a start and a stop mark, it is not measured and hence not calculated in the median
-time. It is assumed that milestones are created and CI for testing and setting
-environments is configured.
-
-1. Issue is created at 09:00 (start of **Issue** stage).
-1. Issue is added to a milestone at 11:00 (stop of **Issue** stage / start of
- **Plan** stage).
-1. Start working on the issue, create a branch locally and make one commit at
- 12:00.
-1. Make a second commit to the branch which mentions the issue number at 12.30
- (stop of **Plan** stage / start of **Code** stage).
-1. Push branch and create a merge request that contains the
- [issue closing pattern](../../project/issues/managing_issues.md#closing-issues-automatically)
- in its description at 14:00 (stop of **Code** stage / start of **Test** and
- **Review** stages).
-1. The CI starts running your scripts defined in [`.gitlab-ci.yml`](../../../ci/yaml/index.md) and
- takes 5min (stop of **Test** stage).
-1. Review merge request, ensure that everything is OK and merge the merge
- request at 19:00. (stop of **Review** stage / start of **Staging** stage).
-1. Now that the merge request is merged, a deployment to the `production`
- environment starts and finishes at 19:30 (stop of **Staging** stage).
-
-From the above example you can conclude the time it took each stage to complete
-as long as their total time:
-
-- **Issue**: 2h (11:00 - 09:00)
-- **Plan**: 1h (12:00 - 11:00)
-- **Code**: 2h (14:00 - 12:00)
-- **Test**: 5min
-- **Review**: 5h (19:00 - 14:00)
-- **Staging**: 30min (19:30 - 19:00)
-
-A few notes:
-
-- In the above example we demonstrated that it doesn't matter if your first
- commit doesn't mention the issue number, you can do this later in any commit
- of the branch you are working on.
-- You can see that the **Test** stage is not calculated to the overall time of
- the cycle, because it is included in the **Review** process (every MR should be
- tested).
-- The example above was just **one cycle** of the seven stages. Add multiple
- cycles, calculate their median time and the result is what the dashboard of
- value stream analytics is showing.
-
## Custom value streams
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/12196) in GitLab 12.9.
-The default stages are designed to work straight out of the box, but they might not be suitable for
-all teams. Different teams use different approaches to building software, so some teams might want
-to customize their value stream analytics.
-
-GitLab allows users to create multiple value streams, hide default stages and create custom stages
-that align better to their development workflow.
-
-### Stage path
-
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/210315) in GitLab 13.0.
-> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/323982) in GitLab 13.12.
-
-![Value stream path navigation](img/vsa_path_nav_v13_11.png "Value stream path navigation")
-
-Stages are visually depicted as a horizontal process flow. Selecting a stage updates the content
-below the value stream.
-
-The stage time is displayed next to the name of each stage, in the following format:
-
-| Symbol | Description |
-|--------|-------------|
-| `m` | Minutes |
-| `h` | Hours |
-| `d` | Days |
-| `w` | Weeks |
-| `M` | Months |
-
-Hovering over a stage item displays a popover with the following information:
-
-- Start event description for the given stage
-- End event description
-- Median time items took to complete the stage
-- Number of items that completed the stage
-
-### Stream overview
-
-> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/321438) in GitLab 13.11.
-
-![Value stream analytics overview](img/vsa_overview_stage_v13_11.png "VSA overview")
-
-The stream overview provides access to key metrics and charts summarizing all the stages in the value stream
-based on selected filters.
-
-Shown metrics and charts includes:
-
-- [Lead time](#how-metrics-are-measured)
-- [Cycle time](#how-metrics-are-measured)
-- [Days to completion chart](#days-to-completion-chart)
-- [Tasks by type chart](#type-of-work---tasks-by-type-chart)
-
-### Stage table
-
-> Sorting the stage table [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/301082) in GitLab 13.12.
+Use custom value streams to create custom stages that align with your own development processes,
+and hide default stages. The dashboard depicts stages as a horizontal process
+flow.
-![Value stream analytics stage table](img/vsa_stage_table_v14_7.png "VSA stage table")
-
-The stage table shows a list of related workflow items for the selected stage. This can include:
-
-- CI/CD jobs
-- Issues
-- Merge requests
-- Pipelines
-
-A little badge next to the workflow items table header shows the number of workflow items that
-completed the selected stage.
-
-The stage table also includes the **Time** column, which shows how long it takes each item to pass
-through the selected value stream stage.
-
-The stage table is not displayed on the stream [Overview](#stream-overview).
-The workflow item column (first column) is ordered by end event.
-
-To sort the stage table by a table column, select the table header.
-You can sort in ascending or descending order. To find items that spent the most time in a stage,
-potentially causing bottlenecks in your value stream, sort the table by the **Time** column.
-From there, select individual items to drill in and investigate how delays are happening.
-To see which items most recently exited the stage, sort by the work item column on the left.
-
-The table displays 20 items per page. If there are more than 20 items, you can use the
-**Prev** and **Next** buttons to navigate through the pages.
-
-### Creating a value stream
+### Create a value stream
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/221202) in GitLab 13.3
A default value stream is readily available for each group. You can create additional value streams
based on the different areas of work that you would like to measure.
-Once created, a new value stream includes the [seven stages](#default-stages) that follow
+Once created, a new value stream includes the stages that follow
[GitLab workflow](../../../topics/gitlab_flow.md)
best practices. You can customize this flow by adding, hiding or re-ordering stages.
@@ -331,20 +265,17 @@ To create a value stream:
1. On the left sidebar, select **Analytics > Value Stream**.
1. In the top right, select the dropdown list and then **Create new Value Stream**.
1. Enter a name for the new Value Stream.
- - You can [customize the stages](#creating-a-value-stream-with-stages).
+ - You can [customize the stages](#create-a-value-stream-with-stages).
1. Select **Create Value Stream**.
![New value stream](img/new_value_stream_v13_12.png "Creating a new value stream")
-#### Creating a value stream with stages
+### Create a value stream with stages
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/50229) in GitLab 13.7.
> - [Enabled by default](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55572) in GitLab 13.10.
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/294190) in GitLab 13.11.
-WARNING:
-This feature might not be available to you. Check the **version history** note above for details.
-
You can create value streams with stages, starting with a default or a blank template. You can
add stages as desired.
@@ -364,7 +295,7 @@ To create a value stream with stages:
![Custom stage actions](img/vsa_custom_stage_v13_10.png "Custom stage actions")
1. Select **Create Value Stream**.
-#### Label-based stages
+### Label-based stages
The pre-defined start and end events can cover many use cases involving both issues and merge requests.
@@ -379,7 +310,7 @@ In this example, we'd like to measure times for deployment from a staging enviro
![Label-based value stream analytics stage](img/vsa_label_based_stage_v14_0.png "Creating a label-based value stream analytics stage")
-### Editing a value stream
+### Edit a value stream
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/267537) in GitLab 13.10.
@@ -388,7 +319,7 @@ After you create a value stream, you can customize it to suit your purposes. To
1. On the top bar, select **Menu > Groups** and find your group.
1. On the left sidebar, select **Analytics > Value Stream**.
1. In the top right, select the dropdown list and then select the relevant value stream.
-1. Next to the value stream dropdown, select **Edit**.
+1. Next to the value stream dropdown list, select **Edit**.
The edit form is populated with the value stream details.
1. Optional:
- Rename the value stream.
@@ -399,7 +330,7 @@ After you create a value stream, you can customize it to suit your purposes. To
1. Optional. To undo any modifications, select **Restore value stream defaults**.
1. Select **Save Value Stream**.
-### Deleting a value stream
+### Delete a value stream
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/221205) in GitLab 13.4.
@@ -413,19 +344,27 @@ To delete a custom value stream:
![Delete value stream](img/delete_value_stream_v13_12.png "Deleting a custom value stream")
-## Days to completion chart
+## View number of days for a cycle to complete
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/21631) in GitLab 12.6.
> - Chart median line [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/235455) in GitLab 13.4.
> - Totals [replaced](https://gitlab.com/gitlab-org/gitlab/-/issues/262070) with averages in GitLab 13.12.
-This chart visually depicts the average number of days it takes for cycles to be completed.
-
-This chart uses the global page filters for displaying data based on the selected
-group, projects, and time frame. In addition, specific stages can be selected
-from the chart itself.
+The **Total time chart** shows the average number of days it takes for development cycles to complete.
+The chart shows data for the last 500 workflow items.
-The chart data is limited to the last 500 items.
+1. On the top bar, select **Menu > Groups** and find your group.
+1. On the left sidebar, select **Analytics > Value stream**.
+1. Above the **Filter results** box, select a stage:
+ - To view a summary of the cycle time for all stages, select **Overview**.
+ - To view the cycle time for specific stage, select a stage.
+1. Optional. Filter the results:
+ 1. Select the **Filter results** text box.
+ 1. Select a parameter.
+ 1. Select a value or enter text to refine the results.
+ 1. To adjust the date range:
+ - In the **From** field, select a start date.
+ - In the **To** field, select an end date.
## Type of work - Tasks by type chart
@@ -439,17 +378,3 @@ toggled to show data for merge requests and further refined for specific group-l
By default the top group-level labels (max. 10) are pre-selected, with the ability to
select up to a total of 15 labels.
-
-## Permissions
-
-To access value stream analytics for groups, users must have at least the Reporter role.
-
-You can [read more about permissions](../../permissions.md) in general.
-
-## More resources
-
-Learn more about value stream analytics in the following resources:
-
-- [Value stream analytics feature page](https://about.gitlab.com/stages-devops-lifecycle/value-stream-analytics/).
-- [Value stream analytics feature preview](https://about.gitlab.com/blog/2016/09/16/feature-preview-introducing-cycle-analytics/).
-- [Value stream analytics feature highlight](https://about.gitlab.com/blog/2016/09/21/cycle-analytics-feature-highlight/).