The following (if feasible) would allow issue dependencies to be created, ranging from just two issues up to potentially all issues in a given version of a project.
This would allow Gantt charts to be created.
********************************
Add two fields to JIRA issues:
- ScheduleType (single-select list) – required.
- StartDate (time/date) – requiredness depends on the value of ScheduleType as itemised below.
Add one field to JIRA project versions:
- VersionStartDate (time/date) – required.
Make the following existing field required:
- VersionDueDate (time/date) – required.
Enhance the global configuration of Link Types so that one Link Type must be nominated as the 'Master' (this Link Type will be used to control actual dependencies between issues).
********************************
ScheduleType has 7 possible values:
1. 'Issue Start Date'
2. 'Issue Due Date'
3. 'Start After Linked Issues Finish'
4. 'Finish Before Linked Issues Start'
5. 'Version Start Date'
6. 'Version Due Date'
7. 'None'
Depending on which value the user selects, the following will occur:
(1). If ScheduleType = 'Issue Start Date', then:
- OriginalEstimate is required.
- StartDate is required.
- DueDate (non-editable) is automatically set to StartDate plus OriginalEstimate (or, if work has already commenced, to StartDate plus RemainingEstimate).
(2). If ScheduleType = 'Issue Due Date', then:
- OriginalEstimate is required.
- StartDate (non-editable) is automatically set to DueDate minus OriginalEstimate.
- DueDate is required.
(3). If ScheduleType = 'Version Start Date', then:
- OriginalEstimate is required.
- StartDate (non-editable) is automatically set to the VersionStartDate.
- DueDate (non-editable) is automatically set to StartDate plus OriginalEstimate (or, if work has already commenced, to StartDate plus RemainingEstimate).
(4). If ScheduleType = 'Version Finish Date', then:
- OriginalEstimate is required.
- DueDate (non-editable) is automatically set to the VersionDueDate.
- StartDate (non-editable) is automatically set to DueDate minus OriginalEstimate.
(5). If ScheduleType = 'Start After Linked Issues Finish', then:
- OriginalEstimate is required.
- StartDate (non-editable) is automatically set to the latest DueDate of all linked issues where the Link Type matches the specified 'Master' Link Type and the current issue contains the Outgoing Link; or if no such links exist, to the VersionStartDate.
- DueDate (non-editable) is automatically set to StartDate plus OriginalEstimate (or, if work has already commenced, to StartDate plus RemainingEstimate).
(6). If ScheduleType = 'Finish Before Linked Issues Start', then:
- OriginalEstimate is required.
- DueDate (non-editable) is automatically set to the earliest StartDate of all linked issues where the Link Type matches the specified 'Master' Link Type and the current issue contains the Incoming Link; or if no such links exist, to the VersionDueDate.
- StartDate (non-editable) is automatically set to DueDate minus OriginalEstimate.
(7). If ScheduleType = 'None', then:
- StartDate is editable (and optional); but cannot be set to empty if any Outgoing links of the 'Master' Link Type exist.
- DueDate is editable (and optional); but cannot be set to empty if any Incoming links of the 'Master' Link Type exist.
********************************
NOTES:
. The system 'Time Tracking' values (i.e. 'Hours per day' and 'Days per week') would need to be taken into account in the above calculations.
(ii). Whenever there is a change to an issue's StartDate, DueDate, OriginalEstimate or RemainingEstimate, any linked issues (where the 'Master' Link Type is used) would need to be updated as per (5) and (6) above.
(iii). Whenever a link between two issues is created, using the 'Master' Link Type, it would need to be validated to ensure that no circular dependencies are created; and any dependent issues would need to be updated as per (5) and (6) above.
(iv). Whenever a link between two issues, of the 'Master' Link Type, is deleted, any linked issues would need to be updated as per (5) and (6) above.
(v). Whenever there is a change to a version's VersionStartDate or VersionDueDate, any dependent issues would need to be updated as per (3), (4), (5) and (6) above.
(vi). StartDate should not be used to constrain the 'Start Date' that appears on the 'Log Work' popup – this would just get too messy.