Why messages have the status FAILED in Oracle Field Service (OFS) even though we configured our Middleware according to the Outbound API SDK?
Environment:
Applies to all versions of Oracle Field Service (OFS)
Issue:
Messages have the final status FAILED (MESSAGE_STEP_EXPIRED) even though Middleware was configured according to the Outbound API SDK
Resolution:
According to Outbound API SDK, for the send_message_response the fields message_id and status are required and have to be sent at all times but fields description, data, external_id, duration, sent, fault_attempt, stop_further_attempts, time_delivered_start and time_delivered_end are not required. This is also described in the WSDL by specifying minOccurs="0" maxOccurs="1" for the non-required fields.
When sending send_message_response it is recommended to only send fields that have a value, so even if the fields are not required they should either be sent with values or not sent at all.
Sending specific tags with an empty value, as in <duration/>, may return errors like: {ERROR: send_message: '' is not a valid Integer value. Tag = duration}. It is a protocol requirement to either send some value as part of the send_message_response or not send the tag at all.
For further details please review the Outbound API SDK here: Integrating with Oracle Field Service Cloud Outbound API