Skip to Content
Author's profile photo Former Member

PI.SFSF Integration.DOC – Integration between Non-SAP System and Successfactors BizX. – Part III

This document is in continuation to my previous blog PI.DOC- Integration between Non-SAP System and SFSF BizX. – Part II

:

Screenshot below shows Configuration [ Integration Directory] object for update user data scenario.

:

PI Configuration Overview

Sender and Receiver logical business component representing source and Target System.

BC_Successfactors_One_D

BC_Successfactors_Two_D

Image 18.JPG

The business component contains sender interfaces and sender connector.

Outbound Interface : UpdateRequest_Sync_Out

Connector Sender : CC_SOAPUISessionCreate

Image 19.JPG

The business component contains receiver interfaces and receiver connector.

Inbound Interface : UpdateRequest_Sync_Out

Connector1 : CC_SOAP_Receive_SessionCreate

Connector 2: CC_SOAP_Axis_Receive_DataSend

Image 20.JPG

SOAP Sender Communication channel – Getting data from source system.

Connector Sender : CC_SOAPUISessionCreate

Image 21.JPG

SOAP Receiver Communication channel – Used to call login Operation to get session ID.

Connector1 : CC_SOAP_Receive_SessionCreate

[  Image ]

Image 33.JPG

   

SOAP-AXIS Receiver communication channel along with axis Module config:

Sending xml data to SFSF SOAP UpdateOperation API with Session ID in HTTP header.

Connector 2: CC_SOAP_Axis_Receive_DataSend

Image 22.JPG

Integrated configuration Object : Check Screenshot Tab by Tab.

Image 23.JPG

Testing Scenario:

Updating email address to SFSF from third Party.

Updating RJohnson@ACECompany.com with Prabhat.b.sharma@ACECompany.com

Image 24.JPG

1.       Log in into Successfactor frontend

2.       Go to Admin tool

3.       Open API Data dictionary

4.       Search User Entity details.

Image 25.JPG

Downloading WSDL to desktop from SAP PI Integration Directory :

1.       Log in into SAP PI Integration Directory

2.       Open Integrated Configuration Object

3.       Go to Integrated Configuration

4.       Hit Display and generate WSDL.

5.       Result : Downloaded WSDL to Desktop.

Image 26.JPG

Sender System Application: SOAP UI Tool

1.       Upload Downloaded WSDL here in SOAP UI.

2.       Populate Sender data in appropriate fields.

3.       Choose correct endpoint.

4.       Enter SAP PI Username and Password Detail.

5.       Hit Send Response data

6.       Result : Here Sent Response data to SAP PI System and Receive Success response.

Image 27.JPG

Middleware – Message Monitoring :-

1.       Go to SAP PIMON

2.       Choose Message Monitoring

3.       Fill appropriate filter criteria and Shows Message

4.       Result : Here successfully received and delivered to SF SOAP API.

Image 28.JPG

SAP PIMON Message Monitoring log details.

Image 29.JPG

Target System : Successfactor Biz X.

1.       Log in into Successfactor frontend

2.       Go to Admin

3.       Open API Audit Log Details.

4.       Result : Here Shows Request and Response data received from SAP PI.

Image 30.JPG

Image 31.JPG

Successfactor frontend screen showing updated email ID. – Successful.

Image 34.JPG

Thanks ……

Please share comments and review.

Assigned Tags

      20 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Rodrigo Ferradas
      Rodrigo Ferradas

      Excellent post. I´m gonna try to replicate the scenario.

      Could you upload the image for:

      SOAP Receiver Communication channel – Used to call login Operation to get session ID.

      Connector1 : CC_SOAP_Receive_SessionCreate

      that is missing.

      Thanks a lot.

      Regards.

      Rodrigo.

      Author's profile photo Former Member
      Former Member
      Blog Post Author

      Hey Rodrigo Ferradas

      Thanks a lot for appreciating the efforts.

      Yes I have uploaded the missing screenshot for Connector1 : CC_SOAP_Receive_SessionCreate

      Regards

      Prabhat Sharma.

      Author's profile photo Venkata Rama Krishna Raju mudunuri
      Venkata Rama Krishna Raju mudunuri

      Thanks for Sharing!

      Do we need to create a seperate sessionID for each message. Does it has any peroformance issue if we have new sessionID's for each message.

      Thanks,

      Krishna.

      Author's profile photo Former Member
      Former Member
      Blog Post Author

      Session gets automatically expired after a specific time i.e 15 minutes, if remain idle.

      Regards

      PS

      Author's profile photo Venkata Rama Krishna Raju mudunuri
      Venkata Rama Krishna Raju mudunuri

      How can we reuse the sessionID for successive messages? How can we know the existing sessionID is valid or expired?

      Thanks,

      Author's profile photo Former Member
      Former Member
      Blog Post Author

      You can use the same session ID with any message until it is valid ...

      to Check existing Session ID you can use . isValidSession Operation from SF API.

      Author's profile photo monica bhosale
      monica bhosale

      Nice post prabhat..!!!

      Author's profile photo Former Member
      Former Member
      Blog Post Author

      Thx Monica .

      Author's profile photo Former Member
      Former Member

      Good post.

      I am going to integrate SAP ERP HCM add-on 2.0 and Success Factors using SAP PI as middleware. I have downloaded the standard components SFIHCM01 and SFIHCM02 from service market place into ESR.

      To start with.... Can you please give me a idea that a pi developer should do ( in both ESR and ID ) at a glance.

      Author's profile photo Former Member
      Former Member

      Hi Everyone,

      We are configuring an integration scenario between ECC and SF through PI and I can see the version of the PI components we have imported already have the objects maintained for each of the Service Interfaces.

      We are now trying to make a call to the Login Service and the same is not returning a proper SessionID

      <?xml version="1.0" encoding="UTF-8" ?>

      <ns1:loginResponse xmlns:ns1="http://sap.com/xi/SFIHCM01">

      <result>

        <sessionId>$Version=0;</sessionId>

        <msUntilPwdExpiration>9223372036854775807</msUntilPwdExpiration>

      </result>

      </ns1:loginResponse>

      You mention we should not the AXIS Adapter for the Login, but the most recent admin guide provided by SAP and SF says we should use it, Also, the Communication Channel templates they provide use this adapter.

      /wp-content/uploads/2014/01/cc_template_365046.jpg

      Would you be able to provide some guidance on this configuration. When I test with SoapUI, I am getting a proper session ID.

      Thanks.

      Regards,

      Ricardo

      Author's profile photo Former Member
      Former Member

      Hi Ricardo,

      Were you able to solve this issue of Invalid SFAPI session ID. For me on SF side it shows as 3A195469F8F662EE2A6F9968342AE498.dc4salesapi03, but when I check in PI it looks like $Version=0; BIGipServerdc4-salesdemo-web=2182349834.20480.0000; $path=/.

      Any help will be highly appreciated.

      Regards,

      Yashu Vyas

      Author's profile photo Former Member
      Former Member

      Hi,

      This got resolved after we applied the latest patch level of the XI Adpater Framework .

      Thanks,

      Regards

      Author's profile photo Former Member
      Former Member
      Blog Post Author

      Yes Recent Content is using SOAP Axis for both interface - Login and other operations.

      So no worries . Go ahead use it as you like old way or new way.

      No issues in any case,

      Author's profile photo Former Member
      Former Member

      Hello, guys.

      I have created an integration ECC/SF following the step from this excellent tutorial.

      Unfortunately I am getting the SFAPI Session Invalid error.

      SOAP Lookup is working fine. In mapping, if I test it, it gets me a session id.

      I also used SOAPUI then, in PIMON, I see on Message Attribute tab the Cookie and Session Id. What could be the problem?

      Thanks,

      Regards.

      Author's profile photo Rajakumar Kanniyappan
      Rajakumar Kanniyappan

      Hi Oscar,

      Were you able to fix that issue, we are also facing the same issue.

      Regards,

      Rajakumar

      Author's profile photo Oscar Alejandro Aranquiz Cortes
      Oscar Alejandro Aranquiz Cortes

      I did. I don´t know why SoapLookup returns 2 session ids.

      I created a graphical mapping for Login(Request/ Response), then, using XSLT, I passed sessionId to Dyn Conf, as you can see below:

      <?xml version="1.0" encoding="UTF-8"?>

      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:map="java:java.util.Map" xmlns:dyn="java:com.sap.aii.mapping.api.DynamicConfiguration" xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey" xmlns:ns0="http://vc.successfactors.api">

      <xsl:output indent="no"/>

      <xsl:param name="inputparam"/>

      <xsl:template match="/">

        <xsl:param name="new-value">

         <xsl:value-of select="ns0:MT_OPERATION_REQUEST/sessionId"/>

        

        </xsl:param>

        <!-- change dynamic configuration -->

        <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')"/>

        <xsl:variable name="dynamic-key" select="key:create('http://sap.com/xi/System/HTTP', 'Cookie')"/>

        <xsl:variable name="jsessionid" select="'JSESSIONID='"/>

        <xsl:variable name="cookieSession" select="concat($jsessionid, $new-value)"/>

        <xsl:variable name="dummy" select="dyn:put($dynamic-conf, $dynamic-key, $cookieSession)"/>

        <!-- copy payload -->

        <xsl:copy-of select="."/>

      </xsl:template>

      <xsl:template match="ns0:MT_OPERATION_REQUEST/sessionId">

        <sessisonId/>

      </xsl:template>

      </xsl:stylesheet>

      I created a field for other operations(insert, update, etc) to store sessionId returned from Login.

      Now it Works fine.

      Hope it helps you too.

      Author's profile photo Hubery Yao
      Hubery Yao

      Hello Sharma,

      I noticed  that  you create 2 communication channels of receiving(SOAP,SOAP Axis), how to use them? How to communicated with SF. Thank you for your response in advance.

      Thanks & best regards,

      Hubery

      Author's profile photo Former Member
      Former Member
      Blog Post Author

      SOAP I used for Login and Logout

      SOAP Axis I used for Query and Update - Reason - because here we are sending SessionID also  in SOAP HTTP Header ( JSessionID).

      Author's profile photo Hubery Yao
      Hubery Yao

      Good solutions, thank you Sharma for your reply.

      Many thanks & best regards,

      Hubery

      Author's profile photo Prabhakar Amuri
      Prabhakar Amuri

      Hi Prabhat,

      We are looking for SF Compensation Data --> PI -->ECC but here we need to pass only less than 5 fields so could you please let me know how to achieve and same time there is another requirement is that ECC -->PI-->SF Compensation. So could you please guide me.

      Regards,

      Prabhakar.A