ECM Queue Management

Hi folks, it has been too long!

Well enough with the chitchat, so as some readers might know we have implemented an ECM solution for our accounts payable process. I like to call this our personal ECM cloud. Most recently this has rolled out to our remote locations. So, what has this system gained us?

At first blush, many will often assume that the savings to be gained with imaging\ECM are in storage costs…. WRONG! If you ever implement a system to save on storage, you are doing it wrong!

One of the coolest things we are able to do is see what invoices are piling up on someones ‘virtual desk’  (This of course does rely on timely scanning into the system)

Using some Qlikview *’Magic*, we are to display the total invoices in the system by plant and analyze which are late ( in the queue longer than 7 days, adjustable by a slider) shown as red. Then we can click into a location, let’s pick on Chehalis.

Looking at this tab we can see there is one invoice that is late in the Plant Mgr. Review 1 queue, so lets click on that one and go to the Image Tab

So there is the image of our tardy invoice, hmm entered into the system on the 9th hmm why hasn’t this been approved yet? Let’s go talk to that manager.

In conjunction with the queue management Qlikview, we have also created some *minion’s* i.e. little automated tasks that look at the queues and if they get too large, or too tardy, email the offending person(s).

Another benefit that we have gained is the ability to spread out the load of data entry among many users. Typically, the AP person would have to memorize (or look up) thousands of different vendor numbers. Now, each individual can learn their 10-25 vendor numbers and enter them in, saving the AP person from having to do it. In addition, we added a quick look-up of the vendor name and address so the manager can double check they have the right vendor number.

Since the process is digital, a manager is able to approve invoices from wherever they are able to get a VPN connection. That also goes for pulling up paid invoices too, of course.

Did I mention that it scales well, instead of just one person processing invoices it could be 10, or 100.

At the low end of the spectrum, yes we do save on storage costs, postage, and no longer having to file the invoices away.

Rapid ECM, Up & Running in two hours (AKA our personal ECM ‘cloud’)

The stack goes like this.

Storage:                       EqualLogic PS6500 35TB
Processing:              IBM 3850 M2 64GB RAM
Virtualization:      VMWARE ESX
OS:                                  Server 2008 R2
Database:                  SQL Server 2008
Capture:                    iLinx Capture
Store:                          iLinx Content Store
Access:                      Terminal Services + Internet Explorer 8

Or in pictorial form:

Storage : I love our EqualLogic. They are simplicity and ease of use defined. Poetry in motion. A couple of clicks and create a new volume of virtualized storage for our virtual ECM box. Need more space, buy a new array and add it to the pool. Plus you get added IO’s when you add an array, no wonder they won a 2011 Infoworld best storage system award for the third year running

Virtualization: VMware, AKA ‘the good stuff’ really, how did we live before virtualization? So, right click and deploy from template the Server 2008 box with SQL 2008.

Software: Install iLinx Capture & iLinx Content Store. Both programs install quickly and easily

*****     *****

OK, now that our base is installed let’s go over what we want to accomplish. We have a purchase order acknowledgement that is coming in through email as a .tif. We want to store this image and be able to retrieve it based on the Purchase Order, the Vendor Name, and the Vendor Confirmation #, we also want to record the Purchase Order date and populate the ERP with it.

So off we go to configure capture. So create a blank PO Confirmation Batch and a blank PO Confirmation Document. The Batch will be super simple, basically take any document and assemble it into a PO Confirmation Document. (Set the Default Doc Type to PO Confirmation) That will look like this


Ok, so now we have to configure the PO Confirmation Document. We will add our four data entry fields. And to aid in getting exact metadata to populate content store lets do a lookup of the Vendor name using the PO number.

To configure the Lookup, Edit the PO Number Field Name and then check the check box, this will run you through a wizard and at the end you can paste in what ever SQL statement you desire.

Capture has its own format for using a field for a lookup (Notice the Carrots ^ ^) and then if you match an existing Field using a select x AS y statement it will populate it with the data returned. So now if a user types in a PO number and then tabs out of the field it will populate it with returned Vendor Name! Pretty Slick.

So next, create a Queue for these confirmations to sit in and then give access to the users who are going to process them. The configure an Export QSX to output to a folder for iLinx Content Store to import into.

So, activate our route and make sure all of the security settings are correct (giving access to the Batch, the Document and the QUEUE)

So now configure your ‘polling folder’ I wrote how to do that here

Ok, so now all our user has to do is drop the .tif into the polling folder and Capture will bring it in and then the user indexes it. Their screen will look something like this (we have them access it through a terminal server) :


When the user hits complete it will export the image and the metadata. So now let’s configure a new Content Store repository for this image and metadata to live in.

Log onto content store as an admin, click the Create/Edit Applications and then press the Add button. Give your Application a name, and then start creating your data fields

Make your data types and Lengths appropriate for you application. In my case I used a Picklist of ‘Value In Adage’ with a Yes\No so that after the confirmation is inserted into Adage (Our ERP) I would flip it to a Yes to indicate completion.

Now that our fields are setup, we need to configure the import task. So Click on Options, Import Multiple Documents, And the Add. Give the Job a Name, Import Source and a Target. For the template file select the .txt of the previously created output file (which contains the metadata) and then use the drop downs to Map from Content Store to ILINXCapture. You will also set the import, archive and export folder.

It will look like this:

So now when the Import Service runs it will bring in the image and the metadata into content store. This is what it looks like

Then I wrote a quick bit of VB to take the confirmation that was in content store and insert it into our ERP signifying that the PO confirmation had been received, and then mark it as done.

So there you have it, a very Rapid ECM implementation. In fact I think it was up and running quicker then it took to write this blog post.

Another post that shows similar screens to mine is this one I wanted to show what had to happen behind the scenes to make a system like this work!

Implementing iLinx Capture

As I mentioned in a previous post, we have had the fun of playing with the software ” Lego’s ” that makes up a large portion of iLinx Capture. At the heart of the matter you have the ILINX Server. This is a nice scalable service which allows you to process your image files.

The Hierarchy goes something like this. Configure an Input Source: an input source monitors a directory and upon finding a matching file type will pass that on to the assigned Batch. The Input Sources are configured after clicking on a server group, and then a corresponding server.

In order to assign a Batch though, you need to have added the batch to your ‘Profiles’ (On the right)

To configure the import just set a Polling Folder, Archive Folder, and Exception Folder. Then use the familiar *.tif wildcard and assign these incoming images to the AP Batch.

Now that the formalities of getting images in has been taken care of, what next? Pull out your Lego’s cause this is where you can go crazy 🙂 Under Batch Profiles, you can configure what will next happen to your image. In my next post I will delve in deeper for how we ended up configuring this. But at a conceptual level, after experimenting with various methods of separating out our invoices we decided to go with barcode separator sheets. From simplest to most complex some of the options are

1) Have a button assigned to each route, and press a button to scan each separate ‘document’ – The most simple approach possible, negating the need for any type of separator sheet. Cons: This can turn into a large amount of button pressing as well as requiring a lot of ‘babysitting time’ and does not allow for high volume tasks.

2) Have a button assigned to each route, use separator page(s) within the batch to mark the beginning of a new ‘document’. Pros: Once again,  very easy to understand and implement. Cons: This scenario could easily end up creating a large amount of scanto buttons. This approach requires a medium amount of ‘babysitting’ since you have to wait between different routes. This approach also requires pre sorting of documents into their specific routes.

3) Have a single button for the Invoices. Use barcode sheets to identify the beginning of a document and what route it should be assigned. Pros: Allows you to batch up document imaging and handle higher volumes (Less babysitting, more automation). Allows you to mix and match document types. Cons: Slightly more technically difficult to implement, maybe harder for users to understand, could end up with a lot of different barcode sheets. Need to trust the scanner more (needs to have robust feeding mechanism as well as excellent double feed detection)

With always the goal of having a higher degree of automation we choose to go the barcode sheet method. Our users have actually found this method to be fairly easy to understand. We had a lot of fun creating the various barcode sheets. (We gave them unique border colors as well as easily identifiable images) These sheets are also printed on legal paper and then trimmed to where they are still an inch or so longer than regular paper to allow them to be pulled back out easily.

Our CIO hasn’t noticed yet but we used his effigy (with a barcode across his forehead, of course) to indicate an IT invoice (He is our fearless leader)

You can imagine some of the fun we have had with some of the others! One other thing to note, I would think using a barcode prefix would be considered ‘best practice’ otherwise you might end up splitting a document off of some random vendor barcode which is not the desired behavior.

Well, that’s enough for today. Until next time, happy ECM trails.

Initial ECM considerations, ImageSource

ECM (Enterprise Content Management) is a really interesting topic. And it means different things to different folks. After getting our feet wet, so far I have a few thoughts.

Go with a product that is flexible enough to allow for growth. We are always looking for products that integrate well with our existing systems. Maybe it is a call back to our Lego days, but we really enjoy products that are in reality just very flexible multi tools. Be careful about anything proprietary that is developed for you. Be very clear about who will own the source code. I consider this a crucial part in order to remain flexible and control your own destiny.

Image Capture

If you are going to be doing some form of image capture then a scanner is the gateway into your ECM system (duh). It is also quite possibly the most ‘visible’ part of the install. As such the scanner needs to be rock solid. So, grab yourself some real source documents and give them and the scanner to the person responsible for scanning and get their feedback quick! Start testing various scanners early in the process to help guarantee scanning success.

Some things to research,

How will you be separating ‘documents’, for example multipage invoices. A computer can’t tell where one invoice ends and another begins. The most simple method is to press a button for each single page or multipage document. With in volume this process will grow old, quickly. You can use separator pages. You can use barcode identification sheets. Or if you have a lot of money to burn I would suspect you could use OCR to separate the documents.

Another thing to research (for a month or two, collect some statistics) what types of documents will you be scanning. For example, single sided versus double (or simplex versus duplex in scanner lingo), different sized paper, color versus black and white, thin versus thick. And also, the ratio of single versus multipage docs.

ImageSource has an intriguing product called iLinx Capture which allows you to visually ‘program’ out your workflows. This meets our objectives of having a product that allows you to grow with it as well as the cool ‘Lego effect’ of being able to snap things together. They also allow you to program your own ‘QSX’ modules (they supply VB6 examples). Hopefully soon they will also provide .net example files as part of the iLinx Capture install! This is a really fun product to use and I will be writing a few posts on how we ended up implementing it!

Happy ECM trails…

Next post here

Using Altova Mapforce to Create Wikipedia Articles from an ERP backend.

So I wanted to create stub articles and useful charts to flesh out our internal wiki. I of course grabbed the amazing Altova Mapforce and made short work of generating pages and charts and then imported them into our wiki using pywikipedia

Here is what I came up with

Here is a quick flash video of the process as well.

Business Process Reengineering gone wrong

In the same vein as my previous post Going Paperless all wrong I see the trend of BPR going all wrong, and usually hand in hand with some sort of paperless initiative.

For a simple example lets analyze a vacation request sheet. I will arbitrarily set the paper based process at automation Level 1. This is the process, a standard form is circulated that includes what dates you will be gone, what tasks need to be done while you are gone, and sign offs by various people to affirm they will cover for you and realize that you are going on vacation. This paper is then handed to a payroll person who enters in the appropriate vacation dates into Kronos Time and Attendance.

What then happens is that someone (usually a manager) in a remote location ‘analyzes’ this process and looks for a way to improve it. At Level Zero I place the manager who decides to start scanning this vacation request sheet after it has been filled out. Eventually, OK I’m being a little absurd here (but not too absurd) this will lead to a filing system resembling a law library with this form being coded as HR-FORM-200-VAC-02/02/2008 and then a copy of each and every vacation request placed into a shared folder named something like M:\HR\Vacation Requests\19982\JimBob\

I have issues with this sort of setup on a few fronts. The largest glaring one is why is this document being retained, and what value is gained by doing so. There would be no legal requirement to do so that I know of.

At level .5 the manager would come to the realization that we ‘NEED‘ to create some sort of digital form to make this process easier and more efficient! They would go out and drop $700 bucks on Adobe Pro (Hey I’m a manager I need this software) so they could make an exact digital version of the paper form with spots for people to type the info into. They could also do something similar with Word. If they were really evil they would decide to develop something using an Access database. In my worst case scenario this form would be emailed around and then of course end up getting printed out and faxed to the payroll person. And then maybe scanned (see Level zero above)

There are many variations on this type of ‘Reengineering’, usually by people who have purchased a cheap scanner and want to go paperless! Or they made some insane yearly goal for their management on how THEY were going to design and implement a paperless workflow for the Vacation request process.

Unbeknownst, or sometimes even beknownst to them. Quietly, in the background, IT has been creating test servers. And what is being installed and tested on these test servers? A Kronos module for handling vacation requests. This allows someone to request vacation either through their Timecard or through a self service Kiosk. It then allows a manager to approve or reject the request, sending back the status to the employee. If the vacation is approved an email is generated, and the timecard is automatically updated to reflect the time off. This process allows the manager to work directly with the employee and the payroll person never gets involved. The process is audited and trackable for what ever legal requirements you may have. And it uses systems already in place. I will call this level 3.

This is of course a very black and white example, and paints IT in a very favorable light. It never is this easy. But, there is a department that is full of Business Anaylsts. And they usually try to analyze business processes and improve them. They don’t go out and try to sell things like sales people, and they sure as heck don’t want to do any accounting. Why is it then, that it seems most departments think you can just buy an ‘IT system’ turn it on and then all of their problems will go away. IT does touch on pretty much everything these days, but I guess in the inverse everyone thinks that they can implement just a little of IT.

Now I understand that ‘in the trenches’ and ‘on the front lines’ managers want to get things done. They want to improve business processes. Usually they make goals to do so. But business process reeingineering is hard. You need to try to capture all of the requirements of the whole, and know what existing systems are in place or being implemented before you go and buy some ‘solution’. Traveling solution salesmans are the worst, their software will of course solve all of your problems.

When I see this sort of behavior I start to suspect BMS or Bored Management Syndrome. I wonder if there are aspects of their daily jobs that could instead be focused on instead of ‘going paperless’ or whatever the newest trend is. Instead they try to buy and implement something that usually is redundant to a system that is already in place. This is managment gone amok.

Creating a standard company email signature for outlook 2003

Find this post interesting? Do you like interesting things? Maybe you would like my invention, a connectible candle called a WickBrick!

Get one here


So got the word that we wanted to roll out a standard email company sig, so I started sniffing around for my options. Of course there are a bunch of options that you could pay for, but I don’t like to pay for things if I don’t have to.

Luckily, the Microsoft scripting guys came to the rescue with this article.

The magic is to pull the info from AD with a script and then create an word email signature.

On Error Resume Next

Set objSysInfo = CreateObject("ADSystemInfo")

strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)

strName = objUser.FullName
strTitle = objUser.Title
strDepartment = objUser.Department
strCompany = objUser.Company
strPhone = objUser.telephoneNumber

Set objWord = CreateObject("Word.Application")

Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection

Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature

Set objSignatureEntries = objSignatureObject.EmailSignatureEntries

objSelection.TypeText strName & ", " & strTitle
objSelection.TypeText strDepartment
objSelection.TypeText strCompany
objSelection.TypeText strPhone

Set objSelection = objDoc.Range()

objSignatureEntries.Add "AD Signature", objSelection
objSignatureObject.NewMessageSignature = "AD Signature"
objSignatureObject.ReplyMessageSignature = "AD Signature"

objDoc.Saved = True

So that is pretty cool, and gives the structure of how to create the signature.

After rolling it out though if a user was not using word as their email editor it would always double space the signature. It makes sense in that the html tag that is used is adding an extra space. FYI if you are creating sig by hand than you should use a shift+enter and then of your lines to avoid this, a so called ‘soft enter’.

So I modified the script to use

objSelection.TypeText(Chr(11)) instead of 
objSelection.TypeParagraph() thus stopping the annoying double space issue.

Next push this out to the AD with logon scripts to various groups and there you go, standard email signatures.