IDM Driver - Discarding transaction because of optimization

  • 7023889
  • 21-May-2019
  • 21-May-2019

Environment

Identity Manager 4.x
Identity Manager Driver - Active Directory

Situation

The following message is seen when a transaction is processed in the Active Directory driver.    It never attempts to process the event and discards it completely.

[05/01/19 15:02:55.982]:AD Domain ST:Start transaction.

[05/01/19 15:02:55.983]:AD Domain ST:Discarding transaction because of optimization.

Resolution

This message is seen when the event contains a transaction that has one attribute changing, and that attribute is being set to the same value as the previous value.    The IDM engine assumes the destination application already has the value in place and discards (or optimizes out) the transaction.

-----------------Example-----------------
    <modify-attr attr-name="Login Expiration Time">
        <remove-value>
            <value timestamp="1558455939#2" type="time">1569823200</value>
        </remove-value>
        <add-value>
            <value timestamp="1558456048#8" type="time">1569823200</value>
        </add-value>
    </modify-attr>
-----------------End Example-----------------

There are multiple "solutions" to this issue.
1.  Migrate the object with the issue through the driver.   This should update the connected application value for the attribute to be the correct discrepancy.
2.  You have to modify the process creating the event.   In the originating process create a two policies.  One that has a rule to set a local variable to the current value, and removes all values from the current operation.    The second policy has a rule that sets the destination attribute value to the value in the local variable after the current operation.   So they are now two separate events and will not be optimized out.

To prevent this behavior in the future, you need to determine how the values became out of sync and fix that issue, or this issue may occur again in the future.

Cause

Note:   You can view the event being optimized out by stopping the driver, then duplicating the process creating the event being optimized out, then look at the driver cache to see details of the event in the cache.  (iManager, Identity Manager Task, Driver Cache Inspector Role)