Testing, Testing, and More Testing….

You have spent a lot of time and effort to Design and Implement a system for the capture and processing of paper and electronic documents.  You have performed testing to insure the implementation works as designed.  Now comes the intricate part of BETA testing by selected End Users to verify the system works as designed and more importantly, performs the tasks the End Users need.

Continue reading

Slowing Down?

For those of you with Enterprise Content Management systems, you know that a lot (if not all) of your data is stored in a database.  A lot of times, performance issues are not a result of your Content Management system itself, rather your database is not tuned properly.

Continue reading

Kofax KTM Dictionary Gotcha on Dates

In KTM there is a nifty feature to search the entire document for a date field. It will recognize all dates existing on the form and with some other snazzy logic you can find the date you are looking for. If it is nearby the word “recieved”, then you probably have a recieve date. Easy, right?

Okay, sometimes dates get a little more tricky. “3/17/2011“, “3-17-20011” and “MAR 17, 2001” are all valid date strings. Any of those formats could be found on your document. In KTM there is a nifty feature to search for the string “MAR” and replace it with a “3” when searching for dates. You use it in your locator’s regular expression. You can setup your own dictionary of months to look for “March” or “Mar” (or “Marzo” if you need internationalization).

Here’s the gotcha. I recently found text in an OCR’d document like this: “19 NOV2008“. It’s a bit of an odd string. The OCR engine didn’t think there was enough space between the “NOV” and the “2008” to put an actual space character in the ORC’d text. So, I can read it, but KTM can’t. The nifty feature to search for the string “NOV” fails because it is only looking at whole words, those with whitespace on either side. Unfortunately, there is no option in the KTM dictionary setup to change this.

Here’s the fix. Modify the default KTM regular expression from this:

[0-3]?\d§English_Months_Abr§([12]\d{3}|\d{2})

to this:

[0-3]?\d\s*(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\s*[0-3]?\d

You can now make the space character optional in your regular expression search. You are no longer using the month dictionary, but that’s okay. This logic is only to locate a date, not translate it from a string to a date when found.

Problem solved.

 

ILINX Capture Custom Weblookup

This example demonstrates how to use a .Net Web Service WebLookup in the ILINX Capture Client.  The sample C# project can be downloaded at http://downloads.ilinxcapture.com/samples/ilinxweblookupsample.zip. You will need to create an ILINX Document Type with at least the following three fields.

  • Client Account Number
  • Document Type
  • Sub Type

This example only returns the following XML String to ILINX Capture to populate the 3 index values.  The XML string is in the same format that was provided to us from the ProcessXML Function parameter IndexXML.  The Value node of the XML is the index data that is then populated in the web client.  This data can be manipulated in many ways before returning to the calling ILINX Capture Web Client.

<ILINX><IndexList><Index><Name>Client Account Number</Name><Label>Client Account Number</Label><ReadOnly>0</ReadOnly><Visible>1</Visible><Value>Client Account Number</Value></Index><Index><Name>Document Type</Name><Label>Document Type</Label><ReadOnly>0</ReadOnly><Visible>1</Visible><Value>Document Type</Value></Index><Index><Name>Sub Type</Name><Label>Sub Type</Label><ReadOnly>0</ReadOnly><Visible>1</Visible><Value>Sub Type</Value></Index></IndexList></ILINX> 

To use the web service it must be published to an IIS Web Server.  Once published to the web server you must access the web service and generate a WSDL file.

1.       Navigate to the new Web Service ASMX file, for example: http://lptbryan/ilinxweblookupsample/ilinxweblookupsample.asmx?wsdl

2.       Save this file to the C:\inetpub\ILINX\QXServices or equivalent in your environment as the filename.WSDL, for example ilinxweblookupsample.WSDL

3.       Open the newly created file with a text editor like notepad and modify the ProcessXMLResponse section.  Chagne ProcessXMLResult to Result.

Original WSDL File

Continue reading

Using C#.NET with the Kofax KTM Validation Module

Introduction

My current project has a requirement to do several Oracle EBS validations and lookups from the Kofax KTM validation window. For example, one requirement is to present the validator with a list of Suppliers. Another is to check for a duplicate invoice number in EBS. I can easily add additional methods as needed.

Kofax KTM provides Win Basic scripting language that can accomplish some of this, but it’s difficult to use compared to modern programming languages. After a little research I discovered it was feasible to create and call methods in a COM object from KTM Win Basic. This meant I could expose a C#.NET dll via COM Interop but have all the power of any version of the .NET framework and Microsoft Visual Studio available to do the heavy lifting.

My C# methods return either arrays or booleans back to KTM where I then use the Win Basic language to present results to the validation user. I can debug my C# code by attaching to the KTM Project Builder exe while running validation tests.

Setting up the C# Class

The first step is to create a project in Visual Studio and set up a class to contain the methods you will call in KTM. The prefered method is to use interfaces in case you need to change the methods without breaking the inferface. Here is an example. Continue reading

Lighten your LiquidOffice Development Load

If you are developing forms in LiquidOffice, chances are form owners have asked you to include drop lists to ensure data integrity in your backend database or repository.  And just as likely they have asked for drop list value changes AFTER the form has been published. Or sometimes there is a business need to accommodate frequent drop list value changes. In many cases it is advantageous to allow users to make the drop list value changes themselves.   One approach is to use a LiquidOffice drop list maintenance form, and restrict access to this form to the appropriate power users. Whenever the need for a change arises the maintenance form is available.

To get started, create a database to house the drop list values.  Each field in the table will correspond to a drop list on your form.  Populate these fields with the initial values the form owner has provided.

Next, create a connect agent to your database.  In LiquidOffice Management Console, highlight the Connect Agent icon then select File/ Add.  The wizard walks you through steps where you name the connect agent and the type (SQL DataBase Read/Write in my case). Select a JDBC driver and modify the JDBC URL to reflect your hostname and database name.  Provide credentials, select ‘LookUp Only’, and you are done.

When designing your form’s drop list, go into the properties to select Control type: drop list and List source: dynamic (from database).  You can then select the connect agent, table and column and you are set.  If you want the display column to be different than the storage column, click Storage Column and select another column from the drop list. An example: Display = “Arizona”,  Storage =”AZ”.   Remember you must publish the form to confirm the drop list is correctly populated.

Now create another LiquidOffice form to perform maintenance on the drop-list table.  Continue reading

Public Access to Records in Oracle UCM Can Make Web Sites Vulnerable

I was recently surprised to find a lot of companies running Oracle UCM systems that were exposed in a way that someone could hijack the website. We were looking for documents related to generic properties forms on the internet and quickly found 4 large government and corporate companies with systems left wide open with material relating to their websites. We logged on as a guest user and we could have deleted the web content or checked out the content and checked in new content giving us control of what is on their websites. I was able to get the emails of the contributors from the system and emailed them to let them know that they need to lock down their site. It was interesting that I never got a response from any of the people and that the web sites are still exposed. When mixing critical business content and public access you can’t take security and rights issues lightly. In this case, a simple checkbox can make the difference between fast access to important ECM records and becoming a victim of HTML theft.