1. Scenario :
Consider a scenario where XI is configured for making rfc calls to a remote SAP system using RFC adapter. This remote system goes down for regular maintenance everyday during early hours of the day. During this down time all the interfaces trying to connect fail as the RFC adapter cannot establish the connection. After a while the system come up but the calls from XI still result in RFC failures. Adapter monitoring shows all the communication channels to the remote system with failed status (RED).
2. Problem :
Connection failures to the end systems due to network issues or connectivity problems or server down time for backup or unscheduled outage is a very common thing. When such a failure is encountered at the adapter framework level, based on the adapter that encountered the error XI would either retry or flag the communication channel to failed status. Usually JDBC adapter can be configured to retry as many number of times till there is a successful connection to the end system (“XI : How to Re-Process failed XI Messages Automatically“). Unlike JDBC adapter RFC adapter flags the communication channel to failed status after the first connection failure to the end system. The only way to make RFC Adapter to check the connection again is to do the following
- Update the communication channel ( Integration Builder)
- Restart the RFC Adapter (in Visual Admin).
3. Solution :
The above solutions for restarting RFC based communication channels involves human intervention and could cause service down time. Ideally one would expect XI to restart the channel as soon as the end system is up and running. In case of RFC Adapter, XI by default checks for connectivity with the end system only when the channel is updated. This behavior of RFC Adapter is controlled by the service property initialRfcClientConnectCheck which is by default set to true. By setting this property to false we can force RFC Adapter to check the connection for every message being sent to the end system. SAP RFC Adapter should be restarted for this property take into effect. Hence in the scenario mentioned above, when the end system comes up, calls from XI would be successful. RFC Adapter would now check the connection for every message instead of only once when the communication channel is updated.
Please note that this blog is mainly concentrated on Receiver RFC Adapter communication channel. But as indicated by Michal Sender RFC Adapter can also be hit with connectivity problems. Please look at Q25 in SNote 780870 for more details.
4. More Info :
Receiver RFC Communication Channel : SNote: 730870 Q20
Sender RFC Communication Channel : SNote: 730870 Q25