[UXPROD-4245] Implement load balancing for TLR recalls Created: 07/Apr/23  Updated: 30/Nov/23

Status: Draft
Project: UX Product
Components: None
Affects versions: None
Fix versions: TBD

Type: New Feature Priority: TBD
Reporter: Thomas Trutt Assignee: Stephanie Buck
Resolution: Unresolved Votes: 0
Labels: known-issue-nolana, known-issue-orchid, known-issue-poppy
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original estimate: Not Specified

Attachments: JPEG File Load balancing-Page-1.jpg     JPEG File Load balancing-Page-2.jpg    
Issue links:
Gantt End to Start
has to be done after CIRC-1781 [SPIKE] Investigate differences betwe... Closed
Development Team: Vega
PO Rank: 0
Rank: Chalmers (Impl Aut 2019): R2

 Description   

Current situation or problem:

If multiple TLR (Title Level Requests) requests are placed on a single instance record, with multiple available copies, a single checked-out copy receives all the recall requests. They should be spread out among all available copies, considering any pending requests. The request queue should still be adhered to, and requests should be fulfilled in the order they are in the queue.

Recalls are unevenly distributed when there is no item to page and there is at least one item that is not checked out but is "available" for a recall to be placed upon

(In Nolana & Orchid)

Definitions:

 Available copy. An available copy is an item on an instance record that can have a specific request type placed on it. Item status and the request types that may be placed are listed here: https://docs.folio.org/docs/platform-essentials/item-status/itemstatus/#how-item-status-changes-during-circulation

Recalled – The term recalled in the use cases are referring to the shorting of the items loan period and the triggering of any notices.

In scope

  • Ensure that TLR recalls are spread evenly across all available copies.
  • TLR should follow the same request restrictions as ILR (Item Level Requests). IE an item with the status of “In transit” can have an ILR Recall placed on it would be available to fulfill a TLR.
  • Determine a selection order, which will be used to balance the requests, considering all available item statuses.
  • The mechanism for balancing request should be refreshed upon; request fulfillment, cancelation or modification.

Out of scope

  • Changing what request types are allowed for individual item statuses.
  • Adding new item statuses.
  • Modification to notices or notice data.
  • Modifications the to the request queue.

Use case(s)

Use case 1:

An instance record has 4 items attached; their statuses are:

Copy 1 – Checked out, copy 2 and 3 – Available, copy 4 – Aged to lost; there are no other pending requests.

  • Staff member 1 places a TLR recall request; copy 1 is ‘recalled’.
  • Patron 1 places a TRL recall; copy 1 is ‘recalled’.
  • Patron 2 places a TRL hold; no item is requested as it can be fulfilled by copies 2 & 3.

 

Use case 2:

An instance record has 4 items attached; their statuses are:

Copy 1 and 2 – Checked out, copy 3 – Available, copy 4 – in transit; there are no other pending requests.

  • Staff member 1 places a TLR recall; copy 4 is requested.
  • Staff member 2 places a TLR recall; copy 1 is requested, (has been checked out the longest)
  • Patron places a TLR recall; copy 2 is requested.

 

Use case 3:

An instance record has 4 items attached; their status are:

Copy 1, 2 and 4– Checked out, copy 4 has a recall attached, copy 3 – Available; there are no other pending requests.

  • Staff member 1 places a TRL recall; copy 1 is requested. Copy 4 has been checked out the longest but has a current request. Copy 1 is the next item that has been checked out the longest.
  • Staff member 2 places a TRL recall; copy 2 is requested.
  • Staff member 3 places a TRL recall; no copy is requested as all ‘available’ copies have requests.

Proposed solution/stories

Implement a balancing system that tracks what items will be used to fill which requests. The system needs to re-balance after every check-in, check-out or any request changes.

Links to additional info

Questions

 



 Comments   
Comment by Marie Widigson [ 16/Jun/23 ]

Thank you for creating this Jira, Thomas Trutt !

I just want to add that, now being live with TLR, we want to emphasize how important it is to implement this feature, distributing the recalls evenly among all recallable items.

When all recalls end up at one item, the consequence is that a patron get the long loan period, despite several other patrons waiting in the TLR queue. It's now low season, but it has already started to happen and we know that it will become problematic when the semester starts in August.

(Recalls are already distributed nicely when all items are checked out, but as soon as at least one item has another status such as Awaiting pickup etc, it becomes unbalanced.)

Comment by Stephanie Buck [ 16/Jun/23 ]

Hi Marie Widigson and Thomas Trutt. The way TLR is currently implemented, a specific item is always recalled based on it's return date, so available items aren't considered. Why would a recall be needed if there are available items to page? 

And yes - thank you for creating this feature, Thomas.

Comment by Marie Widigson [ 19/Jun/23 ]

Hi Stephanie Buck You are correct, recalls are not, and should not, be possible to place on copies that have item status Available. I think we may be a little confused by the definition of "available copy" in the description above. I don't think it means "Item status: Available", but rather any copy that is allowed to have a recall placed on it. See "Definitions:  Available copy. An available copy is an item on an instance record that can have a specific request type placed on it". Please correct me if I've misunderstood, Thomas Trutt 

The problem in Nolana/Orchid is that recalls are unevenly distributed when there is no item to page and there is at least one item that is not checked out but is "available" for a recall to be placed upon.

Generated at Fri Feb 09 00:38:23 UTC 2024 using Jira 1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d.