Order status change
Entries. Order update and bulk status endpoints, and the return command.
Path. OrderStatusService or OrderCommandService checks VALID_ORDER_TRANSITIONS, writes history, and enqueues order.status.changed in the same transaction.
Listeners
The return command is a producer of order.status.changed, not only a consumer of order events.
Push to the channel is meaningful when the connector implements outbound orders and Channel.manageState is on. The listener guard was not line-read. Do not assume every status change is pushed.
Retries
This is not retried as an HTTP call. The outbox event is retried up to 10 times. Both listeners run again if either throws.
Idempotency
IdempotentEventHandlerService can lock the order and record ProcessedEvent. Whether these two listeners use it was not fully enumerated. Treat a retry as a possible second call until you confirm the listener.