I also have a Business Operation that sometimes experiences failures. My Reply Code Actions setting is E=R, my Retry Interval is 60, my Failure Timeout is -1. When a message fails, it retries after 60 seconds. This Business Operation is called from a BPL.

Connect Timeout (5) and Response Timeout (30) are the default values.

We usually do not get timeout, but we sometimes receive 500 Internal Server Error. In this case I check the response in BPL and initiate a retry. 

STOPALLPRODUCTIONS
Try {
Kill array
Do ##class(%SYS.Namespace).ListAll(.array)
Set ns = ""
For {
Set ns = $Order(array(ns))
If (ns = "") Quit
Kill x
Set = $$MyFunc(ns)
Write "x = ",x,!
}
Return
Catch {
Write $ZERROR,!
}
Quit
MyFunc(ns)
Try {
Write "ns = ",ns,!
ZN ns
Set sc1 = ##class(Ens.Director).StopProduction()
Write "sc1 = ",sc1,!
Catch {
Write $ZERROR,!
}
Return ns

Thank you, Evgeny, for pointing out how to update user(s) by using CPF Merge. I still like to have an option to configure a group of users in a single file and import this group of users with their passwords into several different IRIS instances which may use different CFP Merge files already. If there is a change to my users, I just update the XML file which gets imported using %ZSTART routine whenever any IRIS instance starts.