Real-time synchronization?

Hi,

I need to write a module for near-real time synchronization of contacts, schedule, tasks etc. between Domino server and a home grown CRM server.

What technology choices are available for:

  • capturing changes on Domino server in near-real time

  • applying external changes to information in Domino server in near-real time

  • obtain snapshot of information from Domino server (thousands of items)

  • apply external snapshot to Domino server

My preferences would be Java and HTTP (WebDAV).

I’ll appreciate any pointers to the answers for these questions.

Thanks a lot,

Joseph.

Subject: Real-time synchronization?

I’ve started reading on the technology options for real-time synchronization and will appreciate any advice from professionals.

Thanks Thomas for suggestion to use a timestamp replication activity in Lotus Enterprise Integrator. I see the following issues with this approach:

  1. Replication activity cannot work in near-real time (which is our requirement); the best we could do is to use it in conjunction with a Polling activity on schedule.

  2. Replication activity scans full result sets from both connections. This is not scalable for large result sets. We would like to have scalable near-real time synchronization, thus we would prefer different mechanism (e.g. triggers, scraping transaction log etc.) that do not require full scan every time.

  3. It requires a connector to (our) external system. Existing Domino connectors (DB2, File, Notes, ODBC) are data-oriented, and our requirement is to do synchronization not in the database layer, but in the application layer. Thus we would be interested in a service-oriented connector (SOAP, CORBA, plain TCP or like), which are not available. I’ve seen in Lotus documentation references to “IBM Lotus Domino Connector Toolkit” but could not find it. Is there a way to write a custom connector?

From what I’ve learned so far, I see two potential approaches for near-real time synchronization from Domino to external system (one way):

  1. Use LEI virtual field activities. Since they recast on create, update and delete events on Notes documents, we could plug into them and send all changes to our system.
  • Is it a valid approach?

  • Will we get changes in all cases, whether they are done through Notes UI, Web UI or a server application?

  • Are these activities transactional? E.g. if create failed (say, because of security restrictions), will we still get it?

  • This approach also requires a connector to our system – the same issue as with replication activity.

  1. Use C API Extension Manager to register a callback function to receive all create, update and delete notification events. This callback function would do minimal processing and send notification to our system, which would query Domino server for details.

Which of these ways would you recommend? Are there any other ways to receive near-real time notification on Notes document changes?

I see many potential approaches to synchronize our changes to Domino. Our application is J2EE, thus we could easily use:

  1. Domino Java classes

  2. The Domino driver for JDBC

  3. WebDAV

What approach would be better to efficiently:

• Send small chunks of changes to Domino in near-real time

• Send large chunk of data (snapshot) to Domino

• Query Domino server for changes in particular documents (e.g. upon receiving notification from C API callback)

• Read large chunk of data (snapshot) from Domino

Any help is appreciated.

Thank you,

Joseph.

Subject: Real-time synchronization?

You mean two-way synchronization?

Subject: RE: Real-time synchronization?

Yes I do. Are there issues with this?

Subject: RE: Real-time synchronization?

I would try using a timestamp replication activity in Lotus Enterprise Integrator. Plain replication activities are one-way while timestamp activities are two-way.

Subject: RE: Real-time synchronization?

Thanks a lot Thomas, I’ll look into it.

Are there other options, like API?

About 8 years ago I was using Domino C API that would allow hooking into the Domino server processing inserts / updates / deletes. Is it still around? Does Domino have Java API? Does it support WebDAV?

Subject: RE: Real-time synchronization?

Yes, the C API is still there, as is the Java API, and Notes does support WebDAV.

Lotus Enterprise Integrator is discussed in the enterprise integration forum, eiforum.nsf.