WS-Addressing
wsa:Action, wsa:MessageID and the other routing headers - added and parsed with one checkbox.
WS-Addressing puts the routing metadata of a SOAP exchange - what operation this is, which message it is, where it goes and where replies belong - into standard wsa:* header elements instead of leaving it to the transport. Document-exchange profiles in healthcare (IHE) and many government endpoints require these headers on every request.
In Zato it is one checkbox - WS-Addressing on the SOAP tab of an outgoing connection.
What is sent
With the checkbox on, every request includes:
wsa:Action- the connection's SOAP actionwsa:MessageID- a fresh unique identifier per requestwsa:To- the connection's addresswsa:ReplyTo- the anonymous reply endpoint, meaning replies come back on the same HTTP response
Your service does not build any of these - it assigns business fields to a SOAPMessage and the headers are added when invoke runs.
What is read
The reply's addressing headers are parsed off the response and exposed as the reserved addressing attribute - a service can inspect them when it cares and ignore them when it does not:
response = self.soap['Document Registry'].invoke('DocumentQuery', request)
addressing = response.addressing
self.logger.info('Reply action: %s', addressing.action)
self.logger.info('Reply message id: %s', addressing.message_id)
self.logger.info('In reply to: %s', addressing.relates_to)
relates_to echoes the wsa:MessageID of the request that the reply answers, which is what correlation-aware endpoints use to tie exchanges together.