I am trying to set up an LDAP (well, AD actually) to MySQL synchronization.
I've managed for the system to recognize missing entries and the
<create>-SQL-statement is successfully run. But I am having problems with
getting Update-on-Difference working.
My Table looks like this:
| uid | Tel_nr | Name | Vorname |
| herr | 2565 | Herrs | Alexander |
In my LDAP everything is the same but the sn attribute which is 'Herr'. So
there should actually be a difference of 'Herr' != 'Herrs', so it should call
the <update>-SQL-statement? Well it doesn't. Any ideas what I am doing wrong?
Here are the relevant code parts from my configuration:
Lsc.xml:
<task>
<name>LDAP-TelephoneDB</name>
<bean>org.lsc.beans.SimpleBean</bean>
<ldapSourceService>
<name>ldap-src</name>
<connection reference="ad-dst-conn" />
<baseDn>DC=basedn</baseDn>
<pivotAttributes>
<string>samaccountname</string>
</pivotAttributes>
<fetchedAttributes>
<string>uid</string>
<string>sn</string>
<string>givenname</string>
<string>telephonenumber</string>
</fetchedAttributes>
<getAllFilter><![CDATA[(&(objectClass=hsmNaturalPerson)(eduPersonAffiliation=*employee*))]]></getAllFilter>
<getOneFilter><![CDATA[(&(objectClass=hsmNaturalPerson)(samaccountname={samaccountname}))]]></getOneFilter>
<cleanFilter><![CDATA[(&(objectClass=hsmNaturalPersonPerson)(samaccountname={uid}))]]></cleanFilter>
</ldapSourceService>
<databaseDestinationService>
<name>db-dst-netadmin-tel</name>
<connection reference="tel-conn" />
<requestNameForList>getTelephoneNumberList</requestNameForList>
<requestNameForObject>getTelephoneUserByUID</requestNameForObject>
<requestsNameForInsert>
<string>insertNewTelephoneUser</string>
</requestsNameForInsert>
<requestsNameForUpdate>
<string>updateTelephoneUser</string>
</requestsNameForUpdate>
<requestsNameForDelete>
<string>deleteTelephoneUser</string>
</requestsNameForDelete>
</databaseDestinationService>
<propertiesBasedSyncOptions>
<mainIdentifier>srcBean.getMainIdentifier()</mainIdentifier>
<defaultDelimiter>;</defaultDelimiter>
<defaultPolicy>FORCE</defaultPolicy>
<conditions>
<create>false</create>
<update>true</update>
<delete>false</delete>
<changeId>false</changeId>
</conditions>
<dataset>
<name>uid</name>
<policy>FORCE</policy>
<forceValues>
<string>srcBean.getDatasetFirstValueById("uid")</string>
</forceValues>
</dataset>
<dataset>
<name>sn</name>
<policy>FORCE</policy>
<forceValues>
<string>srcBean.getDatasetFirstValueById("sn")</string>
</forceValues>
</dataset>
<dataset>
<name>givenname</name>
<policy>FORCE</policy>
<forceValues>
<string>srcBean.getDatasetFirstValueById("givenName")</string>
</forceValues>
</dataset>
</propertiesBasedSyncOptions>
</task>
TelephoneMySQL.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="TelephoneNumber">
<select id="getTelephoneUserByUID" resultClass="java.util.HashMap"
parameterClass="java.util.Map">
SELECT
uid as samaccountname,
uid as uid,
Name as sn,
Vorname as givenname,
Tel_nr as telephonenumber
FROM
Telefon_migration
WHERE
uid = #samaccountname#
</select>
<select id="getTelephoneNumberList" resultClass="java.util.HashMap">
SELECT
uid as samaccountname
FROM
Telefon_migration
WHERE
uid IS NOT NULL AND
Typ IN ('6867','6869','6873') AND
Name NOT IN
('Beratungsraum','Labor','Werkstatt','Notruftelefon','Brandmeldeanlage','Konferenztelefon','Campusradio','Information','Büro','Fachschaft','Fax')
</select>
<insert id="insertNewTelephoneUser" parameterClass="java.util.Map">
INSERT INTO Telefon_migration
(uid,Abteilung,Tech_id,Tel_nr,Name)
VALUES
( #uid#, 'XXXX', 'XXXX', #uid#, 'XXXX' )
</insert>
<update id="updateTelephoneUser" parameterClass="java.util.Map">
UPDATE Telefon_migration
SET Spalten2 = 'SUCCESS'
WHERE
uid = #samaccountname#
</update>
<delete id="deleteTelephoneUser" parameterClass="java.util.Map">
UPDATE Telefon_migration
SET uid = 'REMOVED',
SET Vorname = 'AUSGESCHIEDEN',
SET Name = 'AUSGESCHIEDEN'
WHERE
uid = #uid# AND
Typ IN ('6867',6869','6873') AND
Name NOT IN
('Beratungsraum','Labor','Werkstatt','Notruftelefon','Brandmeldeanlage','Konferenztelefon','Campusradio','Information','Büro','Fachschaft','Fax')
</delete>
</sqlMap>
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org
lsc-users mailing list
[email protected]
https://lists.lsc-project.org/cgi-bin/mailman/listinfo/lsc-users