When an infotype32 field syncs from Identity Manager to SAP HR, a third field that should not be changed gets cleared.
Prerequisites
The attribute OLDPERSONNELNUMBER should be synced in Identity Manager for User Objects.
Added support for attribute OLDPERSONNELNUMBER in SAP HR Shim versions 4.0.5.0000 and 4.1.1.0000.
The value of the third field (OLDPERSONNELNUMBER) is regarded as empty since it is not a field of BAPI_INTCONTROL_CHANGE. For the appshim to handle the incoming value to be added to the BAPI_INTCONTROL_CHANGE request, add the OLDPERSONNELNUMBER attribute value to that event using a policy when modifying the User.
Sample Policy:
<policy> <rule> <description>Add the OLDPERSONNELNUMBER attribute value to the modify event</description> <comment xml:space="preserve">In order for the appshim to handle the incoming value to be added to the BAPI_INTCONTROL_CHANGE request, add the OLDPERSONNELNUMBER attribute value to that event using a policy when doing a modify on User.</comment> <conditions> <and> <if-operation mode="nocase" op="equal">modify</if-operation> <if-op-attr name="OLDPERSONNELNUMBER" op="not-available"/> #Here we have considered attribute name as "OLDPERSONNELNUMBER". Same has been used in code. </and> </conditions> <actions> <do-set-local-variable name="OLDPERSONNELNUMBER" scope="policy"> <arg-string> <token-query class-name="User" datastore="src"> # Query IDM for "OLDPERSONNELNUMBER" value. <arg-association> <token-association/> </arg-association> <arg-string> <token-text xml:space="preserve">OLDPERSONNELNUMBER</token-text> </arg-string> </token-query> </arg-string> </do-set-local-variable> <do-add-dest-attr-value name="OLDPERSONNELNUMBER"> # Add "OLDPERSONNELNUMBER" attribute in current modify event. <arg-value type="string"> <token-local-variable name="OLDPERSONNELNUMBER"/> </arg-value> </do-add-dest-attr-value> </actions> </rule> </policy>