Skip to Content
Author's profile photo Anupam Ghosh

Troubleshooting SAP-PI and Salesforce.com integration scenario

Salesforce.com offers technology solution which support CRM of an organization. In addition to the web interface, salesforce.com offers a SOAP/REST Web service API that enables integration with other systems. SAP-PI uses SOAP [3] to interact with Salesforce.com. This article does not intend to build up SAP-PI and Salesforce.com integration scenario. In case you need details on how to set up exchange of messages between SAP-PI and Salesforce.com then please refer to points  [1] and [2] in reference section. After a scenario is built in SAP-PI to communicate with Salesforce.com then comes the responsibility of maintaining such connection. Periodically there are refresh happening in Salesforce Sandbox database to bring it in sync with production Salesforce database. After such refresh there might be problems for SAP-PI to connect or communicate with Salesforce.com using SOAP receiver adapter. This article describes SOAP faults while SAP-PI is trying to communicate with Salesforce.com and possible steps to resolve the errors. I am just sharing my experiences with SCN , the various trouble shooting I had to perform for maintenance of SAP-PI and SFDC(salesforce.com) integration scenario. If you feel this this article is helpful then all credits goes to my team members who have always provided me unending help and support.

SAP-PI integrates Salesforce.com (SFDC) with SAP-ISU. The manner is explained in this figure below

sfdc general pic.jpg

In most of the projects there will be development, acceptance and production servers. SAP-PI development and acceptance server would connect to Sandbox URL of Salesforce.com whereas production server will connect to different URL. Salesforce gives us the ability to create multiple copies of our organization in separate environments for a variety of purposes, such as testing and training, without compromising the data and applications in our Salesforce production organization. These copies are called sandboxes and are nearly identical to our Salesforce production organization. Sandboxes are completely isolated from Salesforce production organization, so operations performed in sandboxes do not affect the Salesforce production organization, and vice versa. The URL to which PI server connects to production environment is different from the URL used to connect to sandbox server. After some definite intervals of time production data instance is copied into sandbox data instance. This is done to provide more realistic data for test environment in development system. Salesforce stores sandbox organizations on several instances. When a sandbox is created or refreshed, an instance is selected for the sandbox, so our sandbox may appear on different instances and have different URLs. This article mainly tends to describe problems SAP-PI might face after a refresh and how to resolve them.

The sequence of events that happen while SAP-PI tries to communicate with Salesforce and do a simple query on contacts object (for example) is as shown below. 

/wp-content/uploads/2012/06/flowchart_107568.png

Problem 1

After sandbox refresh in development environment of SFDC the SOAP fault message during login is as shown below

– 

<? xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  <SAP: Error xmlns:SAP="http://sap.com/xi/XI/Message/30"
  xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
  <SAP:Category>Application</SAP:Category>
  <SAP:Code area="UNKNOWN">APPLICATION_ERROR</SAP:Code>
  <SAP:P1 />
  <SAP:P2 />
  <SAP:P3 />
  <SAP:P4 />
  <SAP:AdditionalText>application fault</SAP:AdditionalText>
  <SAP:ApplicationFaultMessage namespace="urn:fault.enterprise.soap.sforce.com">LoginFault</SAP:ApplicationFaultMessage>
  <SAP:Stack />
  <SAP:Retry>M</SAP:Retry>
  </SAP:Error>

In SXMB_MONI error symbols like this  /wp-content/uploads/2012/06/sxmberror_107569.png            may be obtained.

Solution:

  1. Need to login to Salesforce.com sandbox server as administrator, then need to go to Setup -> App set up -> Develop –> API -> Generate Enterprise WSDL àgenerate

as shown below

/wp-content/uploads/2012/06/sfdc_107573.png

The WSDL will be in form of XML. At the end of the WSDL tag “service” can be seen.

Here a sample service tag is being shown. 

<service name="SforceService">
     <documentation>Sforce SOAP API</documentation>
     <port binding="tns: SoapBinding" name="Soap">
     <soap: address location="https://XYZ.salesforce.com/services/Soap/c/24.0/0CG30000888Pm5T" />
     </port>
</service>

The important part of service tag is the portion “soap: address”.  The URL to the Salesforce server is obtained in “location” attribute. This URL has to be in target URL of SOAP receiver adapter meant for logging in to salesforce.com.

N.B- In case of Sandbox database refresh message structure is not expected to change. Thus there is no need to re-import the enterprise WSDL in SAP-PI server and redo all mappings again

Problem 2

After the target URL for Login has been changed. Then SAP-PI tries to make a query to Contacts object within SFDC. The manner in which request was made prior to SFDC refresh is shown below

 <? xml version="1.0" encoding="utf-8" ?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv: Header>
 <SessionHeader xmlns:ns1="urn:horizon:sessionmgmt"
 soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">
  <ns1:sessionId>2TjsllIJRC_3Uvo.ZLLEWb9ed7igHX2aarxpWzrgUeOJWh1AwrqnR.ZwvbKa0Gb8ueHy</ns1:sessionId>
  </SessionHeader>
  </soapenv:Header>
 <soapenv:Body>
 <query xmlns="urn:enterprise.soap.sforce.com">
  <queryString>Select Id, HasOptedOutOfEmail FROM Contact </queryString>
  </query>
  </soapenv:Body>
  </soapenv:Envelope>

The response to this message was a SOAP fault message as shown here

    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
 <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30"
 xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
  <SAP:Category>XIAdapter</SAP:Category>
  <SAP:Code area="HTTP">ADAPTER.HTTP_EXCEPTION</SAP:Code>
  <SAP:P1 />
  <SAP:P2 />
  <SAP:P3 />
  <SAP:P4 />
  <SAP:AdditionalText>HTTP 500 Internal Server Error</SAP:AdditionalText>
  <SAP:ApplicationFaultMessage namespace="" />
  <SAP:Stack />
  <SAP:Retry>M</SAP:Retry>
  </SAP:Error>

In the response message payloads main attachment this XML message was shown

<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sf="urn:fault.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
 <soapenv:Fault>
  <faultcode>sf:INVALID_SESSION_ID</faultcode>
  <faultstring>INVALID_SESSION_ID: Invalid Session ID found in SessionHeader: Illegal Session</faultstring>
 <detail>
 <sf:UnexpectedErrorFault xsi:type="sf:UnexpectedErrorFault">
  <sf:exceptionCode>INVALID_SESSION_ID</sf:exceptionCode>
  <sf:exceptionMessage>Invalid Session ID found in SessionHeader: Illegal Session</sf:exceptionMessage>
  </sf:UnexpectedErrorFault>
  </detail>
  </soapenv:Fault>
  </soapenv:Body>
  </soapenv:Envelope>

Solution

This error is quite misleading as the session ID supplied is a valid one. Thus the error message may not be showing the exact reason of SOAP Fault. Install the SOAPUI tool in local system [4] . Import the latest enterprise WSDL into the SOAP UI tool and set up proxy server details if any. This is because this helps to find out the exact structure of the SOAP message being accepted by Salesforce.com after sandbox refresh activity. There cannot be any change in number of tags or name of tags in SOAP message. Thus changes might be in namespace information. This has to be identified.

Go to file ànew Soap UI project à give  a project name and import WSDL in form of XML file. The XML file can be formed by saving the generated WSDL file.Under each project there will be operations such as login, logout ,query etc. Right click on query and generate new instance of query. You might need to delete excess fields to create the exact message structure as per query structure in SAP-PI. Thus after modification contact query in SOAP UI tool was looking something like this

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:urn="urn:enterprise.soap.sforce.com">
   <soapenv:Header>
      <urn:SessionHeader>
         <urn:sessionId></urn:sessionId>
      </urn:SessionHeader>
   </soapenv:Header>
   <soapenv:Body>
      <urn:query>
         <urn:queryString>?</urn:queryString>
      </urn:query>
   </soapenv:Body>
</soapenv:Envelope>

If noted carefully the message structure shown above the default namespace is “urn:enterprise.soap.sforce.com” and tag “SessionHeader” is identified by same default namespace. Thus on comparison with first xml message shown under problem 2  , the namespace information is different for  “SessionHeader” as there is no namespace information attached to it.Using java or XSLT mapping the namespace information has to be added.

Following is the change in message namespace information before and after SFDC sandbox refresh.

<soapenv:Header>
<SessionHeader xmlns:ns1="urn:horizon:sessionmgmt"
 soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">
 <ns1:sessionId>00DW0000000CxdG!AQUAQJbFcBi45eGiXFoIlSj47fJl2TjsllIJRC_3Uvo.ZLLEWb9ed7igHX2aarxpWzrgUeOJWh1AwrqnR.ZwvbKa0Gb8ueHy</ns1:sessionId>
 </SessionHeader>
 </soapenv:Header>

     After SFDC sandbox refresh new SOAP header with default namespace information it becomes as shown below

<soapenv:Header xmlns="urn:enterprise.soap.sforce.com">
 <SessionHeader xmlns:ns1="urn:horizon:sessionmgmt"
 soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0">
  <ns1:sessionId>9ed7igHX2aarxpWzrgUeOJWh1AwrqnR.ZwvbKa0Gb8ueHy</ns1:sessionId>
  </SessionHeader>

   

This resolves the problem due to slight change in default namespace. Once correct SOAP message from SAP-PI is sent the SOAP fault is avoided.

Problem 3

There might be SOAP faults even after this corrections as shown below

<?xml version="1.0" encoding="UTF-8" ?>
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sf="urn:fault.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
 <soapenv:Fault>
  <faultcode>sf:INVALID_FIELD</faultcode>
  <faultstring>INVALID_FIELD: Description, CurrencyIsoCode, OwnerId, HasOptedOutOfEmail, CreatedDate ^
 ERROR at Row:1:Column:380 No such column 'HasOptedOutOfEmail' on entity 'Contact'.
  If you are attempting to use a custom field, be sure to append the '__c' after the custom field name.
 Please reference your WSDL or the describe call for the appropriate names.</faultstring>
 <detail>
 <sf:InvalidFieldFault xsi:type="sf:InvalidFieldFault">
  <sf:exceptionCode>INVALID_FIELD</sf:exceptionCode>
  <sf:exceptionMessage>Description, CurrencyIsoCode, OwnerId, HasOptedOutOfEmail, CreatedDate ^ ERROR at Row:1:Column:380 No such column 'HasOptedOutOfEmail' on entity 'Contact'. If you are attempting to use a custom field, be sure to append the '__c' after the custom field name. Please reference your WSDL or the describe call for the appropriate names.
</sf:exceptionMessage>
  <sf:row>1</sf:row>
  <sf:column>380</sf:column>
  </sf:InvalidFieldFault>
  </detail>
  </soapenv:Fault>
  </soapenv:Body>
  </soapenv:Envelope>

Solution

       The fault string says that a particular field  “HasOptedOutOfEmail” is an invalid. Now this used to be valid field earlier. In this case the user ID with which SAP-PI is accessing Salesforce.com may not have field level access permission. The permission has to be given from Salesforce team.

               Problem 4

You might receive a SOAP fault with following message

iou   

<?xml version="1.0" encoding="UTF-8" ?>
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:sf="urn:fault.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
 <soapenv:Fault>
  <faultcode>sf:INVALID_OPERATION_WITH_EXPIRED_PASSWORD</faultcode>
  <faultstring>INVALID_OPERATION_WITH_EXPIRED_PASSWORD: The users password has expired,
 you must call SetPassword before attempting any other API operations</faultstring>
 <detail>
 <sf:UnexpectedErrorFault xsi:type="sf:UnexpectedErrorFault">
  <sf:exceptionCode>INVALID_OPERATION_WITH_EXPIRED_PASSWORD</sf:exceptionCode>
  <sf:exceptionMessage>The users password has expired,
 you must call SetPassword before attempting any other API operations</sf:exceptionMessage>
  </sf:UnexpectedErrorFault>
  </detail>
  </soapenv:Fault>
  </soapenv:Body>
  </soapenv:Envelope>

Solution

Every time SAP-PI tries to login to SFDC server it has to login using a user credential.

The user credential has login id and password.  This issue was reported for production server. While checking development environment SAP-PI server which is connected to Salesforce.com sandbox environment it was found same SOAP fault is being observed here too. The Salesforce team reset the password for same user in Sandbox system and set it to  “Password Never Expires”  capability. After resetting the user password in sandbox followed by changes in development SAP-PI server, the production SAP-PI server also stopped giving errors. I have no clues if the user credentials in sandbox environment have any logical connection to production environment of Salesforce.com but at least it resolved the error in production SAP-PI too.

Problem 5

You might receive error message as shown below

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
 <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30"
 xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
  <SAP:Category>XIAdapterFramework</SAP:Category>
  <SAP:Code area="MESSAGE">GENERAL</SAP:Code>
  <SAP:P1 />
  <SAP:P2 />
  <SAP:P3 />
  <SAP:P4 />
  <SAP:AdditionalText>com.sap.aii.af.ra.ms.api.DeliveryException: unable to create a socket</SAP:AdditionalText>
  <SAP:ApplicationFaultMessage namespace="" />
  <SAP:Stack />
  <SAP:Retry>M</SAP:Retry>
  </SAP:Error>

    Solution:  We always connect to Salesforce server from specific protected network. Thus all SOAP request has to pass through proxy server. If the proxy server does not allow the SOAP request to flow through you will receive errors as shown above. This is either due to the fact that proxy server details mentioned in SOAP receiver communication channel is not correct, authentication error etc. In this case you need to consult the network team to resolve the issue.

Problem 6

    You might get an error message like this as shown below

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30"
 xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
  <SAP:Category>XIServer</SAP:Category>
  <SAP:Code area="INTERNAL">PL_TIMEOUT</SAP:Code>
  <SAP:P1 />
  <SAP:P2 />
  <SAP:P3 />
  <SAP:P4 />
  <SAP:AdditionalText />
  <SAP:ApplicationFaultMessage namespace="" />
  <SAP:Stack>Timeout condition of pipeline reached</SAP:Stack>
  <SAP:Retry>N</SAP:Retry>
  </SAP:Error>

        Solution: – SAP-BASIS team restarted the java stack of the PI server and the error is gone.

     

       .

Problem 7

   After all troubleshooting again you are getting the same error “login Fault” as shown in problem 1

Solution: Every time SAP-PI tries to login to SFDC server it has to login using a user credential. The user credential has login id and password which is fixed. The business has to register with salesforce.com for its services. After a definite period of time the registration has to be renewed. Thus check with salesforce.com team if the business has to re-register with salesforce.com or not. The exact cause of such fault will be shown to you if you try logging in to salesforce.com using the login credentials directly and not through SAP-PI

Problem 8

     After all troubleshooting again you are getting the same error “Invalid Session ID found in SessionHeader: Illegal Session” as   shown   in problem 2

Solution: Every time SAP-PI tries to login to SFDC server it has to login using a user credential. The user credential has login id and password which is fixed. Say for example you are using xyzuser@sgd.com  credentials to login to salesforce.com through SAP-PI. Thus the SOAP login request to SFDC carries the name xyzuser@sgd.com  .  Now while SAP-PI is trying to connect to Salesforce.com at the time the user xyzuser@sgd.com   is trying to login to salesforce.com directly, then it’s possible you can receive this error. Thus you need to ensure that login credential used by SAP-PI to login to Salesforce.com is not used to login to salesforce.com directly.

  

  

         References

            1. http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/802f8d03-9282-2d10-52b4-f9446e077099?QuickLink=index&overridelayout=true

  2.       2. http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/50a76cfa-4966-2d10-aba7-da496d9b5bcf

            3. http://www.w3.org/TR/2000/NOTE-SOAP-20000508/

            4. http://www.soapui.org/

RefR

Assigned Tags

      36 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Prasanthi Chavala
      Prasanthi Chavala

      Hi Anupam,

      Very helpful information. Thanks for sharing!!!

      Cheers,

      Prasanthi

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Prasanthi,

                      Its wonderful to know that you liked this blog.

      Thank you so much for your comments.

      Regards

      Anupam

      Author's profile photo Raj Thukiwakam
      Raj Thukiwakam

      Excellent blog anupam.

      How did SFDC team connected to PI? which adapter you have used at sender side?

      Regards,

      Raj

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Raj,

                    First of all I am honoured that you liked my blog. Its a priviledge to receive words of appreciation from senior and respected member of the forum. The scenario was something like this

      SAP-ISU  ---> idoc<----> SAP-PI---->SOAP (request- response)<--->SFDC

      SAP-PI received iodc from SAP-ISU at regular intervals of time. Using SOAP receiver adapter sync scenario SAP-PI makes requests and receives response from SFDC. This is again being forwarded to SAP-ISU in form of idoc. Flowchart in the blog explains the scenario.

      Thanks once again for your comments on the blog.

      Regards

      Anupam

      Author's profile photo Nipun Shedhani
      Nipun Shedhani

      This is very helpful Anupam.

      Thanks for sharing.

      Regards,

      Nipun

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Nipun,

                       I think I spent around 10-15 sleep less nights to find out why SFDC was behaving absurd. Whatever I could figure out has been documented in this blog. Only reason to write document this was the fact that other PI consultants should not go through same difficult phase as I went through. Every day I used to think , I should resign and leave because I am unable to resolve the issues. Somehow I kept on trying and finally I was successful. It's wonderful to know that you liked my blog.

      Regards

      Anupam

      Author's profile photo Nipun Shedhani
      Nipun Shedhani

      Hi Anupam,

      Your detailed insight on the issues you faced and approach/steps taken to resolve definitely pinpoint any developer to get into right direction.

      These kind of novel blogs always keep the prestige of SDN and demonstrates the power of sharing knowledge and collaborating with people. This will certainly help reducing development efforts for many others using similar integration.

      Regards,

      Nipun

      Author's profile photo Former Member
      Former Member

      Hi Anupam,

      Fanastic Job, Very Nice Work. Keep sharing good blogs like this.

      Very Useful web link.

      Regards,

      Hari Suseelan

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Suseelan,

                            Glad to know that you liked my blog.

      Thank you so much for your comments.

      Regards

      Anupam

      Author's profile photo Former Member
      Former Member

      Hi Anupam,

      Its my great pleasure. Thank you so much for sharing good blogs like this.

      Keep sharing

      Regards,

      Hari Suseelan

      Author's profile photo Srinu S
      Srinu S

      Nice effort . better if you could share some document 3rd party tool integration with  functional modules.

      Thanks for sharing.

      Srinu.

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Srinivas,

                         Thanks for your comments. Will try to come up with integration scenario soon.

      Regards

      Anupam

      Author's profile photo Former Member
      Former Member

      Hi Anupam,

      Good Day!

      Fanastic Work! I appreciate all your efforts.

      I liked very much while reading this PI technical blog.

      Keep up the good work! Keep sharing and motivating ppl forever!

      Thank you so much for your effort.

      Have a fruitful day!

      Regards,

      Hari Suseelan

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Hari,

                   Elated to know you liked my work.

      Thanks you for taking time to read this blog and liking this.

      Thank you once again for your comments on the blog.

      Regards

      Anupam

      Author's profile photo Former Member
      Former Member

      Hi Anupam,

      Good Day!

      You are welcome!

      Regards,

      Hari Suseelan

      Author's profile photo Pranil Shinde
      Pranil Shinde

      Excellent blog Anupam!

      Regards,

      Pranil.

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Pranil,

                      Thank you so much for kind words of appreciation and for liking the blog.

      This means a lot to me.

      Regards

      Anupam

      Author's profile photo Former Member
      Former Member

      Hi Anupam,

      I am working on a scenario where i should pass the fault message from sfdc to ecc. Here I know how to remove the soap envelope from fault message but I do not know how to map the fault message from sfdc to ecc fault message. Do you have a java map for the same? - email - svenky1983@gmail.com

      Thanks

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Satish,

                           We used a mail adapter to email the fault message to a set of users who can take appropriate steps. You can use java mapping too to send the emails.

      Regards

      Anupam

      Author's profile photo ambuj mishra
      ambuj mishra

      Great Article Anupam.

      Could you please show me in a an example, how are you sending email for fault message? Have you configured a different system for sending mail and receiving response back from sfdc?

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Ambuj,

                       The fault messages are captured in java mapping. We used a CCBPM where based on a condition we detected if there was a fault (switch).  If there was a fault there is a send step in the switch (true branch). The send step was associated with a mail adapter which sent out emails. Mail server was configured to send emailss from SAP -PI. I am unable to provide screen shot of the config because those are confidential information  related to project.

      Regards

      Anupam

      Author's profile photo ambuj mishra
      ambuj mishra

      Thanks.

      Author's profile photo Former Member
      Former Member

      Hi Anupam,

      i assume you are using SFDC Enterprise API. Can you share a screen how you do the mapping inside PI? Are you map into SObject?

      Regards,

      Ly-Na

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Ly-na,

                     Yes we were mapping into Sobject but you need to alter the WSDL to suit your requirement. Please refer to links mentioned under references which shows the process of altering the WSDL. I am unable to share the screen shot inside our mapping due to permission issues. In case you are facing problems in mapping please use a SOAP UI tool to find out exact structure of the XML accepted by SFDC. Then all you need to do is to use java or xslt mapping to produce exactly the same output.

      Regards

      Anupam

      Author's profile photo Former Member
      Former Member

      I have scenario to integrate Salesforce with ECC to integrate Customer Mater with Account in Salesforce. Salesforce create WSDL method is synchronous, so I need response in ECC, I am using proxy and calling it in ABAP report. I have created Message Type of Response structure of Salesforce in ESR. Used in target structure in response message mapping.

      My message mapping is like this

      Untitled1.png

      This is working fine but final response is not what I want, actually I am calling proxy method in report and want response in exporting parameter of proxy method.

      Untitled1.png

      Response is coming as SOAP Envelope up to XML Validation Inbound Channel response in SXMB_MONI like above screen shoot.

      Then after Response Message Mapping I am loosing response (I think its empty) But customer master is integrated successfully. So what mapping to do get the same as aspected (Want in exporting parameter of proxy call).

      Untitled1.png

          I need XSL or Java Mapping code that exact suite this scenario, i seen different XSL but its fulfilling my need.

      Thanks

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Saurav,

                     Apologies for delayed response. Please post the source xml and the target xml you need.

      Regards

      Anupam

      Author's profile photo Former Member
      Former Member

      Hi Anupam,

      I am doing integration from SAP PI to SFDC. please help me i am fighting past one month about this issue

      Scenario: Proxy (ABAP) to SOAP  Sync

      Iam using java mapping for to get the Session ID.

      while i executed msg from Operation Mapping iam getting the session ID, same payload i copyed and pasted in SOAP UI,

      Capture.PNG

      in SOAP UI iam getting the response, below is the screen

      Capture1.PNG

      While iam validating the payload in SOAP UI, iam getting the below error

      Capture2.PNG

      then i have initiated the message from ECC (sProxy)

      i am getting success message in message monitoring, status shows DLVD,

      iam able to see the login hit in SFDC but account not creating in SFDC

      please find the below screenshots

      Response message in ECC

      Capture3.PNG

      PI Screenshot in RWB

      Capture5.PNG

      Capture6.PNG

      Message Log

      Capture7.PNG

      in Future Links it shows blank.

      Author's profile photo Sowmya Rajashekhara
      Sowmya Rajashekhara

      Hi Anupam,

      Salesforce return no Session ID found error in response and the SOAP receiver communication channel to connect to Salesforce has Binding not found error while ping test.

      Let me know how I can resolve this issue in sandbox.

      Thanks,
      Sowmya
       

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Sowmya,
      First set up an SOAP project in SOAP UI. Import WSDL and try logging in through SOAP UI. This may be an error from sfdc side. You need to test thge scenario from SOAP UI.

      Regards
      Anupam
       

      Author's profile photo sivakrishna sathu
      sivakrishna sathu

      Hi Anupam,

      when i am trying to post the data(update method) to sales force i am getting error as below,

      SOAP: Response message contains an errorXIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: INVALID_SESSION_ID: Invalid Session ID found in SessionHeader: Illegal Session.

      But when i tried to push the same message from SOAP UI it is working good. Please help me to resolve the issue.

       

       

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi sivakrishna

      Are you using the security token appended with password to log in to sfdc?

      How are you trying to connect to sfdc through PI. Ideally if you are able to connect to sfdc using soap UI , you should be able to connect to sfdc using PI too.

      The session id should be generated immediately before sending the update request else the same expires. This problem may be due to session id expiration.

       

      Regards

      Anupam

       

       

      Author's profile photo Nishant Chavan
      Nishant Chavan

      Hi Anupam,

      Great Work!! I am developing new scenario to insert/update Contact object from SalesForce. I am interested in details blog to do this, however the links at the end of the blog are not working. do you have the updated links?

      My scenario is

      SAP ECC- PI 7.31 -- SalesForce.

      I tried to use REST adapter however PATCH method is not available in PI (7.31 SP16) to make updates on salesforce side.

       

      Thanks,

      Nishant

       

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Nishant,

      Can you please elaborate about PATCH method.

      The integration to sfdc is a two step process and can be done with REST adapter.

      First step will be to obtain the security Token using soap lookup. In the second step use the same token with GET or POST call to sfdc using SAP REST adapter.

      Let me know if you are facing issues.

       

      Regards

      Anupam

      Author's profile photo Nishant Chavan
      Nishant Chavan

      Hi Anupan,

      The POST method just inserts the records in salesforce, however, to insert/update (upsert) we need PATCH method. Finally, we had to do this using SOAP.

       

      Thanks,

      Nishant

       

      Author's profile photo pavan chemma
      pavan chemma

      Hi Anupam,

      I am currently working on SAP PI 7.31 SP22. We are integrating with Sales Force using Receiver SOAP Adapter. I have below queries regarding this integration. Could you please answer?

       

      1. Do we need to have HTTPS ports enabled on the PI Server? and Do we need to share our PI Certificates with Sales Force team?
      2. I have heard that Sales Force has stopped supporting SSL V2,V3 and is currently supporting TLS V1.2. Is this true? If so , what configurations would be required from SAP PI end to enable TLS V1.2?
      3. Could you please provide me your contact number on my id sanjay.don11@gmail.com so that i can further discuss on the above questions?

      Thanks & Regards,

      Pavan

      Author's profile photo Anupam Ghosh
      Anupam Ghosh
      Blog Post Author

      Hi Pavan,

      1. SFDC is available on public cloud. Opening the firewall to send request to SFDC should work in your case.

      2. You will be connecting via receiver soap adapter so TLS V 1.2 should be a problem. Try making a connection through SOAP UI at first.

      3. you can mail me, id is available in my scn profile.

      Regards

      Anupam