« Reading List: King of Infinite Space | Main | Nova Scorpii 2007 Spotted »

Monday, February 19, 2007

Running UBS Pay Banking Software on Linux

(This is one of those highly-specific postings I make here from time to time which few regular readers may find of interest. Consider it a “memo to file” for my own reference the next time the issue comes up, and notes for those rare people interested in the topic who may find it with a search engine.)

Ever since 1999, I have used my bank's UBS Pay software to enter and transmit payment orders to their e-banking service. Orders can be accumulated and transmitted in batches, and scheduled either for immediate execution or at a specified date up to three months in the future. In addition to payments within Switzerland, international bank wires through the SWIFT and ABA systems can be entered, as well as transfers between accounts in different currencies. A database of previously entered payments provides a complete archive as well as serving as a template for further payments to the same recipient. Dual factor authentication using a password calculator and a one-time challenge-response login process provides additional security.

The only irritation is that the the UBS Pay client program runs only under Microsoft Windows. Now my main development machine is configured to dual-boot into Windows XP as well as Fedora Linux (I upgraded the machine to Fedora Core 6 over the holidays), but it's annoying to have to reboot into Windows just to pay a few bills, so for the last few years I've been using a copy of UBS Pay installed on a legacy Windows 98 machine which I use to run various hardware (for example, the Nikon film scanner) for which Linux drivers are unavailable. That's workable, but it still means I have to use a different machine whenever I want to pay bills, and that I can't easily consult payment records when working on my development system and don't have access to them at all when on the road.

I had last tried “Wine” (an implementation of the Windows API which runs on x86-based Unix-like systems) a few years ago and found it, while basically functional, unable to run most of the applications I was actually interesting in using. Over the last year I'd heard from a variety of sources that it had gotten much better in its ability to support nontrivial applications (although much of the focus appeared to be on games), so I decided to see whether it would allow me to run UBS Pay on Linux. I installed the following packages from the Fedora Extras repository:

    wine-0.9.30-1.fc6
    wine-capi-0.9.30-1.fc6
    wine-cms-0.9.30-1.fc6
    wine-core-0.9.30-1.fc6
    wine-docs-0.9.31-1.fc6
    wine-esd-0.9.30-1.fc6
    wine-jack-0.9.30-1.fc6
    wine-ldap-0.9.30-1.fc6
    wine-nas-0.9.30-1.fc6
    wine-tools-0.9.30-1.fc6
    wine-twain-0.9.30-1.fc6
After some preliminary testing (yes, most of my Windows screen savers worked), I then downloaded a current copy of the UBS Pay Installer (which I verified was the same version I was currently using on the Windows 98 machine) and ran the installer with:
    wine ubspay32.exe
which went through the installation process, placing the files in the
    '.wine/drive_c/Program Files/UBS e-banking'
directory tree under my home directory. Upon launching the program with:
    cd $HOME'/.wine/drive_c/Program Files/UBS e-banking/UBSPay'
    wine UBSPay.exe
(of course, I made a shell script to do this), it came up with an empty database and default settings. I entered the settings for my account (I probably could have copied them, but it was easier to simply re-specify them than figure out how to transfer them from the other machine) and quit the application.

Now, I wanted to transfer all of the database entries from the previous installation to the Wine virtual C drive. Fortunately, I had previously migrated UBS Pay from a machine I'd retired and had noted where it kept the database, which turns out to be in a directory named “MANDANT” within the program installation directory (note that Windows file names are not case sensitive, so this may be “mandant”, “Mandant”, or some even more obscure variant when you scrutinise it on an adult operating system). Anyway, I zipped up a copy of this directory on the old machine, extracted it into a new directory on the development machine, and renamed that directory as “MANDANT”, after deleting the directory tree with that name created by the installer.

All that was left was to test it and, hey, it worked! I was able to access the database, enter payment orders, transmit them to the bank, and receive confirmations right from my Linux desktop without ever blotting my notebook (computer) with a Microsoft product. I've used it for a variety of transactions over the last week, and haven't had any serious problems, so as long as this happy circumstance obtains, I plan to go on running UBS Pay under Wine on Linux. There are a few little things which seem amiss—for example, if you're in the “amount” field and hit the Tab key, nothing happens; in the Windows version you're taken to the Communications box for a pink form or to the Reference number field on an orange form. But these are minor quibbles; the ability to use this handy application on a competently implemented operating system is an indication of the growing maturity of Wine. And, after all, as Jacques Perrin sagely observed, wine is one of the rare things in our entropic environment which improves with age. So, I suppose it's only fittin'.

Posted at February 19, 2007 22:25