[midPoint] ScriptedSQL update attributes

Wojciech Staszewski wojciech.staszewski at diagnostyka.pl
Thu Jul 6 20:06:36 CEST 2017


Yeaaah!!

Strong mapping solved the problem.
You're great!! Thanks!


W dniu 06.07.2017 o 19:53, Rodrigo Yanis pisze:
> It should be, only if "attr" content is a string type. Also, have you
> tried setting <strength>normal</strength>
> to <strength>strong</strength> on the mapping? Perhaps the script is
> not collecting a value as there's been no delta on that specific
> attribute on the connected platform.
>
> https://wiki.evolveum.com/display/midPoint/Mapping#Mapping-MappingStrength
>
> Hope it helps.
>
>
> *Rodrigo Yanis.*
> Identicum S.A.
> Jorge Newbery 3226
> Tel: +54 (11) 4552-3050
> ryanis at identicum.com <mailto:ryanis at identicum.com>
> www.identicum.com <http://www.identicum.com/>
>
> 2017-07-06 14:48 GMT-03:00 Wojciech Staszewski
> <wojciech.staszewski at diagnostyka.pl
> <mailto:wojciech.staszewski at diagnostyka.pl>>:
>
>     Thank you for the array logging code.
>     Unfortunately the array looks like it was empty:
>
>     (org.forgerock.openicf.misc.scriptedcommon.ScriptedConnector):
>     method: null msg:Attribute received: n_family -> []
>
>     Hmmmm....
>
>
>     W dniu 06.07.2017 o 18:14, Rodrigo Yanis pisze:
>>     Just to clarify, make sure "attr" variable contains a *string
>>     *with the attribute you want to get. That's how we have it
>>     configured in our own implementations and it's working fine.
>>     Also, perhaps add some logging to see the contents of the
>>     "attributes" array:
>>
>>         /attributes.each{attr, value -> log.info
>>         <http://log.info>("Attribute received: ${attr} -> ${value}")};/
>>
>>     So you get a better grasp of what's on that array.
>>
>>     Regards, 
>>
>>
>>     *Rodrigo Yanis.*
>>     Identicum S.A.
>>     Jorge Newbery 3226
>>     Tel: +54 (11) 4552-3050
>>     ryanis at identicum.com <mailto:ryanis at identicum.com>
>>     www.identicum.com <http://www.identicum.com/>
>>
>>     2017-07-06 13:05 GMT-03:00 Rodrigo Yanis <ryanis at identicum.com
>>     <mailto:ryanis at identicum.com>>:
>>
>>         Hello Wojciech,
>>
>>         Have you tried something like this?
>>
>>         /attributes?.get("n_family")?.get(0);/
>>         /
>>         /
>>         Regards,
>>
>>
>>         *Rodrigo Yanis.*
>>         Identicum S.A.
>>         Jorge Newbery 3226
>>         Tel: +54 (11) 4552-3050
>>         ryanis at identicum.com <mailto:ryanis at identicum.com>
>>         www.identicum.com <http://www.identicum.com/>
>>
>>         2017-07-06 12:23 GMT-03:00 Wojciech Staszewski
>>         <wojciech.staszewski at diagnostyka.pl
>>         <mailto:wojciech.staszewski at diagnostyka.pl>>:
>>
>>             Hello!
>>
>>             I have a resource with ScriptedSQL 1.1.2.0-em3 connector.
>>
>>             It worked ok, but from a certain date it gives me an
>>             error during attibutes update:
>>
>>             switch ( action ) {
>>
>>                 case "UPDATE":
>>                 switch ( objectClass ) {
>>                     case "__ACCOUNT__":
>>                     for (attr in accountAttrNames) {
>>                         if (attributes.get(attr) != null) {
>>                             switch (attr) {
>>                                 case "n_family":
>>                                     def family =
>>             attributes.get(attr)?.get(0).toString();
>>                                     sql.executeUpdate("UPDATE
>>             egw_addressbook SET n_family=? WHERE
>>             account_id=?",[family,uid]);
>>                                     break;
>>                                     [...]
>>
>>
>>
>>
>>             Outbound mapping:
>>
>>             <attribute>
>>             <c:ref>ri:n_family</c:ref>
>>             <outbound>
>>                            <authoritative>true</authoritative>
>>                            <exclusive>false</exclusive>
>>                            <strength>normal</strength>
>>                            <source>
>>                               <c:path>familyName</c:path>
>>                            </source>
>>             </outbound>
>>             </attribute>
>>
>>
>>
>>             The ERROR:
>>             ERROR
>>             (com.evolveum.midpoint.provisioning.ucf.impl.connid.ConnIdUtil):
>>             ConnId Exception java.lang.IndexOutOfBoundsException in
>>             connector:97d430f1-d2b0-4487-b60b-4905dc76d2ca(ICF
>>             org.forgerock.openicf.connectors.scriptedsql.ScriptedSQLConnector
>>             v1.1.2.0.em3):
>>             ConnectorSpec(resource:d7a1b38c-07db-42cc-b173-664b6e317871(EGroupWare),
>>             name=null, oid=97d430f1-d2b0-4487-b60b-4905dc76d2ca)
>>             while updating object identified by ConnId UID '1020':
>>             Index: 0, Size: 0
>>             ERROR
>>             (com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl):
>>             Couldn't modify object: unexpected problem:
>>             java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
>>             ERROR
>>             (com.evolveum.midpoint.model.impl.lens.ChangeExecutor):
>>             Error executing changes for (account (default) on
>>             resource:d7a1b38c-07db-42cc-b173-664b6e317871(EGroupWare)):
>>             Internal error: java.lang.IndexOutOfBoundsException:
>>             Index: 0, Size: 0
>>
>>             The value of "n_family" is NULL, although "familyName" of
>>             midPoint's user is not null.
>>
>>             I tried this (sorry, I'm not a developer):
>>
>>             def family = attributes.get(attr)?.get(0).toString();
>>             def family = attributes?.get(attr)?.get(0).toString();
>>             def family = attributes.get(attr)?.get(0);
>>             def family = attributes?.get(attr)?.get(0);
>>             def family = attributes.get(attr)?.find { true };
>>
>>             as in the example:
>>             https://github.com/Evolveum/midpoint/blob/master/samples/resources/scriptedsql/CreateScript.groovy
>>             <https://github.com/Evolveum/midpoint/blob/master/samples/resources/scriptedsql/CreateScript.groovy>
>>
>>             all with the same result, that means NULL. What is the
>>             correct working syntax?
>>
>>             Thanks a lot,
>>             Regards,
>>             Wojciech Staszewski.
>>             _______________________________________________
>>             midPoint mailing list
>>             midPoint at lists.evolveum.com
>>             <mailto:midPoint at lists.evolveum.com>
>>             http://lists.evolveum.com/mailman/listinfo/midpoint
>>             <http://lists.evolveum.com/mailman/listinfo/midpoint>
>>
>>
>>
>>
>>
>>     _______________________________________________
>>     midPoint mailing list
>>     midPoint at lists.evolveum.com <mailto:midPoint at lists.evolveum.com>
>>     http://lists.evolveum.com/mailman/listinfo/midpoint
>>     <http://lists.evolveum.com/mailman/listinfo/midpoint>
>
>
>     _______________________________________________
>     midPoint mailing list
>     midPoint at lists.evolveum.com <mailto:midPoint at lists.evolveum.com>
>     http://lists.evolveum.com/mailman/listinfo/midpoint
>     <http://lists.evolveum.com/mailman/listinfo/midpoint>
>
>
>
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> http://lists.evolveum.com/mailman/listinfo/midpoint

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20170706/1f48ae27/attachment.htm>


More information about the midPoint mailing list