Category Archives for "Solutions"

Migrating 85 million documents from Oracle 10g with no data loss—a process, not an anomaly

ImageSource has been successfully executing migrations, large and small, to and from content repositories since 1994. Recently, we completed a mammoth project for a global financial information services company in which we migrated 85 million documents from a deprecated Oracle 10g IPM system to ILINX Content Store in 9 months with 99.99995% accuracy. That’s zero loss of data, except a few hundred docs that were already corrupt in the source system!
The speed and accuracy of this project can be attributed to 3 important factors that made the content migration successful:

  1. We assembled a strong technical team.
    The team for this project consisted of an Oracle 10g technical subject matter expert, a seasoned PMP Project Manager with years of experience managing Oracle 10g migrations and a SQL database expert. This team provided all the expertise required to plan, execute and audit this size of migration.
  2. We used time-tested methodology from years of experience performing similar data migrations.
    Given the mission critical and high transaction volume nature of the legacy Oracle 10g system, maintaining business continuity was critical. A detailed Migration Plan was developed addressing all content to be migrated, associated requirements (e.g. retention of annotations, excluding content that had or would meet document retention\destruction requirements during the duration of the migration, etc.), and auditing requirements. A detailed audit and migration report was performed and delivered to provide an accounting for every single document in the source system.
  3. We utilized powerful, configurable technology.
    We leveraged multiple tools and techniques in the execution model (e.g. temporary migration environment that included replicated data, multiple instances of ILINX Export, etc.) to be able to complete the migration. By creating a temporary migration environment, we were able to leverage the power of ILINX Export, ILINX Import and a multi-instance model to perform the migration in record time. The numbers speak for themselves: 85M docs, 9 months, zero data loss.

We’ve used a similar services formula for migration execution large and small—your migration doesn’t have to be massive like the one mentioned above to give you great ROI. That, and the right software mix, will eliminate headaches from the equation the next time you have to migrate content.
If schedules or other factors outside your control don’t allow time for a full migration prior to going live with your new system, we have a feature in ILINX Content Store that will allow customers to turn off their normal end user access to your legacy system on day one of using the new system and still pull content from the legacy system through the ILINX interface, read more about that here. This enables significant benefits that include smarter resource allocation within your operating constraints and migration flexibility. Contact us for more information.

Gene Eckhart, PMP
Project Manager
ImageSource, Inc

Transferring ILINX Release Configurations When Upgrading

Starting with ILINX Capture v6, the Release configurations are stored within the ILINX database. In ILINX Capture v5x, the ILINX Release configurations were stored in XML files on a disk. ILINX Capture called ILINX Release using a SendAndReceivedReply IXM. The change to store the settings within the ILINX database is very useful for a number of reasons: Release settings are part of the batch profile allowing for simpler migrations between environments, Release is much easier to configure, all configurations are in the database, etc. However, this change can create some extra work when upgrading from ILINX Capture 5x to ILINX Capture 6x. Because of the different architecture, ILINX Release needs to be completely reconfigured for the existing batch profiles. In addition, the Release XML doesn’t change, but there is a shortcut that can be taken. After you have upgraded ILINX Capture to v6, you’ll notice a new IXM in the palette: ILINX Release IXM Icon

The existing ILINX workflow will likely have a SendAndReceiveReply IXM on the map that the 5x version of ILINX Capture used to call ILINX Release. Most likely, it would look like this:
SendAndReceiveReply_IXMTo configure ILINX Release for ILINX Capture 6x, the SendAndReceiveReply IXM will need to be removed from the map and a Release IXM must be dragged onto the workflow map in its place. Once the new Release IXM is on the map, it will need to be configured. This is where the shortcut can be taken. Instead of having to manually enter in the correct URLs, map the metadata values, and configure any other settings, do this:
Configure and save Release with some place holder settings: I normally leave the settings at default and enter in the bare minimum:

  • Job Name
  • User Name
  • Password
  • Batch Profile
  • Release Directory

Once ILINX Release configuration is saved and the workflow map is published, there will be a new entry in the ILINX Capture database Capture WorkflowAppSettings table. The CaptureWorkflowAppSettings.SettingsXML column is where the Release configuration is stored. Now it’s time to update the SettingsXML column with the XML from the ILINX Release 5x job settings file. The Release job should be on the ILINX Release 5.x server at c:ProgramDataImageSourceILINXReleaseSettingsJobs. The only caveat here is to be sure to place single quotes around the XML content. Here is what the SQL update statement would look like:

where settingsID = ‘APPROIATE ID HERE’

Following this procedure can save some time if upgrading an ILINX Capture 5x system that has a lot of batch profiles. A lot of the time spent on the upgrade could be in the ILINX Release configuration. If I was upgrading a system with only a few batch profiles, I would probably just reconfigure them. If I was upgrading a system with a lot of batch profiles, I would go through the above steps to save some time.

John Linehan
Sr. Systems Engineer
ImageSource, Inc.

Failover Cluster Troubleshooting

There’s nothing quite like logging in to a customer’s system first thing Monday morning only to be greeted with this:

Windows Powershell Cluster Report

I discovered this when I wasn’t able to log into the customer’s ILINX Capture implementation. The logged error (failure to locate the SQL Server) led me to take a look at the SQL Server’s configuration to confirm that its service was not running on either node of the cluster, and the error I got when trying to start that (a clustered resource could not be activated) led me to check on the clustered resources themselves.
Continue reading

Implementing SQL FILESTREAM Part II

Last month I wrote about enabling SQL FILESTREAM with ILINX Content Store. After discussing this with a few people, I think I should share some more information and reiterate a couple points.

For Existing Applications:
As I mentioned before, the decision to enable FILESTREAM should be done during the planning phase. If you perform this process on an application with a lot of content, it can be a very time costly endeavor with a big performance impact to the server. Also, after the move from BLOB to FILESTREAM, you could have a fragmented database. The BLOB to FILESTREAM process can definitely be done on an existing system, just be sure to plan accordingly and allow for sufficient time.

After step #10 of my previous blog post (all the data is copied and you have deleted the BLOB column), you will notice that the database file size hasn’t decreased. This is remedied easily enough be executing a DBCC CLEANTABLE command. The DBCC CLEANTABLE command will reclaim the space from the dropped variable length column. For example, if your database is named ILINX_CS and your application is named Sample Application, the query to do this is:

DBCC CLEANTABLE ('ILINX_CS','[dbo].[Sample Application]',10000)Continue reading

Registering DLLs in COM with WiX for creating an MSI installation package for a Kofax Custom Panel

I was working on a project recently for a customer that was upgrading their Kofax versions and making some enhancements to a custom Kofax panel that we had written for them some time ago. Like any good developer, I migrated the code for the custom panel to the latest version of Visual Studio I had, (in this case, Visual Studio 2012). I had finished development and was discussing installation when the customer requested an MSI package to install the custom panel. Unbeknownst to me, Visual Studio 2012 had dropped their support for the easy, drag and drop, built in set up and deployment project to create MSI’s.

In doing some research, I found many developers had migrated to using the open source WiX product to create MSI packages, ( One can download WiX and integrate it directly into Visual Studio. Everything was fairly straight forward on following their tutorials except for one snag: in order to get the custom Kofax panel to install correctly, I had to register the custom DLLs as COM Components, not in the GAC. After a lot of head scratching, I finally figured out that I could use Heat (one of the WiX tools) to create a registry file of the DLLs to include in my WiX set up project. You can find out more about Heat here: After the file was generated I was able to take the output of the Heat generated file and include it in my WiX install project to register the necessary DLLs. To do this, I followed these steps:Continue reading

1 2 3 17