[midPoint] Strange behavior during reconciliation
Radovan Semancik
radovan.semancik at evolveum.com
Mon Feb 22 10:17:43 CET 2016
Hi Ilya,
Yes, this is done by purpose. I have realized that this might not be
entirely clear, so I have just added this info to the documentation:
"Please note that the only mappings that will reliably overwrite a value
during reconciliation are strong mappings. Weak and normal mappings will
not overwrite or delete a value. This may be a slightly surprising
behavior of normal mappings, but this is done by purpose. Normal
mappings are based on processing relative changes. But during
reconciliation there is no change in the source data. Therefore there is
also no reason to apply normal mappings.
Normal-strength mappings are the default setting in midPoint. As usual,
midPoint has conservative default settings that try to avoid destroying
the values on target systems. This is a good setting when midPoint is
deployed, new systems are connected or when midPoint operates in
semi-authoritative mode. But once the midPoint is fully authoritative
and the policies are properly defined and tested the mappings are
usually switched to strong setting."
(https://wiki.evolveum.com/display/midPoint/Mapping)
--
Radovan Semancik
Software Architect
evolveum.com
On 02/19/2016 03:22 PM, Дорофеев Илья wrote:
>
> Hi guys,
>
> I’m currently exploring how the reconciliation works. The one
> interesting thing I’ve ran into is the code below found in
> ReconciliationProcessor.reconcileProjectionAssociations method (lines
> 490-497):
>
> if (shouldBeMapping.getStrength() != MappingStrengthType.STRONG &&
> (!areCValues.isEmpty() || hasStrongShouldBeCValue)) {
>
> // weak or normal value and the attribute already has a
>
> // value. Skip it.
>
> // we cannot override it as it might have been legally
>
> // changed directly on the projection resource object
>
> continue;
>
> }
>
> This code postulates that I cannot provision values (which are
> associations here in fact) produced by mappings of normal strength
> (which is default) if a resource object already has a non-empty list
> of associations. It means that if some midpoint policy of normal
> strength requires an account to have the associations with the
> entitlements A, B and C, and this account is actually associated only
> with A (say, B and C are removed from the account directly on the
> resource), then the reconciliation won’t restore missing associations
> with B and C. Is this the intentional behavior or is it a bug? In my
> view, this code only makes sense for single-valued attributes when we
> don’t want to override the values set outside the IdM. In case of
> multi-valued attribute, no overriding is actually happens because we
> only add values but do not replace them.
>
> __________________________
>
> Ilya Dorofeev
>
>
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20160222/4076fceb/attachment.htm>
More information about the midPoint
mailing list