Overview

With more customers moving towards a cloud based IT investment strategy for their HCM solution the need to integrate with their existing OnPremise setup and other 3rd party systems is on the rise. Large companies generally move towards a Cloud HCM investment like SuccessFactors in a phased manner. The phased approach is generally in two dimensions the first one being the solution dimension where only certain processes are first moved to the cloud example Performance Management or Compensation Management or Recruiting and later on the other core processes of the company follow. The second dimension is location wise where HCM Business processes in select set of locations are moved first before the rest of the larger regions follow.

What this results in; is the requirement to keep all of the systems in sync and ensure the processes cross interacts in a smooth manner. A few examples of this setup that leads to an integration requirement in SuccessFactors could be the follows:

  • Company manages its Core Employee Management in SuccessFactors (Employee Central) whereas payroll is managed using the On-Premise SAP ERP HCM Payroll.
  • Company manages its Employee Management in On-Premise using the On-Premise SAP ERP HCM system whereas Performance management is done using the SuccessFactors BizX suite.
  • Company does Recruitment using the SuccessFactors BizX suite whereas core employee management is done using On-Premise SAP ERP HCM.
  • Company manages its Core Employee Management in SuccessFactors (Employee Central) whereas Travel management and Financials is On-Premise SAP ERP FIN.
  • Company manages its Core Employee Management in SuccessFactors (Employee Central) whereas Benefits management is provided by 3rd party vendors.
  • Company does Recruitment using the SuccessFactors BizX suite whereas assessment of candidates is done by 3rd party vendors.

SAP HANA Cloud Integration (SAP HCI) is SAP’s strategic integration platform for SAP Cloud Customers. It provides out-of-the-box connectivity across cloud and on-premise solutions. Starting January 2014, you have the possibility to connect to the SuccessFactors Cloud system using the SuccessFactors Application Adapter. For integration developers who have used HCI to connect to SuccessFactors systems earlier what this means is that you no longer have to worry about the Login/Logout or API semantics of SuccessFactors as all of this is now taken care of by the Adapter internally.

Connecting to a SuccessFactors system is now as easy as providing the system credentials, choosing the entity and deciding on the process flow and mapping.

Pre-Requisites

  1. SAP SCN User id/password using http://scn.sap.com
  2. SAP HCI Account with User and Roles (Raise a CSS ticket in component XX-INT-CLD-HCI-PI)
  3. Installation of SAP HANA Cloud Integration Eclipse tooling
  4. Ensure SaaS Admin has deployed the required SuccessFactors public certificate keys in the system.jks file of the HCI Tenant that you are using to connect to the SuccessFactors system

If you would like to get an early access to using SAP HCI via the Trial Landscape visit the blog SAP HANA Cloud Integration – Test and learn more about SAP’s cloud based integration solution to know more. You can use the SuccessFactors Adapter even via the trail landscape.

Capabilities of the SuccessFactors Adapter

  1. Login, Logout, Session Handling  – The Integration developer need not create separate flow steps and manage the Login/Logout calls. Adapter internally handles Login, SessionID management and Logout when connecting to the SuccessFactors system.
  2. SFQL Modeling support – With the Operations Modeler a step by step guided UI is available using which the Successfactors Query Language (SFQL) can be modeled. The Operations Modeler ensures that the SFQL generated is as per the semantics required by SuccessFactors system. The Modeler ensures the user is presented with the required fields and operations based on the Entity being selected. Example in case of Insert operation the required fields are automatically populated; In case of Query only queryable fields are shown; the Modeler shows up only the supported operations for an Entity, example in case an Entity does not support Upsert this is not shown up in the Modeler. The Operation Modeler ensures that the Integration developer only specifies the correct SFQL.
  3. Query, Insert, Upsert, Update – The Adapter supports all the standard operations of SFAPI.
  4. Simple, Compound API support – With the Operations Modeler one can configure both the Simple as well as Compound SuccessFactors API. The Adapter allows calling of both these types of API.
  5. Simple API’s are SuccessFactors Entities with a flat field structure. Compound API’s are Entities with a nested structure. The Compound API Entity in SuccessFactors is the CompoundEmployee Entity. More information on SuccessFactors API is available in the blog Employee Central Entities and Interfacing
  6. Auto XSD generation for mapping – When SFQL is modeled using the Operations Modeler the XSD (data format in which the messages are exchanged with the SuccessFactors system) is automatically generated which can be used in Message Mapping.
  7. Scheduler to poll at specified intervals – In case the integration scenario has the requirement of polling the SuccessFactors system at regular intervals the Adaptre can be used as a Sender channel in which case a Scheduler is available. The scheduler allows a lot of easy settings in the UI [Example: Schedule on the 3rd of every month, schedule every day at hh:mm hours, schedule everyday between xx-yy hours, schedule on mm-dd-yyy between xx-yy hours]
  8. Delta sync to fetch only changed records – There is no need to explicitly create logic to fetch changed records after a previous run. This is specifically required when SuccessFactors is used in polling scenarios and it is required to fetch only changed records in subsequent runs. To enable this Delta Sync option has to be included as a parameter on the query. The Operations Modeler enables inclusion of this parameter in an easy manner.
  9. Dynamically pass values to SFQL Query – It is possible to dynamically pass values to the SFQL based on the input payload. Example if you have an existing message payload in your message bus and you would like to use this in your SFQL query filter condition you could do so by specifying the XPATH from where the content can be read. The Operations Modeler enables inclusion of this parameter in an easy manner.
  10. Multiple SFSF calls and merge payload –In case you have a requirement to make separate calls to different Entities in the SuccessFactors system and merge the payload you can use the SuccessFactors Adapter with the Content Enricher step. By using the multi-mapping (Multiple source XSD to one destination XSD) capability you can merge the payload to a single structure if required.

The support for oDATA Entities that was released in SuccessFactors release 1311 and Ad-Hoc Query support is under development in HCI at the time of writing of this document (Jan 2014). You can expect this functionality soon.

Configuring the SuccessFactors Adapter in iFlow

When to use the SuccessFactors Adapter as a Sender Channel and Receiver Channel

Use the SuccessFactors Adapter as a Sender Channel when you would like to poll the SuccessFactors system at regular intervals and Query data from the system. When using the SuccessFactors Adapter as a Sender channel only Query operation is available and you also have an option to configure the schedules during which data has to fetched from the SuccessFactors system.

Use the SuceessFactors Adapter as a Receiver channel when you would like to query or update data into the SuccessFactors system not at a specified intervals but rather on completion of other integration flow steps in the iFlow.

Deploying the Credentials using which you would connect to the SuccessFactors system

  • Go to the Node Explorer View and Right Click on the Tenant Management Node to choose ‘Deploy Artifacts’

1. Deploy.png

  • Choose Basic Authentication

Basic Auth.png

  • Specific the Credential details and SuccessFactors system details and Click on Finish

3.sfsf cred.png 4.deploy finish.png

Creating your first SuccessFactors Integration Project

In this Example you would connect to a SuccessFactors system and fetch the CompoundEmployee details

STEP 1: Create your project

  • Go to your Eclipse environment and choose File -> New -> Integration project

/wp-content/uploads/2014/01/cp1_370882.png

  • Specify the Project Name and iFLow Name. You can choose a Predefined pattern. In this case since it is simple project we shall choose the Point-to-Point Channel

STEP 2: Select the SuccessFactors Adapter in Sender Channel

  • Double Click on the Sender Channel Configuration and Choose the SuccessFactors Adapter

/wp-content/uploads/2014/01/sfsf1_370883.png

/wp-content/uploads/2014/01/sfsf2_370884.png

STEP 3: Configure the SucccessFactors Adapter – Connection Tab

/wp-content/uploads/2014/01/sfsf3_370885.png

  1. Specify the Credential Name that you deployed in the earlier step using which you would like to connect to the SuccessFactors system
  2. Specify the Proxy Host and Proxy Host using which it can communicate to the SuccessFactors system. Currently when connecting to SuccessFactors sytem via the HCI Demo landscape you could specify this as proxy and 8080

STEP 4: Configure the SucccessFactors Adapter – Processing Tab

/wp-content/uploads/2014/01/sfsf4_370889.png

  1. Call Type currently is defaulted to Synchronous (as of Jan 2014). This will be enhanced with Ad-Hoc option when the capability is made available in the SuccessFactors Adapter.
  2. Operation Name consists of Entity, Operation and Query/Fields. You can configure this using the Operations Modeler. This should confirm to the format in which the SuccessFactors system can execute the required Entity.
    • Entity: The SuccessFactors Entity that you would be using to transfer data. In this Example this is CompoundEmployee
    • Operation: Query, Insert, Update or Upsert. In this example this would be Query
    • Query/Fields: The SuccessFactors Query Language (SFQL) you would pass to query/insert/update/upsert the required fields along with required conditions. In this Example this can be SELECT person, email_information FROM CompoundEmployee WHERE job_code = ‘ADMIN-1’
Operations Modeler

The Operations Modeler gives an intuitive UI for user to model the Operations based on the SuccessFactors Query Language (SFQL)

  • To open the Operations Modeler Wizard click on the Operations Modeler button in the Processing Tab. Specify the Address, Company ID, Username and Password using which you would like to connect to the system. This can also be a SuccessFactors Test System that you are using to Test your iFlow

/wp-content/uploads/2014/01/sfsf5_370890.png

  • Clicking on Next will connect to the specified SuccessFactors system and list the Entities that you can use. For this Example you can choose the CompoundEmployee Entity

/wp-content/uploads/2014/01/sfsf6_370891.png

  • Select the Operation and Fields of the Entity

/wp-content/uploads/2014/01/sfsf7_370892.png

When using the SuccessFactors Adapter as a Sender Channel as in this example only the Query option is available. This is because you would be using the SuccessFactors Adpater in the Sender Channel when you would like to query data at a specified time or regular intervals. In all the other cases you would want to use the SuccessFactors Adapter as a Receiver channel.

All supported options for a selected Entity is available when using the SuccessFactors Adapter as a Receiver Channel. Only those Operations and fields are shown in the Operations Modeler that are exposed by the SuccessFactors system as returned by the SuccessFactors Describe API.

Also Note when using the Adapter for Operations like Insert, Update or Upsert certain fields are prefilled which are mandatory for the API to work.

  • Specify the filter condition using which you would like to restrict the Query Result. This option is available only in case of Query Operation.

/wp-content/uploads/2014/01/sfsf8_370893.png

Note:

You have an option to specify the value as an Xpath. This would be useful when using the SuccessFactors Adapter as a Receiver Channel and you would like the value in the Query to be extracted from the payload available in the message bus.

You can also specify a DateTime filed like last_modified_on as a Delta Sync operation in which case if the iFlow is scheduled to run at regular intervals only the changed records are fetched in subsequent runs.

  • Configuring Sorting Criteria. This option is available only in case of Query Operation.

In case the selected entity allows sorting on certain fields as specified in the Describe API then you would get a filed list using which you can sort. In the case of the Entity in this example CompoundEmployee you may not have any sortable fields

  • Click on Finish

An XSD is generated in the Project package src.main.resources.wsdl automatically. In case of an existing file you also an option to overwrite it.

The XSD file would be useful when you would like to map your payload to the data in the required format using the mapping step. In this simplistic example this step has been avoided.

In case of the Query operation you can use the XSD file on the LHS (Left Hand Side) of the mapping editor and transform it to the required format as required on the RHS (Right Hand Side)

In case of the Insert, Upsert, Update operation you can use the XSD file on the RHS (Right Hand Side) of the mapping editor and transform the data that you receive on the LHS (Left Hand Side) before passing it to the SuccessFactors system.

STEP 5: Configure the SucccessFactors Adapter – Scheduler Tab

The Scheduler Tab is available only when using the SuccessFactors Adapter as a Sender Channel. You can use the Scheduler Tab to schedule the triggering of the iFLow at specified intervals.

/wp-content/uploads/2014/01/sfsf9_370894.png

In the above example the Scheduler is triggered every day at 1:55 PM Indian Standard Time (IST)

STEP 6: Configure the Receiver Channel

/wp-content/uploads/2014/01/sftp1_370895.png

For this specific example the easiest way to see your paylod output would be to configure an SFTP server as a Receiver Channel. With this you can see the queried payload in your SFTP server.

  1. Select the Receiver channel as SFTP
  2. Configure the SFTP Adapter settings based on the SFTP server provisioned to you by the SaaS Admin

/wp-content/uploads/2014/01/sftp2_370896.png

STEP 7: Deploy the iFlow

  • Save your iFlow and Right click on the Project Folder to trigger ‘Deploy Integration Content’
  • Specify the Tenant to which you would like the iFLow to be deployed

/wp-content/uploads/2014/01/deploy1_370897.png

  • Click on the Worker Node in your Node Explorer. The Component Status View of the Node will reflect the status of deployment

/wp-content/uploads/2014/01/deploy2_370898.png

Note: You can also see the status of the iFLow deployment by going to the Deployed Artifacts View of your Tenant Management Node in Node explorer

/wp-content/uploads/2014/01/deploy3_370899.png

STEP 8: Check Monitoring and Logs to know the status of execution

  • Click on the Tenant Management Node of the Node explorer to bring up the Monitoring View

/wp-content/uploads/2014/01/deploy4_370900.png

  • Double click on the Message to see further details and Logs in the Properties View

/wp-content/uploads/2014/01/deploy5_370901.png

With this you have completed creating and deploying a simple Integration Project that connects to a SuccessFactors system. HAPPY INTEGRATING !!!

Additional Information

To report this post you need to login first.

23 Comments

You must be Logged on to comment or reply to a post.

  1. Fons van Nuland

    Very nice blog! Nice to see the arrival of an SAP SuccesFactors adapter. This really leverages the capabilities of HCI. Hopefully there will be more functional adapters delivered by SAP out-of-the-box.

    Thanks for sharing!

    (0) 
  2. Fons van Nuland

    Hello again, I was searching for doucmentation about the adapter. I cannot find any, also there is no information in the Developers Guide as you mentioned. I updated my Eclipse and I can use the adapter there. But I would like to find some further documentation.

    Can you help me?

    Best regards,

    Fons

    (0) 
    1. Sabarish T S Post author

      Hello Fons,

      Refer section 2.3.6.2.5 Configuring a Channel with SuccessFactors Connector in the document

      Documentation of SuccessFactors Adapter: Go to http://help.sap.com/cloudintegration . Open Developer’s Guide available under Development Information -> Developer’s Guide – Managing Integration Content and refer section ‘Configuring a Channel with SuccessFactors Connector’

       

       

      Direct link: http://help.sap.com/cloudintegration/SAP_HCI_DevGuide.pdf

       

       

      Best regards,
      Sabarish

      (0) 
    1. Sabarish T S Post author

      A channel does only one operation on one Entity at a time. You can wait for the release of ‘Service call’ as a step in the iFlow soon and via this you will be able to have several of the Service Call steps in the iFLow. In each of the Service cal step you can configure a difefrent channel. This capability will allow you to call several Entities and their operations in the iFlow.

      (0) 
      1. NarayanaSwamy Mariyala

        You can wait for the release of ‘Service call’ as a step in the iFlow soon and via this you will be able to have several of the Service Call steps in the iFLow.(Please elaborate)


        Let’s say If I made three service calls  it will generate 3 messages.right? How to convert them these 3 response messages to the request call.

        (0) 
  3. Elena Bauza

    Sabarish,

    will this completely eliminate the need to pass CSV files between SF and SAP? We are currently creating the UDF file in SAP and sftp the file to SF. We are also downloading data from SF using CSV format and loading data into SAP. Appreciate your comments

    (0) 
    1. Sabarish T S Post author

      SuccessFactors exposes a lot of SOAP based webservices and if your scenario can be achieved using these services you can directly use the SuccessFactors Adpater in HCI and not rely on SFTP.

      (0) 
  4. Muralikrishna Naik

    HI Sabarish,

    I am trying with an interface with SF to SAP PI to thirdparty.

    for this I am trying to generate an SFAPI (XSD which need to be used in SAP PI message mapping) from Eclipse juno.

    I configured Juno and trying to generated an XSD through SF adapter.

    I gave all details and credentials of SF in SF adapter.

    here I am getting an error says that

    ” Failed to Connect to Success Factors system, reason [HTTP transport error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]”


    do we need to deploy SF SSL on Juno? If yes can you tell me where can I deploy this.

    I generated certificate from Successfactors from Mozilla.


    Thanks in Adv

    Murali.

    (0) 
  5. Satyanarayana Gadadas

    Hi Sabarish,

    We are integrating SF using PI, I have to extract all the Information about a candidate for his background check.

    They are saying this is available in individual entities and asking us to query all entities for single candidate information.

    I understood I can query only one entity/compound entity,

    Please shed some light how can I query information from multiple entities…

    if yes Is there any Sample Query…

    Can SF build new SFAPI with all entities and provide us a compound entity?

    If anyone resolved this issue then what was method followed?..

    Appreciate your help..

    (0) 
  6. Bhavesh Kantilal

    Hello,

    I am trying to generate the XSD for a Synchronous Operation: Eg: User Upsert.

    The Model Operation in this case only generates the XSD Structure for the Request to be sent from PI / HCI to SuccessFactors. There is no response structure that is created in the XSD.

    Questions

    1. How is the Response Structure to be generated? ( Note: I have selected Synchronous as the Call Type )

    2. I noticed that the XSD Structred Generated by the Model Generator is not the same as the call that goes to SucessFactors. I noticed in the SuccessFactors Logs, that the XML is not the same as well.

    How does the SuccessFactors adapter convert the request XML into the SuccessFactos XML format? Is there some documentation / rules on this?

    (0) 
    1. Sabarish T S Post author

      Hello Bhavesh,

      1) You are right, the response structure is not auto generated. The response follws the same format as specified in SFSF API Functional Guide.

      2) The SFSF request format defines a generic SF_Object structure and this can get confusing in mappings. In order to give a cleaner structure we have tweaked it a bit to make it more readable. And when the call is sent to the SFSF system we ofcource convert it back to the format expected by the service. This is an internal logic which you need not worry about and can ignore.

      Please feel free to send me a mail at sabarish.t.s@sap.com in case you have any detailed queries around this.

      (0) 
  7. biplab das

    Hi Sabarish,

    How did you configure the receiver SFTP Server? It’s not having any option to enter the password. In PI we  can authenticate a SFTP server in 2 ways- using username/password  and using certificates. But looks like HCI SFTP server has only certificate option. But I’m strugling to understand how to link the certificates in the SFTP channel. Do we configure it using “Define Artifacts”?

    (0) 
  8. Bhavesh Kantilal

    Auto Sync Feature : We are trying to figure out how to use the AutoSync in a SF Sender Channel with QUERY operation but not able to make much headway on.

    My query looks like below:

    SELECT lastModified,email, empId, externalId, firstName, id FROM User

    What we are trying to figure out is how do we use the AutoSync Feature in the Query? I understand the last_execution_time field is to be used in the where clause but what should be the RHS of this last_execution_time?

    Regards,

    Bhavesh

    (0) 
  9. Alim Ahmed Momin

    Thanks Sabarish,

    Please help with following 2 queries.

    1. Can we develop Consumer Proxy and Service Definitions in ERP using SF WSDLs OR some method so ERP can directly get OR put data to SF without Middleware.

    2. Can you help with example on HCI as middleware and ERP hits HCI via SOAP to update some info to SF for some object/entity.

    Alim

    (0) 
    1. Kumar Amar

      Hello Alim,

      1. I am not sure how can ERP directly send data to SFSF system. If there is any destination whcih can be build in ERP with destination configuraiton for SF system then it might be. But still i am afraid as they both communicate data in different format and hence a need of middle ware.

      2. Yes there are several HCI standard content involving ERP via SOAP to send data to SF through HCI. These are available on content catalogue https://clouldintegration.hana.ondemand.com. One for example would be content “SuccessFactors RCM with 3rd Party Assessment Vendor SHL”.

      Warm Regards,

      Amar

      (0) 
  10. Cindy Chen

    Hi Sabarish

    Really appreciated your article, I just configured Iflow as you mentioned, but got following error.

    “web##Message is greater than the maximum size of 3KB. Hence it is truncated|”

    Is there any parameter need to be set on SF or HCI side. Please help to suggest.

    Thanks

    Cindy

    (0) 
  11. Tomas Estruga

    Hi sabrish,

    i am following this guide but i am not able to the see SFAPI entities mentioned in step 4.

    i am just seeing a empty list.

    What could be happening?

    Regards

     

    Brian

    (0) 

Leave a Reply