diff --git a/afrouter/afrouter/backend.go b/afrouter/afrouter/backend.go
index 863652f..19133a3 100644
--- a/afrouter/afrouter/backend.go
+++ b/afrouter/afrouter/backend.go
@@ -69,7 +69,6 @@
 	activeAssoc      assoc
 	connFailCallback func(string, *backend) bool
 	connections      map[string]*beConnection
-	srtdConns        []*beConnection
 	opnConns         int
 }
 
@@ -265,18 +264,7 @@
 	var atLeastOne bool = false
 	var errStr strings.Builder
 	log.Debugf("There are %d connections to open", len(be.connections))
-	for _, cn := range be.srtdConns {
-		// TODO: THIS IS A HACK to suspend redundancy for binding routers for all calls
-		// and its very specific to a use case. There should really be a per method
-		// mechanism to select non-redundant calls for all router types. This needs
-		// to be fixed ASAP. The overrides should be used for this, the implementation
-		// is simple, and it can be done here.
-		if atLeastOne == true && f.metaKey != NoMeta {
-			// Don't open any more southbound streams
-			log.Debugf("Not opening any more SB streams, metaKey = %s", f.metaKey)
-			rtrn.strms[cn.name] = nil
-			continue
-		}
+	for _, cn := range be.connections {
 		// Copy in the metadata
 		if cn.getState() == connectivity.Ready && cn.getConn() != nil {
 			log.Debugf("Opening southbound stream for connection '%s'", cn.name)
@@ -598,17 +586,6 @@
 	}
 }
 
-func (be *backend) sortConns() {
-	var tmpKeys []string
-	for k, _ := range be.connections {
-		tmpKeys = append(tmpKeys, k)
-	}
-	sort.Strings(tmpKeys)
-	for _, v := range tmpKeys {
-		be.srtdConns = append(be.srtdConns, be.connections[v])
-	}
-}
-
 func newBackend(conf *BackendConfig, clusterName string) (*backend, error) {
 	var rtrn_err bool = false
 
@@ -701,9 +678,6 @@
 	if rtrn_err {
 		return nil, errors.New("Connection configuration failed")
 	}
-	// Create the sorted connection list for deterministic
-	// active-active call orders.
-	be.sortConns()
 	// All is well start the backend cluster connections
 	be.connectAll()
 
diff --git a/tests/afrouter/suites/test1/test1.json b/tests/afrouter/suites/test1/test1.json
index ad0d579..c0326b1 100644
--- a/tests/afrouter/suites/test1/test1.json
+++ b/tests/afrouter/suites/test1/test1.json
@@ -21,7 +21,7 @@
 			}
 		],
 		"imports": [
- 				 "github.com/opencord/voltha-protos/go/common"
+			"github.com/opencord/voltha-protos/go/common"
 		],
 		"protoDesc":"voltha.pb",
 		"protoSubst": [
@@ -32,9 +32,9 @@
 		],
 		"clients": {
 			"imports": [
-				 "github.com/golang/protobuf/ptypes/empty",
-				 "github.com/opencord/voltha-protos/go/openflow_13",
- 				 "github.com/opencord/voltha-protos/go/common"
+				"github.com/golang/protobuf/ptypes/empty",
+				"github.com/opencord/voltha-protos/go/openflow_13",
+				"github.com/opencord/voltha-protos/go/common"
 			],
 			"endpoints": [
 				{
@@ -49,10 +49,10 @@
 		},
 		"servers": {
 			"imports": [
-				 "github.com/golang/protobuf/ptypes/empty",
-				 "github.com/opencord/voltha-protos/go/openflow_13",
- 				 "github.com/opencord/voltha-protos/go/common",
- 				 "github.com/opencord/voltha-protos/go/omci"
+				"github.com/golang/protobuf/ptypes/empty",
+				"github.com/opencord/voltha-protos/go/openflow_13",
+				"github.com/opencord/voltha-protos/go/common",
+				"github.com/opencord/voltha-protos/go/omci"
 			],
 			"endpoints": [
 			{
@@ -190,6 +190,19 @@
 							"value":""
 						}
 					]
+				},
+				{
+					"name":"core12",
+					"meta": [
+						{
+							"key":"voltha_serial_number",
+							"value":"2"
+						},
+						{
+							"key":"voltha_backend_name",
+							"value":""
+						}
+					]
 				}
 			]
 		},
diff --git a/tests/afrouter/suites/test2/test2.tmpl.json b/tests/afrouter/suites/test2/test2.tmpl.json
index 6efa146..a15230d 100644
--- a/tests/afrouter/suites/test2/test2.tmpl.json
+++ b/tests/afrouter/suites/test2/test2.tmpl.json
@@ -14,8 +14,8 @@
 			}
 		],
 		"imports": [
-			 "github.com/golang/protobuf/ptypes/empty",
-             "github.com/opencord/voltha-protos/go/common"
+			"github.com/golang/protobuf/ptypes/empty",
+			"github.com/opencord/voltha-protos/go/common"
 		],
 		"protoDesc":"voltha.pb",
 		"protoSubst": [
@@ -26,9 +26,9 @@
 		],
 		"clients": {
 			"imports": [
-				 "github.com/golang/protobuf/ptypes/empty",
-				 "github.com/opencord/voltha-protos/go/openflow_13",
-                 "github.com/opencord/voltha-protos/go/common"
+				"github.com/golang/protobuf/ptypes/empty",
+				"github.com/opencord/voltha-protos/go/openflow_13",
+				"github.com/opencord/voltha-protos/go/common"
 			],
 			"endpoints": [
 				{
@@ -43,10 +43,10 @@
 		},
 		"servers": {
 			"imports": [
-				 "github.com/golang/protobuf/ptypes/empty",
-				 "github.com/opencord/voltha-protos/go/openflow_13",
-                 "github.com/opencord/voltha-protos/go/omci",
-                 "github.com/opencord/voltha-protos/go/common"
+				"github.com/golang/protobuf/ptypes/empty",
+				"github.com/opencord/voltha-protos/go/openflow_13",
+				"github.com/opencord/voltha-protos/go/omci",
+				"github.com/opencord/voltha-protos/go/common"
 			],
 			"endpoints": [
 			{
@@ -206,6 +206,19 @@
 							"value":""
 						}
 					]
+				},
+				{
+					"name":"core12",
+					"meta": [
+						{
+							"key":"voltha_serial_number",
+							"value":"110001"
+						},
+						{
+							"key":"voltha_backend_name",
+							"value":""
+						}
+					]
 				}
 			]
 		},
diff --git a/tests/afrouter/suites/test3/test3.tmpl.json b/tests/afrouter/suites/test3/test3.tmpl.json
index a3c5456..a536d60 100644
--- a/tests/afrouter/suites/test3/test3.tmpl.json
+++ b/tests/afrouter/suites/test3/test3.tmpl.json
@@ -16,7 +16,7 @@
 		"imports": [
 			"github.com/golang/protobuf/ptypes/empty",
 			"github.com/opencord/voltha-protos/go/openflow_13",
-            "github.com/opencord/voltha-protos/go/common"
+			"github.com/opencord/voltha-protos/go/common"
 		],
 		"protoDesc":"voltha.pb",
 		"protoSubst": [
@@ -27,9 +27,9 @@
 		],
 		"clients": {
 			"imports": [
-				 "github.com/golang/protobuf/ptypes/empty",
-				 "github.com/opencord/voltha-protos/go/openflow_13",
-                 "github.com/opencord/voltha-protos/go/common"
+				"github.com/golang/protobuf/ptypes/empty",
+				"github.com/opencord/voltha-protos/go/openflow_13",
+				"github.com/opencord/voltha-protos/go/common"
 			],
 			"endpoints": [
 				{
@@ -44,10 +44,10 @@
 		},
 		"servers": {
 			"imports": [
-				 "github.com/golang/protobuf/ptypes/empty",
-				 "github.com/opencord/voltha-protos/go/openflow_13",
-                 "github.com/opencord/voltha-protos/go/omci",
-                 "github.com/opencord/voltha-protos/go/common"
+				"github.com/golang/protobuf/ptypes/empty",
+				"github.com/opencord/voltha-protos/go/openflow_13",
+				"github.com/opencord/voltha-protos/go/omci",
+				"github.com/opencord/voltha-protos/go/common"
 			],
 			"endpoints": [
 			{
@@ -219,6 +219,19 @@
 							"value":""
 						}
 					]
+				},
+				{
+					"name":"core12",
+					"meta": [
+						{
+							"key":"voltha_serial_number",
+							"value":"44"
+						},
+						{
+							"key":"voltha_backend_name",
+							"value":""
+						}
+					]
 				}
 			]
 		},
diff --git a/tests/afrouter/templates/runTests.go.tmpl b/tests/afrouter/templates/runTests.go.tmpl
index ac58220..3aa59ac 100644
--- a/tests/afrouter/templates/runTests.go.tmpl
+++ b/tests/afrouter/templates/runTests.go.tmpl
@@ -237,7 +237,7 @@
 				}
 			}
 		case <-glCtx.Done():
-			rtrn = errors.New(fmt.Sprintf("Timeout: no response data available for server %s", testName))
+			rtrn = errors.New(fmt.Sprintf("Timeout: no response data available for server %s (%s)", v, testName))
 			stats.testLog("%s\n", rtrn.Error())
 			log.Error(rtrn)
 		}
