/
DCB-1528 Same library borrowing

DCB-1528 Same library borrowing

References

 

 

 

Feature implementation summary

Assumptions

  • Same server requests are filtered out before reaching this stage

 

Out of Scope

  • Creation of new status for own library requests

  • Same server combinations (pickup, supplier, borrower)

  • Per library configutation

  • LMS exception support, eg, FOLIO, Alma

  • Changes to Admin to indicate non-virtual patron

 

Exclude same library, different pickup resolution

 

Refactor workflow determination

  • Move workflow determination from supplying agency service to resolution service.

    • Remove setting of active workflow from supplying agency service

    • Set workflow in resolution service

  • When determining workflow, add check to set workflow to RET-LOCAL if

    • item is resolved to same library as patron AND

    • pickup location belongs to patron’s library

Verification

  • RET-LOCAL (success)

    • Given same library borrowing is enabled

    • And item is resolved to same library as patron home (supplier == borrower)

    • And pickup location does belong to patron’s library (pickup == borrower)

    • Then apply RET-LOCAL workflow to request

    • NOTE this will only set workflow, not yet change subsequent request handling behaviour

  • RET-STD

    • Given item is resolved to a different library to the patron home (supplier != borrower)

    • When pickup location belongs to patron’s library (pickup == borrower)

    • Then apply RET-STD workflow to request

  • RET-PUA

    • Given item is resolved to a different library to the patron home (supplier != borrower)

    • When pickup location does not belong to patron’s library (pickup != borrower)

    • Then apply RET-PUA workflow to request

    • NOTE this will only set workflow, not yet change subsequent request handling behaviour

    • NOTE pickup and supplying libraries may be the same, so there may only be two, rather than three libraries involved in a Pickup Anywhere scenario

 

Route to own library request workflow

  • Create new transition: PlaceRequestAtOwnLibraryStateTransition

  • After resolution, trigger either:

    • PlaceRequestAtSupplyingAgencyStateTransition - when workflow is not RET-LOCAL

    • PlaceRequestAtOwnLibraryStateTransition - when workflow is RET-LOCAL

 

Apply own library workflow behaviour

  • Implement PlaceRequestAtOwnLibraryStateTransition to handle placing request:

    • Do not check for or create virtual patron

    • Place singular hold in the local system (that DCB treats as a supplier request)

      • against verified patron (rather than a virtual patron)

      • setting pickup location to patron defined location (rather than a defined ILL location)

      • and using other parameters as normally used for a supplier request

    • Set request status to REQUEST_PLACED_AT_SUPPLYING_AGENCY

  • During HandleSupplierRequestConfirmed, if workflow is RET-LOCAL, apply HANDED_OFF_AS_LOCAL terminating status to DCB request prevent further tracking after request is CONFIRMED

 

 


 

Unknown

  • When is the RET-PUA workflow set by DCB?

  • Where does Pickup Anywhere locations behaviour fit in?

  • Can we use the existing Polaris API?

  • What do we need to inject to the own library request from the DCB supplier request (eg, pickup location)?

    • Polaris: use the borrower defined pickup location rather than ILL location?

    • Sierra: ?

  • What API should we use for FOLIO?

    • If edge-dcb, which role?

  • May need to extend HostLMSClient interface to have method for placing request at same library

Changes to Workflow (Transition to) for Own Library Requests

  • SUBMITTED_TO_DCB: no difference (before we know this is a local request)

  • PATRON_VERIFIED: no difference (before we know this is a local request)

  • RESOLVED: no difference (before we know this is a local request)

    • Set workflow to RET-LOCAL if own library request

  • REQUEST_PLACED_AT_SUPPLYING_AGENCY (PlaceRequestAtSupplyingAgencyStateTransition):

    • Only trigger when workflow is not RET-LOCAL

  • If workflow is RET-LOCAL, trigger (new) local request transition (PlaceRequestAtOwnLibraryStateTransition)

    • Bypass check for existing virtual patron

    • Do not create virtual patron

    • Place request against real patron

  • CONFIRMED:

    • If RET-LOCAL, then auto-transition to HANDED_OFF_AS_LOCAL (terminating state)

    • Otherwise REQUEST_PLACED_AT_BORROWING_AGENCY (by triggering PlaceRequestAtBorrowingAgencyStateTransition)

 

 

Scenarios

Pickup Anywhere

  • Pickup !== Borrower !== Supplier (all different libraries and servers)

Local

  • Borrower === Supplier === Pickup (all same library)

  • Borrower == Supplier == Pickup (all same server, different libraries) (assuming pickup locations are unique in server)

Consortial (Standard)

  • Pickup == Borrower != Supplier (all different libraries and servers)

Gaps

  • 2 servers, 3 different libraries

    • Pickup != Borrower, Pickup == Supplier (pickup from supplier)

 

Operated as a Community Resource by the Open Library Foundation