You can use custom JavaScript code in import options "Additional options" tab to modify received the flex.bi account to modify Jira issues field values during import. The JavaScript code will modify the issue JSON object before importing issues into into flex.bi account.
Custom Javascript code can not be used to create new custom fields for flex.bi
...
. It updates existing fields only.
On this page:
Table of Contents |
---|
How to add and validate custom JavaScript code
Custom JavaScript code should be added to each account where you would like to make data modifications. Open Jira import options of the account, in tab Additional options click Add custom JavaScript code
...
to show the code editor.
Then add some Javascript code in the code editor [1]. You can test the code for one sample issue key in the validation area [2] and see results in the results pane [3] [4].
JavaScript code should be ES5 compliant, ES6 syntax is not supported.
You can use issue
variable variable to access received Jira REST API issue JSON object properties and modify or add additional properties. flex.bi will use only custom fields imported into the account. You can see the full Jira issue REST API in the browser. Please open JIRA_BASE_URL/rest/api/latest/issue/PPP-NNN?expand=changelog
in your browser (where PPP-NNN is issue key) to see sample issue JSON.Then switch to flex.bi
Save import options after the testing is done and JavaScript works as expected. flex.bi will detect changes in import options and use the "Additional tab" to add custom Javascript code in the code editor [1]. You can test the code for one sample issue key in the validation area [2] and see results in the results pane [3] [4]apply the JavaScritp code for any imported issue.
Import Summary as an empty string
Here is an example of JavaScript code
...
that will
...
replace the issue summary
...
property with an empty string for issues with issue type bug
if (issue.fields.issuetype &&
issue.fields.issuetype.name == "Bug") {
issue.fields.summary = null"";
}
Delete custom field values for bug issues
If you would like to
...
delete some
...
field values and do not import them
...
Custom Javascript code can not be used to create new custom fields for flex.bi.
Please contact flex.bi support if in flex.bi then use undefined
.
if (issue.fields.issuetype &&
issue.fields.issuetype.name == "Bug") {
issue.fields.customfield_NNNNN = undefined;
}
Use custom field ID instead of NNNNN in the example above.
Calculate resolution date
flex.bi creates a default set of measures based on the issue resolution date, for example, Issues resolved, Story Points resolved, etc. If the resolution date is missing in issues in Jira but you would like to have it in flex.bi you can use custom JavaScript code to calculate one. The example below will calculate the missing resolution date for completed issues based on status.
// Resolution date
var resolvedStatuses = ["Done","Resolved","Closed","Complete","Fixed"]; // list all statuses representing resolved or closed issue
if (!issue.fields.resolutiondate && resolvedStatuses.indexOf(issue.fields.status.name) > -1) { // validations when there is no resolution date for issues in resolved status
var resolutionDate = null;
var stillOpen = true
issue.changelog.histories.forEach(function(history){
history.items.forEach(function(historyItem){
if (historyItem.field == "status") {
statusFrom = historyItem.fromString;
statusTo = historyItem.toString
if (stillOpen && resolvedStatuses.indexOf(statusTo) > -1 && resolvedStatuses.indexOf(statusFrom) == -1) {
stillOpen = false;
resolutionDate = history.created;
}
else if (!stillOpen && resolvedStatuses.indexOf(statusFrom) > -1 && resolvedStatuses.indexOf(statusTo) == -1) {
stillOpen = true // reopened
resolutionDate = null
}
}
});
});
// completed status at the issue creation
if (resolutionDate === null && resolvedStatuses.indexOf(issue.fields.status.name) > -1 ) {
resolutionDate = issue.fields.created;
}
if (resolutionDate) {
issue.fields.resolutiondate = resolutionDate;
}
}
// resolution date ends
Eliminate all user dimensions for GDPR compliance
You may disable data analytics from the user perspective who created or worked on the issues by eliminating data in dimensions Assignee, Reporter, Transition Author and Logged by. These dimensions will remain in the flex.bi cube but all metrics will show up for the (unassigned) or (none) user.
issue.fields.assignee=null; //eliminate assignee
issue.fields.reporter=null; //elimenate reporter
for (i=0; i<issue.changelog.histories.length;i++) {
hist = issue.changelog.histories[i];
hist.author=null; //eliminate transition author
for (j=0;j<hist.items.length;j++) {
if (hist.items[j].field=="assignee") { //eliminate assignee history
hist.items[j].from=null;
hist.items[j].to=null;
}
};
};
//eliminate logged by
if (issue.fields.worklog) {
issue.fields.worklog.worklogs.forEach(function(worklogitem){
if (worklogitem.author) {
worklogitem.author=null;
}
})
}
Please contact flex.bi support if you need help to write a custom JavaScript code for your specific needs.