Support SIP Hold Cancellation

Evergreen now supports a subset of the SIP 15/16 Holds message pair for holds cancellation.

  1. New oils_sip.xml configuration option "msg64_hold_datatype". This is similar to msg64_summary_datatype, but affects holds instead of circulations. When set to barcode, holds information will be delivered as a set of copy barcodes instead of title strings for patron info requests. With barcodes, SIP clients can both find the title strings for display (via item info requests) and make subsequent hold-related action requests, like holds cancellation.

    Copies are not an ideal identifier for holds, but SIP has a limited
    vocabulary.  With copies we can (99% of the time) work to and from hold
    requests to find a reasonable data set to work on.  If a patron has
    multiple holds for the same item and wants to cancel a specific one of
    those holds, the user should use the catalog instead of SIP.
  2. When receiving a message 15 of with a cancellation action, find the newest open hold that matches the provided copy barcode and cancel the hold.

Return Hold ID to SIP

If there is a hold on a copy, Evergreen will now return to SIP a hold id to indicate that the copy has been captured for a hold. One possible use case for this feature is a scenario where a delivery vendor may be sorting copies needed for holds into a different bin from copies returning to their home library. The presence of the hold ID indicates that the copy has been captured for a hold. It also could use for an Automated Materials Handling (AMH) System to indicate that the copy is needed to fill a hold.

Support for SIP "Renew All" messages

Evergreen now supports SIP "Renew All" functionality, AKA SIP message pair 65/66. When a 65 message is received, the SIP code collects all open transactions for the user and renews them all. The set of successful and failed renewals is returned to the caller via the SIP BM and BN fields.