Chris: Catalogue.pm is getting pretty close to complete for updating records. Once it reaches that point, the next step is to modify the existing code to use the new API when inserting and updating data. You are more familiar with the existing code than I am, but do you see any problems with implementing this with the following six subroutines alone? There'll have to be some additional routines because some circulation data is also stored in these tables (items->datelastborrowed, datelastseen, etc) Also, I assume you'll want me to hold of on any changes to existing code until after you've made another release? Steve. ------------ newBiblio($env, $biblio) $biblio is a hash ref... $biblio->{'title'}, $biblio->{'author'}, etc. $biblio->{'subject'}, and $biblio->{'additionalauthors'} will be array references. Why is subtitle stored in a separate table, and not just another field in the biblio table? Historical reasons? newBiblioItem($env, $biblioitem) $biblioitem is a hash ref... $biblioitem->{'isbn'} (dewey, itemtype, publishercode, etc...) newItem($env, $item) again, $item is a hash ref... updateBiblio($env, $biblio) $biblio is a hash reference $biblio->{'biblionumber'} is used to compare all of the biblio fields between the old and new versions of the biblio. Any changes are logged and the change is made in both the Koha and the MARC tables. updateBiblioItem($env, $biblioitem) Same as updateBiblio updateItem($env, $item) Same as updateBiblio