Scenario -
An async BPEL process 1 will invoke a routing service of ESB. Routing service calls the SOAP service on async BPEL process 2. This process then callback the route to BPEL process 1 on ESB (Routing Service --> process 1 SOAP service --> process 1).
Modify the client process wsdl to add a new operation as shown in image. This will be the operation which will be plugged to ESB as a soap service.
Register the project to ESB.
Create a partner link of RS_In in client process, connect it with invoke. Add a receive activity below for the callback operation 'submitStockQuote' and connect it to the 'client' partner link. The final client bpel will look like -Now create another routing service RS_Out and soap service to connect the service bpel to ESB. Connect the routing service with operation 'submitStockQuote' of the soap service. Final ESB project will look like -
Register the project to ESB.
Create a partner link of routing service RS_out in service bpel and associate it with the receive activity 'callbackClient'. The service bpel is as shown in image below.

The only thing remain here is correlation. Correlation is required at bpel and not at ESB. So create a new correlation set and assign it to invoke and receive of the client bpel. Following artifacts where created or modified while creating and assigning correlation.
processname_properties.wsdl
processname.bpel
processname.wsdl
Test and run the client bpel, two instances of ESB gets created as shown below -









