Advanced Roadmaps sub story estimate reverts back after refresh
Problem
Changing Estimates in the backlog appear to work but after refreshing the page, the estimate of some sub stories revert back to a previous value.
Diagnosis
Diagnostic Steps
- Changing the estimates of other sub tasks or stories work normally but certain estimates revert back after refreshing the page.
The following search in the database (replacing <Title of the EPIC> with the parent EPIC's name) returns estimate values:
select * from "AO_A415DF_AOESTIMATE" where "AOWORK_ITEM_ID" in (select "ID_OTHER" from "AO_A415DF_AOWORK_ITEM" where "TITLE" like '<Title of the EPIC>');
Without DB access: A search on the XML export of the plan for the Title of the parent Epic name returns the following header tag: (note the hasoriginalestimates="true" )
<workItem aoplan="1" hasoriginalestimates="true" id="45" status="0" type="0" version="2">
Cause
The plan is corrupt. Epics with children should not have estimates but instead should sum up their children's estimates instead. This may have happened because the Epic initially had an estimate but a child story was created or moved into it and the operation did not fully complete.
Workarounds
Option A) Correct the values on an XML export and import back:
- Export the Plan with option "Include issue and version links"
- Open the XML in a text editor
- Search for the Epic Name and you'll find on the previous line: <workItem aoplan="x" hasoriginalestimates="true" id="45" status="0" type="0" version="2">
- Search the export XML for: <estimate aoworkitem="45" but using the ID of step 3
Remove the 4 lines that make the estimate, for example:
<estimate aoworkitem="45" id="{this value doesn't matter}" original="false" replanning="false"> <targettype><![CDATA[total]]></targettype> <value>{here you'll see the value that comes up instead after refreshing}</value> </estimate>
Option B) Fix the values in the database:
Perform a backup of the database and run the following queries replacing <Title of the EPIC> with the title of the parent EPIC and <PLAN ID> with the ID of the plan found in the URL when browsing the Backlog.
update "AO_A415DF_AOWORK_ITEM" set "HAS_ORIGINAL_ESTIMATES" = 'f' where "TITLE" like '<Title of the EPIC>' and "AOPLAN_ID" = <PLAN ID>; delete from "AO_A415DF_AOESTIMATE" where "AOWORK_ITEM_ID" in (select "ID_OTHER" from "AO_A415DF_AOWORK_ITEM" where "TITLE" like '<Title of the EPIC>' and "AOPLAN_ID" = <PLAN ID>);