HTTP PATCH using Oracle SOA Suite

13. February 2020

Johannes Michler PROMATIS Horus Oracle


Senior Vice President – Head of Platforms & Development

Oracle SOA Suite 12.2 has an integrated REST Adapter conveniently allowing to call and provide REST based Web Services out of SOA Suite Composites (https://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/soa_apps_integ/12c/ServiceBus/rest-enabling-generic-soasuite/RestEnablingSoaSuite12c.html). Up until now (and including the latest release 12.2.1.4) the REST adapter is only able to provide or call the HTTP verbs GET, POST, PUT and DELETE, however many "modern" APIs require the HTTP PATCH verb to be used.

For outbound calls to such services expecting the HTTP PATCH verb a common workaround that worked in most cases (and that worked especially when integrating with Oracle SaaS products, e.g. the HCM REST APIs) was to use the HTTP Header X-HTTP-METHOD-OVERRIDE (https://docs.oracle.com/en/cloud/saas/service/18c/cxsvc/c_osvc_http_tunneling.html).

This workaround obviously does not work if you have to provide the endpoint that should accept PATCH (or if the endpoint you're calling does not support the workaround) that is for example defined in a swagger definition. This was the situation when working on the AvaL standard (a standard describing communication patterns in the waste and recycling business, https://www.avalstandard.de/): If that standard (and the other partners implementing it) excepts you to provide an endpoint accepting and processing HTTP PATCH you were basically lost. The only workaround I could think about so far was putting a HTTP Proxy in front of the SOA Suite converting the HTTP method. Some guidance on this can be found here: https://stackoverflow.com/questions/29693645/proxying-patch-request-to-post-with-nginx.

Luckily after some discussion with Oracle product management for SOA Suite we managed to convince Oracle to provide a Patch for SOA Suite (both 12.2.1.3 and 12.2.1.4) that adds this much needed functionality: By downloading and applying the patches 23333915 and 30314169 to both your "runtime soa server" and your "local JDeveloper installation" the REST Binding Configuration Wizard gets a new value in the HTTP verb dropdown:

This is the case both for "calling" and "providing" rest services. So far both calling Oracle SaaS Applications and providing and calling end points in the AvaL standard context looks very promising. Thank you Oracle for finally implementing this!