diff --git a/TestON/tests/CHOTestMonkey/CHOTestMonkey.params b/TestON/tests/CHOTestMonkey/CHOTestMonkey.params
index 00afaf6..ff85c56 100644
--- a/TestON/tests/CHOTestMonkey/CHOTestMonkey.params
+++ b/TestON/tests/CHOTestMonkey/CHOTestMonkey.params
@@ -412,6 +412,14 @@
         <linkDownUpInterval>1</linkDownUpInterval>
     </CASE21>
 
+    <CASE40>
+        <sleepSec>10</sleepSec>
+    </CASE40>
+
+    <CASE41>
+        <sleepSec>10</sleepSec>
+    </CASE41>
+
     <CASE70>
         <sleepSec>2</sleepSec>
         <addHostIntentWeight>3</addHostIntentWeight>
diff --git a/TestON/tests/CHOTestMonkey/CHOTestMonkey.py b/TestON/tests/CHOTestMonkey/CHOTestMonkey.py
index 3e02799..9791388 100644
--- a/TestON/tests/CHOTestMonkey/CHOTestMonkey.py
+++ b/TestON/tests/CHOTestMonkey/CHOTestMonkey.py
@@ -588,7 +588,7 @@
                                  actual=main.caseResult,
                                  onpass="Randomly bring down ONOS test passed",
                                  onfail="Randomly bring down ONOS test failed" )
-        time.sleep( main.caseSleep )
+        time.sleep( int( main.params[ 'CASE40' ][ 'sleepSec' ] ) )
 
     def CASE41( self, main ):
         """
@@ -621,7 +621,7 @@
                                  actual=main.caseResult,
                                  onpass="Randomly bring up ONOS test passed",
                                  onfail="Randomly bring up ONOS test failed" )
-        time.sleep( main.caseSleep )
+        time.sleep( int( main.params[ 'CASE41' ][ 'sleepSec' ] ) )
 
     def CASE50( self, main ):
         """
diff --git a/TestON/tests/CHOTestMonkey/CHOTestMonkey.topo b/TestON/tests/CHOTestMonkey/CHOTestMonkey.topo
index 5fdf91d..4fceea9 100644
--- a/TestON/tests/CHOTestMonkey/CHOTestMonkey.topo
+++ b/TestON/tests/CHOTestMonkey/CHOTestMonkey.topo
@@ -3,7 +3,7 @@
 
         <ONOScell>
             <host>localhost</host>  # ONOS "bench" machine
-            <user>admin</user>
+            <user>sdn</user>
             <password></password>
             <type>OnosClusterDriver</type>
             <connect_order>1</connect_order>
@@ -23,7 +23,7 @@
 
         <Mininet1>
             <host>OCN</host>
-            <user>admin</user>
+            <user>sdn</user>
             <password></password>
             <type>MininetCliDriver</type>
             <connect_order>2</connect_order>
diff --git a/TestON/tests/CHOTestMonkey/dependencies/events/CheckEvent.py b/TestON/tests/CHOTestMonkey/dependencies/events/CheckEvent.py
index 579b17f..7361c8f 100644
--- a/TestON/tests/CHOTestMonkey/dependencies/events/CheckEvent.py
+++ b/TestON/tests/CHOTestMonkey/dependencies/events/CheckEvent.py
@@ -58,7 +58,8 @@
                     intentState = controller.CLI.compareIntent( intentDict )
                 if not intentState:
                     main.log.warn( "Intent Check - not all intent ids and states match that on ONOS%s" % ( controller.index ) )
-                    checkResult = EventStates().FAIL
+                    # FIXME: ONOS leaves intents as WITHDRAWN state occasionally and we don't consider that as a FAIL for now
+                    # checkResult = EventStates().FAIL
         return checkResult
 
 
@@ -254,7 +255,7 @@
                     for c in main.controllers:
                         if c.isUp() and ipToState[ c.ip ] == 'READY':
                             pass
-                        elif not c.isUp() and ipToState[ c.ip ] == 'INACTIVE':
+                        elif not c.isUp() and c.ip not in ipToState.keys():
                             pass
                         else:
                             checkResult = EventStates().FAIL
@@ -263,6 +264,9 @@
                 except ( TypeError, ValueError ):
                     main.log.exception( "ONOS Check - Object not as expected" )
                     return EventStates().FAIL
+                except Exception as e:
+                    main.log.exception( "ONOS Check - Uncaught Exception: {}".format( e ) )
+                    return EventStates().FAIL
         return checkResult
 
 
