[midPoint] Correlation query problem
Brad Fardig
brad.fardig at cogitogroup.com.au
Tue Mar 14 00:28:27 CET 2017
Hi Pavol,
I was pretty sure I’d seen examples with and without a return statement and used return statements in previous scripts. It works now so I’m happy.
Thanks for your assistance
Regards,
Brad
From: midPoint [mailto:midpoint-bounces at lists.evolveum.com] On Behalf Of Pavol Mederly
Sent: Tuesday, 14 March 2017 9:19 AM
To: midpoint at lists.evolveum.com
Subject: Re: [midPoint] Correlation query problem
Hello Brad,
this is interesting. As far as I know, there is no problem in using the return statement. Actually, these two pieces of code:
y + '-' + m + '-' + d
and
db = y + '-' + m + '-' + d
log.error('The date of birth is {}', db)
return db
are (in my opinion) equivalent. I regularly write scripts within midPoint objects with and without the return statement; and there are no problems with both variants.
To be honest, although I'm not 100% sure (as I'm not a groovy expert). I suppose the problem is (was?) probably elsewhere.
Pavol Mederly
Software developer
evolveum.com
On 14.03.2017 0:07, Brad Fardig wrote:
Thanks Pavol,
It is now working. I also realised that it wasn’t matching because of an issue with the DOB script, once I removed the logging and the return statement it started working.
The script now looks like:
<q:equal>
<q:path>extension/dob</q:path>
<c:expression>
<script>
<language>http://midpoint.evolveum.com/xml/ns/public/expression/language#Groovy</language>
<code>
DoB = basic.getAttributeValue(shadow, 'http://midpoint.evolveum.com/xml/ns/public/resource/instance-3', 'DoB')
(d,m,y) = DoB?.tokenize('/')
y + '-' + m + '-' + d
</code>
</script>
</c:expression>
</q:equal>
Should I not use a return statement within a script?
Regards,
Brad
From: midPoint [mailto:midpoint-bounces at lists.evolveum.com] On Behalf Of Pavol Mederly
Sent: Monday, 13 March 2017 10:26 PM
To: midpoint at lists.evolveum.com <mailto:midpoint at lists.evolveum.com>
Subject: Re: [midPoint] Correlation query problem
Hello Brad,
normIgnoreCase is OK, because givenName and lastName are so called polystrings (polymorphic strings; they have original and normalized value). And these are to be compared using polyStringNorm, polyStringOrig, polyStringStrict, normIgnoreCase, origIgnoreCase, and strictIgnoreCase rules. (Just BTW, polyStringNorm comparison is already case-insensitive, so I'd suggest using it instead of normIgnoreCase. The latter is a bit of "hack". But nevertheless, it should work.)
Your query look right to me.
I would suggest you to enable logging: TRACE for com.evolveum.midpoint.model.impl.sync.CorrelationConfirmationEvaluator.
And then have a look for entry containing:
SYNCHRONIZATION: CORRELATION: expression for results in filter
If needed, you could post it here, we'll try to help you with that.
Best regards,
Pavol Mederly
Software developer
evolveum.com
On 13.03.2017 12:21, Brad Fardig wrote:
Having some issues with a correlation query on a csv resource with midpoint 3.4
The issue is I’m not getting any linking with existing user records i.e. all records read from the CSV file are unmatched.
I need to do case insensitive string matching. I’ve tried stringIgnoreCase but receive an error. I’ve also set the http://prism.evolveum.com/xml/ns/public/matching-rule-3 namespace as mr but receive an error for mr:stringIgnoreCase as well
I’ve tried various selection from the known matching rules here: https://wiki.evolveum.com/display/midPoint/Matching+Rules
If anybody can provide any insight into what I’m not seeing/doing it will be greatly appreciated.
The query is:
<correlation>
<q:description>
match on givenName == FirstName , familyName == LastName , DoB == dob
</q:description>
<q:and>
<q:equal>
<q:matching>normIgnoreCase</q:matching>
<q:path>familyName</q:path>
<c:expression>
<c:path>$c:account/c:attributes/ri:LastName</c:path>
</c:expression>
</q:equal>
<q:equal>
<q:matching>normIgnoreCase</q:matching>
<q:path>givenName</q:path>
<c:expression>
<c:path>$c:account/c:attributes/ri:FirstName</c:path>
</c:expression>
</q:equal>
<q:equal>
<q:path>extension/dob</q:path>
<c:expression>
<script>
<language>http://midpoint.evolveum.com/xml/ns/public/expression/language#Groovy</language>
<code>
DoB = basic.getAttributeValue(shadow, 'http://midpoint.evolveum.com/xml/ns/public/resource/instance-3', 'DoB')
(d,m,y) = DoB?.tokenize('/')
db = y + '-' + m + '-' + d
log.error('The date of birth is {}', db)
return db
</code>
</script>
</c:expression>
</q:equal>
</q:and>
</correlation>
Regards
Brad
_______________________________________________
midPoint mailing list
midPoint at lists.evolveum.com <mailto:midPoint at lists.evolveum.com>
http://lists.evolveum.com/mailman/listinfo/midpoint
This email, and any attachment, is confidential and also privileged. If you have received it in error, please notify me immediately and delete it from your system along with any attachments. You should not copy or use it for any purpose, nor disclose its contents to any other person.
_______________________________________________
midPoint mailing list
midPoint at lists.evolveum.com <mailto:midPoint at lists.evolveum.com>
http://lists.evolveum.com/mailman/listinfo/midpoint
This email, and any attachment, is confidential and also privileged. If you have received it in error, please notify me immediately and delete it from your system along with any attachments. You should not copy or use it for any purpose, nor disclose its contents to any other person.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20170313/86d74f76/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4802 bytes
Desc: not available
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20170313/86d74f76/attachment.bin>
More information about the midPoint
mailing list