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
The business component contains sender interfaces and sender connector.
Outbound Interface : UpdateRequest_Sync_Out
Connector Sender : CC_SOAPUISessionCreate
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
SOAP Sender Communication channel – Getting data from source system.
Connector Sender : CC_SOAPUISessionCreate
SOAP Receiver Communication channel – Used to call login Operation to get session ID.
Connector1 : CC_SOAP_Receive_SessionCreate
[ Image ]
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
Integrated configuration Object : Check Screenshot Tab by Tab.
Testing Scenario:
Updating email address to SFSF from third Party.
Updating RJohnson@ACECompany.com with Prabhat.b.sharma@ACECompany.com
1. Log in into Successfactor frontend
2. Go to Admin tool
3. Open API Data dictionary
4. Search User Entity details.
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.
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.
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.
SAP PIMON Message Monitoring log details.
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.
Successfactor frontend screen showing updated email ID. – Successful.
Thanks ……
Please share comments and review.
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.
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.
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.
Session gets automatically expired after a specific time i.e 15 minutes, if remain idle.
Regards
PS
How can we reuse the sessionID for successive messages? How can we know the existing sessionID is valid or expired?
Thanks,
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.
Nice post prabhat..!!!
Thx Monica .
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.
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.
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
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
Hi,
This got resolved after we applied the latest patch level of the XI Adpater Framework .
Thanks,
Regards
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,
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.
Hi Oscar,
Were you able to fix that issue, we are also facing the same issue.
Regards,
Rajakumar
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.
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
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).
Good solutions, thank you Sharma for your reply.
Many thanks & best regards,
Hubery
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