This operation is meant as a complete replacement of UpdateOp and UpdateAttributeValuesOp that were poorly designed in the early framework versions. The old operations have not provided any practical way how to execute complex attribute changes in an efficient or atomic way. The presence of a single operation in UpdateOp could not support any kind of relative changes. The two operations added in UpdateAttributeValuesOp did not really solve the problem either. The fact that there are two operations made it impossible to implement all scenarios due to operation ordering. E.g. invoking remove operation first and add operation second will end up with an error when working with mandatory multi-value attribute. On the other hand invoking add operation first and remove operation second will cause issues with attributes that represent some limited entitlements (e.g. groups that may be assigned only once). Also the fact that the old update operations returns just the Uid make it very hard to implement an efficient and reliable connector. E.g. it is a common case that the name of the object changes when some of the attributes are changed. The old update operations provided no way how to indicate this change even if the connector was aware of the change.
There we need operation UpdateDeltaOp that will receive deltas and return deltas.
Bulk close for 18.104.22.168