Using Replace functionality on Indicator States tab does not complete all changes on first attempt.


 Product(s):APM Implementation and Performance Management
 Version(s):7
 Environment:N/A
 Area:N/A
 Subarea:N/A

Problem Description

User found that when trying to update an attribute on several hundred indicator states concurrently using the replace function, that a large subset of indicator states were not updated success fully. Re-running the replace function again with the same criteria and no additional changes eventually resulted in all of the changes being pushed successfully.

The error logs showed several dozen instances of the same type of error:

"2021-09-15 18:56:58.1857Z Error XYZ123 DOMAIN\user name Ivara.OTAssert [22] File: d:\work\1\s\framework\oqpers\iref.cpp(765) :  Failed Assert:      oIndirectRef::setState(..) - setting pers state to UNLOCKED on an object that is still modified ( Class Indicator Condition of Bearing (pillow block/flange mount) (on asset 4629 - Motor - #2 Process Water Pump & Motor Assembly) CID:1000002777  OID:11769 )
Modified caxes:
CID:1305  OID:1000039761 "IndicatorState"  data: ""

Solution

When indicator states are updated, either manually or when using the Replace function, APM needs to lock the Indicator State and the Indicator to make the changes. In the case of the error message above, APM runs into a locking error when it tries to lock/unlock the indicator before it’s completely checked back in. This problem will not exist for all users, and will likely only happen for those users where the Smart Client Server connection with the Database Server is very low lag. This problem will also only occur for classes where there are multiple dependent class objects trying to access the same parent class object, ie indicator states and indicators, work order tasks and work orders, etc.

See SR 7001302055.

Reported as a bug VSTS708964.

The workaround is to run the replace function with the same criteria several times until all objects have been updated.