Connecting VuFind to Talis for holdings information

Integration with Talis

After having VuFind 1.0 installed at $VUFIND_HOME=/usr/local/vufind, I started to explore how to connect VuFind to our existing Talis system in order to obtain holdings information. Unlike support for many other library systems, VuFind does not come with a ready-made driver for Talis in $VUFIND_HOME/web/Drivers.

Multi-ILS Jangle driver

Swansea University implements VuFind for multi-ILS integration (including Talis), so I got in touch with Luke O’Sullivan there to learn about their experience. It turns out that he has written his own driver to connect to Talis, but the process is not straightforward. The driver (called Jangle driver) is actually a generic driver enabling multi-ILS integration, with some changes to VuFind itself. One of the ILS that it can connect to is Talis but not directly. It talks to a Jangle connector for Talis (and similarly Jangle connector for OpenBiblio, for example) through the Jangle feed generator (http://jangle.googlecode.com/svn/trunk/PHPCore). The Talis Jangle connector has been developed by Ross Singer at Talis and maintained by him at http://code.google.com/p/talislms-jangle/.

Talis-Jangle connector and the Jangle feed generator

I started off with getting the Talis Jangle connector to work. With assistance from Ross, the Jangle connector was setup at /opt/local/talislms-connector/ after having followed instructions from http://code.google.com/p/talislms-jangle/wiki/InstallRailsConnector. With a bit of adjustments, I got it to work finally. It connected successfully to our Talis server. The connector could either be run using the built-in WEBrick server or Glassfish. I ran it using Glassfish and monitored the log at /opt/local/talislms-connector/log/development.log.

In the next step, the Jangle feed generator was setup at /usr/local/jangleFeed/ and configured to connect to the Talis-Jangle connector. A symbolic link had to be created from /etc/apache2/conf.d/ to point to /usr/local/jangleFeed/jangleFeed-httpd.conf.

VuFind Jangle driver

Having setup the connector successfully, I went on to obtaining the Jangle driver from Luke. It was setup and configured to connect to the Jangle feed. After a bit of troubleshooting of a problem arising from a missing PHP library (i.e. Cache.php), we got it to work. At this point, however, there was only one ILS (i.e. ours) that we connected to. The point of this experiment was to connect VuFind to Talis using the Jangle driver.

Slowness fixed, somewhat

However, obtaining the holdings information was dreadfully slow. It turned out that for every result in the result-set of a query on VuFind, the Talis-Jangle connector fired several SQL requests to our Talis/Sybase server. After presenting Ross with the log file from the Talis-Jangle connector, he tweaked it. Now, it is faster although further improvements in speed would be better.

As of August 10, the slowness problem has reduced with at least a single ILS connectivity: running Glassfish in production mode resulted in drastic performance improvement from running it in development mode.

Now, multi-ILS option

The structure of VuFind does not directly allow for connections to multi-ILS. Also, with a multi-library environment, it is likely that we may be interested in connecting to multiple LDAP servers across more than one institutional networks. VuFind does not have a built-in facility for that. However, Luke has extended VuFind to support this. Therefore, besides writing the Jangle driver, Luke has modified the base VuFind installation to support multi-institutional connections. Luke is going to merge his branch of VuFind development with the main development trunk of VuFind (?).

To accommodate testing the multi-ILS features, I installed more than one instances of VuFind according to the instructions at http://vufind.org/wiki/installing_multiple_instances. One of the instances is what we already had running at /usr/local/vufind but now moved to /usr/local/vufind-susx and the other one at /usr/local/vufind-smu which is Luke’s version. Symbolic links from Apache config had to be updated accordingly. From this point forward, I shall call the former as VUFIND-SUSX and the latter as VUFIND-SMU. This required multiple MySQL databases. To avoid getting into trouble of moving MySQL databases, the database for VUFIND-SUSX was kept unchanged while a new database was created for VUFIND-SMU.

One of the things to keep in mind about multi-ILS connection is the way MARC records are imported into VuFind. Since they will come from multiple sources, they need to be merged. Otherwise, we shall not have multiple library locations displayed for any single record that exists in more than one library. I am not a MARC expert but what I understand is that certain fields in MARC (e.g. 001) may be used by the VuFind Jangle driver to query the Talis-Jangle connector for the correct record in the Talis system. Such a field has to be unique. However, it may not be possible to have two different 001 values for the same entry in two different libraries, so Luke works with MARC files which are pre-processed to add in field 969 (multiple-values allowed). The 969 field contains references with ILS prefixes and unique IDs. Therefore, a record existing in the Sussex library could have SUSX-123456 whereas it may also have BRI-123456 which indicates that it exists in the Brighton library (e.g. prefixed as BRI). Luke’s driver can then use these 969 values to initiate connections to two different ILS based on the ILS prefix.

In order to get it work…

To begin with, the file VUFIND-SMU/web/conf/config.ini is different from VUFIND-SUSX/web/conf/config.ini. The former has a specification for Controller and DriverIDs, which is how it keeps track of multiple drivers for multiple ILS connections. The directory VUFIND-SMU/web/conf/systems contains sub-directories with names corresponding to DriverID entries. For example, if we have:

[Controller]
type = default

[DriverIDs]
susx = "University of Sussex"

then we will also have VUFIND-SMU/web/conf/systems/susx/. Such a directory contains a config.ini, which provides configuration instruction for the individual driver. For example, we may have:

[driverID]
name = University of Sussex
driver = Jangle
config = Jangle
prefix = susx

Thus, with this configuration, we are using the Jangle driver to connect using ILS prefix “susx”. The above driverID specification in VUFIND-SMU/web/conf/systems/susx/config.ini expects a driver configuration file by the same name in VUFIND-SMU/web/conf/ which is configured to allow the driver to connect to the Jangle feed generator.

Connecting to the multi-ILS data

Having tested the example setup that emulates the multi-ILS connectivity, we are now in the process of obtaining MARC records from Brighton university that will have to be merged with those from the University of Sussex. The merger process will generate, in the MARC records, the 969 fields with different ILS prefixes based on which VUFIND-SMU will connect to the Talis systems in both the universities.

Acknowledgments

Thanks to Luke O’Sullivan (Swansea University) and Ross Singer (Talis) for their assistance with implementing VuFind.

2 thoughts on “Connecting VuFind to Talis for holdings information

Leave a comment