cancel
Showing results for 
Search instead for 
Did you mean: 

proxy to soap call

Former Member
0 Kudos

The scenario is : Proxy to PI [asynch ]  PI to Web service.

Web service  sends back response upon receipt of the message. But this response is not sent back to proxy.

The response which is sent by WS is an empty soap file in case of success. And if message fails to be received at WS, they will send some exception details.

My question is, do I need to configure Asynch-Synch bridge using BPM. Or will it work as a complete asynch scenario.?

Accepted Solutions (0)

Answers (2)

Answers (2)

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

>>>My question is, do I need to configure Asynch-Synch bridge using BPM. Or will it work as a complete asynch scenario.?

I have a perfect suggestion for you + don't use a BPM and handle it as async scenario

asnyc proxy - sync soap - async file - and use the bean from the wiki below

http://wiki.sdn.sap.com/wiki/display/HOME/Using+Request+Response+Bean+Module+in+FILE+Adapter

this way you will be able to store the reponse somewhere and call it in async proxy way

how does that sound ?

Regards,

Michal Krawczyk

baskar_gopalakrishnan2
Active Contributor
0 Kudos

Hi Michal,

Just want to learn from you. We might not use sender proxy adapter here. How do we configure adapter module on the sender adapter in this case? I thought about it and anyway the response had to be written some where as I already mentioned. Do you have any tricks to provide in this case?

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

>>>We might not use sender proxy adapter here. How do we configure adapter module on the sender adapter in this case?

SOAP adapter - XI mode

Regards,

Michal Krawczyk

baskar_gopalakrishnan2
Active Contributor
0 Kudos

Cool. If the PI version is 7.1 EHP and above.

Former Member
0 Kudos

Hi Michal,

Thanks for the suggestion.

But......

I do not have WSDL for response messages.

WS have provided sample response message. [but not exact WSDLs]. So I have created Data Types using the fields that are in the sample response message.[I dont know if it is a correct approach or not.]

WS people say that, it will be a standard response, Empty Soap File in case of success and Exception details in case of failure.

When I tested the scenario, I am able to send the request successfully to WS. When the message is successfully received at WS end, they send Empty Soap File. When it comes to PI, it fails saying "Unable to read the payload.". What I think is that, the empty soap response is the cause of this error.

Also , when there is validation error , say for example, Date field is having invalid format, the response message in PI has a payload in which I can see the exception details.

Is there any way to handle empty payloads in PI?

Or what changes do i need to do in my configuration?

MichalKrawczyk
Active Contributor
0 Kudos

Hi,

empty response it no response - ask then to provide you with status:

a) success

b) error

this way you can propage the status to the file and use it somehow - empty reponse is not the way

Regards,

Michal Krawczyk

Former Member
0 Kudos

Hi Michal,

If I ask them to send status, it means, the response file will have a field, say "Status" or something.

rite? Or u are referring to something different?

If it is field in a file then , it is not possible because....

WS people say that "whatever they can send PI is fixed, they can not make changes in what they are sending to PI in response"

The response of the successful transaction is going to be an empty soap file.

I have to now look for some way , so as to make PI understand that Empty SOAP file means successful message.

Is there any way out?

Thanks

Sneha

baskar_gopalakrishnan2
Active Contributor
0 Kudos

If you see response message  in the WSDL that means they are sending response message. But if response message has no meaningful information like Status field or so, then there is no purpose in retrieving it and storing it in file or somewhere. Empty response would not help at all. Ask them to modify it.

>WS people say that "whatever they can send PI is fixed, they can not make changes in what they are sending to PI in response"

>Is there any way out?

System acknowledgments are retrievable in the bpm. If that is the case, you might have to go to BPM only. i.e async sync with bpm.

Former Member
0 Kudos

Hi Baskar,

>System acknowledgments are retrievable in the bpm

How do we do it in BPM?

In BPM also , I will have to specify a data type with some meaningful field. When we say its a blank or empty payload, what will my data type look like?

>Empty response would not help at all.

Are you sure? Or can there be any other way ..?

Former Member
0 Kudos

Let me add this diagram to get clear understanding of my scenario.

Request:

CRM----xsd---->PI----wsdl-->WS

Response:

WS---Success or failure--->PI

[Success is an empty soap file and failure will be details of the exception ]

Request message works fine.

Response message, when failure, works fine. [I can see exception details in the payload of the response message]

But when Response message is a successful message with empty soap file, I am getting an error "Unable to read payload". I assume , it is because of blank payload.

My aim is to get a successful message in PI when the message from WS is a success message

baskar_gopalakrishnan2
Active Contributor
0 Kudos

Just in the case of success, if we get acknowledgment like 200  code as system acknowledgement, we can consider as success response.

Former Member
0 Kudos

>ust in the case of success, if we get acknowledgment like 200  code as system acknowledgement, we can consider as success response.

Does it mean that, the scenario will be asynch only?

aashish_sinha
Active Contributor
0 Kudos

Hi,

If you are getting a response 200 that means your data is posted successfully. If you don't want to use this response for anything else, then you do nothing or else if you want to do anything with response make one more adapter and use Request Response bean to call another receiver adapter to save it (As suggested by Michael). In case of error you can check moni for error code in same place where you check 200 - Ok code.

Regards

Aashish Sinha

Former Member
0 Kudos

Hi Ashish

As I wrote earlier, i am able to post the details successfully to WS. But when I am getting a response with empty soap file , I am getting an error " Unable to read payload". It is in Message mapping, because I have to create a structure in such a way that i will be able to accept the response.

But as it is empty file, it says unable to read payload.

Here is a challenge to accept the empty payload in PI.

My question is , how to accept empty payload. What kind of changes are required in PI to accept empty payload.

Shabarish_Nair
Active Contributor
0 Kudos

I think this can be easily handled in a java mapping.

In case of the 'empty response' you can create the appropriate response out of the java mapping. Since your structure doesn't seem to be a complex one in case of the response, the code shouldn't be that complex.

baskar_gopalakrishnan2
Active Contributor
0 Kudos

Since the web service sends response always whether success or failure, I would recommend to receive the response always. Since proxy already supports sync communication, create Proxy to SOAP synchronous

Proxy  to SOAP ( interface is already existing)

SOAP to proxy (create outbound and inbound interface mode synchronous and map the response of webservice to soap).

Simple changes doing mapping and creating the interfaces.

>My question is, do I need to configure Asynch-Synch bridge using BPM. Or will it work as a complete asynch scenario.?

For clarity reasons, If you want to record all the responses then go for Synchronous Proxy to SOAP.  Going async sync bridge is not better option here. Even there you need to write the response of the web service some where.