On Fri, Mar 4, 2016 at 12:00 PM, <[email protected]>
wrote:

>
> Hi,
>
> you should be able to do all that you need in a single task. The problem
> may be with the pivotAttribute, which is used by LSC to know if the
> entry already exists in destination. If LSC tries to add existing
> entries, it means it did not find them. So try to search on this side.
>
> If you need more help, you will have to send your complete configuration
> (lsc.xml and iBatis files).
>
> --
> Cl?ment OUDOT
> Consultant en logiciels libres, Expert infrastructure et s?curit?
> Savoir-faire Linux
>

Hi Clement,

I'm not sure what is wrong if you could take a look, please.
I tried changing "mainIdentifier" tag value but it did not change the
outcome. I still get lsc trying to insert instead of update existing
records in the database.
I'm attaching lsc.xml, InsertOrgPerson.xml and customer_user.ddl.sql if you
could take a look and point me to what is wrong with this configuration.

Thank you,
Misel
<?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
			, u.login AS uid
			, u.pw AS userPassword
			, u.email AS primaryMail
			, u.title AS personalTitle
			, u.first_name AS cn
			, u.last_name AS sn
			, u.comments AS o
			, u.country AS c
			, (CASE u.valid_id WHEN 1 THEN 'TRUE' ELSE 'FALSE' END) AS userEnabled
		FROM customer_user AS u
		WHERE u.login = #login#
	</select>

	<insert id="insertInetOrgPerson" parameterClass="java.util.Map">
		INSERT INTO customer_user(
			  login
			, email
			, pw
			, customer_id
			, title
			, first_name
			, last_name
			, country
			, comments
			, valid_id
			, create_time
			, create_by
			, change_time
			, change_by
		)
		VALUES(
			  #login#
			, #email#
			, ''
			, 'ELU_UNASSIGNED' 
			, #title#
			, #first_name#
			, #last_name#
			, #country#
			, #comments#
			, (CASE #valid_id# WHEN 'TRUE' THEN 1 ELSE 3 END)
			, NOW()
			, 1
			, NOW()
			, 1
		)
	</insert>

	<update id="updateInetOrgPerson" parameterClass="java.util.Map">
		UPDATE customer_user AS u
		SET
			  u.first_name = #first_name#
			, u.last_name = #last_name#
			, u.title = #title#
			, u.email = #email#
			, u.change_time = NOW()
			, u.change_by = 1
		WHERE u.login = #login#
	</update>

	<update id="deleteInetOrgPerson" parameterClass="java.util.Map">
		UPDATE customer_user AS u
		SET
			  u.change_time = NOW()
			, u.change_by = 1
			, valid_id = 3
		WHERE u.login = #login#
	</update>

	<select id="getInetOrgPersonList" resultClass="java.util.HashMap">
		SELECT u.login AS uid
		FROM customer_user AS u
	</select>

<!--	<resultMap id="InetOrgPersonResult" class="InetOrgPerson">
	  <result property="sn" column="last_name"/>
	  <result property="cn" column="first_name"/>
	  <result property="uid" column="uname"/>
	  <result property="personalTitle" column="title"/>
	  <result property="mail" column="mail"/>
	</resultMap> -->
</sqlMap>
<?xml version="1.0" ?>
<lsc xmlns="http://lsc-project.org/XSD/lsc-core-2.1.xsd"; revision="0">
 
  <connections>
    <databaseConnection>
      <name>mysql-dst-conn</name>
<!--      <url><![CDATA[jdbc:mysql://localhost:3306/test1]]></url>
      <username>testuser</username>
      <password>testuser123</password> -->
      <url><![CDATA[jdbc:mysql://localhost:3306/otrs]]></url>
      <username>otrs</username>
      <password>GMsOOjkkvWKv8ZV7</password>
      <driver>com.mysql.jdbc.Driver</driver>
    </databaseConnection>
 
    <ldapConnection>
      <name>ldap-src-conn</name>
      <url>ldaps://ldap.emergency.lu:636/ou=users,ou=people,dc=emergency,dc=lu</url>
      <username>cn=ses-read,ou=ldapAccess,dc=emergency,dc=lu</username>
      <password>RlsOVSYFocqMGnMKTdh2</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>
  </connections>

<!--  <audits>
	<csvAudit>
		<name>csv</name>
		<append>true</append>
		<operations>create, update</operations>
		<file>/tmp/dump.csv</file>
		<datasets>login, email</datasets>
		<separator>,</separator>
	</csvAudit>
  </audits> -->

  <tasks>
    <task>
      <name>HitecLDAPSyncTask</name>
      <bean>org.lsc.beans.SimpleBean</bean>
      <ldapSourceService>
        <name>ldap-src-service</name>
        <connection reference="ldap-src-conn" />
        <baseDn>ou=users,ou=people,dc=emergency,dc=lu</baseDn>
        <pivotAttributes>
          <string>uid</string>
        </pivotAttributes>
        <fetchedAttributes>
          <string>uid</string>
          <string>primaryMail</string>
          <string>personalTitle</string>
          <string>cn</string>
          <string>sn</string>
          <string>o</string>
          <string>c</string>
          <string>userEnabled</string>
          <string>userPassword</string>
          <string>objectClass</string>
        </fetchedAttributes>
        <getAllFilter><![CDATA[(&(objectClass=inetOrgPerson)(uid=*))]]></getAllFilter>
        <getOneFilter><![CDATA[(&(objectClass=inetOrgPerson)(uid={uid}))]]></getOneFilter>
        <cleanFilter><![CDATA[(&(objectClass=inetOrgPerson)(uid={uid}))]]></cleanFilter>
      </ldapSourceService>
      <databaseDestinationService>
        <name>mysql-dst-service</name>
        <connection reference="mysql-dst-conn" />
       	<requestNameForList>getInetOrgPersonList</requestNameForList>
       	<requestNameForObject>getInetOrgPerson</requestNameForObject>
       	<requestsNameForInsert><string>insertInetOrgPerson</string></requestsNameForInsert>
       	<requestsNameForUpdate><string>updateInetOrgPerson</string></requestsNameForUpdate>
       	<requestsNameForDelete><string>deleteInetOrgPerson</string></requestsNameForDelete>
      </databaseDestinationService>
      <propertiesBasedSyncOptions>
<!--        <mainIdentifier>"uid=" + srcBean.getDatasetFirstValueById("uid") + ",ou=users,ou=people,dc=emergency,dc=lu"</mainIdentifier> -->
        <mainIdentifier>srcBean.getDatasetFirstValueById("uid")</mainIdentifier>
        <defaultDelimiter>;</defaultDelimiter>
        <defaultPolicy>MERGE</defaultPolicy>
        <conditions>
       	  <changeId>false</changeId>
        </conditions>
        <dataset>
          <name>login</name>
          <defaultValues></defaultValues>
          <forceValues></forceValues>
          <createValues>
            <string>srcBean.getDatasetFirstValueById("uid")</string>
          </createValues>
        </dataset>
        <dataset>
          <name>email</name>
          <defaultValues>
          </defaultValues>
          <forceValues></forceValues>
          <createValues>
	    <string>srcBean.getDatasetFirstValueById("primaryMail")</string>
	  </createValues>
        </dataset>
        <dataset>
          <name>title</name>
          <defaultValues>
            <string>""</string>
          </defaultValues>
          <createValues>
            <string>srcBean.getDatasetFirstValueById("personalTitle")</string>
          </createValues>
        </dataset>
        <dataset>
          <name>first_name</name>
          <defaultValues>
            <string>""</string>
          </defaultValues>
          <createValues>
            <string>srcBean.getDatasetFirstValueById("cn")</string>
          </createValues>
        </dataset>
        <dataset>
          <name>last_name</name>
          <defaultValues>
            <string>""</string>
          </defaultValues>
          <createValues>
            <string>srcBean.getDatasetFirstValueById("sn")</string>
          </createValues>
        </dataset>
        <dataset>
          <name>comments</name>
          <defaultValues></defaultValues>
          <forceValues></forceValues>
          <createValues>
	    <string>srcBean.getDatasetById("o")</string>
	  </createValues>
        </dataset>
        <dataset>
          <name>country</name>
          <defaultValues></defaultValues>
          <forceValues></forceValues>
          <createValues>
	    <string>srcBean.getDatasetFirstValueById("c")</string>
	  </createValues>
        </dataset>
        <dataset>
          <name>valid_id</name>
          <defaultValues></defaultValues>
          <forceValues></forceValues>
          <createValues>
	    <string>srcBean.getDatasetFirstValueById("userEnabled")</string>
	  </createValues>
        </dataset>
      </propertiesBasedSyncOptions>
    </task>
  </tasks>
</lsc>

Attachment: customer_user.ddl.sql
Description: application/sql

_______________________________________________________________
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