Always in Sync
A Deep Dive into Novell Data Synchronizer
Written by Ken Baker
As you read in the June issue of Novell Connection Magazine (See Higher Levels of Collaboration), Novell Data Synchronizer keeps applications and mobile devices constantly in sync so users can always have access to the data they need. That article talked about the product’s mobility pack, its many-to-many synchronize engine and how to configure connectors. This article takes a deeper technical dive into the way connectors facilitate synchronization, as well as a few other supporting architectural elements.
Written to application-specific or standard APIs, the connectors enable Data Synchronizer to understand how and what needs to be done with data to be synchronized.
Synchronization Channels and Filters
The majority of the intelligence in Novell Data Synchronizer resides in its connectors. Written to application-specific or standard APIs, the connectors enable Data Synchronizer to understand how and what needs to be done with data to be synchronized. For example, the SharePoint connector uses the SharePoint Web Services API to access data and push it through the system. The Salesforce.com connector uses the Salesforce.com Web services API. Similarly, the GroupWise connector utilizes the SOAP interface to synchronize e-mail, tasks, calendar data and contact information. The use of standard or native APIs allows each connector to be built specifically for its target application.
Each connector in Novell Data Synchronizer is comprised of two main components: channels and filters. Channels conduct the flow of data from the synchronization engine through the connectors to the connected systems. Filters act upon the data—translating and manipulating the data in a prescribed manner.
At a very high level, channels and filters work together in the following fashion:
- As data moves through the Novell Data Synchronizer channels between two or more applications, the Novell Data Synchronizer connectors act as code converters and data filters.
- The data flows through the Novell Data Synchronizer system in the form of XML files that are either in an application-specific format or an application-neutral format.
- As data moves from the application toward the synchronization engine, it will initially be in an application-specific XML file format.
- As the application-specific XML file travels through the channel, the connector filter will translate the XML file into an application-neutral format.
- After it’s translated into an application-neutral format, the XML file is stored in the synchronization engine database.
- The application-neutral XML files stored in the synchronization engine database can be consumed by different application-specific connectors (i.e., GroupWise, SugarCRM, Sharepoint, Salesforce.com), which in turn can translate them into the appropriate application-specific format as they transfer them to their associated application.
If you're using Novell identity and security products, you’ll likely recognize that this design is very similar to that of Novell Identity Manager. While Novell Identity Manager synchronizes identities from different sources and targets, Novell Data Synchronizer synchronizes data in a similar fashion. These similarities are perhaps most notable in the use of a two-channel system with a source channel for outgoing events and a SINK channel for incoming events. In Novell Data Synchronizer, these channels exist in both the synchronization engine and the individual connectors.
The source channel in the synchronization engine is responsible for taking item or event data from its cache and passing it to the connector. After the connector translates the data into the appropriate application-specific format, the connector’s SINK channel will pass that information to the application. For data coming from an application to the engine, the connector’s source channel has responsibility for taking data from the application, while the engine’s SINK channel will place the application-neutral formatted data into its cache.
In addition to determining what data types are synchronized, filters have responsibility for managing the synchronization of changes that occur to data items within a connected application, system or device.
How to Synchronize
In addition to having translation filters, connectors have synchronization filters. Depending on application needs and purpose, each application will have different types of data that it will allow to be synchronized. Some of the common data types (referred to as data items) include e-mail messages, appointments, tasks, notes, address books, contacts and folders. Connectors will not necessarily support all the same types of data items. In other words, data item synchronization will vary based on the functionality and needs of the application.
In addition to determining what data types are synchronized, filters have responsibility for managing the synchronization of changes that occur to data items within a connected application, system or device. These changes (known as events) might be represented by actions such as an item addition, modification, move or deletion.
As data items and events pass through a connector, various filters applied to the data determine what and how the data is synchronized. Depending on the connector design, you can often use filters to determine which data items and events you want to synchronize.
Not only can you use filters to screen for certain content or fields, but you can use them to transform one data type into another data type, such as turning task data into e-mail data. Filter behavior can also be modified based on certain triggers. For example, you can have a trigger that causes a filter to treat a data item differently based on where that data was originally stored on the source application.
You configure a connector’s filters through the Novell Data Synchronizer Web Admin console. For example, for the GroupWise connector you can choose from a list of add, modify, move and delete events that it will synchronize. (See Figure 1.)