@startuml
!pragma teoz true
actor "Instrument"
database "Summit Storage" as summit
participant "Summit\nStorage\nInventory" as ssi
participant "Global\nStorage\nInventory" as gsi
participant "HQ\nStorage\nInventory" as hqsi
database "HQ Storage" as hq
database "CAOM\nDatabase" as caom
Instrument -> summit : writes file
summit -> ssi : minoc adds entry to SSI
gsi -> ssi : queries SSI for new files
ssi -> gsi : GSI gets metadata about new file
gsi -> gsi : updates inventory database
hqsi -> gsi : queries GSI for new files
gsi -> hqsi : HQSI gets metadata about new file
hqsi -> summit : request file
summit -> hq : file transferred
hqsi -> hqsi : updates inventory database
& gsi -> gsi : updates inventory database
@enduml