Tech Blog

Shelf Inventory using Alma APIs

At Purdue, we were in need of a solution which would help us get a handle on our shelves after not having done any shelf reading for approximately 2 years after going live with Alma in May of 2013.

The staff wished to complete the shelf reading process in a similar way they had done this work in Voyager:

  1. Scan a batch of books on the shelf
  2. Download the list of barcodes
  3. Run a report which identifies, missing, misshelved, and various other possible item record issues

We waited anxiously at Purdue on the planned development of the Shelf Report functionality to be created within Alma. We were excited about the development, but after trying it out, it only allowed us to mark missing items. Without retaining the context for where items with issues were scanned in the reports generated, we could not easily go back to the shelves and find the needles in the haystack.

This is where the APIs came to the rescue. Using the Alma APIs, we were able to develop a PHP based solution which met our needs and which staff felt comfortable with, as it operated in a similar manner to what they were used to using in the past with Voyager.

Alma API based Shelflist

Here is the process we developed at Purdue to meet our needs:

Students/Staff Scan a set of approx 2000 barcodes.

The barcodes are dumped into an excel file:

The staff member then uses the barcode file to run the Shelf Report job within Alma. We use this report to identify the missing items as mentioned before.

The staff member then opens the web-based app, fills out the form, and clicks submit:

Please excuse the makeshift form design as really we just wanted something functional as quickly as possible.

The staff then waits for the barcodes to be processed:

Once complete, the report can be printed or downloaded using the CSV download link at the top of the report page:

You can see from the screenshot above, the different types of problems that are identified. A user can limit the report upon submittal to only Call Number problems or only problems other than Call Number or vice versa. A user can also choose to show only the problem rows in the report if they wish.

Here is an example of a couple books that were scanned, but Alma thinks they are Not In Place, along with the location where Alma thinks they are:

Here is another example of a book that was scanned that is in the wrong position on the shelf:

After working with staff in developing the solution I quickly learned how challenging it can be staring at call numbers and trying to determine where the correct location should be. To help with this challenge, we added the two call numbers the item is currently between as well as a guide for the direction and # of spaces forward or backward that item needs to move from its current location on the shelf to get to its correct location.

So that is it. I know it is not perfect, but I wanted to share the solution as I promised to do at both my ELUNA and IGeLU developer day presentations. 🙂 So I have now made good on my promise!

Here is the link to the code:

The only tweak I have had to make to the code since developing it last spring was fixing the Dewey sort algorithm when staff made it to the Dewey-classed books this spring.

In my next post, I’ll share the code we developed for equipment scheduling in Alma.


6 Replies to “Shelf Inventory using Alma APIs”

  1. Thanks for contributing! I am trying to implement this. I have a web server running the php app. I have added the API key with appropriate permissions and placed the ley inside the key.php file. My issue is when I select the library or scan location drop down nothing is showing. Do you have any suggestions?

  2. 1st step in debugging the no loction dropdown issue is tracking down the api call that provides the info for the dropdown and see if that works by itself first. That will ensure you have the correct API key and are getting responses.

  3. Thanks for the answer, apparently our API key seems to be set correctly.

    Could incorrect itemtype and policy configuration in index.php be causing this issue? thanks again

  4. Has anyone had success in getting this to work.
    The instructions are very short and are missing all the steps necessary to configure the webpage.
    I was able to get the PHP server to show the page on a browser but I need to know what I’m missing on the webpage configuration side.
    My first initial configuration I get the following error
    “The requested URL was not found on this server”

    Where is this configured and what URL do we use?

Leave a Reply