Affects Version/s: 3.5 (Einstein)
Fix Version/s: 4.1
We have a resource with attribute name.givenName. There's a weak inbound (into extension/slackFirstName) and strong outbound (from extension/slackFirstName resp. givenName if extension/slackFirstName does not exist).
- User has no account in midPoint but on the resource there's already "his" account (with filled-in name.givenName)
- We start reconcile on the user.
- Projector computes a new account, with name.givenName having default value (derived from givenName)
- When creating this new account, AlreadyExistsException occurs, and discovery is started.
- Discovery correctly applies inbounds (sets extension/slackFirstName) and finishes its work.
#) (Now to problem occurs) Projector continues in original operation. Although it reads current state of the user and his account, computations are not consistent.
In particular, when it tries to computenew value for attribute/name.givenName (using strong outbound) it knows nothing about the current value of extension/slackFirstName:
Note the Source: slackFirstName: old=null, delta=null, new=null line.
(Obviously it took old value and delta - there's no information about what was done during discovery.)
Conclusion: Perhaps we need a more sophisticated algorithm for IDI computation. Or to better integrate results from the discovery into main clockwork run.