Skip to end of banner
Go to start of banner

Transfer/Relink Holdings and/or Items

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

RolePersonComments
Solution Architect
Java Lead
UI Lead
Product Owner


UXPROD-137 - Getting issue details... STATUS  - Transfer/Relink Holdings and/or Items

Requirements

This feature covers ability to move attached records and maintain existing relationships. When moving holdings to another instance, all associated items have to be transferred as well. Bulk moving items and holdings. Ease of linking/relinking bib/holdings/item data. Part of the refined UX design of Inventory. Drag and drop is one possible solution.

BE Design

Connections between items, instances, holdings.

Possible scenarios and implementation:

1) Move item(s) between holdings

Changing of each moved item with new item.holdingsRecordId.

2) Move holdings with item(s) to another instance

Changing of each moved holding  with new holding.instanceId.

3) Move selected item(s) to a holdings in another instance

This case looks the same to 1). Changing of each moved item with new item.holdingsRecordId.

Bulk operation approach

High-level description

The UI-client sends a collection of items/holdings in a single update request to endpoints PUT /inventory/items or inventory/holdings. The mod-inventory processes this request and prepares a request for each item/holding in the array and sends it asynchronously to the mod-inventory-storage. The mod-inventory waits for all responses from mod-inventory-storage to be completed and populates a response. In case of errors in some of the updating requests in the mod-inventory-storage, the mod-inventory returns a response containing a list of errors for not updated items/holdings.

APIs

MethodPathProvided permissionsRequestResponseDescriptionNotes
PUT

inventory/items

inventory.items.array.putCollection<Item>204 UPDATEDUpdate items from array


PUTinventory/holdingsinventory.holdings.array.putCollection<Holding>204 UPDATEDUpdate holdings from array

Flow details

Sequence diagram:


Steps:

1) Send transfer request (it contains id of holding to which items should be moved and items ids).

2) Send GET items collection

3) Update retrieved items with new item.holdingsRecordId and send asynchronously update request for each item.

3) Wait all responses, populate errors if some of request failed.

4) Return response to UI client.

5) Send transfer request (it contains id of instance to which holdings should be moved and holdings ids).

6) Update retrieved  holdings with new holding.instanceId and send asynchronously update request for each item.

7) Wait all responses, populate errors if some of request failed.

8) Return response to UI client.


Transfer schema:

FieldTypeNote
toUUIDUnique identifier of instance/holding to which holdings/items to be moved
idsArray<UUID>Array of holding/item unique identifiers which will be moved to the new instance/holding


Business logic algorithm for mod-inventory:


  • No labels