Home → Circulation in Evergreen → Holds Management → Hold Fulfillment in NC Cardinal
There are three ways that holds can be limited in NC Cardinal, through the shelving location, through flags in the item record, and through hold policies. If any of these three indicate that the item cannot circulate, then NC Cardinal will block the hold. If the shelving location is set to not holdable it would override the item level flag being set to true.
While the date a hold is placed is one fulfillment factor, NC Cardinal does not use First In, First Out hold fulfillment. Holds are filled on an opportunistic basis, based on which items are available at which location on what date. This is to theoretically get items to patrons quickly and efficiently. In reality, it doesn’t always work as we might like, but a strict First In, First Out process would be much less efficient.
Scenario:
Let’s say a patron at the Library B (a branch of System Z) places a hold on May 3 on a System Z owned item which is currently checked out. A patron at Library C (in a different library system) places a hold on the same item on May 4 and a patron at Library A (main library of System Z) places a hold on the same item on May 5. On May 6 the item is checked back into Library A. In which order will the patrons get the item?
So, when an item is checked in at Library A, Evergreen looks first to see if any patrons have a hold on the item with Library A as the pickup library. If so, Evergreen will always fill those holds first. If there are no holds for the branch where the item was checked in, Evergreen should first target any other holds within the library system (System Z), so should target the item for the patron at Library B. However, there is also a separate targeting mechanism that will target any available copies from throughout the consortium. This is what causes items to show up on your pull list. So, if another library system had a copy that was available on May 3rd to fill the Library B patron’s hold and that item was pulled from the shelves and captured on May 4th, then put into transit to Library B, the copy checked in at Library A would be targeted to fill a different hold (in your example, probably the Library C patron), since Evergreen already has an item targeted for the Library B patron.
This can get much more complex the more patron holds and fulfilling items you add to the mix. The current algorithm is based where the item is already, so holds are filled first at the branch where the item is checked in, so long as there are holds listing that branch as the patron’s pickup library. That is one reason we encourage libraries to spread their new holding around to all branches, so that smaller branch patrons are not sidelined, while all holds at the main branch are filled first, if that is where are the new copies are shelved. Explanation of holds for newly cataloged items here. Of course, libraries also have the benefit of age hold protection to keep their own materials circulating only within their own system for the first 6 months.
The 24-hour targeter is part of the reason it is important for staff at all Cardinal libraries run their pull list every morning that the library is open and get everything pulled and scanned right away. There are often lots of patron holds placed overnight. At least once a day is necessary; twice is even better. The targeter re-evaluates every 24 hours, even if the library is closed.
There are actually two ways an item can be targeted/captured to fill a hold. The second way is called opportunistic capture, which means that, when an item that is eligible to fill a hold is checked in, Evergreen may immediately target that item and put it into transit to the pickup library for a patron. Those two functions act in concert to fill holds.
There has sometimes been a misconception among some staff that a targeted item shows up on multiple pull lists at the same time because, by the time the library pulls the item from the shelf and scans it on the check in screen, Evergreen says to put the item back on the shelf rather than targeting a hold. That usually happens because there was a gap between the time the hold list was run/printed and the time the item was actually pulled and scanned. In that gap, someone at another branch had checked in an eligible item and Evergreen targeted that item instead. Only one item is targeted at a time and shows up on only one pull list at a time.
Hold limits are rather complex, and unfortunately there is nothing as simple as checking a box to indicate whether a particular hold policy should or should not apply to a particular patron group or item. There are hold policies that apply to your library patrons which may be set to limit your patrons to 10 holds. However, the consortium sharing limit on holds is 25, so there cannot be holds policies that block users at other libraries from placing holds on books, audiobooks, and videos from your library up to that limit per patron. In other words, you can have policies that limit your own patrons to 10 holds, but not other consortium library patrons.
In Evergreen, hold policies do not consider the circulation modifier when applying the max hold limit to determine whether a hold is permissible. Evergreen only considers how many holds the patron currently has, regardless of whether the circulation modifier of the items on hold matches the circulation modifier for the max hold limit on the hold policy applying to the hold the patron is placing. So, if a library has set a hold limit of 1 for TECHNOLOGY items, patrons will not be able to place a hold on those TECHNOLOGY items if they already have an active hold on anything else, regardless of the type of materials those other holds are for. Staff with Circ Lead or above permission group can override and place the hold for the patron, so it is something you will need to educate staff on, so that they are aware and prepared to override and inform patrons, as needed.
Which policy a particular hold request hits can be complex, as it involves many different factors — the particular patron account, permission group, item settings, shelving location, owning library, and pickup location — so it may be possible for a number of different hold policies to be eligible to apply to a patron's hold request, based on those factors. However, Evergreen will only choose one policy, based on weighting and then random selection if 2 or more policies have the same weight.
The patron is barred | Barred patrons cannot place holds | actor.usr.barred |
The item's circulation library does not fulfill holds | Circ library is skipped for hold targeting | circ.holds.target_skip_me |
Hold rules reject this item as unholdable | Hold request hit a blocking policy | config.hold_matrix_test.holdable |
The patron has reached the maximum number of holds | Hit a hold policy with a max holds lower than # of holds on patron record; max holds could be zero | config.hold_matrix_test.max_holds |
The item is too new to transit this far | Item has active age hold protection in place | config.rule_age_hold_protect.prox |
The item is not holdable | Item record is marked Holdable=False or Reference=True | item.holdable |
The item's location is not holdable | Shelving location is marked Holdable=False or Reference=True | location.holdable |
The item is not in a holdable status | Item status does not allow holds (see Item Statuses in Reports kb Appendix D) | status.holdable |
The system could not find this item | Rare — haven't seen this one | no_item |
The system could not find any items to match this hold request | No items in an Available or Checked out status (items could be Missing, Lost, Damaged, etc.) | no_ultimate_items |
System rules do not define how to handle this item | Evergreen could not find a matching hold policy to allow/deny the hold request | no_matchpoint |
The system could not find this patron | Rare — haven't seen this one (maybe when scanning an unknown barcode into patron field on hold screen?) | no_user |
The item cannot transit this far | Range from owning library is not compatible with hold pickup location | transit_range |