@startuml Inbound Happy Flow
title Inbound Happy Flow
footer (* inter module communication)
participant DataTransformer
participant BLESS as "BLESS / KAFKA"
participant TransCommBackend
participant DataGen
participant HyperLedgerAdapter

' Submitted Order
autonumber
DataTransformer -> BLESS : Submitted Return Order
BLESS -> TransCommBackend: Publish Submitted Return Order
TransCommBackend -> BLESS: Acknowledgement
BLESS -> TransCommBackend: Processed notification
TransCommBackend -> DataGen: POST submitOrder mode=R
DataGen -> HyperLedgerAdapter: POST submitOrder mode=R
HyperLedgerAdapter -> DataGen: Publish event with Collection and Key (order, invoice)
DataGen -> HyperLedgerAdapter: GET data using Collection and Key (order, invoice)
DataGen -> BLESS: Publish order and publish invoice data
BLESS -> TransCommBackend: Publish order and publish invoice data
TransCommBackend -> BLESS: Acknowledgement
BLESS -> TransCommBackend: Processed notification

' Movements
BLESS -> TransCommBackend: Publish Pickup File*
BLESS -> TransCommBackend: Publish Master Movement*
BLESS -> TransCommBackend: Publish Detailed Movement*
TransCommBackend -> DataGen: POST updateTransportInfo mode=F (auto declaration)
DataGen -> HyperLedgerAdapter: POST updateTransportInfo mode=F (auto declaration)
HyperLedgerAdapter -> DataGen: Publish event with Collection and Key (order, invoice, documentracking, declaration_json)
DataGen -> HyperLedgerAdapter: GET data using Collection and Key (order, invoice, documentracking, declaration_json)
DataGen -> BLESS: Publish order, invoice, documentracking, declaration data
BLESS -> TransCommBackend: Publish order, invoice, documentracking, declaration data
TransCommBackend -> BLESS: Acknowledgement
BLESS -> TransCommBackend: Processed notification

' Declaration Status Change
HyperLedgerAdapter -> DataGen: Publish event (declaration status change) with Collection and Key (documenttracking)
DataGen -> HyperLedgerAdapter: GET data using Collection and Key (documenttracking)
DataGen -> BLESS: Publish documenttracking data
BLESS -> TransCommBackend: Publish documenttracking data
TransCommBackend -> BLESS: Acknowledgement
BLESS -> TransCommBackend: Processed notification

' Delivered
BLESS -> TransCommBackend: Publish OK File*
TransCommBackend -> DataGen: POST DeliverOrder
DataGen -> HyperLedgerAdapter: POST DeliverOrder
HyperLedgerAdapter -> DataGen: Publish event with Collection and Key (order, invoice
DataGen -> HyperLedgerAdapter: GET data using Collection and Key (order, invoice)
BLESS -> TransCommBackend: Publish order, invoice data
TransCommBackend -> BLESS: Acknowledgement
BLESS -> TransCommBackend: Processed notification

' Confirm return
DataTransformer -> BLESS : Submitted Confirm Return
BLESS -> TransCommBackend: Publish Confirm Return
TransCommBackend -> BLESS: Acknowledgement
BLESS -> TransCommBackend: Processed notification
TransCommBackend -> DataGen: POST confirmReturnDelivery
DataGen -> HyperLedgerAdapter: POST confirmReturnDelivery
HyperLedgerAdapter -> DataGen: Publish event with Collection and Key (order, invoice)
DataGen -> HyperLedgerAdapter: GET data using Collection and Key (order, invoice)
DataGen -> BLESS: Publish order and publish invoice data
BLESS -> TransCommBackend: Publish order and publish invoice data
TransCommBackend -> BLESS: Acknowledgement
BLESS -> TransCommBackend: Processed notification

@enduml
