Content
View differences
Updated by Oliver Günther over 1 year ago
**As** an organizer of meetings
**I want to** be able to define meeting series
**so that** I don't have to manually copy and set them up
## **Perceived problems**
* Meetings need to be individually created
* they need to be copied over by hand, possibly removing previous inputs
* there is no connection between the different instances of a meeting
* Users have to manually create every instance of them instead of defining a schedule
* Not possible to define templates for meetings
* Users can now copy with agenda items, but will have to manually remove minutes/input from previous iterations (e.g., Weekly)
### Context
These specifications assume that the following two features have already been implemented:
* ##57854
* ##58152
### Visuals and Figma
This epic does not contain visuals since they are still likely to be updated. **Please refer to the** [**Figma file**](https://www.figma.com/design/cJDhzOmYMstUNRS3EmgqZ0/Meetings-Module?node-id=2124-14163) **for the latest mockups**.
###
## Overview Acceptance criteria
#### **General**
* A meeting series consists of:
* Meeting series details: title, location, date and time, duration, frequency, end date
* A series template
* A series index page
* Individual meeting occurrences (without a title, just a date + the series title)
* Meeting series have to be created in the context of a project.
* Meeting series index pages have a fixed url:
* Format: `/meetings/{series-slug-or-id}/{date}`
* The name of a series is the name set on the index page.
* This cannot be changed at the level of individual meetings
* Modifying the template (meeting title, meeting details, agenda items, participants or attachments) will modify these details for all future occurrences of the series
* They can also be changed at a per-meeting level, but this does not affect other meetings in the series
# ##54188 #### **Meeting creation form**
( workPackageValue:54188:status | workPackageValue:54188:version ) In the dynamic meeting creation page:
workPackageValue:54188:description * There is a checkbox after the Date and time field
* Label: "Meeting series"
* Caption: "Enable this if you would like to create a series of recurring meetings."
* Enabling this displays these additional fields:
* "**Recurrence**" (required) is a select field with options:
* Every day
* Every week
* Every 2 weeks
* Every month
* "**End after**" (required) is a select field with options:
* A specific date
* Selecting this displays a date field titled "End date" (required)
* A specific number of meetings
* Selecting this displays an input field titled "Number of meetings" (required) that only accepts integers
* \[open\] Max-value: 99?
* This calendar year
* The "Create" primary button is changed to "Create meeting series"
#### **Meeting index pages**
# ##54752 * The index page lists upcoming or past episodes of a meeting series as it would a regular one-time meeting
* Meetings that are a part of a series have a "series" icon after their name, followed by an _IssueLabel_ (variant: accent) that specifies the frequency:
* "Daily" (corresponds to a frequency of _Every day_)
* "Weekly (corresponds to a frequency of _Every week_)
* "Bi-weekly" (corresponds to a frequency of _Every 2 weeks_)
* Monthly (corresponds to a frequency of _Every day_)
* Clicking on the icon or issue label takes the user to the index page of that Meeting series
* The more action has these options:
* "Open this meeting": takes the user to that particular meeting occurrence
* "View meeting series": takes the user to the meeting series index page
* "Delete": will display a confirmation dialog:
* Title: "Delete meeting occurrence"
* Text: "This meeting is part of the {Meeting series name} series. This will only delete this particular occurrence and not the entire series. Do you want to delete just this occurrence?"
* Options:
* "Delete meeting" (danger)
* "Cancel" (secondary)
#### **Meeting series index page**
( workPackageValue:54752:status | workPackageValue:54752:version ) * Every meeting series has an index page of its own.
* This is one level lower than the regular meeting index page.
* The breadcrumb will be "{Project name} / Meetings / {Meeting series name}"
* In the Page Header,
* The given Meeting title will be followed by the words "(Meeting series)" (in a lighter shade)
* The caption will note the frequency and the end date like so: "Every Tuesday at 2:03 PM, ends on 31.12.2024"
* Dates and times will be formatted according to existing instance/user preferences
* The More button has these actions:
* "Edit meeting series name": this makes the title editable (without the "(Meeting series)" bit).
* The title set here determines the title of the entire series. It cannot be changed for individual meetings within that series.
* "Copy meeting series URL": copies the fixed meeting series URL to clipboard.
* In the Quick filter sub-header, the "Filter" button is removed
* There are two sections in the index:
* **Template:**
* Columns:
* Template
* Frequency
* Duration
* Location
* Has just one element, titled "Default template"
* Clicking on this title takes the user to the template
* **Meeting list:**
* Columns:
* "Date and time"
* "Starts": shows the number of days to that occurrence in format: "today", "tomorrow" or "in {n} days" for values over 1
* "Last edited"
* "Status": can either be "Agenda created", "Scheduled" or "Deleted"
* By default, in "Upcoming" view, the list contains these elements:
* The next occurrence is automatically "scheduled", with a button on the right corner titled "Create"
* This creates the agenda item based on the template
* Any other manually-created occurrences, in chronological order (earliest first)
* The last line is special:
* On the left side, a "recurring" icon is followed by this text: "There are {n} more scheduled meetings ({frequency})."
* On the right side, there is a "+ Create future meeting" secondary button
* Clicking on "+ Create future meeting" opens a dialog
* (to be described)
#### **Recurring meeting agenda page**
workPackageValue:54752:description A meeting that's part of a recurring meeting looks like a regular meeting page except for these specificities:
# ##58225 * The meeting agenda page is one level lower than the regular meeting agenda page:
* The breadcrumb will be "{Project name} / Meetings / {Meeting series name} / Date"
* The title will be: "{Date} ({Series name})" (with the series name in parentheses in a lighter shade)
* The title will not be editable
* The description in the PageHeader will be: "This is part of a recurring {Series title} meeting series. Last updated {last-updated-time}".
* The _Meeting details_ pane on the left has one extra line at the top:
* Icon: recurring icon ("iterations")
* Link with title of the Meeting series: clicking on this takes the user to the Meeting series index
#### **Recurring meeting template page**
( workPackageValue:58225:status | workPackageValue:58225:version ) The template of a meeting series looks like a regular meeting page except for these specificities:
workPackageValue:58225:description * The meeting agenda page is one level lower than the regular meeting agenda page:
* The breadcrumb will be "{Project name} / Meetings / {Meeting series name} / Template"
* The title will be: "{Series name} (Template)" (with the "Template" in parentheses in a lighter shade)
* The title is editable. This determines the name of the series.
* The description in the PageHeader will be the same as for a regular meeting:"Created by {author}. Last updated {last-updated-time}".
* The _Meeting details_ pane on the left:
* Is titled "Meeting series details" instead of "Meeting details"
* Has an additional line on top with:
* Icon: recurring icon ("iterations")
* Text: the frequency of the meeting (eg. "Every week", "Every month")
* Editing meeting details here
* On top of the meeting agenda, there is a flash that takes the width of the left (content) pane:
* Type: Info (blue)
* Text: "You are currently editing a template for a recurring meeting. Every new occurrence of a meeting in this series will be based on this template. Changes will not affect past or manually-edited meetings."
* Editing the elements of the template (meeting title, meeting details, agenda items, participants or attachments) will change them for all future occurrences of the series
## **Related features and ideas**
# ##58226 Interesting ideas that we think might improve current workflow/experience
( workPackageValue:58226:status | workPackageValue:58226:version )
workPackageValue:58226:description
# ##58227
( workPackageValue:58227:status | workPackageValue:58227:version )
workPackageValue:58227:description
# ##54751
( workPackageValue:54751:status | workPackageValue:54751:version )
workPackageValue:54751:description
# Related features
* ##57854 ##54188 (needs updating based on these specs)
* ##58152 ##54752 (needs updating based on these specs)
* ##54751
##
## **Benefits and added value**
How are things going to be better compared to today?
* **Address real world meeting practices:** Recurring meetings exist in every organization, often using the same structure. If OpenProject wants to improve dealing with these kinds of meetings, having a notion of recurring meetings is quintessential.
* **OpenProject as the data master:** With series defined in OpenProject, they can be output as a scheduled ICS file to ensure the calendar entry matches the series. Users can then click on the associated link in the series and be redirected to the correct occurrence.
* **Balancing of meeting capacity:** With the agenda item backlog, a meeting can be filled with items to the available capacity, and items with no time left to discussed can be moved to the backlogs or another iteration easily
## Naming
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Term</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">English (Option B)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">German</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">French</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Spanish</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">An instance of a recurring meeting / meeting series</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Meeting occurrence</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Serientermin</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Une réunion/<br>Un episode de réunion</p></td><td class="op-uc-table--cell"><p class="op-uc-p">?</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Multiple instances of recurring meetings</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Meeting series</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Serientermine</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Une série de réunions </p></td><td class="op-uc-table--cell"><p class="op-uc-p">?</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Meeting type</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Recurring meeting</p></td><td class="op-uc-table--cell"><p class="op-uc-p">?</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Réunions récurrentes</p></td><td class="op-uc-table--cell"><p class="op-uc-p">?</p></td></tr></tbody></table></figure>
**I want to** be able to define meeting series
**so that** I don't have to manually copy and set them up
## **Perceived problems**
* Meetings need to be individually created
* they need to be copied over by hand, possibly removing previous inputs
* there is no connection between the different instances of a meeting
* Users have to manually create every instance of them instead of defining a schedule
* Not possible to define templates for meetings
* Users can now copy with agenda items, but will have to manually remove minutes/input from previous iterations (e.g., Weekly)
### Context
These specifications assume that the following two features have already been implemented:
* ##57854
* ##58152
### Visuals and Figma
This epic does not contain visuals since they are still likely to be updated. **Please refer to the** [**Figma file**](https://www.figma.com/design/cJDhzOmYMstUNRS3EmgqZ0/Meetings-Module?node-id=2124-14163) **for the latest mockups**.
###
## Overview
* Meeting series details: title, location, date and time, duration, frequency, end date
* A series template
* A series index page
* Individual meeting occurrences (without a title, just a date + the series title)
* Meeting series have to be created in the context of a project.
* Meeting series index pages have a fixed url:
* Format: `/meetings/{series-slug-or-id}/{date}`
* The name of a series is the name set on the index page.
* This cannot be changed at the level of individual meetings
* Modifying the template (meeting title, meeting details, agenda items, participants or attachments) will modify these details for all future occurrences of the series
* They can also be changed at a per-meeting level, but this does not affect other meetings in the series
# ##54188
( workPackageValue:54188:status | workPackageValue:54188:version )
workPackageValue:54188:description
* Label: "Meeting series"
* Caption: "Enable this if you would like to create a series of recurring meetings."
* Enabling this displays these additional fields:
* "**Recurrence**" (required) is a select field with options:
* Every day
* Every week
* Every 2 weeks
* Every month
* "**End after**" (required) is a select field with options:
* A specific date
* Selecting this displays a date field titled "End date" (required)
* A specific number of meetings
* Selecting this displays an input field titled "Number of meetings" (required) that only accepts integers
* \[open\] Max-value: 99?
* This calendar year
* The "Create" primary button is changed to "Create meeting series"
#### **Meeting index pages**
# ##54752
* Meetings that are a part of a series have a "series" icon after their name, followed by an _IssueLabel_ (variant: accent) that specifies the frequency:
* "Daily" (corresponds to a frequency of _Every day_)
* "Weekly (corresponds to a frequency of _Every week_)
* "Bi-weekly" (corresponds to a frequency of _Every 2 weeks_)
* Monthly (corresponds to a frequency of _Every day_)
* Clicking on the icon or issue label takes the user to the index page of that Meeting series
* The more action has these options:
* "Open this meeting": takes the user to that particular meeting occurrence
* "View meeting series": takes the user to the meeting series index page
* "Delete": will display a confirmation dialog:
* Title: "Delete meeting occurrence"
* Text: "This meeting is part of the {Meeting series name} series. This will only delete this particular occurrence and not the entire series. Do you want to delete just this occurrence?"
* Options:
* "Delete meeting" (danger)
* "Cancel" (secondary)
#### **Meeting series index page**
( workPackageValue:54752:status | workPackageValue:54752:version )
* This is one level lower than the regular meeting index page.
* The breadcrumb will be "{Project name} / Meetings / {Meeting series name}"
* In the Page Header,
* The given Meeting title will be followed by the words "(Meeting series)" (in a lighter shade)
* The caption will note the frequency and the end date like so: "Every Tuesday at 2:03 PM, ends on 31.12.2024"
* Dates and times will be formatted according to existing instance/user preferences
* The More button has these actions:
* "Edit meeting series name": this makes the title editable (without the "(Meeting series)" bit).
* The title set here determines the title of the entire series. It cannot be changed for individual meetings within that series.
* "Copy meeting series URL": copies the fixed meeting series URL to clipboard.
* In the Quick filter sub-header, the "Filter" button is removed
* There are two sections in the index:
* **Template:**
* Columns:
* Template
* Frequency
* Duration
* Location
* Has just one element, titled "Default template"
* Clicking on this title takes the user to the template
* **Meeting list:**
* Columns:
* "Date and time"
* "Starts": shows the number of days to that occurrence in format: "today", "tomorrow" or "in {n} days" for values over 1
* "Last edited"
* "Status": can either be "Agenda created", "Scheduled" or "Deleted"
* By default, in "Upcoming" view, the list contains these elements:
* The next occurrence is automatically "scheduled", with a button on the right corner titled "Create"
* This creates the agenda item based on the template
* Any other manually-created occurrences, in chronological order (earliest first)
* The last line is special:
* On the left side, a "recurring" icon is followed by this text: "There are {n} more scheduled meetings ({frequency})."
* On the right side, there is a "+ Create future meeting" secondary button
* Clicking on "+ Create future meeting" opens a dialog
* (to be described)
#### **Recurring meeting agenda page**
workPackageValue:54752:description
# ##58225
* The breadcrumb will be "{Project name} / Meetings / {Meeting series name} / Date"
* The title will be: "{Date} ({Series name})" (with the series name in parentheses in a lighter shade)
* The title will not be editable
* The description in the PageHeader will be: "This is part of a recurring {Series title} meeting series. Last updated {last-updated-time}".
* The _Meeting details_ pane on the left has one extra line at the top:
* Icon: recurring icon ("iterations")
* Link with title of the Meeting series: clicking on this takes the user to the Meeting series index
#### **Recurring meeting template page**
( workPackageValue:58225:status | workPackageValue:58225:version )
workPackageValue:58225:description
* The breadcrumb will be "{Project name} / Meetings / {Meeting series name} / Template"
* The title will be: "{Series name} (Template)" (with the "Template" in parentheses in a lighter shade)
* The title is editable. This determines the name of the series.
* The description in the PageHeader will be the same as for a regular meeting:"Created by {author}. Last updated {last-updated-time}".
* The _Meeting details_ pane on the left:
* Is titled "Meeting series details" instead of "Meeting details"
* Has an additional line on top with:
* Icon: recurring icon ("iterations")
* Text: the frequency of the meeting (eg. "Every week", "Every month")
* Editing meeting details here
* On top of the meeting agenda, there is a flash that takes the width of the left (content) pane:
* Type: Info (blue)
* Text: "You are currently editing a template for a recurring meeting. Every new occurrence of a meeting in this series will be based on this template. Changes will not affect past or manually-edited meetings."
* Editing the elements of the template (meeting title, meeting details, agenda items, participants or attachments) will change them for all future occurrences of the series
## **Related features and ideas**
# ##58226
( workPackageValue:58226:status | workPackageValue:58226:version )
workPackageValue:58226:description
# ##58227
( workPackageValue:58227:status | workPackageValue:58227:version )
workPackageValue:58227:description
# ##54751
( workPackageValue:54751:status | workPackageValue:54751:version )
workPackageValue:54751:description
# Related features
* ##57854
* ##58152
* ##54751
##
## **Benefits and added value**
How are things going to be better compared to today?
* **Address real world meeting practices:** Recurring meetings exist in every organization, often using the same structure. If OpenProject wants to improve dealing with these kinds of meetings, having a notion of recurring meetings is quintessential.
* **OpenProject as the data master:** With series defined in OpenProject, they can be output as a scheduled ICS file to ensure the calendar entry matches the series. Users can then click on the associated link in the series and be redirected to the correct occurrence.
* **Balancing of meeting capacity:** With the agenda item backlog, a meeting can be filled with items to the available capacity, and items with no time left to discussed can be moved to the backlogs or another iteration easily
## Naming
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Term</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">English (Option B)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">German</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">French</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Spanish</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">An instance of a recurring meeting / meeting series</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Meeting occurrence</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Serientermin</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Une réunion/<br>Un episode de réunion</p></td><td class="op-uc-table--cell"><p class="op-uc-p">?</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Multiple instances of recurring meetings</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Meeting series</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Serientermine</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Une série de réunions </p></td><td class="op-uc-table--cell"><p class="op-uc-p">?</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Meeting type</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Recurring meeting</p></td><td class="op-uc-table--cell"><p class="op-uc-p">?</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Réunions récurrentes</p></td><td class="op-uc-table--cell"><p class="op-uc-p">?</p></td></tr></tbody></table></figure>