Skip to Content
Product Information
Author's profile photo Deepak G Deshpande

Retry Handling in SuccessFactors OData V2 Adapter for SAP Cloud Integration

SAP Cloud Integration’s SuccessFactors OData V2 adapter (version 1.8 onwards) provides you a feature to handle network issues in case of outbound connections. In the adapter specific settings, there is a checkbox, Retry on Failure, that you can enable to use this feature. When you enable this feature, the adapter inherently retries connecting to the SuccessFactors service in case of specific HTTP errors. This process is executed every three minutes, for a maximum of five times. If the connection fails even after five retries, the integration flow message processing status will display Failed.

The Retry on Failure option is available only in case of data fetch operations, i.e. Query (GET) for SuccessFactors OData V2 adapter.

You can check the component version for any component in SAP Cloud Integration by selecting the component and choosing the ‘i’ (info) icon.

Retry Handling Explained

The SuccessFactors OData V2 adapter tries to establish a HTTP connection to the SuccessFactors system. If you have selected the Retry on Failure checkbox in the adapter specific settings, the adapter will retry to establish a failed connection in case of the following HTTP errors:

  • HTTP 502 (Bad Gateway)
  • HTTP 503 (Service Unavailable)
  • HTTP 504 (Gateway Timeout)

Please note that the retry option is applicable only for establishing the outbound connectivity from the adapter and not for the complete message processing.

Example Scenario

Consider the following scenario where we are trying to fetch data from a SuccessFactors OData service.

In the Adapter Specific setting, the Retry on Failure option is enabled to ensure that the adapter will retry establishing outbound connectivity in case it encounters one of the three HTTP error codes mentioned above. Please note that the retry option is displayed only if you select the Query(GET) operation in Operation Details.

After successfully deploying the integration flow, if the service has network issues, the adapter will try to reestablish the outbound connection to the SuccessFactors system every three minutes for a maximum of five times.

Let us assume that the service is returning the HTTP status 502 (Bad Gateway). Here’s an excerpt of the message processing log (MPL).  The URI parameter has been masked in this excerpt for security reasons.

 

Message Processing Log:
  StartTime           = Mon Jan 22 05:27:48.917 UTC 2018
  StopTime            = Mon Jan 22 05:42:49.405 UTC 2018
  OverallStatus       = FAILED
  ChildCount          = 0
  ChildrenCounter     = 42
  ContextName         = Retry_Blog
  CorrelationId       = AFpldlRnkK5PDu-Rbrqd4wQXwj1_
  IntermediateError   = true
  ..
  ...
  ....
  .....
   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:27:49.261 UTC 2018
     ChildCount          = 15
     ModelStepId         = ServiceTask_4
     Response Status     = Response Status for URI XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX is HTTP/1.1 502 Bad Gateway
     StepId              = to353#1516598869261

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:27:49.265 UTC 2018
     ChildCount          = 16
     ModelStepId         = ServiceTask_4
     Retry Status        = Retry attempt 1 of 5 will be triggered in 3 minutes. Current time: Mon Jan 22 05:27:49 UTC 2018
     StepId              = to353#1516598869265

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:27:49.265 UTC 2018
     ChildCount          = 17
     ModelStepId         = ServiceTask_4
     Retry Status        = Thread waiting for next retry..........
     StepId              = to353#1516598869265

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:30:49.266 UTC 2018
     ChildCount          = 18
     ModelStepId         = ServiceTask_4
     Retry Status        = Thread resumed for retry.
     StepId              = to353#1516599049266

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:30:49.266 UTC 2018
     ChildCount          = 19
     ModelStepId         = ServiceTask_4
     Retry Status        = Retry attempt 1 triggered at Mon Jan 22 05:30:49 UTC 2018
     StepId              = to353#1516599049266

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:30:49.301 UTC 2018
     ChildCount          = 20
     ModelStepId         = ServiceTask_4
     Response Status     = Response Status for URI XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX is HTTP/1.1 502 Bad Gateway
     StepId              = to353#1516599049301

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:30:49.301 UTC 2018
     ChildCount          = 21
     ModelStepId         = ServiceTask_4
     Retry Status        = Retry attempt 2 of 5 will be triggered in 3 minutes. Current time: Mon Jan 22 05:30:49 UTC 2018
     StepId              = to353#1516599049302

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:30:49.302 UTC 2018
     ChildCount          = 22
     ModelStepId         = ServiceTask_4
     Retry Status        = Thread waiting for next retry..........
     StepId              = to353#1516599049302

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:33:49.302 UTC 2018
     ChildCount          = 23
     ModelStepId         = ServiceTask_4
     Retry Status        = Thread resumed for retry.
     StepId              = to353#1516599229302

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:33:49.302 UTC 2018
     ChildCount          = 24
     ModelStepId         = ServiceTask_4
     Retry Status        = Retry attempt 2 triggered at Mon Jan 22 05:33:49 UTC 2018
     StepId              = to353#1516599229302

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:33:49.325 UTC 2018
     ChildCount          = 25
     ModelStepId         = ServiceTask_4
     Response Status     = Response Status for URI XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX is HTTP/1.1 502 Bad Gateway
     StepId              = to353#1516599229325

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:33:49.326 UTC 2018
     ChildCount          = 26
     ModelStepId         = ServiceTask_4
     Retry Status        = Retry attempt 3 of 5 will be triggered in 3 minutes. Current time: Mon Jan 22 05:33:49 UTC 2018
     StepId              = to353#1516599229326

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:33:49.326 UTC 2018
     ChildCount          = 27
     ModelStepId         = ServiceTask_4
     Retry Status        = Thread waiting for next retry..........
     StepId              = to353#1516599229326

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:36:49.326 UTC 2018
     ChildCount          = 28
     ModelStepId         = ServiceTask_4
     Retry Status        = Thread resumed for retry.
     StepId              = to353#1516599409326

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:36:49.326 UTC 2018
     ChildCount          = 29
     ModelStepId         = ServiceTask_4
     Retry Status        = Retry attempt 3 triggered at Mon Jan 22 05:36:49 UTC 2018
     StepId              = to353#1516599409326

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:36:49.349 UTC 2018
     ChildCount          = 30
     ModelStepId         = ServiceTask_4
     Response Status     = Response Status for URI XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX is HTTP/1.1 502 Bad Gateway
     StepId              = to353#1516599409349

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:36:49.350 UTC 2018
     ChildCount          = 31
     ModelStepId         = ServiceTask_4
     Retry Status        = Retry attempt 4 of 5 will be triggered in 3 minutes. Current time: Mon Jan 22 05:36:49 UTC 2018
     StepId              = to353#1516599409350

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:36:49.350 UTC 2018
     ChildCount          = 32
     ModelStepId         = ServiceTask_4
     Retry Status        = Thread waiting for next retry..........
     StepId              = to353#1516599409350

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:39:49.350 UTC 2018
     ChildCount          = 33
     ModelStepId         = ServiceTask_4
     Retry Status        = Thread resumed for retry.
     StepId              = to353#1516599589350

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:39:49.350 UTC 2018
     ChildCount          = 34
     ModelStepId         = ServiceTask_4
     Retry Status        = Retry attempt 4 triggered at Mon Jan 22 05:39:49 UTC 2018
     StepId              = to353#1516599589350

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:39:49.374 UTC 2018
     ChildCount          = 35
     ModelStepId         = ServiceTask_4
     Response Status     = Response Status for URI XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX is HTTP/1.1 502 Bad Gateway
     StepId              = to353#1516599589374

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:39:49.374 UTC 2018
     ChildCount          = 36
     ModelStepId         = ServiceTask_4
     Retry Status        = Retry attempt 5 of 5 will be triggered in 3 minutes. Current time: Mon Jan 22 05:39:49 UTC 2018
     StepId              = to353#1516599589375

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:39:49.375 UTC 2018
     ChildCount          = 37
     ModelStepId         = ServiceTask_4
     Retry Status        = Thread waiting for next retry..........
     StepId              = to353#1516599589375

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:42:49.375 UTC 2018
     ChildCount          = 38
     ModelStepId         = ServiceTask_4
     Retry Status        = Thread resumed for retry.
     StepId              = to353#1516599769375

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:42:49.375 UTC 2018
     ChildCount          = 39
     ModelStepId         = ServiceTask_4
     Retry Status        = Retry attempt 5 triggered at Mon Jan 22 05:42:49 UTC 2018
     StepId              = to353#1516599769375

   SuccessFactors OData V2 Adapter Retry:
     StartTime           = Mon Jan 22 05:42:49.393 UTC 2018
     ChildCount          = 40
     ModelStepId         = ServiceTask_4
     Response Status     = Response Status for URI XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX is HTTP/1.1 502 Bad Gateway
     StepId              = to353#1516599769393

   Exchange ID-vsa3644936-51618-1516596501297-93-2 failed:
     StartTime           = Mon Jan 22 05:42:49.399 UTC 2018
     Status              = FAILED
     ChildCount          = 41
     ModelStepId         = TimerEventDefinition_53201
 

The MPL indicates that the first retry is initiated by the Retry Status that states “Retry attempt 1 of 5 will be triggered in 3 minutes.” This process is repeated 5 times (you can see the message in Retry Status tag reflecting the retry number and time of retry). In this scenario, even after five retry attempts, the adapter is unable to reestablish the outbound connection. Consequently, the ‘Status’ in the last MPL entry indicates ‘FAILED’.

Summary

The Retry on Failure feature is provided to handle network issues that might occur in case of outbound connections. This feature is available in SuccessFactors OData V2 adapter version 1.8 onwards.

The similar feature is also available in SuccessFactors SOAP adapter.

Assigned tags

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

      Well studied blog is presented here; it carries explained information that helps the readers with every detail about the subject.

      Author's profile photo Devaraj R
      Devaraj R

      Hi Deepak,

      Thanks for nice blog.

      I checked SAP updates regarding this "Retry on Failure" feature for SuccessFactor adapter.

      I would like to mention that this feature is available for SuccessFactor OData V2 adapter and as well for SuccessFactor SOAP adapter.

      Regards,

      Deva

      Author's profile photo Deepak Govardhanrao Deshpande
      Deepak Govardhanrao Deshpande
      Blog Post Author

      Hi Deva,

      Yes, it is available for SuccessFactors SOAP adapter. I have updated the Summary section of the blog.

      Thanks for the input

       

      Thanks,

      Deepak

      Author's profile photo Arnab Maji
      Arnab Maji

      The checkbox for 'Retry on Failure' is no longer available in CPI WebUI.

       

       

      Author's profile photo Deepak Govardhanrao Deshpande
      Deepak Govardhanrao Deshpande
      Blog Post Author

      Hi Arnab,

      In the updated version of SAP Cloud Platform Integration, the retry checkbox has been moved to Processing tab as show in the below screenshot.

       

      Thanks

      Deepak

       

       

      Author's profile photo Jacky Liu
      Jacky Liu

      Hi, Deepak,

      Would you please  read the following  notes ? For normal odata adapter, there is no parameter  retry on failure  . But it seems CPI will retry after time out failure . Is there any document about how many time CPI will try after time out failure ?

      https://launchpad.support.sap.com/#/notes/2931385

      Best regards!

      Jacky Liu

       

       

      Author's profile photo Deepak G Deshpande
      Deepak G Deshpande
      Blog Post Author

      Hi Jacky Liu,

      I am checking with SAP S/4HANA team and I will get back to you and share the updates.

       

      Thanks

      Deepak

      Author's profile photo Deepak G Deshpande
      Deepak G Deshpande
      Blog Post Author

      Hi Jacky Liu,

      The SAP Note https://launchpad.support.sap.com/#/notes/2931385 has been corrected. The CPI generic/normal OData adapter doesn't retry.

       

      Thanks

      Deepak

      Author's profile photo Jacky Liu
      Jacky Liu

      Hi, Deepak,

      Thank for your investigating !  CPI will not retry  to call odata api again if the odata api call exceed time  out limit automatically . Only when customer  generate another  odata call in iflow after odata api call exceed time out limit , the s4hc system will create duplicate SO . So it is not a system bug, it is customer's wrong practice . As my understanding .

      Best regards!

       

      Jacky Liu

      Author's profile photo Uwe Voigt
      Uwe Voigt

      Hi Deepak G Deshpande

      You mentioned that the generic OData adapter does not retry. Though it implements it, I suppose.

      If I download a bundle using Success Factors adapter, it uses a <camel:to uri="odata:... in its blueprint. The same is true for generic OData except that we cannot enable retryOnFailure.

      Is there a special reason to hide this functionality?

      When we send OData to the Marketing Cloud reusing the HTTP session over several calls to not fetch an CSRF token all the time, we get 403 if the token is expired.
      From my point of view this is an adapter concern and we should not be forced to handle that within the integration flow.

      Standard I-flows btw. report those 403 responses back to the caller.

      Edit: In MPL I have seen it already fetches a new token on 403 but it seems the validation uses the session cookie rather than CSRF token. I suspect the session cookie should also be cleared if CSRF token becomes invalid.

      Regards!
      Uwe

      Author's profile photo Deepak G Deshpande
      Deepak G Deshpande
      Blog Post Author

      Hi Uwe,

      The SuccessFactors connector is built as application connector where we have a defined technical agreements between SuccessFactors connector and SuccessFactors system, with which, we decided on handling the retry on agreed HTTP response codes.

      But, for generic OData adapter, which can be used with any OData service, it would be difficult to handle the retry at a back-end odata system. Hence, this functionality is not available in the generic odata receiver adapter.

       

      -Thanks

      Deepak