Skip to Content
Author's profile photo Gautham Krishna

HowTo: Configure Communication Channel with SFSF Adapter for SAP Process Integration (PI)

The SFSF adapter is a part of the Connectivity Add-on 1.0. It facilitates integration between SuccessFactors and ERP via SAP Process Integration (PI). As of SP01, the adapter supports SOAP and ODATA protocols for communicating with the SuccessFactors system. You can access the data exposed by the SuccessFactors system via SOAP and ODATA services.

You need to create operations for the SFSF adapter using an eclipse based tool called the Operations Modeler. You can use the Model Operation wizard in this tool to create operations and then use them in the adapter configuration to execute them.

This guide enables you to configure the SFSF adapter and modeling operations it using the eclipse based Operations Modeler tool.

Prerequisites

  • You have installed the latest version of Connectivity Add-on 1.0. For information on how to install the connectivity add-on, see Connectivity Add-On Installation Guide.
  • You have logged on to the Integration Builder and created a business component with the communication channel.
  • You have created the Integration Flow.

Configuring SFSF Communication Channel

1. When you launch the Model Configuration editor, the integration flow does not have adapters assigned to the communication channel.

/wp-content/uploads/2014/10/1_564643.png

2. You have to assign the SFSF adapter to a channel. Based on your requirement, assign the SFSF adapter to either the Sender Channel or the Receiver Channel. Double-click the channel (highlighted in yellow) in Model Configuration editor. System redirects you to the adapter selection window.

Note: Optionally, you can select the channel (highlighted in yellow) and choose the channel tab page (marked in red) to access the adapter selection screen.

3. In the choose adapter window, select the SFSF adapter by filtering for ‘SFSF’. Choose OK to assign the SFSF adapter to the relevant channel.

/wp-content/uploads/2014/10/3_564647.png

4. In the Message Protocol field, select SOAP or OData based on the message protocol you want to use.

/wp-content/uploads/2014/10/5_564648.png

5. You need to configure the SFSF adapter. Choose the Adapter-Specific tab page.

6. If you have created an HTTP destination and want to re-use it in this configuration, select Use HTTP Destination checkbox. You can assign the HTTP destination by choosing Browse and selecting the destination that you have created.

See Creating HTTP Destinations for details on how to create a process integration HTTP destination.

/wp-content/uploads/2014/10/6_564649.png

7. If you do not want to use the HTTP destination, then choose the SuccessFactors system that you want to connect to from the Endpoint URL field. The SFAPI URL Suffix field is automatically populated and doesn’t need to be modified. In the Login Credentials screen area, specify the Company, Username and Password.

/wp-content/uploads/2014/10/7_564656.png

8. If you want to use the SSL server certificate, select the Specify SSL Server Certificate checkbox. Specify the Keystore View and Keystore Entry by choosing Browse and selecting the appropriate entries in the selection window.

/wp-content/uploads/2014/10/8_564657.png

Note: You cannot specify SSL certificate if you use a preconfigured HTTP destination.


9. If you want to specify the proxy settings, select the Use HTTP Proxy checkbox and specify values for the proxy host, proxy port, and the authentication details for that proxy host.

/wp-content/uploads/2014/10/9_564658.png

10. Choose the Processing tab page.

/wp-content/uploads/2014/10/10_564664.png

Processing details for SFSF SOAP sender channel

/wp-content/uploads/2014/10/10_1_564665.png

Processing details for SFSF SOAP receiver channel

/wp-content/uploads/2014/10/10_2_564666.png

Processing details for SFSF OData sender

/wp-content/uploads/2014/10/10_3_564667.png

Processing details for SFSF OData receiver


11. Provide values for fields in processing tab based on description in table. You use the SAP HANA Cloud Integration eclipse based Operations Modeler to create an operation.

Processing Details for SFSF Sender Channel

Message Protocol Field Description
SOAP Specify AdHoc Query Select checkbox if you want to specify an Adhoc query
Query String Copy and paste the operation or query that you generated using the HCI operations modeler
OData OData Resource Path

Specify the OData resource that you want to use in your operation

Example: If you want to use the resource ‘User’, enter User. If you want to add filter conditions, enter User?<filter conditions>.

Operation Type OData operation that you want to execute
Common for SOAP and OData Poll Interval Specify the values to schedule a cycle for the SFSF adapter to fetch data from the SuccessFactors system
Maximum number of records per page (Batch Size) Specify the number of records that the SFSF adapter fetches in a single data polling cycle
Quality of Service Specify the quality of service for the operation. For more information, see Quality of Service
Maximum number of records per XI message Specify the maximum number of messages that you want to be packaged in a single XI message


12. If your entity name contains the ‘$’ character, you have to select the Select entity for channel processing (Optional) checkbox under Advanced tab and enter the entity name in Entity field.


Example: If your entity name is GoalTarget$1, you need to enter this name to enable channel processing.

If you are reusing this channel for processing multiple entities with names containing ‘$’ character, you need to enter all the entity names separated by ‘,’ (comma).

13. Save the configuration.

Modeling SFSF Operations using HCI Operations Modeler

The connectivity add-on uses the HCI’s eclipse based Operations Modeler tool. You use this tool to generate the XSD file that you need to import to the Enterprise Service Repository (ESR) for mapping operations.

Refer the Installation guide for installing the HCI Operation Modeler.

Note: Use Kepler version of eclipse to get for the latest updates on HCI Operation Modeler.

You can refer to this document on SCN for details on how to model an operation (or query) for the SFSF adapter.

Additional References


Assigned Tags

      24 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Finny Babu
      Finny Babu

      Thanks Gautham for a very good and much awaited blog on SFSF configuration !!

      Author's profile photo Gautham Krishna
      Gautham Krishna
      Blog Post Author

      Thanks for your support in preparing it Finny.

      Author's profile photo Former Member
      Former Member

      Keep up the Good work - Gautam  !!!!! 🙂

      Author's profile photo Gautham Krishna
      Gautham Krishna
      Blog Post Author

      Thank you Prabhat 🙂

      Author's profile photo Former Member
      Former Member

      You have mentioned here that SFSF adapter could be configured using an eclipse based tool called the Operations Modeler. Can this adapter be configured using standard Integration Directory java client as well?

      Author's profile photo Finny Babu
      Finny Babu

      Hi Sourabh

      The SFSF adapter can be configured like any other adapters in PI using Integration Directory. It is just the query that is generated via the Operations Modeler and then copied into the adapter configuration.

      Author's profile photo Former Member
      Former Member

      Hi Finny

      We have to ensure that there is no data manipulation possible.

      Does SFSF adapter support SOAP Message Security 1.1 2006?

      BR

      Daniel

      Author's profile photo Former Member
      Former Member

      Hi Finny,

      I am using SFSF adaptor for lets say Employee Data. Now as SFSF Adaptor handles Login and Logout request internally do we have to configure the interfaces for login and logout also or just we need to configure only one interface i.e  Upsert interface and include SFSF adaptor in receiver CC???

      Can you just help me here.

      Thanks,

      Gaurav

      Author's profile photo Former Member
      Former Member

      Hi Gaurav,

      Just like you mentioned, login and logout handling internal. You can just create functional interface to SF.

      Thanks

      Leon

      Author's profile photo Former Member
      Former Member

      Thanks Leon

      Author's profile photo Finny Babu
      Finny Babu

      Thanks Leon for the reply.

      Yes, the adapter internally takes care of login/logout.

      Author's profile photo Former Member
      Former Member

      Thanks Finny

      Author's profile photo Former Member
      Former Member

      Hi Finny,

      As per the above replies I have created only one ICO for Upsert operation. I haven't created any ICO for login and logout. So now when I am triggering message from HCM system using RH_SFI_SYNCHRONIZE_EMPL_DATA program I am getting PARSING ERROR and when checked in SXMB_MONI of HCM system I am getting this error.

      <SAP:Code
      area
      ="PARSING">GENERAL</SAP:Code>

      <SAP:P1 />

      <SAP:P2 />

      <SAP:P3 />

      <SAP:P4 />

      <SAP:AdditionalText />

      <SAP:Stack>com.sap.aii.af.service.cpa.CPAObjectNotFoundException: Couldn't
      retrieve inbound binding for the given P/S/A values:
      FP=;TP=;FS=MNGHRMCLNT300;TS=;AN=SFSFSessionHandlingLoginQueryResult_Out;ANS=http://sap.com/xi/SFIHCM01;
      at
      com.sap.aii.af.service.cpa.impl.lookup.CommonLookup.getInboundBinding(CommonLookup.java:250)
      at
      com.sap.aii.af.service.cpa.impl.lookup.CommonLookup.getInboundBinding(CommonLookup.java:171)
      at
      com.sap.aii.af.service.cpa.InboundRuntimeLookup.<init>(InboundRuntimeLookup.java:88)
      at
      com.sap.aii.af.service.cpa.impl.lookup.AbstractLookupManager.getBinding(AbstractLookupManager.java:597)
      at
      com.sap.aii.adapter.soap.web.MessageServlet.getBinding(MessageServlet.java:722)
      at com.sap.aii.adapter.soap.web.MessageServlet.doPost(MessageServlet.java:401)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) at
      javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at
      com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.runServlet(FilterChainImpl.java:202)
      at
      com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:103)
      at
      com.sap.engine.services.servlets_jsp.server.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:126)
      at
      com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:79)
      at
      com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:432)
      at
      com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:210)
      at
      com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:441)
      at
      com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:430)
      at
      com.sap.engine.services.servlets_jsp.filters.DSRWebContainerFilter.process(DSRWebContainerFilter.java:38)
      at
      com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at
      com.sap.engine.services.servlets_jsp.filters.ServletSelector.process(ServletSelector.java:81)
      at
      com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at
      com.sap.engine.services.servlets_jsp.filters.ApplicationSelector.process(ApplicationSelector.java:278)
      at
      com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at
      com.sap.engine.services.httpserver.filters.WebContainerInvoker.process(WebContainerInvoker.java:81)
      at
      com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
      at
      com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at
      com.sap.engine.services.httpserver.filters.ResponseLogWriter.process(ResponseLogWriter.java:60)
      at
      com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
      at
      com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at
      com.sap.engine.services.httpserver.filters.DefineHostFilter.process(DefineHostFilter.java:27)
      at
      com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
      at
      com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at
      com.sap.engine.services.httpserver.filters.MonitoringFilter.process(MonitoringFilter.java:29)
      at
      com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
      at
      com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at
      com.sap.engine.services.httpserver.filters.SessionSizeFilter.process(SessionSizeFilter.java:26)
      at
      com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
      at
      com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at
      com.sap.engine.services.httpserver.filters.MemoryStatisticFilter.process(MemoryStatisticFilter.java:57)
      at
      com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
      at
      com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at
      com.sap.engine.services.httpserver.filters.DSRHttpFilter.process(DSRHttpFilter.java:43)
      at
      com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
      at
      com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at
      com.sap.engine.services.httpserver.server.Processor.chainedRequest(Processor.java:475)
      at
      com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.process(Processor.java:269)
      at
      com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:56)
      at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122) at
      com.sap.engine.core.thread.execution.Executable.run(Executable.java:101) at
      com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)
      </SAP:Stack>

      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>

      Can you help me.

      Author's profile photo Finny Babu
      Finny Babu

      Looks like you are using the standard integration content.

      This will not work, as SFSF doesn't have any pre-shipped content available as yet. You will have to build your custom integration content.

      Author's profile photo Former Member
      Former Member

      That means If I am using this standard program I wont be able to use SFSF adaptor. For this I have to use SOAP Axis only. And can you please explain what do you mean by custom Integration content in this scenario??

      Author's profile photo Finny Babu
      Finny Babu

      Hi Gaurav

      If you want to use the standard integration content, this will work only using SOAP Axis adapter. SFSF adapter wont work if you are using standard integration content.

      What I meant with custom integration content, is your custom scenarios which you will have to create. And this doesn't require configuring login, logout flows.

      Author's profile photo Former Member
      Former Member

      Thanks a lot Finny for your response.

      Couple of things more I need to ask you.

      1) As you are saying that SFSF will not work with standard integration, Can you just provide me the link or document from SAP side where its says the same. I am not doubting you and please don't take me otherwise , I just need to have the proof regarding this.

      2) Can you brief me with one scenario where we can use SFSF Adapter for SuccessFactor

      Help will be appreciated.

      Thanks & Regards,

      Gaurav Agarwal

      Author's profile photo Former Member
      Former Member

      Hi,

      I have below queries:

      1) How to use SFSF Sender adapter with ODATA protocol to fetch data from multiple entities like Join operation used to fetch data from multiple table.

      2) How to create and pass dynamic filters for the query to be used in channel.

      Regards

      Deepak

      Author's profile photo Former Member
      Former Member

       

      Hi,

      I am new in SAP PI .I try to create this.But can't create

      • a business component with the communication channel.
      • Integration Flow.

      Please tell me the step by step process for these.

      Thanks

      Monalisa

      Author's profile photo A S
      A S

      Hi Gautham,

      I have tried to create the SFSF ODATA sender channel using ODATA but am facing issues with connection.

      I have already asked my question yesterday in the community but so far have not received any response.

      https://answers.sap.com/questions/750111/odata-sfsf-sender-adapter-odata-calling-errorodata.html?childToView=749333&answerPublished=true#answer-749333

      There is a POC ongoing to test the new ODATA functionality and for this we are trying to make a connection to the free ODATA services provided to confirm the configuration. Using the below service - 

      https://services.odata.org/TripPinRESTierService/People?$top=2

      We have created a new HTTP destination as well as trying out all the configuration options and have tried to ping the destination with various above URL permutations but every time the error is thrown-

      Error during ping operation: Error while silently connecting: org.w3c.www.protocol.http.HttpException: Connection reset

      Tried with below-

      https://services.odata.org

      https://services.odata.org/TripPinRESTierService

      With HTTP option the error is raised as-

      java.util.NoSuchElementException
      [EXCEPTION]
      java.util.NoSuchElementException
      at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
      at com.sap.aii.adapter.sfsf.ra.xi.sfapi.ConnectionInfo.initFromDestination(ConnectionInfo.java:224)
      at com.sap.aii.adapter.sfsf.ra.xi.sfapi.ConnectionInfo.<init>(ConnectionInfo.java:123)
      at com.sap.aii.adapter.sfsf.ra.xi.sfapi.ODataAPICaller.createODATAAPICaller(ODataAPICaller.java:79)
      at com.sap.aii.adapter.sfsf.ra.xi.module.SenderTask.init(SenderTask.java:93)
      at com.sap.aii.adapter.sfsf.ra.xi.module.SenderTask.invoke(SenderTask.java:224)
      at com.sap.aii.af.lib.scheduler.JobBroker$Worker.run(JobBroker.java:529)
      at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
      at java.security.AccessController.doPrivileged(Native Method)
      at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:185)
      at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:302)

      I am getting the below error when not using HTTP option-

      2/6/19 2:38:07 PM Ended polling.
      Error 2/6/19 2:38:07 PM java.lang.NullPointerException: while trying to invoke the method javax.net.ssl.SSLSocketFactory.createSocket(java.lang.String, int, java.net.InetAddress, int) of an object loaded from field com.sap.aii.adapter.picao.auth.ProtocalSocketFactoryImpl.sslSocketFactory of an object loaded from local variable 'this'
      Error 2/6/19 2:38:07 PM ODATA_CALLING_ERROR:OData call failed com.sap.engine.interfaces.messaging.api.exception.MessagingException: ODATA_CALLING_ERROR:OData call failed {0}..
      2/6/19 2:38:07 PM Query: /People?$top=2
      2/6/19 2:38:07 PM Started polling.
      2/6/19 2:36:39 PM Ended polling.

       

      Can you please give any pointers on what configuration is missing?

      Regards,

      Archana

      Author's profile photo Gautham Krishna
      Gautham Krishna
      Blog Post Author

      Hi Archana,

      It seems like this issue needs to be investigated further. Can you please raise an incident in the SAP Support Portal? They can help you with this - https://support.sap.com/en/index.html

      Thanks & Regards, Gautham

      Author's profile photo Anu patyath
      Anu patyath

      Hello Gautham, Nice blog and thanks.

      Is there anyway I can use a single query to check on multiple entities and apply filter conditions on the same ? Can you guide me onto the same ?

      Author's profile photo Gautham Krishna
      Gautham Krishna
      Blog Post Author

      Hello Anu,

      Thank you for the feedback.

      If you are referring to an OData service, please check our product documentation on OData adapter. It has the details you are looking for.

      Best Regards, Gautham

      Author's profile photo Eason Ling
      Eason Ling

      https://help.sap.com/viewer/de71ea2af885417aa81d4c4d5faee3bb/1.0.3/en-US/8eca017d5b784d2eb2be84e73a972cce.html