Original Estimated Hours Empty for Closed Sprints

I’m trying to report on sprint accuracy and use measures like Original estimated hours in eazyBI, but I’m running into an issue:

  • For closed sprints, the Original estimated hours measure comes up empty.

  • For active sprints, values appear normally.

  • Our Jira issues had estimates during the sprint, and I can see them in Jira; however, they don’t appear in eazyBI after the sprint closes.

What I’ve checked so far:

  • In Source Data → Edit, I don’t see “Original Estimate” as a selectable software field in General > Software Custom fields.

  • In Custom fields, we do have an “Estimate” field and others, but none labelled “Original Estimate”.

  • I already have Import as measure enabled for “Estimate” but I’m not sure if this is the same as timeoriginalestimate.

  • I can’t find an “Import issue change history” option for this field — only “Import value changes” in the Custom Fields section.

  • Data import works fine otherwise; sprint measures like Sprint issues committed and Sprint issues completed show correctly.

My question:

  • How can I ensure eazyBI captures the original estimate for each issue as it was at the sprint start (and keeps it for closed sprints)?

  • Do I need to map our “Estimate” field to the built-in timeoriginalestimate or enable a specific history import setting?

  • Is it possible to enable this without breaking existing reports and configuration?

Any guidance on confirming the correct field and re-importing the historical estimates would be greatly appreciated.

Hi @Gabriel_Reis

The measure “Original estimated hours” is the total of original estimated hours. Used with the Time dimension, grouped by issue creation dates.

Please check this page on time tracking measures:

This field is not imported with history in eazyBI and would always return the current value from the original estimate field.

The original estimated hours field is usually meant to be used just once and shouldn’t be adjusted according to Jira best practices. There is another field, “remaining estimate,” that is imported with history in eazyBI and should represent the estimate during different periods.

Used with Sprint dimension, “original estimated hours” would always return the current value for the issue and for the current sprint (or sprint where the issue was resolved)

It is a default field in eazyBI and Jira, and it is not listed in the eazyBI import options page, because it is imported by default.

I hear from your case that you are aiming for historical values for this field.

Only then could you calculate the value retrospectively in the sprint (for example, the end date or start date).

If you use eazyBI for Jira Data center, you could explore scripted fields, where we have an example on how to import “original estimated hours history” in eazyBI from a scripted Jira field:

If you use eazyBI for Jira Cloud, you can use get this information from issue change history already in eazyBI and you don’t need a scripted Jira field anymore to capture estimated hour changes.

This is the code to define new global calculated field in eazyBi advanced settings and import the last original estimated hours for each day when it was changed.

[jira.customfield_oehhu]
name = "Original estimated unique hours"
data_type = "decimal"
measure = true
multiple_dimensions = ["Time"]
split_by = ","
javascript_code = '''
var originalArray = [];
if (issue.fields.customfield_NNNNN) {
  objects = issue.fields.customfield_NNNNN.split("\n");
  for (var i=0, len = objects.length; i<len; i++) {
    var record = objects[i].split(",");
    originalArray.push({time:record[0],value:record[1]});
  }
  function removeDuplicates(originalArray, prop) {
    var newArray = [];
    var lookupObject  = {};
    for(var i in originalArray) {
      lookupObject[originalArray[i][prop]] = originalArray[i];
    }
    for(i in lookupObject) {
      newArray.push(lookupObject[i]);
    }    
    return newArray;
  }
  var uniqueArray = removeDuplicates(originalArray, "time");
  var result = uniqueArray.map(function(a) {return a.time + ', ' + a.value;});
  issue.fields.customfield_oehhu = result.join("\n");
}
'''

Then you can create a calcualted measure to return the last value at any day and calculate this value at the day when sprint started or ended.

Martins /eazyBI