Content
Updated by Christophe Bliard about 6 hours ago
**As a** project manager
**I want to** automatically move a set of work packages to the earliest date possible
**So that** I don't have to do this manually.
#### Acceptance criteria
##### General
* There are only two scheduling modes.
* **Manual**: The user can freely set the start and finish dates, but relations are ignored.
* **Automatic:** Automatically sets the start date based on a predecessor. The user can only set duration.
* This mode is also used for parents, where the duration field is also inactive.
* Any time a user wants to manually choose dates for a work package, they select manual scheduling.
* By default, all new work packages will be manually scheduled.
* A new manually-scheduled work package will either have no dates, or take the current date (depending on existing settings).
* Every newly created work package will have no predecessor; they have to be added later.
* If it's a new child work package, it will continue behaving as it does today and by default take the parent's start date.
* For automatic scheduling, a predecessor is required. If there are no predecessors and automatic mode is selected in the date picker:
* the top banner will show an error informing the user that a predecessor is required
* save action and all fields will be disabled (non-working days, dates...)
* If a work package was previously manually scheduled, but is then added as a successor. Or if a predecessor is added to a manually scheduled work package:
* the scheduling mode of the successor will always change to automatic.
**Parent/children relations**
* Parents will continue to behave as it does today, except they will now be in Automatic mode.
* They "cover" the date ranges of the two children and children can have an indirect link to relationships of the parents.
* Their dates will not be editable.
* They can be switched to manual mode.
* Adding a child to a manually-scheduled work package will automatically move the parent to automatic mode.
* If the parent previously had dates, those will be overwritten by those of the children.
* If the child does not yet have dates, neither will the parent. Previous dates (before being a parent) are lost, as is the case today.
* Removing the last child of a parent will switch the now non-parent work package mode to manual, whilst preserving dates before the removal of the last child.
* If neither the child nor the parent had dates, it will simply be switched to manual mode without any dates.
* A dialog will be added in feature #59542 to give more options.
##### Gantt view
* You can freely move manually scheduled work packages.
* It's impossible to move an automatically scheduled successor
* A dialog will be added in feature #59541 to give more options.
* For work packages without any predecessors, it will not be possible to select Automatic mode.
* Clicking on "Automatic" will show a blankslate with no actions possible.
* If the dates of a predecessor are removed or if a predecessor is deleted
* if deleted, and the successor is automatically scheduled and would then lose its dates, then it does lose its dates.
* If it was the last predecessor that was removed, it will switch to manual mode and keep to preserve its dates if any.
dates.
* A dialog will be added in feature #59731 to ask user confirmation.
##### **Migration from an earlier version**
* Dates will **NOT** change automatically. All existing dates are preserved.
* Manually scheduled work packages remain so.
* For work packages with no predecessors (or with no relations at all), they will be switched to manual scheduling.
* These work packages are switched to manual scheduling regardless of having dates or not.
* When relations exist,
* If the relationship is parent-child, there are no changes to dates; the parent remains in automatic mode (as is the case now) and the children follow the rules above.
* If the successor has no dates
* The successor is switched to automatic mode and continues to have no dates, regardless of having predecessor with dates or not.
* The successor will be rescheduled automatically as soon as one of the predecessor has its dates updated.
* If the successor has dates and none of the predecessors have any dates
* The successor is switched to manual mode to preserve its dates and duration
* If the successor has dates and some predecessors have dates too
* The successor is switched to automatic mode
* A lag is set on the closest relation to preserve dates
* The closest relation is the one with the least distance between all predecessors and the successor, and with the oldest predecessor
* The gap is the number of working days between closest predecessor and successor
* predecessor date is due date, or start date if due date is unset
* successor date is start date, or due date if start date is unset
* Other relations are not modified
* TODO: what if the successor was manually scheduled and a lag exist on multiple relations that would push it to the future? Should we adjust lags of multiple relations in this case?
<br>
##### **Date picker**
* The date picker will be Primerised.
* There is a new segmented control with label "Scheduling mode"
* There is a help icon next to the label. On hover, it displays a tooltip with this text: "‘Manual’ lets you pick fixed dates freely but ignores all predecessors. ‘Automatic’ selects the earliest possible start date for this work package, which cannot be modified."
* Options: "Manual" and "Automatic"
* The "Working days only" toggle becomes a checkbox aligned to the far right edge of the same line as the segmented control.
* In **Manual** mode:
* The dates are freely selectable, without restrictions.
* Relations don't affect the start and finish dates.
* A manually scheduled work package can push and pull successors that are automatically scheduled
* A manual work package can start before any of their predecessors
* A manually scheduled work package will not push a predecessor to the past when it's moved to the past
* In **Automatic** mode:
* The _Start date_ and _Finish date_ fields are read-only
* The "Today" links under the date fields are disabled (but not removed so that elements in the date picker don't move when changing modes)
* Duration remains editable (unless it's a parent)
* The mini calendar goes into read-only mode
##### **Date picker banners:**
**Manual scheduling:**
* Colour: Warning orange
* Action: Show relations
* Case 1: Relations exist but no predecessors.
* **Manually scheduled. Dates not affected by relations.**
Click on “Show relations” for Gantt overview
* Case 2: There are predecessors but a gap of over two days with the finish date of the latest predecessor.
* **Manually scheduled. Dates not affected by relations.**
There is a gap between this and all predecessors.
* Case 3: There are predecessors and the current work package overlaps with at least one of them.
* **Manually scheduled. Dates not affected by relations.**
Overlaps with at least one predecessor.
* Case 4: Work package has children.
* **Manually scheduled. Dates not affected by relations.**
This has child work package but their start dates are ignored.
**Automatic:**
* Colour: Info blue
* Action: Show relations
* Case 1: There is a predecessor.
* **The start date is set by a predecessor.**
Click on “Show relations” for Gantt overview.
* Case 4: The work package is a parent.
* **The dates are determined by child work packages.**
Click on “Show relations” for Gantt overview.
* If a work package is both a parent and has predecessors, this "parent" message will be displayed.
#### Visuals
_**Note:** Please check_ [_Figma_](https://www.figma.com/design/HrWVktq0SsGI2dqqIKQ11M/Scheduling---Lag-and-Modes?node-id=175-3641) _for the most recent mockups._
**Manual scheduling (but predecessors overlap):**
<img class="image_resized op-uc-image op-uc-image_inline" style="width:540px;" src="/api/v3/attachments/226779/content">
**As soon as possible (start date set by predecessors):**
<img class="image_resized op-uc-image op-uc-image_inline" style="width:540px;" src="/api/v3/attachments/226780/content">
<br>
**I want to** automatically move a set of work packages to the earliest date possible
**So that** I don't have to do this manually.
#### Acceptance criteria
##### General
* There are only two scheduling modes.
* **Manual**: The user can freely set the start and finish dates, but relations are ignored.
* **Automatic:** Automatically sets the start date based on a predecessor. The user can only set duration.
* This mode is also used for parents, where the duration field is also inactive.
* Any time a user wants to manually choose dates for a work package, they select manual scheduling.
* By default, all new work packages will be manually scheduled.
* A new manually-scheduled work package will either have no dates, or take the current date (depending on existing settings).
* Every newly created work package will have no predecessor; they have to be added later.
* If it's a new child work package, it will continue behaving as it does today and by default take the parent's start date.
* For automatic scheduling, a predecessor is required. If there are no predecessors and automatic mode is selected in the date picker:
* the top banner will show an error informing the user that a predecessor is required
* save action and all fields will be disabled (non-working days, dates...)
* If a work package was previously manually scheduled, but is then added as a successor. Or if a predecessor is added to a manually scheduled work package:
* the scheduling mode of the successor will always change to automatic.
**Parent/children relations**
* Parents will continue to behave as it does today, except they will now be in Automatic mode.
* They "cover" the date ranges of the two children and children can have an indirect link to relationships of the parents.
* Their dates will not be editable.
* They can be switched to manual mode.
* Adding a child to a manually-scheduled work package will automatically move the parent to automatic mode.
* If the parent previously had dates, those will be overwritten by those of the children.
* If the child does not yet have dates, neither will the parent. Previous dates (before being a parent) are lost, as is the case today.
* Removing the last child of a parent will switch the now non-parent work package mode to manual, whilst preserving dates before the removal of the last child.
* If neither the child nor the parent had dates, it will simply be switched to manual mode without any dates.
* A dialog will be added in feature #59542 to give more options.
##### Gantt view
* You can freely move manually scheduled work packages.
* It's impossible to move an automatically scheduled successor
* A dialog will be added in feature #59541 to give more options.
* For work packages without any predecessors, it will not be possible to select Automatic mode.
* Clicking on "Automatic" will show a blankslate with no actions possible.
* If the dates of a predecessor are removed or if a predecessor is deleted
* if
* If it was the last predecessor that was removed, it will switch to manual mode and keep
##### **Migration from an earlier version**
* Dates will **NOT** change automatically. All existing dates are preserved.
* Manually scheduled work packages remain so.
* For work packages with no predecessors (or with no relations at all), they will be switched to manual scheduling.
* These work packages are switched to manual scheduling regardless of having dates or not.
* When relations exist,
* If the relationship is parent-child, there are no changes to dates; the parent remains in automatic mode (as is the case now) and the children follow the rules above.
* If the successor has no dates
* The successor is switched to automatic mode and continues to have no dates, regardless of having predecessor with dates or not.
* The successor will be rescheduled automatically as soon as one of the predecessor has its dates updated.
* If the successor has dates and none of the predecessors have any dates
* The successor is switched to manual mode to preserve its dates and duration
* If the successor has dates and some predecessors have dates too
* The successor is switched to automatic mode
* A lag is set on the closest relation to preserve dates
* The closest relation is the one with the least distance between all predecessors and the successor, and with the oldest predecessor
* The gap is the number of working days between closest predecessor and successor
* predecessor date is due date, or start date if due date is unset
* successor date is start date, or due date if start date is unset
* Other relations are not modified
* TODO: what if the successor was manually scheduled and a lag exist on multiple relations that would push it to the future? Should we adjust lags of multiple relations in this case?
<br>
##### **Date picker**
* The date picker will be Primerised.
* There is a new segmented control with label "Scheduling mode"
* There is a help icon next to the label. On hover, it displays a tooltip with this text: "‘Manual’ lets you pick fixed dates freely but ignores all predecessors. ‘Automatic’ selects the earliest possible start date for this work package, which cannot be modified."
* Options: "Manual" and "Automatic"
* The "Working days only" toggle becomes a checkbox aligned to the far right edge of the same line as the segmented control.
* In **Manual** mode:
* The dates are freely selectable, without restrictions.
* Relations don't affect the start and finish dates.
* A manually scheduled work package can push and pull successors that are automatically scheduled
* A manual work package can start before any of their predecessors
* A manually scheduled work package will not push a predecessor to the past when it's moved to the past
* In **Automatic** mode:
* The _Start date_ and _Finish date_ fields are read-only
* The "Today" links under the date fields are disabled (but not removed so that elements in the date picker don't move when changing modes)
* Duration remains editable (unless it's a parent)
* The mini calendar goes into read-only mode
##### **Date picker banners:**
**Manual scheduling:**
* Colour: Warning orange
* Action: Show relations
* Case 1: Relations exist but no predecessors.
* **Manually scheduled. Dates not affected by relations.**
Click on “Show relations” for Gantt overview
* Case 2: There are predecessors but a gap of over two days with the finish date of the latest predecessor.
* **Manually scheduled. Dates not affected by relations.**
There is a gap between this and all predecessors.
* Case 3: There are predecessors and the current work package overlaps with at least one of them.
* **Manually scheduled. Dates not affected by relations.**
Overlaps with at least one predecessor.
* Case 4: Work package has children.
* **Manually scheduled. Dates not affected by relations.**
This has child work package but their start dates are ignored.
**Automatic:**
* Colour: Info blue
* Action: Show relations
* Case 1: There is a predecessor.
* **The start date is set by a predecessor.**
Click on “Show relations” for Gantt overview.
* Case 4: The work package is a parent.
* **The dates are determined by child work packages.**
Click on “Show relations” for Gantt overview.
* If a work package is both a parent and has predecessors, this "parent" message will be displayed.
#### Visuals
_**Note:** Please check_ [_Figma_](https://www.figma.com/design/HrWVktq0SsGI2dqqIKQ11M/Scheduling---Lag-and-Modes?node-id=175-3641) _for the most recent mockups._
**Manual scheduling (but predecessors overlap):**
<img class="image_resized op-uc-image op-uc-image_inline" style="width:540px;" src="/api/v3/attachments/226779/content">
**As soon as possible (start date set by predecessors):**
<img class="image_resized op-uc-image op-uc-image_inline" style="width:540px;" src="/api/v3/attachments/226780/content">
<br>