Flow control for holds


I'm merging two previously-submitted ideas into one that allows users to control the flow of their holds. 

The previously-mentioned use cases are below:


- The ability to maintain a Netflix-style queue where patrons can control the order in which a batch of holds is received. The order could be based on the sequence of a series or a sequence determine by the user.

- The ability to control how many books / DVDs, etc. the patron receives at one time so that all of their holds don't arrive at once. 

- The ability for a patron to say they just need one or two of several titles they put on hold. 

- Several editions of a book meet the patron's needs, but they need more fine-grained control than current meta-holds.

I have placed the other two ideas in the attic, but have moved their 'likes' to this idea. See http://masslnc.org/node/2626 and http://masslnc.org/node/3041


Under review


Re: Flow control for holds


Snow birds (those that go someplace warmer for the winter) would appreciate a global suspend/activate option in the catalog, and would especial like it if it could be automated to happen at the same times each year.  This would be like a vacation hold on holds.  Or maybe it would be better to say, automatically suspend all holds when the weekly average daytime temperature is less than 30F.

I'm also curious how the x number of holds at a time would work.  Would it be based on currently checked out item count only, so someone would need to return items to trigger the next holds to activate.  Or would it activate the next batch close to the time that the current batch are due, so that the items would be ready when the customer next comes in to return/pickup items.


Re: Flow control for holds

Some thoughts:

  • Netflix style queue:
    • Users should be able to have multiple Netflix style queues.
    • Users should still be able to place regular holds that are not part of a Netflix style queue.
    • The system should initially consider the first n holds active, where n is a number particular to the queue and set by the user. The remaining holds in the queue should be suspended. Then, for each item in the queue that is returned, the next hold in the queue should be activated.
  • I'm tempted to say that we could achieve the other objectives above with something I will call a "hold group":
    • Users should be able to have multiple hold groups.
    • Users should still be able to place holds that are not part of a hold group.
    • The system should initially consider all holds in a hold group active. Once n holds are ready for pick up or in transit, where is a number particular to the hold group and set by the user, all other holds in the group are suspended.
    • Each hold group would have a user set flag that would determine whether or not to activate the remaining holds when an item from the group is returned.
    • It should be noted that the Netflix style queue is basically a hold group with an order imposed on the holds and some optimizations to the hold activation sequence.
  • Josh's idea about a global suspend/activate option in the catalog is a good one. We would have to decide if it should activate and suspend each hold indiviudally or if it would be a flag on the patron record.



Re: Flow control for holds


Hello Ben, I like your ideas for hold groups, thanks for sharing.

I would like to see some default groups setup for all users just to make it easier for customers to get started, without having to create new groups.  Something like Movies, Books To Read In Order, Book Club, etc.

I could envision this being fairly self contained, not needing to change the holds system too much.  It could just be a system internally that suspends and activates holds automatically.  It could be triggered by a cron job that process all the hold queues.

I like the simplicity of this design.  If I want to read a series in order, I just place holds into the books to read in order hold group(Netflix style), in the order I want to receive them.  Maybe if I"m a quick reader I say I want two at a time so I can return one, still have the next one to read, and trigger getting the third book a little faster.


The global suspend/activate is probably a seperate feature request from this.  It could probably be handled with a standing penalty, since blocking hold fulfillment could be handled that way.  I could see hacking it together now pretty easily.  Staff add a certain standing penalty with a note that contains a start and end date.  A script looks for those and archives those that are not active yet, activates those that are active, and deletes those that are expired.  Hold expiration should probably also be extended for the effected holds, so if someone is gone for 6 months half of their holds don't expire.

If it was handled by suspending all holds individually, then it would need to handle holds that are already suspended, and holds with an activation date that might be during the vacation time.

Re: Flow control for holds

I also like the idea of some default groups. The defaults should be easily configured however, since the same defaults won't necessarily work for all consortia, or even all libraries within a consortium.