> Cl??ment OUDOT a ??crit :
>>> Yes, the use of employeeNumber as pivot attribute doesn't a good
>>> idee...
>>>
>>>
>>> I change it by uid attribute.
>>>
>>>
>>> I have changed too lsc.tasks.salaries.srcService.filterAll to have only
>>> entries of zimbra with a valid uid like this :
>>>
>>>
>>> lsc.tasks.salaries.srcService.filterAll =
>>> (&(objectClass=organizationalPerson) (uid=*))
>>>
>>>
>>> Now i have a problem when i run :
>>>
>>> ant lsc::synchronize -Dsynchronize.parameters="-c all -s all"
>>>
>>> the reponse is :
>>>
>>> Buildfile: build.xml
>>>
>>> lsc::init:
>>>
>>> lsc::prepare-env:
>>>      [echo] Copying xml and properties files
>>>      [copy] Copying 1 file to
>>> /home/pascal/lsc/lsc-salarie2-z2ldap/target/classes
>>>
>>> lsc::compile-resources:
>>>      [echo] Compiling resources
>>>
>>> lsc::compile-app:
>>>
>>> lsc::synchronize:
>>>      [java] 0    [main] WARN
>>> org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:230)   -
>>> Starting sync for salaries
>>>      [java] 586  [main] ERROR
>>> org.lsc.jndi.JndiServices.apply(JndiServices.java:554)   - Error while
>>> modifying directory on entry
>>> uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org / [Add
>>> attribute: objectclass: top, shadowAccount, inetOrgPerson, Add
>>> attribute: sn: Maurieras, Add attribute: cn: Pascal Maurieras]
>>>      [java] javax.naming.InvalidNameException:
>>> uid=,ou=Salaries,o=fal44,o=cdr44: [LDAP: error code 34 - invalid DN];
>>> remaining name 'uid=,ou=Salaries,o=fal44,o=cdr44'
>>>      [java]     at
>>> com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2932)
>>>      [java]     at
>>> com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2746)
>>>      [java]     at
>>> com.sun.jndi.ldap.LdapCtx.c_createSubcontext(LdapCtx.java:779)
>>>      [java]     at
>>> com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(ComponentDirContext.java:319)
>>>      [java]     at
>>> com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:248)
>>>      [java]     at
>>> javax.naming.directory.InitialDirContext.createSubcontext(InitialDirContext.java:183)
>>>      [java]     at
>>> org.lsc.jndi.JndiServices.apply(JndiServices.java:513)
>>>      [java]     at
>>> org.lsc.AbstractSynchronize.synchronize2Ldap(AbstractSynchronize.java:414)
>>>      [java]     at
>>> org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:280)
>>>      [java]     at
>>> org.lsc.SimpleSynchronize.launch(SimpleSynchronize.java:172)
>>>      [java]     at org.lsc.Launcher.run(Launcher.java:128)
>>>      [java]     at org.lsc.Launcher.main(Launcher.java:111)
>>>      [java] 2213 [main] ERROR
>>> org.lsc.AbstractSynchronize.logActionError(AbstractSynchronize.java:475)
>>> - Erreur rencontr??e sur l'identifiant
>>> uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org:
>>>      [java]
>>>      [java] dn:
>>> uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org
>>>      [java] changetype: add
>>>      [java] objectclass: top
>>>      [java] objectclass: shadowAccount
>>>      [java] objectclass: inetOrgPerson
>>>      [java] sn: Maurieras
>>>      [java] cn: Pascal Maurieras
>>>      [java]
>>> ...
>>>
>>>
>>> The method srcBean.getAttributeValueById("uid") seems doesn't work in
>>> lsc.tasks.salaries.dn ?
>>>
>>>
>>> My new conf is :
>>>
>>>
>>> lsc.tasks.salaries.type = ldap2ldap
>>> lsc.tasks.salaries.srcService.pivotAttrs = uid
>>> lsc.tasks.salaries.srcService.filterId =
>>> (&(objectClass=organizationalPerson)(uid={uid}))
>>> lsc.tasks.salaries.srcService.filterAll =
>>> (&(objectClass=organizationalPerson) (uid=*))
>>> lsc.tasks.salaries.srcService.baseDn = ou=people
>>> lsc.tasks.salaries.srcService.attrs = uid cn sn givenName mail
>>> objectClass
>>> lsc.tasks.salaries.srcService = org.lsc.jndi.SimpleJndiSrcService
>>> lsc.tasks.salaries.object = org.lsc.objects.organizationalPerson
>>> lsc.tasks.salaries.dstService.pivotAttrs = uid
>>> lsc.tasks.salaries.dstService.filterId =
>>> (&(objectClass=inetOrgPerson)(uid={uid}))
>>> lsc.tasks.salaries.dstService.filterAll = (objectClass=inetOrgPerson)
>>> lsc.tasks.salaries.dstService.baseDn = ou=Salaries,o=fal44,o=cdr44
>>> lsc.tasks.salaries.dstService.attrs = uid cn sn givenName mail
>>> objectClass
>>> lsc.tasks.salaries.dstService = org.lsc.jndi.SimpleJndiDstService
>>> lsc.tasks.salaries.dn = "uid=" + srcBean.getAttributeValueById("uid") +
>>> ",ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org"
>>> lsc.tasks.salaries.bean = org.lsc.beans.inetOrgPersonBean
>>> lsc.tasks = salaries
>>>
>>>
>>>
>>
>>
>>
>> Hello,
>>
>> it seems that srcBean.getAttributeValueById("uid") returns nothing, so
>> DN
>> cannot be set. Are you sure your entry in source directory has a value
>> in
>> uid?
>>
>> Cl???ment.
>>
>>
>>
>>
> Yes uid has a value. The entrie in source directory of zimbra is :
>
> dn: uid=pascal.maurieras,ou=people,dc=nordet,dc=org
> cn: Pascal Maurieras
> displayName: Pascal Maurieras
> givenName: Pascal
> mail: pascal.maurieras at nordet.org
> objectClass: organizationalPerson
> objectClass: zimbraAccount
> objectClass: amavisAccount
> sn: Maurieras
> uid: pascal.maurieras
> zimbraId: f3b8699c-1fe9-4450-a672-030c91fbfc22
> zimbraMailDeliveryAddress: pascal.maurieras at nordet.org
> zimbraMailHost: mail.nordet.org
> zimbraMailStatus: enabled
> zimbraMailTransport: lmtp:mail.nordet.org:7025
>

Ok I think I see the problem. You source objet is organizationalPerson:
lsc.tasks.salaries.object = org.lsc.objects.organizationalPerson

But uid may not be defined in this object (it must be an attribute of
zimbraAccount objectClass).

I think you need to edit the
src/impl/java/org/lsc/objects/organizationalPerson.java to add the "uid"
attribute.

Can someone confirm that?

Cl?ment.

Reply via email to