Role | Person | Comments |
---|---|---|
Solution Architect | Approved | |
Java Lead | ||
UI Lead | ||
Product Owner |
- Transfer/Relink Move Holdings and/or Items Jira Legacy server FOLIO Issue TrackerSystem JIRA columns key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution serverId 6ccf3fe401505d01-3301b853-368a3c2e-983e90f1-20c466b11a49ee9b165564fc key UXPROD-137
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 moved 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.
Drawio border true viewerToolbar true fitWindow false diagramName Instance-Holding-Item simpleViewer false width diagramWidth 631 revision 1
Possible scenarios and implementation:
1) Move item(s) between holdings
...
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 move request to endpoints PUT POST /inventory/items/move or inventory/holdings/move API. The mod-inventory processes this request and , retrieves each item/holding from item/holdings-storage, prepares a request for each item/holding in the array update and sends it asynchronously to the mod-inventory-storagetstorage. 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
Method | Path | Provided permissions | Request | Response | Description | Notes | |
---|---|---|---|---|---|---|---|
PUTPOST | inventory/items/move | inventory.items.arraymove.item.putpost | Collection<Item>Move | 204 UPDATED201 CREATED | Update items from array | PUTMove items to new holding | |
POST | inventory/holdings/move | inventory.holdings.arraymove.item.putpost | Collection<Holding>Move | 204 UPDATED201 CREATED | Update holdings from arrayMove holdings to new instance |
Flow details
Sequence diagram:
Drawio border true diagramName Items_holdings_bulk_operations simpleViewer false widthlinks auto tbstyle top lbox true diagramWidth 511 revision 15
Steps:
1) Send array of items to be updated in one request with updated item.holdingsRecordId.2) Send asynchronously update request move request (it contains id of holding to which items should be moved and items ids).
2) Send GET items collection form item-storage.
3) Update retrieved items with new item.holdingsRecordId and send asynchronously update request to item-storage for each item.
34) Wait all responses, populate errors if some of request failed.
45) Return response to UI client.
56) Send array of holdings to be updated in one request with updated holding.instanceId.
6) Send asynchronously update request for each item.
7move request (it contains id of instance to which holdings should be moved and holdings ids).
7) Send GET holdings collection form holdings-storage.
8) Update retrieved holdings with new holding.instanceId and send asynchronously update request to holdings-storage for each holding.
9) Wait all responses, populate errors if some of request failed.
810) Return response to UI client.
Move schema:
Field | Type | Required | Note |
---|---|---|---|
to | UUID | true | Unique identifier of instance/holding to which holdings/items to be moved |
ids | Array<UUID> | true | Array of holding/item unique identifiers which will be moved to the new instance/holding |
Business logic algorithm for mod-inventory:
Drawio border true diagramName Transfer_relink_algorithm simpleViewer false widthlinks auto tbstyle top lbox true diagramWidth 642862 revision 14