<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Hi Ilya,<br>
      <br>
      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:<br>
      <br>
      "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.<br>
      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."<br>
      <br>
      (<a class="moz-txt-link-freetext" href="https://wiki.evolveum.com/display/midPoint/Mapping">https://wiki.evolveum.com/display/midPoint/Mapping</a>)<br>
      <br>
      <pre class="moz-signature" cols="72">-- 
Radovan Semancik
Software Architect
evolveum.com
</pre>
      <br>
      <br>
      On 02/19/2016 03:22 PM, Дорофеев Илья wrote:<br>
    </div>
    <blockquote
      cite="mid:F82253638486D44DABA51EC404D48AF31C0C6994@EX-MB2.solar.local"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span lang="EN-US">Hi guys,<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">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):<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">if
            (shouldBeMapping.getStrength() != MappingStrengthType.STRONG
            && (!areCValues.isEmpty() ||
            hasStrongShouldBeCValue)) {<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">   // weak or normal
            value and the attribute already has a<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">   // value. Skip it.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">   // we cannot override
            it as it might have been legally<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">   // changed directly
            on the projection resource object<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">   continue;<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">}<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">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.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Segoe
            UI",sans-serif;mso-fareast-language:RU">__________________________<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Segoe
            UI",sans-serif;mso-fareast-language:RU"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:"Segoe
            UI",sans-serif;mso-fareast-language:RU" lang="EN-US">Ilya
            Dorofeev<o:p></o:p></span></p>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
midPoint mailing list
<a class="moz-txt-link-abbreviated" href="mailto:midPoint@lists.evolveum.com">midPoint@lists.evolveum.com</a>
<a class="moz-txt-link-freetext" href="http://lists.evolveum.com/mailman/listinfo/midpoint">http://lists.evolveum.com/mailman/listinfo/midpoint</a>
</pre>
    </blockquote>
    <br>
    <br>
  </body>
</html>