Edit instance connection of order line design

AuthorAndrei Makaranka
JIRA task

UXPROD-3619 - Getting issue details... STATUS

Business Requirements

UXPROD-3619 - Getting issue details... STATUS

Architects Review

IN PROGRESS

PO review

IN PROGRESS

Revision History

VersionDateOwnerDescriptionReason
v1.004.27.2022Initial version
v2.004.28.2022@@Andrei MakarankaModel and API definitions added
v3.005.01.2022Andrei Makaranka business PATCH method design added
v3.105.04.2022Diagrams added
v3.205.09.2022Andrei Makaranka storage PATCH method design added

Overview

Current situation or problem: When a purchase orders is connected to the wrong instance there is no way to correct it. Unopening orders to do this is causing issues with receiving workflow.

Use cases

  • Purchase order was connected to the wrong instance (often the electronic rather than physical instance) because of instance matching logic that is invoked for orders created through GOBI integration.
  • Purchase order was connected to the wrong instance because of human error.
  • Purchase order was connected to the wrong instance during order import or migration.

High-Level Requirements:


Constraints

  • Instance update can not be dine for Package purchase order line

Assumptions, dependencies

In scope

Allow user to change the instance connection of a POL
When changing connection FOLIO will update all related order and inventory records

Out of Scope

  • Allow user to Change instance connection but only update some records (Ie. do not move certain items)

Architecturally Significant Requirements

  • No need to support distribution and compensation transactions

Solution Design

Data Model

mod-orders

Define schema for DTO "patch_order_line_request" 

NameTypeMandatoryDefaultDescriptionNote
operationenumYNAType of a partial modification[REPLACE_INSTANCE_REF]
replaceInstanceRef

replace_order_line_instance_ref

NNAReplace instance reference

Define schema for DTO "replace_order_line_instance_ref"

NameTypeMandatoryDefaultDescriptionNote
newInstanceIdUUIDYNAReference to new instance
holdingsOperation

enum

NNAHow to process connected holdings[MOVE, FIND_OR_CREATE, CREATE]
deleteAbandonedHoldingsbooleanYfalseIf abandoned holdings will be deleted

mod-orders-storage

Define schema for DTO "storage_patch_order_line_request" 

NameTypeMandatoryDefaultDescriptionNote
operationenumYNAType of a partial modification[REPLACE_INSTANCE_REF]
replaceInstanceRef

storage_replace_order_line_instance_ref

NNAReplace instance reference

Define schema for DTO "storage_replace_order_line_instance_ref"

NameTypeMandatoryDefaultDescriptionNote
newInstanceIdUUIDYNAReference to new instance
holdingsarray of storage_replace_order_line_holding_refsNNAHolding references for replacement in the locations and pieces

Define schema for DTO "storage_replace_order_line_holding_refs"

NameTypeMandatoryDefaultDescriptionNote
fromHoldingIdUUIDYNAReference to previous holding
toHoldingIdUUIDYNA Reference to new holding

APIs

mod-orders-storage : Add PATCH method into ramls/po-line.raml

Method

Path

Request

Response

Description

Interface

Notes

PATCH

/orders-storage/po-lines/{id}

storage_patch_order_line_request

NA : Status 204
Apply partial modifications to a order line

orders-storage.po-lines.item.patch

https://www.rfc-editor.org/rfc/rfc5789

mod-orders : Add PATCH method into ramls/order-lines.raml 

Method

Path

Request

Response

Description

Interface

Notes

PATCH

orders/order-lines/{id}

patch_order_line_requestNA : Status 204
Apply partial modifications to a order line
orders.order-lines.item.patchhttps://www.rfc-editor.org/rfc/rfc5789

Detailed design

Class diagram

Should be defined in the mod-orders  MODORDERS-683 (DTO : patch_order_line_request) and mod-orders-storage MODORDSTOR-298 (DTO : storage_patch_order_line_request)

Sequence diagrams

Work Breakdown Structure


WorkCommentsStory~ Estimate
1


MODORDERS-618 - Getting issue details... STATUS

2
2

Implement PATCH Storage API for updating Instance Reference for Non-package order line


MODORDSTOR-299 - Getting issue details... STATUS

3
3Define new business API for updating Instance Reference for Non-package order line

MODORDERS-683 - Getting issue details... STATUS

2
4Implement edit instance connection logic of POL - create inventory set to Instance, holding or Instance, holding, item

MODORDERS-684 - Getting issue details... STATUS

3
5Implement edit instance connection logic of POL - create inventory set to Instance or none

MODORDERS-685 - Getting issue details... STATUS

3
6Define data model for supporting edit instance connection logic of POL

MODORDSTOR-297 - Getting issue details... STATUS

1

Open Items

QuestionAnswer

Andrei Makaranka Which link should be updated if there are more than one in the line?

Dennis Bridges Each link should be updated separately. If the POL has more than one location/holdings, after the instance connection is changed the POL should still have more than one location and depending on the settings used a new holdings ID should be added for each “location”. 

If the POL only has Holdings IDs you could use those existing holdings IDs to get a location ID from the “Permanent location” of each holdings. 

Andrei Makaranka For which pieces is it allowed to change the instance?(Expected, Received)

Dennis Bridges