@startuml !pragma teoz true !theme cerulean skinparam backgroundColor white autonumber "[0]" actor User as user participant "mod-data-import" as mdi participant "mod-srm" as srm participant "mod-srs" as srs participant "mod-inventory" as inv participant "mod-inventory-storage" as invs user -> srm: create job definition (profile type UPDATE) activate srm srm -> srm: create job srm --> user: jobId deactivate srm user -> mdi: upload MARC for jobId activate mdi mdi -> mdi: split to chunks, store in memory mdi -> srm: <> activate srm {start} mdi --> user: job started deactivate mdi srm -> srs: <> deactivate srm activate srs srs -> srs: lookup BIB record alt BIB record *NOT* found activate srs srs -> srs: <> srs -> inv: <> activate inv loop repeat until all actions in profile are processed inv -> invs: OKAPI: modify corresponding entity activate invs note right warning: no rollback here (potential inconsistency if process breaks in the middle) end note invs --> inv: modification result deactivate invs alt success inv -> inv: <> or\n<> or\n<> end loop else failed inv -> srm: <> activate srm srm -> srm: update job progress deactivate srm end inv -> srm: <> activate srm srm -> srm: update job progress deactivate srm deactivate inv deactivate srs else not found srs -> srm: <> activate srm srm -> srm: update job progress deactivate srm end deactivate srs @enduml