I had created a custom SOAP header to be passed in with the request, so while testing the service invocation passing in the soap security header the invocation was failing as the header was not getting passed properly. There is an issue with BPEL generated code for assigning the SOAP header. So you will need to manually change the headerVariable name to get it working.
I have used SOA PS4 environment.
<soapenv:Header>
<geosec:UserTokenHeader
soapenv:mustUnderstand="1" xmlns: geosec ="http://geo.com/geo-security">
< geosec:UserSessionToken>xxxxxxxxxxxxx</
geosec:UserSessionToken>
< geosec:TokenUserName>geotho</
geosec:TokenUserName>
< geosec:ConsumerSystemId>MySystem</
geosec:ConsumerSystemId>
</ geosec:UserTokenHeader>
</soapenv:Header>
Add a SOAP header using the invoke Headers tab.
BPEL generated code
<invoke
name="invokeStartSOAPProcess"
partnerLink="StartSOAPProcessService"
portType="ns17: StartSOAPProcessServicePType"
operation="startSOAPProcess"
inputVariable="startSOAPProcessMsgVar"
outputVariable="startSOAPProcessResponseMsgVar"
bpelx:invokeAsDetail="no"
bpelx: headerVariable ="SecurityHeader"/>
Need to change the headerVariable to inputHeaderVariable
Working code
<invoke name="invokeStartSOAPProcess"
partnerLink="StartSOAPProcessService"
portType="ns17: StartSOAPProcessServicePType"
operation="startSOAPProcess"
inputVariable="startSOAPProcessMsgVar"
outputVariable="startSOAPProcessResponseMsgVar"
bpelx:invokeAsDetail="no"
bpelx:inputHeaderVariable="SecurityHeader"/>