> Thank you for sharing the diagram and thank you for the correction. I was trying to understand the Item Status part. I appreciate the clarification.
It's also worth noting the title of the diagram, Opportunistic and Targeted Holds with Stalling. The picture is different if stalling is not configured at all, via the "Soft stalling interval" library setting. There's also a "Hard stalling interval" setting that looks like it was never fully implemented (and incidentally, there's a discrepancy between the setting's internal name and how it's referenced elsewhere in the code). Looks like Josh already noticed that one: https://bugs.launchpad.net/evergreen/+bug/1488604 One other bit of holds configuration that isn't well documented are the library settings "Hard boundary" and "Soft boundary". My knowledge here may have become a bit dated with custom best-hold selection sort order, and hopefully if I'm woefully incorrect about this someone will correct me, but let's assume that holds are going to center their capture attempts around the pickup library, such that they prefer items that don't actually have to transit. Let's also assume a stock test org hierarchy: (depth 0) (depth 1) (depth 2) (depth 3) CONS -> SYS1 -> BR1 -> SL1 -> BR2 -> SYS2 -> BR3 -> BM1 -> BR4 All holds have a "selection depth" that you don't normally notice , which defaults to 0 , and a "selection library", which normally equals the pickup library. Together, these determine the entire set of items you're allowed to fulfill a hold with based on their location. If the selection depth for a hold request is 2, and its pickup/selection library is BR1, then the hold will only ever look for eligible items at BR1 and its child library, SL1. If the selection depth is 0, then the focus can travel all the way up to CONS, and down to any library in the org tree. What "Hard boundary" does is set the selection depth to a fixed value. If SYS1 and SYS2 will never inter-lend items, then you could set Hard Boundary at the top of the CONS to have a value of 1, and holds will never capture items outside of their system. But you have to be careful here. Let's say that instead you set the Hard Boundary to have a value of 1, but the setting itself is configured at SYS1 and not CONS. Then holds originating at SYS1 (BR1, etc.) will have a selection depth of 1, but holds originating at SYS2 will have a selection depth of 0. That means that SYS2 holds can grab SYS1 items, but SYS1 holds only ever stay within SYS1. "Soft boundary" is really like Hard boundary but it can be even more restrictive. For example, let's say you have Soft boundary set to 1. The selection depth for affected holds will never go below 1, so such holds will never go outside the system level. But, if at the time of hold placement, an eligible item is found at, say, the pickup library--BR1, even if it's currently checked out, then the selection depth will instead be set to the matching depth of that library, in this case 2, and it will never change. So now that hold will essentially be stuck looking for items at BR1 and SL1, and it will never widen its search. If the original item that triggered the soft boundary were to become lost or missing, and it was the only such item at the Branch level that could fulfill the hold, then the hold would become unfulfillable. The staff client can be configured to actually let you edit selection depth and selection library on existing holds, but this is disabled by default via CSS. I hope this helps. If anyone wants to incorporate any of this into the documentation, feel free to consider it CC-BY-SA. -- Jason Etheridge | Community and Migration Manager | Equinox Software, Inc. / The Open Source Experts | phone: 1-877-OPEN-ILS (673-6457) | email: ja...@esilibrary.com | web: http://www.esilibrary.com