Content
View differences
Updated by Klaus Zanders 9 days ago
**As** a resource manager
**I want to** track for each user in the system on what weekdays they work, how many hours per day they work, when they are not available
**so that** I can properly plan my resources.
**Acceptance criteria**
* Add new feature flag "User Working Times" Availability"
* Add new global settings page for User availability
* Allow global enable/disable
* For every user in the system it is possible to track
* Working days
* How many hours per day they work.
We chose this over a weekly work time so we can properly overlay this with work packages
* An _availability factor_. We acknowledge that users will not always work 100% on project work. Daily business and other stuff happens. So we can specify this factor (i.e. user works 40hrs per week, availability factor of 80% --> 32hrs of resource availability)
* Vacation times and other unavailable days should be trackable. For privacy reasons, no more details than just unavailable days should be tracked (i.e. no differentiation between holidays and sick days)
* Calendar view similar to the global non-working days
* Global non-working days are shown in the personal availability calendar
* Global non-working days are considered when you calculate availability - This will fail rather quickly as soon as you have multi-country users
* There should be a setting, if those hours can be edited by users themselves, only with a certain role, or not at all
* The availability per user should be changeable by the API
* Availability times have a start date (and an implicit end date) to prepare for changes
* Modification should be handled by a new tab in the user edit page.
**Technical notes**
* Availability times should be logged like hourly rates. With a starting date. That will work properly with users switching from full to part time, etc
* Old availability records cannot be edited but new ones can be added.
**Permissions and visibility considerations**
* Users can always view their own times
* New global permissions
* "Manage own availability" - this is added to the Standard global role
* TBD "View availability of other users" ?
* We might need to have this restricted to departments, groups, etc.
* "Manage availability of other users"
**Translation considerations**
<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">EN</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">DE</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">FR</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">ES</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Availability</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Verfügbarkeit?</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr></tbody></table></figure>
**Out of scope**
* We do not want to become an HR system. So things like vacation requests, etc will not be implemented
* The UI to manage the data is a help for smaller customers. We expect the data to mostly be injected into our system by an external service (HR system, etc) via the API
**I want to** track for each user in the system on what weekdays they work, how many hours per day they work, when they are not available
**so that** I can properly plan my resources.
**Acceptance criteria**
* Add new feature flag "User Working Times"
* Add new global settings page for User availability
* Allow global enable/disable
* For every user in the system it is possible to track
* Working days
* How many hours per day they work.
We chose this over a weekly work time so we can properly overlay this with work packages
* An _availability factor_. We acknowledge that users will not always work 100% on project work. Daily business and other stuff happens. So we can specify this factor (i.e. user works 40hrs per week, availability factor of 80% --> 32hrs of resource availability)
* Vacation times and other unavailable days should be trackable. For privacy reasons, no more details than just unavailable days should be tracked (i.e. no differentiation between holidays and sick days)
* Calendar view similar to the global non-working days
* Global non-working days are shown in the personal availability calendar
* Global non-working days are considered when you calculate availability - This will fail rather quickly as soon as you have multi-country users
* There should be a setting, if those hours can be edited by users themselves, only with a certain role, or not at all
* The availability per user should be changeable by the API
* Availability times have a start date (and an implicit end date) to prepare for changes
* Modification should be handled by a new tab in the user edit page.
**Technical notes**
* Availability times should be logged like hourly rates. With a starting date. That will work properly with users switching from full to part time, etc
* Old availability records cannot be edited but new ones can be added.
**Permissions and visibility considerations**
* Users can always view their own times
* New global permissions
* "Manage own availability" - this is added to the Standard global role
* TBD "View availability of other users" ?
* We might need to have this restricted to departments, groups, etc.
* "Manage availability of other users"
**Translation considerations**
<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">EN</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">DE</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">FR</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">ES</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Availability</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Verfügbarkeit?</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td></tr></tbody></table></figure>
**Out of scope**
* We do not want to become an HR system. So things like vacation requests, etc will not be implemented
* The UI to manage the data is a help for smaller customers. We expect the data to mostly be injected into our system by an external service (HR system, etc) via the API