<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.xmsonormal, li.xmsonormal, div.xmsonormal
        {mso-style-name:x_msonormal;
        margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#4472C4;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
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]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#4472C4">Solved:<br>
<br>
<br>
<synchronization><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">        <objectSynchronizationSorter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="c:ObjectSynchronizationSorterType"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">            <expression><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                <trace>false</trace><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                <script xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="c:ScriptExpressionEvaluatorType"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                    <code><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        import com.evolveum.midpoint.prism.impl.query.ObjectQueryImpl<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        import com.evolveum.midpoint.prism.query.ObjectQuery<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        import com.evolveum.midpoint.xml.ns._public.common.common_3.*;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        import javax.xml.namespace.QName;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        import com.evolveum.midpoint.prism.query.builder.*;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        import com.evolveum.midpoint.prism.path.ItemPath;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        import com.evolveum.midpoint.schema.constants.SchemaConstants;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        import com.evolveum.midpoint.util.exception.ConfigurationException;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        import com.evolveum.midpoint.schema.util.ShadowUtil;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        //log.info("----------------------------- Entering in the  SynchronizationSorter ----------------")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        discriminator = new ObjectSynchronizationDiscriminatorType()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        discriminator.setKind(ShadowKindType.ACCOUNT)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        discriminator.setIntent("default")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        owner = midpoint.searchShadowOwner(shadow.getOid());<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        log.info("Owner: {}", owner)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                       if (owner == null) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            aliases = basic.getAttributeValues(shadow, 'Aliases');<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            log.info("Aliases: {}", aliases)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            boolean userFound = false<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            usersList = new ArrayList();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            for (alias in aliases) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                filter = prismContext.queryFor(ObjectType.class).type(UserType.class)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                        .item(UserType.F_EMAIL_ADDRESS).eq(alias).matchingCaseIgnore()<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                        .buildFilter();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                query = ObjectQueryImpl.createObjectQuery(filter)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                queryResult = midpoint.searchObjects(UserType.class, query)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                if (queryResult != null) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                    if (queryResult.size() > 0) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                        userFound = true<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                        for (user in queryResult) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                            usersList.add(user)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                        }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                    }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            if (userFound == false) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                discriminator.setSynchronizationSituation(SynchronizationSituationType.UNMATCHED)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            } else {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                set = new HashSet(usersList);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                usersList.clear();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                usersList.addAll(set);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                log.info("Users: {}", usersList)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                if (usersList.size() > 1) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                    discriminator.setSynchronizationSituation(SynchronizationSituationType.DISPUTED)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                } else {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                    log.info("New Owner: {}", usersList.get(0))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                    discriminator.setOwner(usersList.get(0))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                    discriminator.setSynchronizationSituation(SynchronizationSituationType.LINKED)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                                }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        }else{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            ownerType = owner.asObjectable();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            discriminator.setOwner(ownerType)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                            discriminator.setSynchronizationSituation(SynchronizationSituationType.LINKED)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        discriminator.setKind(ShadowKindType.ACCOUNT)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        discriminator.setIntent("default")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        //log.info("----------------------------- Leaving the SynchronizationSorter ----------------")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                        return discriminator<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                    </code><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">                </script><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">            </expression><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">        </objectSynchronizationSorter><br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:#4472C4">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4">Santiago Sañudo Martínez<o:p></o:p></span></b></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4">Cloud Security Operations
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4">Plaza de Manuel Llano, Santander, Spain, 39011<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4"><img width="144" height="31" style="width:1.5in;height:.3229in" id="Picture_x0020_2" src="cid:image001.jpg@01D8112C.D1EC57F0"></span><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4"><a href="http://bit.ly/IngramTwitter"><span style="color:#4472C4">Twitter</span></a> | <a href="http://bit.ly/IngramLinkedIN"><span style="color:#4472C4">LinkedIn</span></a> | <a href="http://bit.ly/IngramFacebook"><span style="color:#4472C4">Facebook</span></a> | <a href="http://bit.ly/IngramYouTube"><span style="color:#4472C4">YouTube</span></a>  <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4">This email may contain material that is confidential, and proprietary to Ingram Micro and subsidiaries, for the sole use of the intended recipient. Any review,
 reliance or distribution by others or forwarding without express permission is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#4472C4"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Fabian Noll-Dukiewicz <fabian.noll-dukiewicz@fndit.de>
<br>
<b>Sent:</b> Monday, January 24, 2022 1:07 PM<br>
<b>To:</b> Sanudo Martinez, Santiago <Santiago.SanudoMartinez@ingrammicro.com><br>
<b>Cc:</b> MidPoint Mailing List <midpoint@lists.evolveum.com><br>
<b>Subject:</b> [EXTERNAL]AW: [midPoint] Account Sync: Correlation using multivalued attribute<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">Hi Santiago,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">I think if "Aliases" is multivalue you need to loop through the values to compare the values ony by one. Aliases should be present as array of values, so you can use a for loop for example for
 the comparison.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">Hope it helps.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">Kind regards,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">Fabian<o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="2" width="98%" align="center">
</div>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b><span style="color:black">Von:</span></b><span style="color:black"> Sanudo Martinez, Santiago <<a href="mailto:Santiago.SanudoMartinez@ingrammicro.com">Santiago.SanudoMartinez@ingrammicro.com</a>><br>
<b>Gesendet:</b> Montag, 24. Januar 2022 12:48<br>
<b>An:</b> <a href="mailto:midpoint@lists.evolveum.com">midpoint@lists.evolveum.com</a> <<a href="mailto:midpoint@lists.evolveum.com">midpoint@lists.evolveum.com</a>><br>
<b>Betreff:</b> [midPoint] Account Sync: Correlation using multivalued attribute</span>
<o:p></o:p></p>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="xmsonormal"><span style="color:#4472C4">Hi,<br>
<br>
I have the following attribute in my shadows (EmployeeId, Aliases):<br>
<br>
I am trying to map the employeeId against the user employeeNumber which works OK and the aliases (which is a multivalued field against the user emailAddress). Whenever I try to give the aliases to match against the emailAddress I get the following error that
 I can’t compare emailAddress against more than 1 item. Any ideas how can I compare all the fields inside the multivalued field against the emailAddress?¿<br>
<br>
<br>
<img border="0" width="1559" height="513" style="width:16.2395in;height:5.3437in" id="x__x005f_x0000_i1026" src="cid:image002.png@01D8112C.D1EC57F0"><br>
<br>
<br>
here you may find the resource xml:<br>
<br>
<br>
<br>
<?xml version="1.0" encoding="UTF-8"?><br>
<br>
<resource oid="6a23afee-0426-4c52-85d4-7223cc4829c8"<br>
          xmlns="<a href="http://midpoint.evolveum.com/xml/ns/public/common/common-3">http://midpoint.evolveum.com/xml/ns/public/common/common-3</a>"<br>
          xmlns:c="<a href="http://midpoint.evolveum.com/xml/ns/public/common/common-3">http://midpoint.evolveum.com/xml/ns/public/common/common-3</a>"<br>
          xmlns:q="<a href="http://prism.evolveum.com/xml/ns/public/query-3">http://prism.evolveum.com/xml/ns/public/query-3</a>"<br>
          xmlns:icfs="<a href="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3">http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3</a>"<br>
          xmlns:ri="<a href="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3">http://midpoint.evolveum.com/xml/ns/public/resource/instance-3</a>"<br>
          xmlns:xsd="<a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a>"<br>
          xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"<br>
          xmlns:icfc="<a href="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3">http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3</a>"<br>
          xmlns:cap="<a href="http://midpoint.evolveum.com/xml/ns/public/resource/capabilities-3">http://midpoint.evolveum.com/xml/ns/public/resource/capabilities-3</a>"><br>
<br>
<br>
    <connectorRef type="ConnectorType"><br>
        <filter><br>
            <q:equal><br>
                <q:path>c:connectorType</q:path><br>
                <q:value>ingrammicro.com.connector.csv.cmp.CsvConnector</q:value><br>
            </q:equal><br>
        </filter><br>
    </connectorRef><br>
<br>
    <br>
<br>
    <schemaHandling><br>
        <objectType><br>
            <kind>account</kind><br>
            <intent>default</intent><br>
            <displayName>Default Account</displayName><br>
            <objectClass>ri:AccountObjectClass</objectClass><br>
            <default>true</default><br>
            <multiplicity><br>
                <maxOccurs>unbounded</maxOccurs><br>
            </multiplicity><br>
<br>
            <attribute><br>
            <c:ref xmlns:ri="<a href="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3">http://midpoint.evolveum.com/xml/ns/public/resource/instance-3</a>">ri:UserPrincipalName</c:ref><br>
<br>
            </attribute><br>
<br>
            <attribute><br>
                <c:ref xmlns:ri="<a href="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3">http://midpoint.evolveum.com/xml/ns/public/resource/instance-3</a>">ri:EmployeeId</c:ref><br>
<br>
            </attribute><br>
<br>
            <attribute><br>
                <c:ref xmlns:ri="<a href="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3">http://midpoint.evolveum.com/xml/ns/public/resource/instance-3</a>">ri:Aliases</c:ref><br>
                <limitations><br>
                    <minOccurs>0</minOccurs><br>
                    <maxOccurs>unbounded</maxOccurs><br>
                </limitations><br>
                <inbound><br>
                    <target><br>
                        <c:path>$focus/extension/emailAlias</c:path><br>
                    </target><br>
                </inbound><br>
            </attribute><br>
            <attribute><br>
                <c:ref xmlns:ri="<a href="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3">http://midpoint.evolveum.com/xml/ns/public/resource/instance-3</a>">ri:AccountEnabled</c:ref><br>
            </attribute><br>
        </objectType><br>
    </schemaHandling><br>
<br>
    <synchronization><br>
        <objectSynchronizationSorter xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xsi:type="c:ObjectSynchronizationSorterType"><br>
            <expression><br>
                <trace>false</trace><br>
                <script xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xsi:type="c:ScriptExpressionEvaluatorType"><br>
                    <code><br>
                        import com.evolveum.midpoint.xml.ns._public.common.common_3.*;<br>
                        import javax.xml.namespace.QName;<br>
                        import com.evolveum.midpoint.prism.path.ItemPath;<br>
                        import com.evolveum.midpoint.schema.constants.SchemaConstants;<br>
                        import com.evolveum.midpoint.util.exception.ConfigurationException;<br>
                        import com.evolveum.midpoint.schema.util.ShadowUtil;<br>
<br>
                        //log.info("----------------------------- Entering in the  SynchronizationSorter ----------------")<br>
                       discriminator = new ObjectSynchronizationDiscriminatorType()<br>
<br>
                        discriminator.setKind(ShadowKindType.ACCOUNT)<br>
                        discriminator.setIntent("default")<br>
<br>
                        //log.info("----------------------------- Leaving the SynchronizationSorter ----------------")<br>
                        return discriminator<br>
                    </code><br>
                </script><br>
            </expression><br>
        </objectSynchronizationSorter><br>
<br>
        <objectSynchronization><br>
            <name>account</name><br>
            <objectClass>ri:AccountObjectClass</objectClass><br>
            <kind>account</kind><br>
            <intent>default</intent><br>
            <focusType>UserType</focusType><br>
            <enabled>true</enabled><br>
<br>
            <correlation><br>
                <q:or><br>
                    <q:equal><br>
                        <q:matching>stringIgnoreCase</q:matching><br>
                        <q:path xmlns:c="<a href="http://midpoint.evolveum.com/xml/ns/public/common/common-3">http://midpoint.evolveum.com/xml/ns/public/common/common-3</a>">c:employeeNumber</q:path><br>
                        <expression><br>
                            <script xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xmlns:c="<a href="http://midpoint.evolveum.com/xml/ns/public/common/common-3">http://midpoint.evolveum.com/xml/ns/public/common/common-3</a>"
 xsi:type="c:ScriptExpressionEvaluatorType"><br>
                                <code><br>
                                    def employeeId = basic.getAttributeValue(shadow, 'EmployeeId')<br>
                                    if(employeeId != null){<br>
                                        employeeId = employeeId.toString().trim()<br>
                                        log.info("EmployeeID: {}",employeeId)<br>
                                        log.info("EmployeeID length: {}",employeeId.length())<br>
                                        if(employeeId.length() != 6){<br>
                                            int count = 6 - employeeId.length()<br>
                                            int i = 0<br>
                                            if(count > 0){<br>
                                                boolean condition = count > i;<br>
                                                while(condition){<br>
                                                    employeeId = "0"+employeeId;<br>
                                                    i++;<br>
                                                    condition = count > i;<br>
                                                }<br>
                                            }<br>
                                        }<br>
                                        log.info("[CSO][AAD Corporate]{Correlation} The employeeId is {}",employeeId)<br>
                                        return employeeId<br>
                                    }else{<br>
                                        log.info("[CSO][AAD Corporate]{Correlation} The employeeId attribute is empty")<br>
                                        return "randomEmployeeIdDontExist"<br>
                                    }<br>
                                </code><br>
                            </script><br>
                        </expression><br>
                    </q:equal><br>
                    <q:equal><br>
                        <q:matching>stringIgnoreCase</q:matching><br>
                        <q:path xmlns:c="<a href="http://midpoint.evolveum.com/xml/ns/public/common/common-3">http://midpoint.evolveum.com/xml/ns/public/common/common-3</a>">c:extension/emailAlias</q:path><br>
                        <expression><br>
                            <script xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xmlns:c="<a href="http://midpoint.evolveum.com/xml/ns/public/common/common-3">http://midpoint.evolveum.com/xml/ns/public/common/common-3</a>"
 xsi:type="c:ScriptExpressionEvaluatorType"><br>
                                <code><br>
                                    def aliases = basic.getAttributeValues(shadow, 'Aliases')<br>
                                    if(aliases != null){<br>
<br>
                                        log.info("[CSO][AAD Corporate]{Correlation} The aliases is {}",aliases)<br>
                                        return aliases<br>
                                    }else{<br>
                                        log.info("[CSO][AAD Corporate]{Correlation} The aliases attribute is empty")<br>
                                        return "randomAliasesIdDontExist"<br>
                                    }<br>
                                </code><br>
                            </script><br>
                        </expression><br>
                    </q:equal><br>
                    <q:equal><br>
                        <q:matching>stringIgnoreCase</q:matching><br>
                        <q:path xmlns:c="<a href="http://midpoint.evolveum.com/xml/ns/public/common/common-3">http://midpoint.evolveum.com/xml/ns/public/common/common-3</a>">c:emailAddress</q:path><br>
                        <expression><br>
                            <script xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xmlns:c="<a href="http://midpoint.evolveum.com/xml/ns/public/common/common-3">http://midpoint.evolveum.com/xml/ns/public/common/common-3</a>"
 xsi:type="c:ScriptExpressionEvaluatorType"><br>
                                <code><br>
                                    def aliases = basic.getAttributeValues(shadow, 'Aliases')<br>
                                    if(aliases != null){<br>
<br>
                                        log.info("[CSO][AAD Corporate]{Correlation} The aliases is {}",aliases)<br>
                                        return aliases<br>
                                    }else{<br>
                                        log.info("[CSO][AAD Corporate]{Correlation} The aliases attribute is empty")<br>
                                        return "randomAliasesIdDontExist"<br>
                                    }<br>
                                </code><br>
                            </script><br>
                        </expression><br>
                    </q:equal><br>
<br>
                </q:or><br>
            </correlation><br>
<br>
            <reaction><br>
                <situation>linked</situation><br>
                <synchronize>true</synchronize><br>
            </reaction><br>
            <reaction><br>
                <situation>deleted</situation><br>
            </reaction><br>
            <reaction><br>
                <situation>unlinked</situation><br>
                <synchronize>true</synchronize><br>
                <action><br>
                    <handlerUri><a href="http://midpoint.evolveum.com/xml/ns/public/model/action-3#link</handlerUri">http://midpoint.evolveum.com/xml/ns/public/model/action-3#link</handlerUri</a>><br>
                </action><br>
            </reaction><br>
            <reaction><br>
                <situation>unmatched</situation><br>
            </reaction><br>
        </objectSynchronization><br>
<br>
    </synchronization><br>
<br>
    <caching><br>
        <cachingStategy>passive</cachingStategy><br>
    </caching><br>
<br>
    <capabilities><br>
        <configured><br>
            <cap:activation><br>
                <cap:status><br>
                    <cap:attribute>ri:AccountEnabled</cap:attribute><br>
                    <cap:enableValue>True</cap:enableValue><br>
                    <cap:disableValue>False</cap:disableValue><br>
                </cap:status><br>
            </cap:activation><br>
            <cap:create><br>
                <cap:enabled>false</cap:enabled><br>
            </cap:create><br>
            <cap:update><br>
                <cap:enabled>false</cap:enabled><br>
            </cap:update><br>
            <cap:delete><br>
                <cap:enabled>false</cap:enabled><br>
            </cap:delete><br>
            <cap:credentials><br>
                <cap:enabled>false</cap:enabled><br>
            </cap:credentials><br>
            <cap:liveSync><br>
                <cap:enabled>false</cap:enabled><br>
            </cap:liveSync><br>
            <cap:script><br>
                <cap:enabled>false</cap:enabled><br>
            </cap:script><br>
        </configured><br>
    </capabilities><br>
<br>
<br>
<br>
<br>
<br>
</resource></span><o:p></o:p></p>
<p class="xmsonormal"><span style="color:#4472C4"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="color:#4472C4"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="color:#4472C4">Regards,</span><o:p></o:p></p>
<p class="xmsonormal"><span style="color:#4472C4"> </span><o:p></o:p></p>
<p class="xmsonormal"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4">Santiago Sañudo Martínez</span></b><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4">Cloud Security Operations
</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4">Plaza de Manuel Llano, Santander, Spain, 39011</span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4"> </span><o:p></o:p></p>
<p class="xmsonormal"><span lang="EN-GB" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4"><img border="0" width="144" height="31" style="width:1.5in;height:.3229in" id="x_Picture_x0020_2" src="cid:image001.jpg@01D8112C.D1EC57F0"></span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4"><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__bit.ly_IngramTwitter&d=DwMF-g&c=--1RjWWBW4Kf6aBAaj53vPItwfT0BR1YjSDV46P5EvE&r=02nQn_XF01OYsg7KWPE9n6CNvfs_QyztKbAlcXkYqvqpvrlKyhGRLNIt3vGj5sdE&m=TuRaEyJEujUzaLIef8L24KM6bBcbhk3z5RMMAe94jP_vkaat8KaTtZQ6_HFxCNMB&s=3wnlL9I7frc7maUz98RK2LPPRQSj8NaI4IDRpv5NyaM&e="><span style="color:#4472C4">Twitter</span></a> | <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__bit.ly_IngramLinkedIN&d=DwMF-g&c=--1RjWWBW4Kf6aBAaj53vPItwfT0BR1YjSDV46P5EvE&r=02nQn_XF01OYsg7KWPE9n6CNvfs_QyztKbAlcXkYqvqpvrlKyhGRLNIt3vGj5sdE&m=TuRaEyJEujUzaLIef8L24KM6bBcbhk3z5RMMAe94jP_vkaat8KaTtZQ6_HFxCNMB&s=nVgQb2zqz6oNySAY3x6L0b28eUKJ4I9GeuAN5rhgAaU&e="><span style="color:#4472C4">LinkedIn</span></a> | <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__bit.ly_IngramFacebook&d=DwMF-g&c=--1RjWWBW4Kf6aBAaj53vPItwfT0BR1YjSDV46P5EvE&r=02nQn_XF01OYsg7KWPE9n6CNvfs_QyztKbAlcXkYqvqpvrlKyhGRLNIt3vGj5sdE&m=TuRaEyJEujUzaLIef8L24KM6bBcbhk3z5RMMAe94jP_vkaat8KaTtZQ6_HFxCNMB&s=ZgWG3cKhiamyw1SHuLKWaVQq_QUtrKZyFiMpd7oJ-HM&e="><span style="color:#4472C4">Facebook</span></a> | <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__bit.ly_IngramYouTube&d=DwMF-g&c=--1RjWWBW4Kf6aBAaj53vPItwfT0BR1YjSDV46P5EvE&r=02nQn_XF01OYsg7KWPE9n6CNvfs_QyztKbAlcXkYqvqpvrlKyhGRLNIt3vGj5sdE&m=TuRaEyJEujUzaLIef8L24KM6bBcbhk3z5RMMAe94jP_vkaat8KaTtZQ6_HFxCNMB&s=KI1ornUgBi9GjAvQF5LsfC0wrkH3Y-f3zcxxxWoiPC0&e="><span style="color:#4472C4">YouTube</span></a>  </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4"> </span><o:p></o:p></p>
<p class="xmsonormal"><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#4472C4">This email may contain material that is confidential, and proprietary to Ingram Micro and subsidiaries, for the sole use of the intended recipient. Any review,
 reliance or distribution by others or forwarding without express permission is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.</span><o:p></o:p></p>
<p class="xmsonormal"> <o:p></o:p></p>
</div>
<p><span style="font-size:7.5pt"><br>
La información contenida en este mensaje es confidencial. En caso de que reciba este mensaje por error le rogamos lo comunique a la mayor brevedad al emisor y proceda a su eliminación definitiva, absteniéndose de copiar, almacenar o difundir su contenido. De
 acuerdo con lo establecido en la Ley Orgánica 15/1999, de Protección de Datos de Carácter Personal y en el Reglamento de Desarrollo 1720/2007, los datos personales que facilite a través de la dirección de correo indicada serán incorporados a un fichero titularidad
 de INGRAM MICRO, S.L.U., con domicilio en C/ Antonio Machado, 78-80 1ª y 2ª pl. Business Park ( 08840-Viladecans). Mediante el envío de sus datos, Ud. otorga su consentimiento expreso a INGRAM MICRO, S.L.U, para el tratamiento de sus datos, con la finalidad
 de atender a su consulta y/o mantener la relación profesional, comercial, y/o contractual que en su caso establezca con INGRAM MICRO, S.L.U. Puede ejercitar sus derechos de acceso, rectificación, cancelación y oposición notificándolo por escrito a la dirección
 del remitente, o a la siguiente dirección de correo <a href="mailto:nuevascuentas@ingrammicro.es">
nuevascuentas@ingrammicro.es</a>. De acuerdo con la Ley 34/2002, de Servicios de la Sociedad de la Información y de Comercio Electrónico, Vd. podrá oponerse en cualquier momento al tratamiento de sus datos con fines promocionales notificándonoslo por escrito
 a la dirección de correo mencionada.<br>
.................................................................................................................................................................................................................................................<br>
The information contained in this message is confidential. If you receive this message by error please notify it as soon as possible to the sender and proceed to their final elimination by not copy, store or distribute its content. In accordance of what is
 stated in the Law 15/1999, of Data Personal Protection and Regulation Rule 1720/2007, the personal data provided through the email address you entered will be included in a file owned by INGRAM MICRO, SLU, located at C/ Antonio Machado, 78-80 1ª y 2ª pl. Business
 Park ( 08840-Viladecans). By submitting your data, you expressly give your consent to INGRAM MICRO, SLU, to the treatment of your data, in order to answer to your questions and / or keep the professional, commercial relationship  and / or contractual set with
 INGRAM MICRO, SLU You can exercise your rights of access, rectification, cancellation and opposition by giving written notification to the sender address or to  the following email: 
<a href="mailto:nuevascuentas@ingrammicro.es">nuevascuentas@ingrammicro.es</a>. According to Law 34/2002, of the Information Society and Electronic Commerce, you may object at any time to your data treatment for promotional purposes by notifying us in writing
 to the email address above.<br>
<span style="color:white">[Ingram_2818e5de]</span></span><o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>