You might have stumbled upon a situation where you need your BPEL process to commit some data even though there is fault somewhere in the process.
The thing here is Oracle BPEL will fit every part of your process in a single thread unless you strictly tell it not to. To do that you have to setup a property on your partner link called “idempotent” to “false”, this will tell your BPEL process this parter link must create a new transaction. The config is as follows:
If a fault occurs on this call however, the process itself will still be marked for rollback, in this case you need to invoke this partner link in a dedicated scope, catch the faults and treat them like the example below:
More details on Oracle BPEL transactions can be found here.
My project source code can be found here