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

To report this post you need to login first.

25 Comments

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

      1. 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)

        (0) 
  1. Velmurugan Kanagasabai

    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 orSoap 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

    (0) 
          1. Velmurugan Kanagasabai

            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

            (0) 
              1. Velmurugan Kanagasabai

                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

                (0) 
  2. Sam Konatham

    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)

    (0) 
  3. 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
    ].

    (0) 
    1. Bhargav Gogineni 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>
      (0) 
    2. 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

       

      (0) 
  4. Arpit Nigam

    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

     

    (0) 
    1. Bhargav Gogineni 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

       

       

       

      (0) 
  5. Arpit Nigam

    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

    (0) 
  6. Bhargav Gogineni 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

    (0) 

Leave a Reply