@Override protected void process(SoapMessage message) { if (isGET(message)) { return; } T auditDataset = getAuditDataset(message); auditDataset.setRemoteAddress((String) message.get(Message.ENDPOINT_ADDRESS)); auditDataset.setDestinationUserId((String) message.get(Message.ENDPOINT_ADDRESS)); enrichAuditDatasetFromXuaToken(message, Header.Direction.DIRECTION_OUT, auditDataset); Object request = extractPojo(message); // Get request payload, handle different variants thereby: // a) for HL7v3-based transactions, payload corresponds to the "main" message; // b) for ebXML-based transactions, rely on the {@link OutPayloadExtractorInterceptor}. if (wsTransactionConfiguration.isAuditRequestPayload()) { if (request instanceof String) { auditDataset.setRequestPayload((String) request); } else { auditDataset.setRequestPayload(message.getContent(StringPayloadHolder.class)); } } getAuditStrategy().enrichAuditDatasetFromRequest(auditDataset, request, message); // when the invocation is asynchronous: store audit dataset into the correlator AddressingProperties props = (AddressingProperties) message.get(JAXWSAConstants.ADDRESSING_PROPERTIES_OUTBOUND); if (props != null && (Boolean.TRUE.equals(message.getContextualProperty(AsynchronyCorrelator.FORCE_CORRELATION)) || ! Names.WSA_ANONYMOUS_ADDRESS.equals(props.getReplyTo().getAddress().getValue()))) { correlator.storeAuditDataset(props.getMessageID().getValue(), auditDataset); } }