I have an LSC task synchronizing our legacy Sun Directory Server with
Redhat DS (aka 389).

Apparently the 389 server returns object class values in a different
capitalization to the Sun directory for some entries - I suspect it
copies whatever was used when the entry was created, which could have
been one of several sources.  For example, a typical entry in the source has

organizationalPerson, icscalendaruser, inetadmin,
inetlocalmailrecipient, inetmailuser, inetsubscriber,
iplanet-am-managed-person, iplanet-am-user-service, iplanetpreferences,
ipuser, person, eduPerson, SunUCPreferences, inetUser,
userpresenceprofile, inetOrgPerson, top

and in the destination

eduperson, person, inetorgperson, krbprincipalaux, krbTicketPolicyAux,
organizationalperson, inetuser, top

I'm seeing errors like this

> Jul 25 11:32:17 - ERROR - Error while modifying entry 
> uid=22026033,ou=Student,o=scu.edu.au,dc=scu,dc=edu,dc=au in directory 
> :javax.naming.directory.AttributeInUseException: [LDAP: error code 20 - 
> Attribute Or Value Exists]; remaining name 'uid=22026033,ou=Student'
> Jul 25 11:32:17 - ERROR - Error while synchronizing ID 
> uid=22026033,ou=Student,o=scu.edu.au,dc=scu,dc=edu,dc=au: 
> java.lang.Exception: Technical problem while applying modifications to the 
> destination
> Jul 25 11:32:17 - DEBUG - java.lang.Exception: Technical problem while 
> applying modifications to the destination
> java.lang.Exception: Technical problem while applying modifications to the 
> destination
>       at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:760) 
> [classes/:na]
>       at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:658) 
> [classes/:na]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>  [na:1.7.0_06-ea]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>  [na:1.7.0_06-ea]
>       at java.lang.Thread.run(Thread.java:722) [na:1.7.0_06-ea]
> dn: uid=22026033,ou=Student,o=scu.edu.au,dc=scu,dc=edu,dc=au
> changetype: modify
> add: objectClass
> objectClass: organizationalPerson
> objectClass: eduPerson
> objectClass: inetOrgPerson
> objectClass: inetUser

In the config, the syncOptions for objectClass say

>         <dataset>
>           <name>objectClass</name>
>           <policy>MERGE</policy>
>           <defaultValues></defaultValues>
>           <forceValues>
>             <string>"top"</string>
>             <string>"person"</string>
>             <string>"eduPerson"</string>
>             <string>"inetOrgPerson"</string>
>             <string>"inetUser"</string>
>             <string>"organizationalPerson"</string>
>           </forceValues>
>           <createValues>
>           </createValues>
>           <delimiter>,</delimiter>
>         </dataset>

Is there a way of making the comparison case-blind ?  Looking through
the directory, it looks like some entries are all lower case, while some
are camel-cased, so there is no one correct capitalization to match the
'force' values to.

cheers,
Robin
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org

lsc-users mailing list
[email protected]
http://lists.lsc-project.org/listinfo/lsc-users

Reply via email to