diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index 439ba80..83374b6 100755
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -6443,12 +6443,15 @@
             main.log.exception( self.name + ": Uncaught exception!" )
             main.cleanAndExit()
 
-    def composeT3Command( self, sAddr, dAddr, ipv6=False, verbose=True ):
+    def composeT3Command( self, sAddr, dAddr, ipv6=False, verbose=True, simple=False ):
         """
         Compose and return t3-troubleshoot cli command for given source and destination addresses
         Options:
             sAddr: IP address of the source host
             dAddr: IP address of the destination host
+            ipv6: True if hosts are IPv6
+            verbose: return verbose t3 output if True
+            simple: compose command for t3-troubleshoot-simple if True
         """
         try:
             # Collect information of both hosts from onos
@@ -6465,21 +6468,25 @@
                     break
             assert sHost, "Not able to find host with IP {}".format( sAddr )
             cmdStr = "t3-troubleshoot"
+            if simple:
+                cmdStr += "-simple"
             if verbose:
                 cmdStr += " -vv"
-            cmdStr += " -s " + str( sAddr )
-            # TODO: collect t3 for all locations of source host?
-            cmdStr += " -sp " + str( sHost[ "locations" ][ 0 ][ "elementId" ] ) + "/" + str( sHost[ "locations" ][ 0 ][ "port" ] )
-            cmdStr += " -sm " + str( sHost[ "mac" ] )
-            if sHost[ "vlan" ] != "None":
-                cmdStr += " -vid " + sHost[ "vlan" ]
-            cmdStr += " -d " + str( dAddr )
-            netcfg = self.netcfg( args="devices {}".format( sHost[ "locations" ][ 0 ][ "elementId" ] ) )
-            netcfg = json.loads( netcfg )
-            assert netcfg, "Failed to get netcfg"
-            cmdStr += " -dm " + str( netcfg[ "segmentrouting" ][ "routerMac" ] )
             if ipv6:
                 cmdStr += " -et ipv6"
+            if simple:
+                cmdStr += " {}/{} {}/{}".format( sHost[ "mac" ], sHost[ "vlan" ], dHost[ "mac" ], dHost[ "vlan" ] )
+            else:
+                cmdStr += " -s " + str( sAddr )
+                cmdStr += " -sp " + str( sHost[ "locations" ][ 0 ][ "elementId" ] ) + "/" + str( sHost[ "locations" ][ 0 ][ "port" ] )
+                cmdStr += " -sm " + str( sHost[ "mac" ] )
+                if sHost[ "vlan" ] != "None":
+                    cmdStr += " -vid " + sHost[ "vlan" ]
+                cmdStr += " -d " + str( dAddr )
+                netcfg = self.netcfg( args="devices {}".format( sHost[ "locations" ][ 0 ][ "elementId" ] ) )
+                netcfg = json.loads( netcfg )
+                assert netcfg, "Failed to get netcfg"
+                cmdStr += " -dm " + str( netcfg[ "segmentrouting" ][ "routerMac" ] )
             return cmdStr
         except AssertionError:
             main.log.exception( "" )
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
index 4051231..7fc7164 100644
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
@@ -1159,7 +1159,7 @@
         except ( NameError, AttributeError ):
             main.topo = Topology()
         main.step( stepMsg )
-        pingResult = main.topo.ping( srcList, dstList, ipv6, expect, wait, acceptableFailed, skipOnFail )
+        pingResult = main.topo.ping( srcList, dstList, ipv6, expect, wait, acceptableFailed, skipOnFail, True )
         utilities.assert_equals( expect=main.TRUE,
                                  actual=pingResult,
                                  onpass="{}: Pass".format( stepMsg ),
diff --git a/TestON/tests/dependencies/topology.py b/TestON/tests/dependencies/topology.py
index 4d3bafb..c0e1e7a 100644
--- a/TestON/tests/dependencies/topology.py
+++ b/TestON/tests/dependencies/topology.py
@@ -228,7 +228,7 @@
                                  onfail="ONOS incorrectly discovered the topology" )
         return topoResults
 
-    def ping( self, srcList, dstList, ipv6=False, expect=True, wait=1, acceptableFailed=0, collectT3=True ):
+    def ping( self, srcList, dstList, ipv6=False, expect=True, wait=1, acceptableFailed=0, collectT3=True, t3Simple=False ):
         """
         Description:
             Ping from every host in srcList to every host in dstList and
@@ -241,6 +241,7 @@
             acceptableFailed: maximum number of failed pings acceptable for
                               each src-dst host pair
             collectT3: save t3-troubleshoot output for src and dst host that failed to ping
+            t3Simple: use t3-troubleshoot-simple command when collecting t3 output
         Returns:
             main.TRUE if all ping results are expected, otherwise main.FALSE
         """
@@ -291,7 +292,7 @@
                 srcIp = unexpectedPing[ 0 ]
                 dstIp = unexpectedPing[ 1 ]
                 main.log.debug( "Collecting t3 with source {} and destination {}".format( srcIp, dstIp ) )
-                cmd = main.Cluster.active( 0 ).CLI.composeT3Command( srcIp, dstIp, ipv6 )
+                cmd = main.Cluster.active( 0 ).CLI.composeT3Command( srcIp, dstIp, ipv6, True, t3Simple )
                 main.log.debug( "t3 command: {}".format( cmd ) )
                 if cmd:
                     main.ONOSbench.dumpONOSCmd( main.Cluster.active( 0 ).ipAddress, cmd, main.logdir,
