```mermaid flowchart TD receiveTracking(["Receive Tracking"]) findContainerAndShipment["SELECT container JOIN Shipment"] updateShipment[/Update shipment\] isArrivingSoon{{"Is arrival estimate between now and now + 24h?"}} hasArrived{{"Is arrival estimate <=now?"}} isDelayed{{Is arrival estimate > original arrival + 24h?}} sendNotification[/Send notification\] receiveTracking -- "` **Tracking data** carrierName:**string** destinationUnLoCode:**string** departureDate:**string[_datetime_]** arrivalDateEstimate:**string[_datetime_]** containerNumber:**string** `" --> findContainerAndShipment findContainerAndShipment --> |WHERE containers.containerNumber = :trackingData.containerNumber| updateShipment updateShipment --> isArrivingSoon & hasArrived & isDelayed isDelayed -->|set delayed flag| sendNotification hasArrived --> |set has arrived flag| sendNotification isArrivingSoon -->|set is arriving soon flag| sendNotification %% isArrivingSoon -->|yes| sendArriveSoon ``` ```mermaid flowchart getShipments([Get all shipments]) ```