Hello,

I'm doing synchronization between OpenLDAP and AD. In OpenLDAP I have lot of 
domains with users in every domain. Basically what I'm trying to do is to 
synchronize OpenLDAP domains to AD organizational units and then users from 
OpenLDAP domains to associated organizational unit in AD. This I'm trying to 
accomplish with two tasks.

So I created task for OpenLDAP domain to AD OU and that is ok and working as 
expected. But I don't know how to sync users from specific OpenLDAP domain to 
specific OU in AD because. I don't know how to create DN for users to reflect 
specific OU in AD.

Here is lsc.config that I created. With configuration  below every user from 
any OpenLDAP domain goes to the same OU in AD :(
Please anyone advise how to sync users to specific OU. Any help would be 
appreciated.


##############################
# Destination AD directory #
##############################
dst.java.naming.provider.url = ldaps://dcname:636/DC=domain1,DC=hr
dst.java.naming.security.authentication = simple
dst.java.naming.security.principal = CN=ldap-sync,CN=Users,DC=domain1,DC=hr
dst.java.naming.security.credentials = *******
dst.java.naming.referral = ignore
dst.java.naming.ldap.derefAliases = never
dst.java.naming.factory.initial = com.sun.jndi.ldap.LdapCtxFactory
dst.java.naming.ldap.version = 3
dst.java.naming.ldap.pageSize = 1000

#########################
# Source OpenLDAP directory #
#########################
src.java.naming.provider.url = ldap://dcname2:389/dc=domain2,dc=hr
src.java.naming.security.authentication = simple
src.java.naming.security.principal = cn=adreplica,dc=domain2,dc=hr
src.java.naming.security.credentials = *******
src.java.naming.referral = ignore
src.java.naming.ldap.derefAliases = never
src.java.naming.factory.initial = com.sun.jndi.ldap.LdapCtxFactory
src.java.naming.ldap.version = 3
srt.java.naming.ldap.pageSize = 1000

#######################
# Tasks configuration #
#######################
lsc.tasks = ldap2ad_dc,ldap2ad_user

####
#### ldap2ad_dc : Source
####
lsc.tasks.ldap2ad_dc.srcService = org.lsc.jndi.SimpleJndiSrcService
lsc.tasks.ldap2ad_dc.srcService.baseDn =
lsc.tasks.ldap2ad_dc.srcService.filterAll = 
(&(objectclass=dcObject)(dc=*)(!(dc=domain2,dc=hr)))
lsc.tasks.ldap2ad_dc.srcService.pivotAttrs = dc
lsc.tasks.ldap2ad_dc.srcService.filterId = 
(&(objectclass=dcObject)(|(dc={dc})(dc={ou})))
lsc.tasks.ldap2ad_dc.srcService.attrs = dc l

####
#### ldap2ad_dc : Destination
####
lsc.tasks.ldap2ad_dc.dstService = org.lsc.jndi.SimpleJndiDstService
lsc.tasks.ldap2ad_dc.dstService.baseDn = ou=LSC
lsc.tasks.ldap2ad_dc.dstService.filterAll = 
(&(objectClass=organizationalUnit)((ou=*)(!(ou=LSC))))
lsc.tasks.ldap2ad_dc.dstService.pivotAttrs = ou
lsc.tasks.ldap2ad_dc.dstService.filterId = 
(&(objectclass=organizationalUnit)(|(ou={ou})(ou={dc})))
lsc.tasks.ldap2ad_dc.dstService.attrs = ou objectClass l
lsc.tasks.ldap2ad_dc.bean = org.lsc.beans.SimpleBean
lsc.tasks.ldap2ad_dc.dn = "OU=" + srcBean.getAttributeValueById("dc") + 
",OU=LSC"

dn.real_root = DC=domain1,DC=hr

lsc.syncoptions.ldap2ad_dc = 
org.lsc.beans.syncoptions.PropertiesBasedSyncOptions
lsc.syncoptions.ldap2ad_dc.default.action = K
lsc.syncoptions.ldap2ad_dc.default.delimiter = $
lsc.syncoptions.ldap2ad_dc.sn.action = F
lsc.syncoptions.ldap2ad_dc.sn.force_value = srcBean.getAttributeValueById("ou")
lsc.syncoptions.ldap2ad_dc.objectClass.action = F
lsc.syncoptions.ldap2ad_dc.objectClass.create_value = "top"$"organizationalUnit"
lsc.syncoptions.ldap2ad_dc.ou.default_value = 
srcBean.getAttributeValueById("ou")

####
#### ldap2ad_user : Source
####
lsc.tasks.ldap2ad_user.srcService = org.lsc.jndi.SimpleJndiSrcService
lsc.tasks.ldap2ad_user.srcService.baseDn =
lsc.tasks.ldap2ad_user.srcService.filterAll = 
(&(objectClass=inetOrgPerson)(uid=*)(!(uid=admin)))
lsc.tasks.ldap2ad_user.srcService.pivotAttrs = uid
lsc.tasks.ldap2ad_user.srcService.filterId = 
(&(objectClass=inetOrgPerson)(|(uid={uid})(uid={samaccountname})))
lsc.tasks.ldap2ad_user.srcService.attrs = uid cn sn givenName

####
#### ldap2ad_user : Destination
####
lsc.tasks.ldap2ad_user.dstService = org.lsc.jndi.SimpleJndiDstService
lsc.tasks.ldap2ad_user.dstService.baseDn = ou=ADSKOLE
lsc.tasks.ldap2ad_user.dstService.filterAll = 
(&(sAMAccountName=*)(objectClass=user))
lsc.tasks.ldap2ad_user.dstService.pivotAttrs = samaccountname
lsc.tasks.ldap2ad_user.dstService.filterId = 
(&(objectClass=user)(|(sAMAccountName={uid})(sAMAccountName={samaccountname})))
lsc.tasks.ldap2ad_user.dstService.attrs = name displayName cn sn unicodePwd 
objectClass sAMAccountName userPrincipalName userAccountControl uid givenName
lsc.tasks.ldap2ad_user.bean = org.lsc.beans.SimpleBean
lsc.tasks.ldap2ad_user.dn = "CN=" + srcBean.getAttributeValueById("cn") + 
",OU=LSC"


dn.real_root = DC=domain1,DC=hr

lsc.syncoptions.ldap2ad_user = 
org.lsc.beans.syncoptions.PropertiesBasedSyncOptions
lsc.syncoptions.ldap2ad_user.default.action = K
lsc.syncoptions.ldap2ad_user.default.delimiter = $
lsc.syncoptions.ldap2ad_user.sn.action = F
lsc.syncoptions.ldap2ad_user.sn.force_value = 
srcBean.getAttributeValueById("sn")
lsc.syncoptions.ldap2ad_user.objectClass.action = F
lsc.syncoptions.ldap2ad_user.objectClass.create_value = 
"top"$"user"$"person"$"organizationalPerson"
lsc.syncoptions.ldap2ad_user.sAMAccountName.create_value = 
srcBean.getAttributeValueById("uid")
lsc.syncoptions.ldap2ad_user.uid.action = F
lsc.syncoptions.ldap2ad_user.uid.force_value = 
srcBean.getAttributeValueById("uid")
lsc.syncoptions.ldap2ad_user.userPrincipalName.create_value = 
srcBean.getAttributeValueById("uid") + "@domain1.hr"
lsc.syncoptions.ldap2ad_user.cn.action = F
lsc.syncoptions.ldap2ad_user.cn.force_value = 
srcBean.getAttributeValueById("cn")
lsc.syncoptions.ldap2ad_user.givenName.action = F
lsc.syncoptions.ldap2ad_user.givenName.force_value = 
srcBean.getAttributeValueById("givenName")
lsc.syncoptions.ldap2ad_user.name.action = F
lsc.syncoptions.ldap2ad_user.name.create_value = 
srcBean.getAttributeValueById("cn")
lsc.syncoptions.ldap2ad_user.DisplayName.action = F
lsc.syncoptions.ldap2ad_user.DisplayName.create_value = 
srcBean.getAttributeValueById("cn")
#lsc.syncoptions.ldap2ad_user.mail.action = F
#lsc.syncoptions.ldap2ad_user.mail.create_value = 
srcBean.getAttributeValueById("mail")
lsc.syncoptions.ldap2ad_user.userAccountControl.action = F
lsc.syncoptions.ldap2ad_user.userAccountControl.force_value = 
AD.userAccountControlSet( "0", [ AD.UAC_SET_DONT_EXPIRE_PASSWORD, 
AD.UAC_SET_NORMAL_ACCOUNT, AD.UAC_SET_PASSWD_CANT_CHANGE ])
lsc.syncoptions.ldap2ad_user.unicodePwd.create_value = 
AD.getUnicodePwd("Some.Passw0rd")

Regards,
Tomislav
_______________________________________________________________
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