@startuml

hide footbox

participant Buyer
entity "Modify Product Order Item Completion Date" as MPO
entity "Product Order" as PO
entity "Product Order Item" as POI

autonumber
activate PO
activate POI
note over PO, POI: Product Order and Product Order Item in state: inProgress
Buyer -> MPO : POST modifyProductOrderItemCompletionDate request\n`expediteIndicator=true`
activate MPO
MPO -> MPO: validation
MPO -> MPO: assign id
MPO -> MPO: state: acknowledged
MPO --> Buyer: POST modifyProductOrderItemCompletionDate response

MPO -> POI: (causes state change)
POI -> POI: state: pending
POI -> Buyer: POST productOrderItemStateChangeEvent

POI -> PO: (causes state change)
PO -> PO: state: pending.assessingModification
PO -> Buyer: POST productOrderStateChangeEvent

...
note over MPO, POI: The Seller finalizes Modify request processing without identifying additional charges
MPO -> MPO: state: done
MPO -> Buyer: POST modifyProductOrderItemCompletionDateStateChangeEvent
MPO -> POI: (set `expediteIndicator=true`, `expediteIndicatorAccepted=true`)
deactivate MPO

POI -> POI: state: inProgress
POI -> Buyer: POST productOrderItemStateChangeEvent
POI -> PO: (causes state change)
PO -> PO: state: inProgress
PO -> Buyer: POST productOrderStateChangeEvent

note over PO, POI: The Seller continues processing of the Product Order
...
@enduml