Hi LSC Community, I try to synchronize users from Postgresql to OpenDJ. I use two tables to get info for user. I've just a problem with users who have multi values OU. Example: DB_USERS: cn=usr1 cn=usr2
DB_OU, cn=usr1,ou=Dept (OK for one OU) cn=usr2,ou=Mrkt cn=usr2,ou=Empl (Dont work more than one OU *My lsc.xml:* <?xml version="1.0" ?> <!--<lsc xmlns="http://lsc-project.org/XSD/lsc-core-2.1.xsd" revision="0">--> <lsc xmlns="http://lsc-project.org/XSD/lsc-core-2.0.xsd" id="1" revision="0"> <connections> <ldapConnection> <name>ldap-src-conn</name> <url>ldap://127.0.0.1:389/dc=lsc-project,dc=org</url> <username>cn=Manager</username> <password>secret</password> <authentication>SIMPLE</authentication> <referral>IGNORE</referral> <derefAliases>NEVER</derefAliases> <version>VERSION_3</version> <pageSize>-1</pageSize> <factory>com.sun.jndi.ldap.LdapCtxFactory</factory> <tlsActivated>false</tlsActivated> </ldapConnection> <databaseConnection> <name>jdbc-dst-conn</name> <url>jdbc:postgresql://127.0.0.1:5432/users</url> <username>admin</username> <password>password</password> <driver>org.postgresql.Driver</driver> </databaseConnection> </connections> <tasks> <task> <name>Users</name> <bean>org.lsc.beans.SimpleBean</bean> <databaseSourceService> <name>postgresql-src-service</name> <connection reference="jdbc-dst-conn" /> <requestNameForList>getInetOrgPersonList</requestNameForList> <requestNameForObject>getInetOrgPerson</requestNameForObject> <requestNameForNextId>getNextInetOrgPersonId</requestNameForNextId> </databaseSourceService> <ldapDestinationService> <name>openldap-source-service</name> <connection reference="ldap-src-conn" /> <baseDn>ou=Sample,dc=lsc-project,dc=org</baseDn> <pivotAttributes> <string>ou</string> </pivotAttributes> <fetchedAttributes> <string>objectClass</string> <string>uid</string> <string>cn</string> <string>sn</string> <string>ou</string> </fetchedAttributes> <getAllFilter>(&(objectClass=inetorgperson)(uid=*))</getAllFilter> <getOneFilter>(&(objectClass=inetorgperson)(uid={uid}))</getOneFilter> </ldapDestinationService> <propertiesBasedSyncOptions> <mainIdentifier>"uid="+srcBean.getDatasetFirstValueById("uid") + ",ou=Sample,dc=lsc-project,dc=org"</mainIdentifier> <defaultDelimiter>;</defaultDelimiter> <defaultPolicy>MERGE</defaultPolicy> <conditions> <changeId>false</changeId> </conditions> </propertiesBasedSyncOptions> </task> </tasks> </lsc> *My InetOrgPerson.xml:* <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" " http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="InetOrgPerson"> <select id="getInetOrgPerson" resultClass="java.util.HashMap" parameterClass="java.util.Map"> SELECT 'inetOrgPerson' objectClass, keycn, cn as uid, cn as cn, cn as sn, appl as ou FROM DB_USR JOIN DB_OU USING (keycn) WHERE keycn = #keycn# and cn = #cn# and appl = #appl# </select> <insert id="insertInetOrgPerson" parameterClass="java.util.Map"> INSERT INTO DB_USR ( uid, cn, sn, ou) VALUES ( #uid#, #cn#, #sn#, #ou# ) JOIN DB_OU USING (keycn) </insert> <update id="updateInetOrgPerson" parameterClass="java.util.Map"> UPDATE DB_USR SET uid = #uid#, cn = #cn#, sn = #sn#, ou = #ou# JOIN DB_OU USING (keycn) </update> <delete id="deleteInetOrgPerson" parameterClass="java.util.Map"> DELETE FROM DB_USR WHERE keycn = #keycn# </delete> <select id="getInetOrgPersonList" resultClass="java.util.HashMap"> SELECT keycn, cn, appl FROM DB_USR JOIN DB_OU USING (keycn) </select> <select id="getNextInetOrgPersonId" resultClass="java.util.HashMap"> SELECT keycn FROM DB_USR ORDER by keycn DESC LIMIT 1 </select> </sqlMap> Whats wrong on my config ? Thanks in advance -- Paq
_______________________________________________________________ Ldap Synchronization Connector (LSC) - http://lsc-project.org lsc-users mailing list [email protected] http://lists.lsc-project.org/listinfo/lsc-users

