[midPoint] Double processing filtered records during reconciliation.

Oleksandr Nekriach o.nekriach at dynatech.lv
Mon Oct 30 17:04:29 CET 2017


Hello all,
I have question about performance of reconciliation.
I have simple CSV connector for HR data reconciliation. CSV file contains
*13224* records . But some of these records does not suite me so I have
added conditions to  objectSynchronization section to filter out bad
records on my opinion.
But to my disappointment I have found that  filtered out records were
processed twice during reconciliation.
The first one as
ACCOUNT - HR - AccountObjectClass (where HR is Intent)
the second one as
ACCOUNT - null - AccountObjectClass

Processed 13224 account(s)
User     Add     Reconciliation     542
No sync policy     12681
Total objects processed   *  25,904*

Removing "HR" Intent in cofiguration does not help avoid double processing
filtered out records.
Please help to understand what is wrong in my synchronization settings.

Best regards, Oleksandr


My synchronization configuration settings
 <synchronization>
      <objectSynchronization>
         <name>HR sync</name>
         <objectClass>AccountObjectClass</objectClass>
         <kind>account</kind>
         <focusType>c:UserType</focusType>
         <enabled>true</enabled>
         <condition>
            <script xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xsi:type="c:ScriptExpressionEvaluatorType">
               <code>
String inputFullname = basic.getAttributeValue(shadow, 'fullname');
String inputPID = basic.getAttributeValue(shadow, 'PID');
String inputlogin = basic.getAttributeValue(shadow, 'login');
String allowedSymbols =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890.';
boolean checkResult = true;
        if (inputFullname == null || inputFullname.isEmpty()) {
            return false;
        }
        if (inputPID == null || inputPID.isEmpty()) {
            return false;
        }
        if (inputlogin == null || inputlogin.isEmpty()) {
            return false;
        }
        char[] chars = inputlogin.toCharArray();
        if (chars.length > 1) {
            for (char c : chars) {
                if (!allowedSymbols.contains(Character.toString(c))) {
                    checkResult = false;
                    break;
                }
            }
        } else {
            return false;
        }
        return checkResult;
</code>
            </script>
         </condition>
         <correlation>
            <q:description>HR recon</q:description>
            <q:equal>
               <q:path>c:employeeNumber</q:path>
               <expression xmlns="">
                  <variable>
                     <name>pid</name>
                     <path xmlns="
http://midpoint.evolveum.com/xml/ns/public/common/common-3
">$shadow/attributes/ri:PID</path>
                  </variable>
                  <script>
                     <code>
      'HRM'+pid
    </code>
                  </script>
               </expression>
            </q:equal>
         </correlation>
         <objectTemplateRef oid="00000005-0000-0000-0000-777111111111"
type="c:ObjectTemplateType">
            <targetName>User Template - for Agents</targetName>
         </objectTemplateRef>
         <reconcile>false</reconcile>
         <reaction>
            <situation>linked</situation>
            <synchronize>true</synchronize>
            <reconcile>false</reconcile>
         </reaction>
         <reaction>
            <situation>unlinked</situation>
            <synchronize>true</synchronize>
            <action>
               <handlerUri>
http://midpoint.evolveum.com/xml/ns/public/model/action-3#link</handlerUri>
            </action>
         </reaction>
         <reaction>
            <situation>unmatched</situation>
            <synchronize>true</synchronize>
            <reconcile>false</reconcile>
            <action>
               <handlerUri>
http://midpoint.evolveum.com/xml/ns/public/model/action-3#addFocus
</handlerUri>
            </action>
         </reaction>
      </objectSynchronization>
   </synchronization>


-- 
Best regards,

Oleksandr Nekriach | Identity and access management engineer

Dynatech, Mednieku str. 4a, Riga, LV-1010, Latvia

+37125314685 <+371%2025%20314%20685>
,
o.nekriach at dynatech.lv
|
www.dynatech.lv




Stay connected:
<https://www.facebook.com/DynatechLatvia/?ref=br_rs>
<https://www.linkedin.com/company-beta/17893047/>


Confidentiality Notice: This message contains confidential information and
is intended only for the named recipient(s). If you are not the addressee
you may not copy, distribute or perform any other activities with this
information. If you have received this transmission in error, please notify
us by e-mail immediately. E-mail transmission cannot be guaranteed to be
secure or error-free as information could be intercepted, corrupted, lost,
destroyed, arrive late or incomplete, or contain viruses.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20171030/5e750c59/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: o.nekriach at dynatech.lv1502777022855-7771
Type: image/png
Size: 790 bytes
Desc: not available
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20171030/5e750c59/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: o.nekriach at dynatech.lv1502777022855-7770
Type: image/png
Size: 2602 bytes
Desc: not available
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20171030/5e750c59/attachment-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: o.nekriach at dynatech.lv1502777022855-7772
Type: image/png
Size: 786 bytes
Desc: not available
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20171030/5e750c59/attachment-0002.png>


More information about the midPoint mailing list