Sometimes the scope of an epic changes and is either narrower (only affecting a subgroup) or wider (affecting sibling groups / the parent group) afterwards.
The current workflow for those cases is to create a new epic and copy all issues individually, which leads to a poor user experience.
Proposal
We should support moving epics to other groups like we do for issues. As a first iteration of this, we should support moving epics via the /move quick action.
First of all, thank you for raising an issue to help improve the GitLab product. We're sorry about this, but this particular issue has gone unnoticed for quite some time.
We're posting this message because this issue meets the following criteria:
No activity in the past 6 months (since 2018-07-11T15:33:32.091Z)
No milestone (unscheduled)
We'd like to ask you to help us out and determine how we should act on this issue.
If this issue is reporting a bug, please can you attempt to reproduce on the latest version of GitLab or GitLab.com, to help us to understand whether the bug still needs our attention.
If this issue is proposing a new feature, please can you verify whether the feature proposal is still relevant.
Please mention the Triage team (@gitlab-org/triage) for help with applying labels
I'd like to see this as an enterprise customer. We've had a lot of need for this, instead we are left re-creating. Perhaps just supporting promoting to parent group would be sufficient of us.
@mterhar Could you please comment here what information of an epic the customer would like to duplicate? Is this only about the title, description, and labels?
The epics are typically created in a group for planning broad strokes. The epic will be given sub-epics that flesh out the plan into finer detail.
At this point, the epic is ready to be put into its own new group or an existing groups where issues will be added to define the detailed implementation.
They’d probably like the ability to clone so they can start from a pre-defined structure... though that’s less important than the movement between groups.
@mterhar If the epic is moved, neither relations to issues nor other epics can be kept (because we currently don't allow them across different groups). Would it still cover their use case without them? Or are they mainly interested in the epic-child epics-issues tree structure?
I just found that my reply to your last message on this thread didn’t post... then I accidentally cleared it.
There are increments of success and each one helps support the end user. Cloning is great. Moving is great. Templating is great. Being able to copy or reference child epics is great. Cross-group issues is great.
I think any of those will improve the clients workflow.
Those two specific issues are a great start and will be very beneficial.
@smcgivern@donaldcook I'm going to schedule this for %12.2 as there was some mention of extra capacity. If this can't be accomplished we can push it to %12.3.
@mterhar we will get to this in the next few releases.
@ebrinkman The scope of this issue is quite vague (sorry! ), so I'd like to suggest the following:
introduce the basic functionality for moving epics and a quick action /move (similar to issues)
leave UI for a separate follow-up issue
This would allow us to get the basic functionality to our users faster but also give us the chance to further discuss how the UI is supposed to like like. What do you think?
There are a few UX concerns that I didn't really think through earlier and that now popped up when looking into the implementation.
First of all, there are two fundamentally different ways to achieving the goal:
"physically" move the epic (delete it in the old group, create a duplicate in the new group)
clone the epic (close it in the old group, create a duplicate in the new group)
Initially my thought was to go with 1. but I assume now we want to go with 2. because that is consistent with the /move action for issues and also allow users to still look at the old epic even if they don't have access to the new group the epic is in.
The following questions become relevant if we go with 2.:
Given an epic is moved from group A to group B.
How is it displayed to users who only have permission to access group A?
(for issues we display them as closed without a system note)
What happens with labels / parent epics / child epics that exist in group A but not in group B?
(for issues we remove labels and milestones without system notes)
What happens with issues that are part of the epic but invisible to the user who moves the epic? Will they be copied without the user noticing?
(for issues the related issues are removed)
Let me know if you want to chat further about this! I think what I got from our call is that we may need to spend more time thinking about the relationships and dependencies between Epics and Issues before tackling moving Epics and issues. Maybe we could be more flexible here when copying and moving, or need to put more thought into error prevention and confirmation. Your idea of starting with "promoting" Epics was interesting and could be a good starting point? It looks like you already pinged @gweaver here which I think will be helpful as we get to the root of the problem we are trying to solve with this.
The epics are typically created in a group for planning broad strokes. The epic will be given sub-epics that flesh out the plan into finer detail.
The idea of planning out work agnostic of group is super interesting and could be something to research. It sounds sort of similar to the templating issue in https://gitlab.com/gitlab-org/gitlab-ee/issues/9398 . I think @annabeldunstone worked on that a bit, so maybe she has some helpful context and feedback here.
What happens with issues that are part of the epic but invisible to the user who moves the epic? Will they be copied without the user noticing? (for issues the related issues are removed)
There is a another aspect to this: Currently it's not possible to add issues from another group to an epic. I guess we want to change that as part of this issue?
Thank you! If I understand you correctly, this means that the issue does not make sense as it is.
That's also supported by the current epic-issue-relationship: As soon as we copy over issues to the newly created epic, they will be removed from the old one because each issue can only have one epic.
Going forward, I think we have the following options:
Make /move only copy author, title, description, and comments of an epic. Labels, issues, parent and child epics would be ignored. In that case I would suggest we rather name the command /clone.
1 and 2 make sense to me as a first iteration. 3 seems like it would have a lot of edge cases. Maybe that could be its own issue with some UX consideration?
Make /move only copy author, title, description, and comments of an epic.
Apart from comments this is already covered by https://gitlab.com/gitlab-org/gitlab-ee/issues/9398 (which I didn't know existed until now). We can create a follow-up if we think copying over comments needs to be supported as well.