Most implementation projects follow a similar structure, even though the actual deadlines vary by customer, scope, or rollout plan. With Easy Templates for Jira, you can create one reusable project template and calculate task dates automatically from a parent issue date or a single template variable. Easy Templates Expressions can reference template variables, current fields, parent fields, and root issue fields, and support date functions like plusDays(), minusDays(), and plusWorkingDays().
This is useful for planning kickoff, setup, configuration, testing, training, sign-off, and launch readiness — without manually updating every issue for each new project. Dynamic values are calculated during issue creation, so each implementation starts with a ready-to-use timeline.
Example project template structure
Example parent issue:
Project delivery
Example child issues or subtasks:
-
Project kickoff
-
Requirements review
-
Environment setup
-
Configuration and setup
-
Data migration
-
Internal testing
-
Client review
-
User training
-
Go-live preparation
-
Go live
-
Post-launch support review
How to set it up
1. Create your implementation template
Create a template with the issue structure you want to reuse for each project.
For example, add one parent issue and a set of child issues or subtasks for the main delivery phases.
2. Add a Go-Live Date variable
Create a template variable called:
Go-Live Date
This variable will be filled in when the template is applied and used to calculate dates across the project plan. Easy Templates supports variable references using variables() or the shorter var() form.
Use this syntax to reference it in expressions:
var("Go-Live Date")
3. Switch date fields to Expression mode
For each task where the date should be calculated automatically:
-
Open the field
...menu -
Choose Use expression
-
Enter your expression
-
Save the template
When expression mode is enabled, the field becomes a Dynamic Field and its value is calculated automatically during issue creation.
Example expressions for project tasks
Project kickoff
20 days before go-live:
var("Go-Live Date").minusDays(20)
Requirements review
15 days before go-live:
var("Go-Live Date").minusDays(15)
Environment setup
12 working days before go-live:
var("Go-Live Date").minusWorkingDays(12)
Configuration and setup
10 working days before go-live:
var("Go-Live Date").minusWorkingDays(10)
Data migration
7 working days before go-live:
var("Go-Live Date").minusWorkingDays(7)
Internal testing
5 working days before go-live:
var("Go-Live Date").minusWorkingDays(5)
Client review
3 working days before go-live:
var("Go-Live Date").minusWorkingDays(3)
User training
2 days before go-live:
var("Go-Live Date").minusDays(2)
Go-live preparation
1 day before go-live:
var("Go-Live Date").minusDays(1)
Go live
On the go-live date:
var("Go-Live Date")
Post-launch support review
5 working days after go-live:
var("Go-Live Date").plusWorkingDays(5)
Expression syntax used in this example
Reference the variable
var("Go-Live Date")
Add time
var("Go-Live Date").plusDays(3)
var("Go-Live Date").plusWeeks(1)
var("Go-Live Date").plusWorkingDays(5)
Subtract time
var("Go-Live Date").minusDays(2)
var("Go-Live Date").minusWorkingDays(10)
Supported date functions include plusYears(), minusYears(), plusMonths(), minusMonths(), plusWeeks(), minusWeeks(), plusDays(), minusDays(), plusWorkingDays(), and minusWorkingDays().
Optional: calculate child tasks from the parent issue
Instead of using the variable in every child issue, you can set a date on the parent issue and calculate child task dates from that field.
Example:
parent.fields("Due Date").minusDays(5)
You can also use the short form:
parent.duedate
Easy Templates supports parent references in both forms, which is useful when all child tasks should depend on the main project timeline. Root issue references are also supported for deeper structures.
Result
With one Go-Live Date variable, you can generate a complete implementation plan with dates calculated automatically. This makes project delivery faster to launch, easier to maintain, and more consistent across repeated implementations.