Product: ImportOmatic
Published: 12/01/13
 This solution describes the relationship between IOM Validation Mode and RE7
Environment: All
Versions: and Higher


Validation Mode in ImportOmatic relies on the RE7 API's "Transactor" feature. This feature allows computer code to perform a series of changes and either make the all the changes stick (a "commit") or ignore all the changes and revert the database to make it like those changes never happened (a "roll back"). A good way to think of a transaction is an ATM (cash machine) withdrawal. When you make a withdrawal, the following steps occur:

  1. Verify account details
  2. Accept withdrawal request
  3. Check balance
  4. Reduce balance by withdrawal amount
  5. Dispense money

If the power went out on the ATM after step 4 but before step 5, you'd be pretty steamed if you got home and found that the bank had reduced your balance even though the money was never issued. Wrapping all those steps into a single "transaction" where they either all "commit" or all "roll back" is what prevents that from happening.

The transactor works great for us to make sure every import row either commits or, in the event that part of the row fails, rolls back. For instance, if the constituent is created successfully, but the gift on that row causes an error, the entire row is rolled back so we don't have a partial-row import.

We recently rolled out a "Validation Mode" in IOM that allows a user to roll back an entire import at the end if they are not satisfied with the results. Unfortunately, there is a known issue with the RE7 Transactor such that if a user opens a "full" constituent form during a transaction, it can lock other RE7 workstations until that transaction is committed. So, when we added Validation Mode as an option to IOM imports, we also changed IOM (when running in Validation Mode) to show a more limited constituent form ("ShowOKCancel") which lets you change many things on a constituent, but it does not show the gifts, relationships, action, membership, and events tabs, and it does not allow you to merge the constituent with another constituent.

However, after our release of Validation Mode we discovered another issue with the Transactor... If an import adds a new constituent during an import, even without showing a constituent form, this can also lock other RE7 workstations. So we are leaving the Validation Mode feature intact, but will be beefing up the warning when a user selects Validation Mode to be clear that they may not be very popular in the office unless they're running it at a time when no one else is using RE7.