Frequently Asked Questions (FAQ)

Am I authorized to reuse the LSC project to sell my product?

Of course: you can use it, implement synchronization processes and distribute it on your own. You can even build proprietary plugins but if you improve the main existing code (create some new shared functionalities, add transaction support, …), you are strongly encouraged to share it with us! :)

It does not work. What can I do?

Lots of configuration is done in the lsc.xml configuration file. So check it first!

If the problem seems to come from the core LSC archive, check against the bugs already reported at the following URL: https://github.com/lsc-project/ and on the mailing lists (even if at this time, there's not many posts!). If you don't find an answer, try to reproduce your problem with a simple synchronization task and simple data and submit a new issue providing the most accurate information you can :).

How do I generate some attribute values?

There are different ways of doing such manipulations :

  1. using SyncOptions in lsc.properties
  2. directly through extended SQL requests (stored procedures, …)

What synchronization models / object types are supported?

At this time, the Ldap Synchronization Connector is able to map :

  1. a flat branch of, for example, person entries,
  2. a structured tree of, for example, an organizational unit,
  3. links between trees and people to manage, for example, activities.

What is the standard database to directory synchronization process?

The Ldap Synchronization Connector will perform synchronizations in the following ways:

  1. for each database object id, get the flat object (mono-valued) by id
  2. fill the full object (multi-valued)
  3. use the corresponding object to get a JDBC bean instance
  4. use the corresponding Jndi Service to get a JNDI bean instance from the JDBC DN
  5. compare the two beans and get a list of modifications
  6. apply each modification to the directory

The Ldap Synchronization Connector will perform datasource cleaning in the following ways:

  1. foreach directory object id, get the flat database object by id
  2. if the flat database object exists, leave the directory object as it is. If not, try to remove it !

Where can I personalize the connector?

Almost everywhere : you can unplug the standard engine:

  1. at the top level directly by copying and modifying the AbstractSynchronize.synchronize() or AbstractSynchronize.dataSourceClean() methods
  2. in the JDBC service to change the way objects are listed and retrieved from the database. It may be useful to reorganize SQL records in the correct order to manage the right precedence according the directory tree
  3. in the JNDI service in order to manage special entries or synchronization (selecting LDAP schema, updating general values, …
  4. in the object beans to change the directory attributes values or mapping from POJO, or the DN generation algorithm.

We are going to develop on top of your component, what guarantees are there that is will remain stable?

The Ldap Synchronization Connector will be stable between major versions. The following stuff will be smoothly upgraded (not deprecated and stopped in two minor releases):

  1. all interfaces
  2. the bean ideas and the method names get*, set*, map*, generateDn, …

Are transactions supported?

Yes and no :

  1. transactions are implied because single entries are modified in a single LDAP modify operation,
  2. transactions are not available in all directories so different entries are modified in different operations which can fail without any guarantee of consistency,
  3. transactions are supported on database destination on a per-entry basis.

Why use iBatis and not Hibernate or JPA?

This is simply because in well populated environments, running time is very important. And it appears that a lightweight engine like iBatis is the fastest we can use: http://javajmc.blogspot.com/2007/02/is-ibatis-really-over-twice-as-fast-as.html

While lauching Maven, OpenDS does not listen to 33389 port. Why ?

This is probably because your network settings are not correct. Try ping your own hostname with “ping `hostname`”. If it does not answer or if the IP tested is not correct, check your /etc/hosts or %WINNT%\System32\drivers\etc\hosts file.

What relations are there between the LSC project and Linagora?

Despite the fact that part of the initial work was done during projects for Linagora's clients, the LSC project is now independent from the company. Most of the developers and contributors used to work previously for Linagora but are now contributing to the LSC project during their personal time. However it is clear that the project would never have begun without Linagora and its customers, and so thanks to them!