This story initialize the work on explicit backlog management. It focus on top backlog and under the hood work to put things in place.
Enable the explicit backlog management
- Agile Dashboard admin is converted to burning parrot (finish @bdauton contrib, the blocking point for bot mattermost can be simplified to text field)
- In the section "Scrum", there is a switch that allows admin to opt-in explicit backlog management. At this stage:
- the switch is one way only (it's not possible to switch back to implicit backlog management)
- the backlog is created empty (even if there are stories/epics/activities that where "there" in the backlog, they are not automatically added to top backlog)
- those 2 items might be re-considered in a later story if useful.
The explicit backlog management is handled in backend with a table "project_id|artifact_id". The option to implement that as a new field was evaluated. Once sobber again, it was decided to make it simple.
Use explicit backlog management in planning view
- When an item is added to the backlog, the explicit link is created
- Update PATCH /projects/:id/backlog implementation for "add" action
- Items are listed in the backlog part of the view
- Update GET /projects/:id/backlog implementation (this is the major part of the change in term of implementation)
- In the card actions, there is a new entry "Remove from backlog"
- Update PATCH /projects/:id/backlog to add a "remove" action
- When a card is moved from backlog to milestone, the "top backlog link" is removed
- From an implementation stand point this must be managed at Artifact Link creation level. When a backlog item is added to a Milestone, it is removed from "top backlog" table.
- When a card is moved from milestone back to backlog, the "top backlog link" is (re) created
The assocation project_id,artifact_id is removed when an artifact is moved into a milestone. Another way to see it is that there is "global belonging to scrum realm" information stored in the database. From an implemenation point of view, to know if an artifact "belongs to scrum realm" we would need to check if it belongs to top backlog or a milestone.
There is a change in permissions that applies for creation of backlog items. Until now, the ability to create artifact in the corresponding tracker was taken into account.
With this story, the ability to create (and remove) backlog items is inherited from the (already existing) right to prioritize elements in a planning.
Note: from a user of planning view PoV, nothing change as it was already impossible for someone who was not authorized to rank top backlog to create element. However until now it was possible to workaround that by creating the element directly in the corresponding tracker.
Change of data model
- The new artifact is not linked to top backlog
- Delete artifact