Synchronization Collision

Synchronization collisions can occur when the same record is created, updated or deleted in both the Luminate Online and client system within the same time window. For example, the following scenario may occur:

  1. A regularly scheduled daily synchronization session occurs at 1 AM. Luminate Online database and donor database are now completely in sync.
  2. At 10 AM a constituent logs into Luminate Online and updates the e-mail address that is part of their online profile.
  3. At 11 AM a staff person at the organization's office logs into the donor database and updates the street address of the same constituent.
  4. The next regularly scheduled daily synchronization occurs at 1 AM that night. The middleware application extracts the updated record from the donor database and sends it to Luminate Online. Luminate Online Web Services receives the update message, but detects that the same record was modified in the Luminate Online database during the time window of the current synchronization session. To avoid any loss of data, the web service rejects the update and responds that a collision occurred.

When a collision like this occurs, the middleware application needs to report it for manual resolution. A collision resolution tool would ideally show the two related records (one from the client system and one from Luminate Online) side by side, and allow a staff person to choose which fields to retain from each one. Luminate Online Web Services provides a mechanism for forcing an update to the Luminate Online database (overriding collision detection) once the manual resolution process is complete.

Collision scenarios

The following scenarios will result in a record-level collision response from the server:

Insert duplicate collision

In this scenario, the web services client attempts to insert a record that appears to be a duplicate of an existing record in Luminate Online. The server examines several field values to detect a potential duplicate, and reports a different error code for each one:

Field Error Code Scenario
MEMBER_KEY DUPLICATE_MEMBER_KEY Client attempts to insert a constituent record with a member key that is associated with an existing constituent record.
EMAIL DUPLICATE_EMAIL Client attempts to insert a constituent record with an email that is associated with an existing constituent record.
USER_NAME DUPLICATE_USER_NAME Client attempts to insert a constituent record with an email that is associated with an existing constituent record.

A collision on CONS_ID is not possible on insert because the server automatically generates a new CONS_ID for each inserted record. The server simply ignores any CONS_ID that a client may include with records submitted for insertion.

A collision may occur with a constituent record that is in the "pending approval" state.

The time window for the active synchronization does not affect insert collisions, since member key, email and user name must all be unique across the entire site.

A conflict on insert is not possible if a deleted record exists with the same member key, email or user name. Uniqueness is only checked for non-removed constituents.

Update and delete collisions

The next general class of collisions is when both a client and the server or some other client update or remove (mark as deleted) a record within the same synchronization period. Consider this scenario:

  1. John Smith signs in to the MYORG site and updates his email address at 3:00 PM on April 8, 2008.
  2. A volunteer in the MYORG office updates John Smith's record in their offline donor database at 4:00 PM on the same day.
  3. At 3 AM that night, MYORG's integration server starts a new synchronization covering the previous day, from 12:00 AM on April 8 to 12:00 AM on April 9.
  4. The integration server submits an update request on John Smith's record.
  5. Luminate Online Web Services notices that John Smith's record has been modified by some other agent during the synchronization time frame.
  6. Luminate Online Web Services does not update the record, since that would overwrite John Smith's update of his email address.
  7. Luminate Online Web Services responds with a COLLISION error code.

Several permutations of this scenario are possible:

  1. Two web service clients update or remove the same record within the same time frame.
  2. A web service client updates a record and a Luminate Online admin removes the same record in the same time frame.
  3. A web service client removes a record and Luminate Online updates the same record in the same time frame.

In any of these cases, Luminate Online Web Services will refuse to modify the record because it would potentially overwrite the changes of another agent.

A web services client can force an update by setting the Force parameter to true in an update request.

Leave a Comment

Nickname
Comment
Enter this word: