Content
View differences
Updated by Marc Alcobé 12 days ago
**As a** meeting participant **As** a \[enter role of user\]
**I want** to manage a series backlog from within an individual meeting that belongs to a series want to** \[enter objective\]
**so that** I can capture, maintain, and reuse agenda topics and work packages across all occurrences of that series. \[enter desired result\]
### Acceptance Criteria **Acceptance criteria**
* **Availability & scope**
<br>
**Technical notes**
* The **Backlog** tab is shown **only** for meetings that are **occurrences of a series**.
<br>
**Permissions and visibility considerations**
* The backlog _To whom is **not** shown for:
this feature visible?_
* One-time meetings
* The series template (the template used to generate occurrences)
* The backlog content _When is **shared across all occurrences** of the same series.
* When a user adds/edits/deletes an item in one occurrence, it is reflected in the backlog of all other occurrences of the same series.
not visible?_
**Translation considerations**
* **Placement in UI (mobile)**
* In meeting details, the tab bar includes: Agenda, **Backlog**, Details, Participants _Key terms and Attachments.
* The Backlog tab shows:
* A header indicating the scope, e.g. **“Series backlog”**
* Helper text explaining sharing, e.g. “Shared across all occurrences of this series.”
* **Empty state**
* If the backlog has no items, show an empty state with:
* Message indicating there are no backlog items yet
* A primary action to add an item (same as the “Add” flow)
* **Listing behavior**
* The backlog list displays backlog items phrases in a consistent order:
* Default: sort by **Last edited descending**
* Each backlog row shows the same as in the Agena tab:
* Title (or Work package title)
* In the case key languages_
**Out of work packages; type, ID and status
* Optional: presenter avatar/name if present and duration
* An overflow menu trigger (e.g. `…`) per item
* **Add item flow**
* The Backlog tab has a visible **Add** button.
* Tapping **Add** opens a menu with exactly:
* **Agenda item**
* **Work package**
* Selecting **Agenda item** opens an “Add agenda item” modal with fields:
* Title (required)
* Duration (optional, numeric)
* Presenter (optional, person picker)
* Notes (optional, multi-line)
* Actions: **Cancel** and **Create**
* Selecting **Work package** opens an “Add work package” modal with fields:
* Work package (required, work package picker/search)
* Duration (optional, numeric)
* Presenter (optional, person picker)
* Notes (optional, multi-line)
* Actions: **Cancel** and **Create**
* The **Create** action is disabled until required fields are valid.
* On successful creation:
* The modal closes
* The new item appears in the backlog list
* **Item actions**
* Each backlog item exposes an overflow menu with actions:
* **Edit**
* **Share**
* **Move to current meeting**
* **Delete**
* Actions shown depend on permissions:
* Users without edit permission do not see **Edit**, **Move to current meeting**, or **Delete**
* **Edit action**
* Tapping **Edit** opens an edit modal with the same fields as creation for that item type:
* Agenda item: Title, Duration, Presenter, Notes
* Work package item: Work package (see constraint below), Duration, Presenter, Notes
* Required fields must remain valid.
* Saving updates the backlog item for the series and updates the list immediately.
* **Share action**
* Tapping **Share** opens the platform share sheet.
* **Move to current meeting action**
* Tapping **Move to current meeting** creates a corresponding item in the **current meeting’s agenda** (the occurrence the user is viewing), preserving:
* Title / Work package reference
* Duration (if present)
* Presenter (if present)
* Notes (if present)
* Removes the item from the **series backlog**.
* After successful move:
* The backlog list updates (item disappears)
* The current meeting Agenda reflects the new agenda entry
* If the current meeting agenda is read-only (permissions or status closed):
* The action is hidden
* **Delete action**
* Tapping **Delete** requires confirmation (to prevent accidental deletion).
* On confirm, the backlog item is deleted from the series backlog and disappears from all occurrences’ backlog views.
* **Validation & error handling**
* If any action fails (network/server), show an error message and preserve user input where applicable.
* If the meeting’s series association cannot be resolved (e.g., missing `meetingSeriesId`), the backlog tab is hidden and backlog actions are unavailable.
### Technical Notes scope**
* **Assumptions**
* Meetings that “belong to a series” have an immutable reference to a **series entity** (e.g., `meetingSeriesId`).
* The current meeting has an agenda collection to which items can <br>
_Set the_ **To be added (occurrence-level).
* **Data model**
* Series backlog items are stored at the series scope:
* `SeriesBacklogItem { id, meetingSeriesId, type, title?, workPackageId?, durationMinutes?, presenterId?, notes?, createdAt, createdBy, updatedAt, updatedBy }`
* Meeting agenda items are stored at the occurrence scope:
* `MeetingAgendaItem { id, meetingId, type, title?, workPackageId?, durationMinutes?, presenterId?, notes?, position?, ... }`
* **Move semantics**
* “Move informed/consulted teams** _field to current meeting” must be an atomic operation include all teams necessary to prevent duplicates:
* Preferred: a single backend command that creates agenda item + deletes backlog item in one transaction.
* If not possible, implement idempotency keys to avoid double-creation on retries.
* **API (illustrative)**
* Backlog:
* `GET /meeting_series/{id}/backlog_items`
* `POST /meeting_series/{id}/backlog_items`
* `PATCH /meeting_series/{id}/backlog_items/{itemId}`
* `DELETE /meeting_series/{id}/backlog_items/{itemId}`
* Move:
* `POST /meetings/{meetingId}/backlog_items/{itemId}/move_to_agenda`
* Body optional: `{ position?: ..., }`
* **Sharing / deep links**
* If the product supports deep links:
* Provide a stable URL like: `.../meeting-series/{id}/backlog?item={itemId}`
* Or a backlog item URL: `.../backlog-items/{itemId}`
* Ensure permission checks are enforced when opening links.
* **Permissions**
* Backlog permissions should be evaluated at the series level:
* `canViewSeriesBacklog`
* `canEditSeriesBacklog` (create/edit/delete/move)
* `canShareSeriesBacklogItem` (if separate)
* Move additionally requires permission to edit the target meeting’s agenda:
* `canEditMeetingAgenda(meetingId)`
* **UI state & caching**
* Optimistic updates are acceptable for:
* Edit
* Delete
* Move
* On failure, roll back local state and show error.
* **Risks / edge cases**
* Concurrency: two users moving/deleting the same backlog item simultaneously
* Backend should return a clear error (404/409) and UI should refresh the list.
* Work package access:
* A user may see a backlog item but not have access to the referenced work package details.
* Define display fallback for restricted WP (e.g. “Restricted work package”).
* Share informed of restricted items:
* Avoid leaking sensitive info via share payload if user can’t share externally.
### Permissions and Visibility Considerations
* **Visibility**
* Backlog tab visible only when:
* Meeting is a series occurrence
* User can view the meeting
* **Action availability**
* Edit / Delete / Move to current meeting require:
* Permission to edit series backlog
* Move additionally requires permission to edit the current meeting agenda
### Translation Considerations
* Localize:
* “Series backlog”, helper text, empty state
* Action labels: “Edit”, “Share”, “Move to current meeting”, “Delete”
* Confirmation dialog text for delete and (optionally) move
* Error messages
* Do NOT translate:
* Work package IDs
* Internal identifiers (`meetingSeriesId`, `workPackageId`, `itemId`)
* URLs and deep-link parameters
### Out of Scope
* Reordering backlog items (manual drag-and-drop priority)
* Bulk selection and bulk actions
* Moving backlog items to a different occurrence than the current meeting (e.g., “move to…” picker)
* Recurring automation rules (e.g., auto-add backlog items to each occurrence)
* Advanced sharing configuration UI (permissions management UI) changes._
**I want** to manage a series backlog from within an individual meeting that belongs to a series
**so that** I can capture, maintain, and reuse agenda topics and work packages across all occurrences of that series.
### Acceptance Criteria
* **Availability & scope**
**Technical notes**
**Permissions and visibility considerations**
* The series template (the template used to generate occurrences)
* The backlog content
* When a user adds/edits/deletes an item in one occurrence, it is reflected in the backlog of all other occurrences of the same series.
**Translation considerations**
* In meeting details, the tab bar includes: Agenda, **Backlog**, Details, Participants
* The Backlog tab shows:
* A header indicating the scope, e.g. **“Series backlog”**
* Helper text explaining sharing, e.g. “Shared across all occurrences of this series.”
* **Empty state**
* If the backlog has no items, show an empty state with:
* Message indicating there are no backlog items yet
* A primary action to add an item (same as the “Add” flow)
* **Listing behavior**
* The backlog list displays backlog items
* Default: sort by **Last edited descending**
* Each backlog row shows the same as in the Agena tab:
* Title (or Work package title)
* In the case
**Out
* Optional: presenter avatar/name if present and duration
* An overflow menu trigger (e.g. `…`) per item
* **Add item flow**
* The Backlog tab has a visible **Add** button.
* Tapping **Add** opens a menu with exactly:
* **Agenda item**
* **Work package**
* Selecting **Agenda item** opens an “Add agenda item” modal with fields:
* Title (required)
* Duration (optional, numeric)
* Presenter (optional, person picker)
* Notes (optional, multi-line)
* Actions: **Cancel** and **Create**
* Selecting **Work package** opens an “Add work package” modal with fields:
* Work package (required, work package picker/search)
* Duration (optional, numeric)
* Presenter (optional, person picker)
* Notes (optional, multi-line)
* Actions: **Cancel** and **Create**
* The **Create** action is disabled until required fields are valid.
* On successful creation:
* The modal closes
* The new item appears in the backlog list
* **Item actions**
* Each backlog item exposes an overflow menu with actions:
* **Edit**
* **Share**
* **Move to current meeting**
* **Delete**
* Actions shown depend on permissions:
* Users without edit permission do not see **Edit**, **Move to current meeting**, or **Delete**
* **Edit action**
* Tapping **Edit** opens an edit modal with the same fields as creation for that item type:
* Agenda item: Title, Duration, Presenter, Notes
* Work package item: Work package (see constraint below), Duration, Presenter, Notes
* Required fields must remain valid.
* Saving updates the backlog item for the series and updates the list immediately.
* **Share action**
* Tapping **Share** opens the platform share sheet.
* **Move to current meeting action**
* Tapping **Move to current meeting** creates a corresponding item in the **current meeting’s agenda** (the occurrence the user is viewing), preserving:
* Title / Work package reference
* Duration (if present)
* Presenter (if present)
* Notes (if present)
* Removes the item from the **series backlog**.
* After successful move:
* The backlog list updates (item disappears)
* The current meeting Agenda reflects the new agenda entry
* If the current meeting agenda is read-only (permissions or status closed):
* The action is hidden
* **Delete action**
* Tapping **Delete** requires confirmation (to prevent accidental deletion).
* On confirm, the backlog item is deleted from the series backlog and disappears from all occurrences’ backlog views.
* **Validation & error handling**
* If any action fails (network/server), show an error message and preserve user input where applicable.
* If the meeting’s series association cannot be resolved (e.g., missing `meetingSeriesId`), the backlog tab is hidden and backlog actions are unavailable.
### Technical Notes
* **Assumptions**
* Meetings that “belong to a series” have an immutable reference to a **series entity** (e.g., `meetingSeriesId`).
* The current meeting has an agenda collection to which items can
_Set the_ **To
* **Data model**
* Series backlog items are stored at the series scope:
* `SeriesBacklogItem { id, meetingSeriesId, type, title?, workPackageId?, durationMinutes?, presenterId?, notes?, createdAt, createdBy, updatedAt, updatedBy }`
* Meeting agenda items are stored at the occurrence scope:
* `MeetingAgendaItem { id, meetingId, type, title?, workPackageId?, durationMinutes?, presenterId?, notes?, position?, ... }`
* **Move semantics**
* “Move
* Preferred: a single backend command that creates agenda item + deletes backlog item in one transaction.
* If not possible, implement idempotency keys to avoid double-creation on retries.
* **API (illustrative)**
* Backlog:
* `GET /meeting_series/{id}/backlog_items`
* `POST /meeting_series/{id}/backlog_items`
* `PATCH /meeting_series/{id}/backlog_items/{itemId}`
* `DELETE /meeting_series/{id}/backlog_items/{itemId}`
* Move:
* `POST /meetings/{meetingId}/backlog_items/{itemId}/move_to_agenda`
* Body optional: `{ position?: ..., }`
* **Sharing / deep links**
* If the product supports deep links:
* Provide a stable URL like: `.../meeting-series/{id}/backlog?item={itemId}`
* Or a backlog item URL: `.../backlog-items/{itemId}`
* Ensure permission checks are enforced when opening links.
* **Permissions**
* Backlog permissions should be evaluated at the series level:
* `canViewSeriesBacklog`
* `canEditSeriesBacklog` (create/edit/delete/move)
* `canShareSeriesBacklogItem` (if separate)
* Move additionally requires permission to edit the target meeting’s agenda:
* `canEditMeetingAgenda(meetingId)`
* **UI state & caching**
* Optimistic updates are acceptable for:
* Edit
* Delete
* Move
* On failure, roll back local state and show error.
* **Risks / edge cases**
* Concurrency: two users moving/deleting the same backlog item simultaneously
* Backend should return a clear error (404/409) and UI should refresh the list.
* Work package access:
* A user may see a backlog item but not have access to the referenced work package details.
* Define display fallback for restricted WP (e.g. “Restricted work package”).
* Share
* Avoid leaking sensitive info via share payload if user can’t share externally.
### Permissions and Visibility Considerations
* **Visibility**
* Backlog tab visible only when:
* Meeting is a series occurrence
* User can view the meeting
* **Action availability**
* Edit / Delete / Move to current meeting require:
* Permission to edit series backlog
* Move additionally requires permission to edit the current meeting agenda
### Translation Considerations
* Localize:
* “Series backlog”, helper text, empty state
* Action labels: “Edit”, “Share”, “Move to current meeting”, “Delete”
* Confirmation dialog text for delete and (optionally) move
* Error messages
* Do NOT translate:
* Work package IDs
* Internal identifiers (`meetingSeriesId`, `workPackageId`, `itemId`)
* URLs and deep-link parameters
### Out of Scope
* Reordering backlog items (manual drag-and-drop priority)
* Bulk selection and bulk actions
* Moving backlog items to a different occurrence than the current meeting (e.g., “move to…” picker)
* Recurring automation rules (e.g., auto-add backlog items to each occurrence)
* Advanced sharing configuration UI (permissions management UI)