SOAP adapter: Processing error while sending response from REST to Proxy
Hi Folks,
Recently I was working on a Proxy to REST synchronous scenario, where I was using Async-Sync Bridge to accomplish the same (as per the requirement). You may refer William’s blog for the same: https://blogs.sap.com/2014/01/28/generic-pi-async-sync-bridge-configuration-for-any-adapters/
This issue is discussed in few questions raised on sap, but not sure if it was well described completely anywhere. Recollecting all the stuff at a single place. Hope it’s useful for you in case you have the similar issue.
Problem:
The issue came when I was receiving the response back from REST service & it was getting failed in PI due to SOAP adapter: Processing error. Below is the error in detail.
|
Here you can see the highlighted part, which clearly shows you that the error is due to parsing of the SOAP message which contains a value at RECORD number “6” (in my case, it can be different for other scenarios) in DYNAMIC CONFIGURATION (received in response message from REST adapter). This error came in the Receiver ECC Proxy channel (SOAP with XI 3.0)
Solution: Refer https://archive.sap.com/discussions/thread/1653020
It can be achieved by removing the DYNAMIC CONFIGURATION value that is causing the issue. In my case it’s the 6th record in DYNAMIC CONFIGURATION. Refer below screenshot:
In the above screenshot the value of the xml tag name “Access-Control-Allow-Headers” is exceeding 200 characters (default maximum allowable length for XI message protocol). The length of the attribute value is defined by the XI message protocol. Values can be a maximum of 200 characters long. If, for example, you assign longer values in the mapping or adapter modules then this can lead to processing errors at runtime or the values are shortened to 200 characters. This shortening can also lead to a processing error. The processing error that occurs depends on the components that access the attributes.
Refer https://help.sap.com/saphelp_nw73/helpdata/en/48/ce299c3a8e5430e10000000a42189b/frameset.htm
Thus, either we need to edit it & make it less than 200 characters or you may delete the same if its not required at the receiver end. In my case I used the delete option by adding the DynamicConfigurationBean in the Module Tab of the Receiver SOAP Proxy Channel.
For more information refer: https://help.sap.com/saphelp_nw74/helpdata/en/45/da2239feb22e98e10000000a155369/frameset.htm
Number | Module Name | Type | Module Key |
1 | AF_Modules/DynamicConfigurationBean | Local Enterprise Bean | DynamicConfigurationBean |
2 | sap.com/com.sap.aii.af.soapadapter/XISOAPAdapterBean | Local Enterprise Bean | soap |
Module Key | Parameter Name | Parameter Value |
DynamicConfigurationBean | key.5 | delete http://sap.com/xi/XI/System/REST Access-Control-Allow-Headers |
Parameter Name = key.5 (5 is used, as the Record count starts from 0 in DYNAMIC CONFIGURATION)
Parameter Value = <action nsuri name> = delete http://sap.com/xi/XI/System/REST Access-Control-Allow-Headers
Once this is configured for the invalid values in Dynamic Configuration the parsing error should be removed.
Refer SAP Note: 974481 – https://launchpad.support.sap.com/#/notes/974481 for more such parameters. You can put a length limit to the parameters as well.
Thanks
Ankit Mishra
Awsome!!!
thanks For Sharing!!!
Regards
GB
Just curious, did you check with sap on this issue? did sap suggest this to implement?
I had similar issue in SF integration project where response is getting failed in ECC due to 200 char length limitation. But sap has given note to overcome this issue without modifying the dynamic conf values. https://archive.sap.com/discussions/thread/3776367
If one is interested in retaining value which is more than 200 char length, there should be some note to tackle or better check with sap.
Regards,
Muni
Thanks Muni for pointing this out. Yeah, that will be a better option to implement note #2028742 - XI runtime: Enhancing the dynamic header for Success Factors.
Regards
Ankit Mishra