I have been working with different bank checking software. Blackbaud Europe have written a plug-in for The Raiser’s Edge to update the bank record data such as the name and branch of the bank as well as the address based on the sort code. We recently developed a plug-in that processed the direct debit returns and unpaids from BACS and update the recurring gifts accordingly. In some cases a new bank would need to be created. I was asked to integrate the plug-in with their Blackbaud written plug-in.
Underlying Blackbaud’s plug-in is some software from Grange Systems. Their bank checker software is available on different platforms, they send out database files on a regular basis and they have an API which other applications can access. My task was to integrate with this software so that when given a new sort code the bank name and branch could be retrieved. It seemed like a relatively straight forward task until faced with their API. It consisted of a library dll. This was not a .NET assembly nor a COM object but rather something even older (I didn’t actually know there was anything older!). The techniques used to call this library are the same as those you use to access the Windows API directly (and who does that nowadays?) Normally you know where the library file is located. In the case of the Windows API this is normally always in the system path so you do not have to specify the location. However with Grange’s library you have to specify where it is. That is, you have to hard code it. (Although I have now found a way around this). The problems do not stop there. The example code was written in VB6 and not .NET and involved some difficult manipulation of strings.
Compare this experience to another project that we worked on a couple of years ago. Another organisation wanted an interface to help set up direct debits for their patrons. In this project we worked with a different supplier of bank validation software. Unified Software have a different approach. Their bank validation software is a web service. The web service integrates very easily with .NET and allows you to use the service in an object oriented approach. The ease of use of this service was in such contrast to Grange. What is more there is no requirement to install new library files quarterly. As soon as a sort code change is made it comes online.
Soon after working with Unified Software we released a proof of concept application for Blackbaud Enterprise CRM where we validated bank data in that application. This was shown at the Blackbaud European conference 2009 and can be seen on the presentation (fast forward to 26min 36 seconds).
If I had had to develop an integration with BBEC and Grange it probably would never have made it to completion.