Migration to Koha


Last updated September 27, 2014.

We began using Koha at Meadville Public Library in May 2007. It was decided that MPL would be first to migrate since IT staff offices were there, making it easier to be on hand for dealing with any unanticipated issues that arose. We shut the old circulation system down at closing on a Friday evening at 6:00 PM, and had Koha up and running with all our data migrated by 7:30 that evening. We closed on Saturday in order to convert all the staff computers and OPACs from Windows to Linux-based thin clients. Since Koha’s staff interface and catalog are web-based, it allowed us to use any platform that could run a web browser for both circulation and the public catalog computers. We were already using Linux-based thin clients for our public computers, and were eager to take advantage of the opportunity to convert our circulation and OPAC computers to thin clients as well. When we reopened on Monday, the staff logged into the new Koha ILS and all of the MARC records, patron records and transaction data were available. There was no need to run dual ILS or close out the old Winnebago system.

The other eight CCFLS libraries were migrated to Koha by the end of 2008, averaging about one library per month. Because by choosing Koha we were able to set our own migration schedule, rather than having to do all libraries at once as we probably would have had to do with a vendor, we were able to take our time in migrating all our libraries. Each library had its own database of patron, MARC and circulation data that needed to be integrated into a single database in Koha, while other libraries that had already been migrated were already using that database, so caution was in order.

One of the reasons for the long timeframe was irregularities in the MARC records and other data in most of the member libraries. There were a great many encoding issues in the libraries’ MARC records originating from our original retrospective conversion to Winnebago; the encoding issues had to be discovered and fixed one by one, a slow process involving a lot of data processing with xml2marc, MarcEdit, and other MARC editing tools.

Winnebago's database was also structured to only have one item per MARC record, while Koha was structured to have multiple duplicate items attached to a single MARC record, so Kyle had to write a script to merge duplicate items into the same record. Because we had nine separate libraries with different circulation rules merging into a single ILS, we decided that each library’s items should be separate. At the time, circulation rules were determined by library and item type, not at the item level, so the merging script had to be run for each library before their data could be imported into Koha.

Some libraries also had used barcode numbers outside of their assigned ranges, making it necessary to re-barcode some items. Additionally, there were quite a few patrons that used more than one of our libraries, so we had to merge a lot of patron records as well. We also asked the libraries to do a cleanup on their databases, deleting extremely expired patron accounts and long lost items before they were migrated, to help eliminate as much old and potentially bad data as possible.

Since we were migrating our nine independent libraries one at a time over the course of more than a year, we had the luxury of training each library’s staff just before they came online. Audrey Porter, staff trainer at Meadville, developed the majority of the training materials used, as well as performed most of the staff training. Cindy trained the librarians on cataloging. This slow migration schedule allowed us to focus on training just a few librarians at a time, rather than everyone at once, giving our library staff a chance to work one-on-one with our trainers.

The staff accepted Koha well, though there were some issues especially when we first migrated. Right away the circ desk staff identified some bugs, and everyone had opinions on how the program could be improved. In most cases, we could fix the problem ourselves, usually within a day or two, or make some customizations to the code that added to the capability of Koha. An example of a bug was the discovery that word “not” could not be included in searches in the OPAC, because it was always treated as a boolean operative. In two days, we identified the problem, found the code involved, and fixed the bug. Once fixed and tested, we submitted a patch to the Koha community, solving the problem for every other library using Koha. In another example, some staff did not like the results page for title searches, so we added code to sort search results in the same manner as our old circulation system.