1
Fix the event model first
Decide what each terminal event means, what it must carry and which screen raises it. A community platform will amplify whatever the terminal publishes, including the mistakes.
2
Reconcile identifiers
IGM and index on the import side, GD number on the export side, container and seal number across both. Community sharing fails at the joins, and the joins are the reference numbers.
3
Publish from the operational screen
The event fires when the clerk completes the movement, not when somebody later opens a portal. Anything else produces timestamps that cannot be defended in a demurrage dispute.
4
Consume into real records
Inbound data has to create and update terminal records directly. If it lands in a report that a clerk reads and re-types, the integration has added a step instead of removing one.
5
Make failure visible
An integration status panel per partner, a message log, queued retries and controlled re-processing, with the duplicate risk on manual resend understood by whoever operates it.
6
Keep channels independent
Customs, the community platform and the shipping lines are separate channels for the same underlying events. Keeping them independent is what lets one change without disturbing the others.