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>(&amp;(objectClass=inetorgperson)(uid=*))</getAllFilter>

<getOneFilter>(&amp;(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

Reply via email to