<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Hi,<br>
<br>
Quick answer is that the "disputed" situation is currently not
that well supported in midPoint. There wasn't much demand amongst
midPoint subscribers so far.<br>
<br>
However, the upside is that there is a plenty of room for
improvement :-)<br>
<br>
Ad 1: Notification would be just another reaction to a
synchronization situation. This should not be that difficult to
develop. In fact it needs to implement action class in
com.evolveum.midpoint.model.impl.sync.action package, and use
existing notification framework in midPoint to deliver the
notification. As always we are open to community contributions ...
or new midPoint platform subscribers :-)<br>
<br>
Ad 2: As you have already discovered there is a way how to do that
in midPoint GUI - albeit it is not entirely convenient. One of the
issues here is that we do not store the candidate matches in
midPoint repository. So, if GUI is supposed to display the
candidate matches then it has to re-run the correlation query.
Which is possible, but it is not implemented yet. In fact, few
years ago we have went even one step further: we have experimented
with a recommender for account linking (which would be called
"machine learning" system now). The idea was for a recommender to
suggest possible matches during manual linking of accounts, even
in generic "unmatched" case. The recommender was learning based on
recommendations that were accepted or refused by system operator.
This was just a very early prototype, but it produced some
encouraging results. Unfortunately, we haven't been able to secure
the funding to fully develop this functionality.<br>
<br>
Ad 3: Currently, the confirmation expression is not built for this
purpose. The idea was to use correlation query to quickly select
candidates for a match and the use confirmation to filter them one
by one. It would not be that difficult to implement a variant of
the expression that will take all the candidates in a single
collection. But it is not implemented in midPoint now. And as far
as I can tell the only way to do this now to change midPoint
source code.<br>
<br>
Your questions suggest a really interesting extension to midPoint
features. But such functionality is not implemented yet. So, the
best approach that I can recommend here is to contribute the
missing functionality or to purchase midPoint platform
subscription.<br>
<br>
<pre class="moz-signature" cols="72">--
Radovan Semancik
Software Architect
evolveum.com
</pre>
<br>
<br>
<br>
On 02/14/2018 01:13 PM, Shilen Patel wrote:<br>
</div>
<blockquote type="cite"
cite="mid:914EFACC-B304-408F-BF1B-2FAD55FC7784@duke.edu">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Calibri",sans-serif;}
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;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle18
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.msoIns
{mso-style-type:export-only;
mso-style-name:"";
text-decoration:underline;
color:teal;}
.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;}
/* List Definitions */
@list l0
{mso-list-id:1523473276;
mso-list-type:hybrid;
mso-list-template-ids:368348870 67698711 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-number-format:alpha-lower;
mso-level-text:"%1\)";
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1
{mso-list-id:1786656351;
mso-list-type:hybrid;
mso-list-template-ids:193989696 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l1:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l1:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style>
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">I found out
how to do (2) in the UI and I’m not too worried about (1)
since we can always make our own UI to handle it. So I’m
mainly interested in (3) now. Let me elaborate on a use
case for it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Say I want
my matching logic to be based on first name, middle name,
last name, DOB, and a national ID. Here are the rules (for
example):<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<ol style="margin-top:0in" start="1" type="a">
<li class="MsoListParagraph"
style="margin-left:0in;mso-list:l0 level1 lfo2"><span
style="font-size:11.0pt">If first name, middle name, last
name, and DOB match exactly to one existing user in
MidPoint, then proceed with that match. If it matches
more than one user, then it needs to be looked at manually
(e.g. disputed state).<o:p></o:p></span></li>
<li class="MsoListParagraph"
style="margin-left:0in;mso-list:l0 level1 lfo2"><span
style="font-size:11.0pt">If the national ID matches one
existing user in MidPoint, proceed with that match.<o:p></o:p></span></li>
<li class="MsoListParagraph"
style="margin-left:0in;mso-list:l0 level1 lfo2"><span
style="font-size:11.0pt">If first name and last name or
middle name and last name match one or more users, then I
would consider that a weak match and somebody should
evaluate it manually regardless of whether there was only
one match or there were multiple matches.<o:p></o:p></span></li>
</ol>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Is this type
of behavior possible?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Thanks!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">- Shilen<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span
style="color:black">From: </span>
</b><span style="color:black">Shilen Patel
<a class="moz-txt-link-rfc2396E" href="mailto:shilen@duke.edu"><shilen@duke.edu></a><br>
<b>Date: </b>Tuesday, February 13, 2018 at 9:59 AM<br>
<b>To: </b><a class="moz-txt-link-rfc2396E" href="mailto:midpoint@lists.evolveum.com">"midpoint@lists.evolveum.com"</a>
<a class="moz-txt-link-rfc2396E" href="mailto:midpoint@lists.evolveum.com"><midpoint@lists.evolveum.com></a><br>
<b>Subject: </b>Question about the disputed situation<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt">Hi folks,</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt">Say if I have an automated
connector that brings new users into MidPoint. And say if
my correlation and confirmation expressions are pretty
simple and just match using first and last name. If I have
a new entry in the incoming feed that has a name that
matches 2 users in MidPoint, the synchronization situation
becomes “disputed”. I have a few questions about that state
that I’m hoping folks may have some thoughts on.</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt">1. Other than manually going
through every resource in the MidPoint UI and seeing if any
states are “DISPUTED” in the Accounts tab, how do you figure
out that entries get into this state? Is there some place
you can go in the UI to view all disputed entries for all
resources? Do folks send notifications (e.g. emails) when
entries get into that state? </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt">2. Say if I figure out that an
entry is in the disputed state because there are 2 potential
matches. Then I manually look at those 2 potential matches
and figure out that the 2 users are really different people
and that the incoming entry matches with exactly one of
them. How do I change that disputed state into a linked
state with the match that I manually figured out?</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt">3. Also, one more question on a
slightly different topic. For the confirmation step (which
occurs after correlation), is it possible to send all the
potential matches to some java method where I can evaluate
them all together? For example, if I have 2 potential
matches from the correlation step but in the confirmation
step, 1 of the 2 is much stronger than the other, I may want
to proceed with that match. However, if both are somewhat
weak, I may want it to go into the disputed state so
somebody can look at it. Or do you have to evaluate each
potential match without having knowledge on what the other
potential matches are?</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt">Thanks, and I appreciate any input
or best practices.</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt">Thanks!</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span
style="font-size:11.0pt">- Shilen</span><o:p></o:p></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>
</body>
</html>