TLR - picking an item for Page request

Title-level page requests are linked to a specific item immediately upon creation. If only one item of the requested instance is available, it is selected to fulfill the request. If multiple items are available, things get a bit more compicated:

  • if request fulfillment preference is "Delivery", a random available item is selected
  • if fulfillment preference is "Hold Shelf", an item closest to the requested pickup service point is selected

This document aims to explain what "item closest to the pickup service point" means and how such an item is found.

Location tree

All location-related domain objects in FOLIO form a hierarchical tree-like structure with Institutions as roots and Locations as leaves:

Every request with fulfillment preference "Hold Shelf" will have a pickup service point with  one or more locations assigned to it. Available items of the requested instance are also located in specific locations. So the task of finding an item closest to the pickup service point boils down to finding an item whose location is closest to one of the pickup service point's locations. The distance between two locations is determined by the number of edges on the shortest path between them on the diagram.

Item picking algorithm

Examples

- Pickup service point location

- Location has available items


1) Available items in the same library

  • Is there an available item in one of the pickup service point's locations? (A, E) - No
  • Is there an available item in any other location in the same library? (A, C) - Yes, there are available items in Library B (Location B) and Library C (Location F)
  • Were multiple items found? - Yes, two items were found
  • Pick one of the two items at random and link it to the request


2) Available items on the same campus

  • Is there an available item in one of the pickup service point's locations? (A, E) - No
  • Is there an available item in any other location in the same library? (A, C) - No, there are no available items in Library A (Location B) or Library C (Location F)

  • Is there an available item in any other library on the same campus? (A, B) - Yes, there is an available item in Campus A (Library B, Location D). No items were found in Location C or Campus B (Libraries C and D, Locations E-H)

  • Were multiple items found? - No, just one
  • Link the item to the request


3) Available items in the same institution

  • Is there an available item in one of the pickup service point's locations? (A) - No
  • Is there an available item in any other location in the same library? (A) - No, there are no available items in Library A (Location B)

  • Is there an available item in any other library on the same campus? (A) - No, there are no available items on Campus A (Library B, Locations C and D)

  • Is there an available item on any other campus in the same institution? (A) - Yes, there are available items on Campus B ( Library C, Location F and Library D, Location H)
  • Were multiple items found? - Yes, two items in equidistant locations were found
  • Pick one of the two items at random and link it to the request


4) Available items in a different institution

  • Is there an available item in one of the pickup service point's locations? (A) - No
  • Is there an available item in any other location in the same library? (A) - No, there are no available items in Library A (Location B)

  • Is there an available item in any other library on the same campus? (A) - No, there are no available items in Campus A (Library B, Locations C and D)

  • Is there an available item on any other campus in the same institution? (A) - No, there are no other campuses
  • Is there an available item in any other institution? (B) - Yes, there is an available item in Institution B (Campus B, Library C, Location F)
  • Were multiple items found? - No, just one
  • Link the item to the request