Skip to Content
Author's profile photo Bhargav Gogineni

End-To-End Integration with SAP Successfactors Cloud HCM Intelligent services

This document guides you through End-to-End Integration & setup of SAP Cloud HCM Intelligent Services. For Integrating Successfactors Intelligent services we used third party cloud Middleware (Boomi) platform. Boomi platform will host SOAP based Web-services that will be consumed by Successfactors Intelligent services.

Here are few assumptions:

*********************************

Intelligent services are enabled in your Instance from Provisioning tool.


Proper RBP settings are enabled in your demo Instance to Setup/Access Events (Intelligent Services). Detailed Instructions can be found in Admin/implementation documents.

Admin document reference: https://websmp205.sap-ag.de/~sapidb/012002523100013479612015E

Implementation guide: https://websmp101.sap-ag.de/~sapidb/012002523100013990962015E

Step by step procedure to raise Intelligent Service Events from EC.

1) Per recommendations in Administration guide (Publishing Events Using SuccessStore), please import pre-defined Smart rules into demo Instance using Admin tool.

     Screen Shot Import Rules.png

2) Verify rule are successfully imported into demo instance.

Screen Shot 2016-01-29 at 12.31.23 PM.png

3) Associate Imported rule to entity that should trigger this event. In our test we used “Change Manager event” service.

     Admin Center >> Manage Business Configuration >> JobInfo >> Trigger Rules  >> Save

     Make sure for Base Object, Job Information Model is selected.

    Trigger rule definition.png

4) Next, define Subscriber that will consume this Intelligent service.

Admin Center  >> Event Notification Subscription >> Subscriber Tab >> Add Subscriber (top corner). Provide Subscriber Id, Name. Group and Client are  optional fields and then click Save.

Subscriber Define.png

5) Define Event Listener (SEB External event). This is the final step in EC to define Subscriber and Event notification.

Authentication to Webservice (SOAP based) is Basic. End point to Notification URL for this example is defined in Boomi Platform.

Event Listerner definition.png

Now that we have completed Intelligent services setup in EC, its time to define Event Listener in Third Party platform. We used Boomi Platform for this demo but it can built in any middleware.

Define Webservice Listener in Boomi Platform. Complete steps are attached in document.

Step 1: Select Web Service Connector object from design pallet. Set Action as Listen

Screen Shot 2016-01-29 at 3.14.08 PM.png

Step 2: Add operation to Connector. For this test I loaded Request and Response from Intelligent Service Implementation Guide. Request and Response profiles are attached.

Screen Shot Webservice Operation 15-19-23-824.png

Step 3: Mapper that consumes Request from Intelligent service and format’s return response for Confirmation. Sample request and response are attached for reference.

Request-Response Map.png

Complete Boomi Process.png

Step 4: Deploy Boomi process and set Web-service settings. Make sure Authentication is [Basic] and create user/token for Web-service authentication. This Username and Token is what is used in EC Subscriber/SEB External Event settings.

Boomi Webservice Settings.png

This completes SOAP Web-service setup in Middleware.And now Web-Service is ready to Intelligent service Events.

As mentioned earlier for this exercise we are going to use “Change Manager Event” Intelligent Service. To fire this event (Change Manager) we will have to “Take Action” on any Employee in EC and change his/her supervisor. It is assumed that when we “Take Action” in EC workflow steps are followed. After workflow steps are complete Event will be raised in Employee central.

If all the steps are followed an Event should raise in EC. Event raised can be viewed from Event Notification Audit Log under Admin Tools/Center.

Admin Center >> Event Notification Audit Log.

Screen Shot Event Notification 17-33-48-834 17-35-29-126 17-37-14-817.png

To see that service is successful invoked, view Event details and check request and response.

SOAP Request:

Manager Change Request.png

SOAP Response:

Manager Change Response.png


Boomi Web-services log showing that Intelligent Service was able to trigger Event upon Manager change in EC.

Boomi Logs.png

-Bhargav

Assigned Tags

      28 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member

      Thanks for posting Bhargav. I was looking for more information on how to set up and test Intelligent Services. This is very timely and a good use case.

      Author's profile photo Bhargav Gogineni
      Bhargav Gogineni
      Blog Post Author

      Thanks Permanand. Glad it was Informative.

      Author's profile photo B. Ploem
      B. Ploem

      We configured this also but keep getting this error message, any idea's why?Event_error.PNG

      Author's profile photo Bhargav Gogineni
      Bhargav Gogineni
      Blog Post Author

      Looks like Webservice listener is not active. Are you able to invoke webservice from any SAOP client ?

      Author's profile photo B. Ploem
      B. Ploem

      It is working now. The authentication was not set correctly.

      Bram

      Author's profile photo Josef Sysel
      Josef Sysel

      I have no authorization, It is connected directly to webserver where the service is running and there is no access from any place. (I'm not using boomi in my scenario)

      Author's profile photo Former Member
      Former Member

      I also get same error.

      Can you help me on point # 5 where the end point URL is mentioned,

      Should we add "Simple URL Path" with end point URL or "Soap URL Path"?


      also at the end of the error message i see "Invalid HTTP server response [404] - Unknown operation for /execute"


      Please share more information on these areas. Thank you in advance.

      Regards

      Velmurugan

      Author's profile photo Former Member
      Former Member

      Can anyone help me with this error?

      SOAP Error.JPG

      Author's profile photo Bhargav Gogineni
      Bhargav Gogineni
      Blog Post Author

      Are you able to invoke your WebService from SOAP client ?

      Author's profile photo Former Member
      Former Member

      Yes.. I am able to invoke WebService and the process is running without any result. But in SF side i can see above error under response text tab.

      -Vel

      Author's profile photo Bhargav Gogineni
      Bhargav Gogineni
      Blog Post Author

      Please check namespace in original attached xml. I had difficultly initially with wrong namespaces.

      -Bhargav

      Author's profile photo Former Member
      Former Member

      The namespace details are correct. I tried running again today and it is different error now,

      Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker. Response: OK/200.


      But Boomi process has been invoked and i could see the request xml data. However response is showing this error in SF page.


      -Vel

      Author's profile photo Bhargav Gogineni
      Bhargav Gogineni
      Blog Post Author

      Did you return response back to calling Web-service from EC ?

      Author's profile photo Former Member
      Former Member

      yes.. there is a return response mentioned already as per this blog. And the process is also getting triggered in Dell Boomi.

      When i View request xml document in Boomi, i dont see "changeFields" parameter's value. I can see other values of request XML, like entity, date, publishedBy, etc.

      and form SF event notification audit log shows,

      "Exception=[Cannot process response message]"

      "Cannot obtain SOAPBody from SOAPMessage"

      Not sure where and what i am missing here.

      -Vel

      Author's profile photo Former Member
      Former Member

      Hi, This is very informative. Thank you.

      When configured the same, got below error message. Please help me if am missing anything...

      Caused by: java.lang.NumberFormatException: For input string: "JobInformation"

      at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

      at java.lang.Integer.parseInt(Integer.java:495)

      at java.lang.Integer.valueOf(Integer.java:585)

      at com.sun.xml.bind.DatatypeConverterImpl._parseInt(DatatypeConverterImpl.java:104)

      at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$18.parse(RuntimeBuiltinLeafInfoImpl.java:683)

      at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$18.parse(RuntimeBuiltinLeafInfoImpl.java:686)

      at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.parse(TransducedAccessor.java:241)

      at com.sun.xml.bind.v2.runtime.unmarshaller.LeafPropertyLoader.text(LeafPropertyLoader.java:61)

      Author's profile photo Bhargav Gogineni
      Bhargav Gogineni
      Blog Post Author

      From error it has to do with Data Type conversion. Make sure right data type values are returned to Webservice.

      Bhargav

      Author's profile photo Neelesh Kamath
      Neelesh Kamath

      Thanks Bhargav for the information. Tested this in my instance. Works great 🙂

      Author's profile photo Christian Weber
      Christian Weber

       

      Dear Bhargav,

      thank you much for the Blog Post.

       

      My setup is working 50%, it send Data from Successfactors to Boomi and Boomi receive the Information well. But I'm not able to send a valid Response from Boomi to SF.

      In Event Notification Log I receive following Response. I'm not sure which namespace is valid, in your Blog it's http://notification.event.successfactors.com but I found some Posts with namespace = com.successfactors.event.notification.

      Can you be so kind and post a sample withe the XML files?

       

      Kind regards,

      Christian

       

      Exception=[Cannot dispatch message]
      StackTrace=[javax.xml.ws.WebServiceException: Cannot dispatch message
      at org.jboss.ws.core.jaxws.client.DispatchImpl.handleInvokeException(DispatchImpl.java:369)
      at org.jboss.ws.core.jaxws.client.DispatchImpl.invoke(DispatchImpl.java:136)
      at com.successfactors.alert.app.endpoint.soap.SoapEndpoint.deliver(SoapEndpoint.java:159)
      at com.successfactors.outbound.component.JAXWSProducer.process(JAXWSProducer.java:54)
      at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
      at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)
      at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
      at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
      at org.apache.camel.processor.MulticastProcessor.doProcessParallel(MulticastProcessor.java:823)
      at org.apache.camel.processor.MulticastProcessor.access$200(MulticastProcessor.java:84)
      at org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:319)
      at org.apache.camel.processor.MulticastProcessor$1.call(MulticastProcessor.java:304)
      at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:812)
      Caused by: java.io.IOException: Could not transmit message
      at org.jboss.ws.core.client.RemotingConnectionImpl.invoke(RemotingConnectionImpl.java:211)
      at org.jboss.ws.core.client.SOAPRemotingConnection.invoke(SOAPRemotingConnection.java:77)
      at org.jboss.ws.core.jaxws.client.DispatchImpl.invokeInternalSOAP(DispatchImpl.java:240)
      at org.jboss.ws.core.jaxws.client.DispatchImpl.invokeInternal(DispatchImpl.java:169)
      at org.jboss.ws.core.jaxws.client.DispatchImpl.invoke(DispatchImpl.java:132)
      ... 14 more
      Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker. Cannot create SOAP envelope from: {http://notification.event.successfactors.com}ExternalEventResponse. Response: OK/200.
      at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:380)
      at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:149)
      at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:143)
      at org.jboss.remoting.Client.invoke(Client.java:1936)
      at org.jboss.remoting.Client.invoke(Client.java:789)
      at org.jboss.ws.core.client.RemotingConnectionImpl.invoke(RemotingConnectionImpl.java:190)
      ... 18 more
      Caused by: java.lang.IllegalArgumentException: Cannot create SOAP envelope from: {http://notification.event.successfactors.com}ExternalEventResponse
      at org.jboss.ws.core.soap.SOAPEnvelopeImpl.<init>(SOAPEnvelopeImpl.java:70)
      at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:124)
      at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:96)
      at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:266)
      at org.jboss.ws.core.soap.SOAPMessageUnMarshaller.read(SOAPMessageUnMarshaller.java:84)
      at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:562)
      at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:334)
      ... 23 more
      ].

      Author's profile photo Bhargav Gogineni
      Bhargav Gogineni
      Blog Post Author

      Response XML:

       

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <ExternalEventResponse xmlns="com.successfactors.event.notification">
      <responsePayload>
      <entityId>EmpJob</entityId>
      <status>0</status>
      <statusDate>2017-02-01T00:00:00-05:00</statusDate>
      <statusDetails>Success</statusDetails>
      </responsePayload>
      </ExternalEventResponse>
      Author's profile photo Christian Weber
      Christian Weber

      Dear Bhargav,

      thank you for your Feedback.

       

      I've add two namespaces to my XML Response Profile:

      1. http://schemas.xmlsoap.org/soap/envelope/
      2. http://notification.event.successfactors.com

      Then assigned 1. to the Envelope and Header Element. And assigned 2. to ExternalEventResponse.

      With this two different namespaces I'm able to send Response back from Boomi to SF EC.

      I try it with the namespace from your screenshot "com.successfactors.event.notification" which is not working. I'm a beginner with XML and namespace, why you use the reverse order?

      Attached you find Screenshots from my XML which is now working.

       

      Thank you for your support and your Blog Post, which was a great help.

      Regards,

      Christian

       

      Author's profile photo Former Member
      Former Member

      Hi Bhargav,

       

      We have done the setting as required on SF system but still don't see any events in Even Notification Log and also temperorily I assigned a one sample SOAP URL . Can you let me know how this mapping of fields from SF Event Publishing to our developed SOAP URL is mapped .

      Regards,

      Kishore.S

       

      Author's profile photo Bhargav Gogineni
      Bhargav Gogineni
      Blog Post Author

      I'm sorry Kishore to mention that I didn't follow your question.

      To raise events in EC did you make sure that you are selecting right model ?

       

      <<<< Make sure for Base Object, Job Information Model is selected. >>>

       

      Thanks,

      -Bhargav

       

       

       

      Author's profile photo Former Member
      Former Member

       

      Author's profile photo Former Member
      Former Member

      Hi Bhargav,

      I am able to see the event in the event audit log.

      Would it be possible to elaborate regarding the request and response we need to design from middleware for example if I use SAP PI system instead of Boomi . I am assuming that I need to build a synchronous WSDL with the request and response .

      Regards,

      Kishore.S

      Author's profile photo Bhargav Gogineni
      Bhargav Gogineni
      Blog Post Author

      Hi Kishore,

      From the time I wrote this blog quite a few enhancements were maid to Intelligent services but basic concept is same.

      I'm not sure if WSDL with request and response is hosted some where in documentation but, if it is not avail please open support ticket with SAP and ask for WSDL on event notifications.

      If I discover anything I will update this note.

      Thanks,

      -Bhargav

      Author's profile photo Ines Preuss
      Ines Preuss

      Hi,

       

      Really helpful article. This is related to EC, curious if you or anyone have experience doing the same with other modules such as recruitment? I've tried following the same steps steps with recruitment rules but experience some limitations in my way..

       

      Thanks,

      Ines

      Author's profile photo Bhargav Gogineni
      Bhargav Gogineni
      Blog Post Author

      Please look into integration center which has some of inbuilt features for RCM module.

       

      Bhargav

      Author's profile photo Jojy Joseph
      Jojy Joseph

      Hi Bhargav,

       

      Those detailed admin and implementation guide links doesnt works. Do you have any alternative links which can be used here.

      Many Thanks!!