cancel
Showing results for 
Search instead for 
Did you mean: 

Outbound messaging

former_member206760
Active Contributor
0 Kudos

Hi ,

I am working on the integration with the SFDC system and have all the docs pertaining to that...

Here for the outbound soap calls from SFDC ...they are saying that they will make the calls in the following format...

For e.g for sending the "Oppurtunity " data they will send the following "notification" message to PI....

there can be upto 100 ( max occurs 100) "Oppurtunity" data sent in one soap call....

<schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://soap.sforce.com/2005/09/outbound">

<import namespace="urn:enterprise.soap.sforce.com" />

<import namespace="urn:sobject.enterprise.soap.sforce.com" />

<element name="notifications">

<complexType>

<sequence>

<element name="OrganizationId" type="ent:ID" />

<element name="ActionId" type="ent:ID" />

<element name="SessionId" type="xsd:string" nillable="true" />

<element name="EnterpriseUrl" type="xsd:string" />

<element name="PartnerUrl" type="xsd:string" />

<element name="Notification" maxOccurs="100"

type="tns:OpportunityNotification" />

</sequence>

</complexType>

</element>

</schema>

I understand that in sender SOAP scenarios PI has to define the webservice( PI namespace and service interface )

How do i define the above structure within PI so that they can send the information in the above format.

For e.g if I define the namespace as "http://soap.sforce.com/2005/09/outbound"....what should be the outbound service interface name....???

OR the above design is not possible and PI has to define a custom webservice with its own Service interface and namespace??

Accepted Solutions (1)

Accepted Solutions (1)

former_member206760
Active Contributor
0 Kudos

I have no option but to use the soap sender adapter ( as they are sending soap calls only )

So i was finding a possibility if without creating wsdl on PI....Can they send a soap call which PI can accept...

I understand we can define the same structure as per the SOAP call they are going to send .....

But will PI accept it because SERVICE interface is also a part of the wsdl that PI generates however it will not be a part of the SOAP call that the applciation will make....

This is very imp for me if some one can help

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

So i was finding a possibility if without creating wsdl on PI....Can they send a soap call which PI can accept...

Technically, a soap call is an HTTP POST, it is just that there is a soap envelope So with or without a wsdl, a sync request can be made by posting to the soap url.

But will PI accept it because SERVICE interface is also a part of the wsdl that PI generates however it will not be a part of the SOAP call that the applciation will make....

You can use the url http(s)://host:port/XISOAPAdapter/MessageServlet?channel=p:s:c for the call. There is no need to specify the service interface in the URL. Your sender agreement takes care of that.

Hope this helps,

Mark

Answers (2)

Answers (2)

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

How do i define the above structure within PI so that they can send the information in the above format.

What you can do is to import the external definitions, then reference the xsds and then go to the messages tab. The message structure that you will see there is what the message structure will look like in PI.

For e.g if I define the namespace as "http://soap.sforce.com/2005/09/outbound"....what should be the outbound service interface name....???

Make your outbound service interface as descriptive as possible e.g SI_OS_OpportunityNotification where OS means Outbound Synchronous

If the format they are sending does not match the one declared in the service interface e.g has prefixes, etc...you can use XMLAnonymizerBean, XLST/Java Mapping.

Hope this helps,

Mark

former_member206760
Active Contributor
0 Kudos

Hi Guys,

The issue is they have a workflow at their end which would trigger the outbound call...Also they have the wsdl in their own format....so they are going to make the call in the format shown..

i can import the structure as XSD...but then they are not going to use wsdl generated by PI...neither they are going to consider the Service interface generated by PI.....

As far as I know the sending system has to make soap calls based on the namespace and service interface....so that call has to be custom....i mean some coding has to be done at their end to consume PI webservice...

However they are not ready for that and they want to use their standard call format ( which does not have our service interface)

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

As far as I know the sending system has to make soap calls based on the namespace and service interface....so that call has to be custom....i mean some coding has to be done at their end to consume PI webservice...

SOAP calls to PI can be made by posting to the url http(s)://host:port/XISOAPAdapter/MessageServlet?channel=p:s:c

This can be done by a program.

Why not use ABAP Proxies to call PI?

Hope this helps,

Mark

former_member206760
Active Contributor
0 Kudos

I do understand that consuming application can post to the URL...

but the wsdl that is being consumed also needs to have the reference of the Service interface created in PI right???

else it will give a problem...The call that they are making is using their own wsdl....

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

but the wsdl that is being consumed also needs to have the reference of the Service interface created in PI right???

You can think of a simple PlainHTTP <-> RFC scenario, no wsdls are being consumed

A service interface can be consumed if it is exposed as a webservice. If you just POST using the URL in the wsdl, it would function as the PlainHTTP scenario mentioned above (experts, please correct). The advantage of a WSDL is that the output structure is already defined, as such you might need to use XSLT/Java mapping to adjust the response.

Hope this helps,

Mark

former_member206760
Active Contributor
0 Kudos

Hi Mark,

That is a good suggestion....but the sending application is going to send only SOAP nessages with a SOAP header....

Also it will need a response message back....So I think I need to have a SOAP adatper ??/

any other ideas?

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

Also it will need a response message back....So I think I need to have a SOAP adatper ??/

Yup, you can use the sender soap adapter for this one.

You can also try using the PlainHTTP adapter but remove the soap envelope for the request and then add it for the response.

Hope this helps,

Mark

Former Member
0 Kudos

Hi Tarang,

Here for the outbound soap calls from SFDC ...they are saying that they will make the calls in the following format...

If they want to make a SOAP call to PI then you create a Service Interface Outbound and generate a webservice for this Service Interface. Provide the WSDL to Client and ask them to consume this webservice and send the request call to PI.

How do i define the above structure within PI so that they can send the information in the above format

You can create similar structure in PI as Data type, Or if your client has provided with .xsd you can utilise in creation of Service Interface.

what should be the outbound service interface name....???

Since you are defining your own Service Interface you can give name as per the business functionality.

Ex: SI_Notifications_Out in your case.

Regards

Praveen K