diff --git a/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBindingTest.java b/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBindingTest.java
index 8475f03..d4c4be7 100644
--- a/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBindingTest.java
+++ b/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationBindingTest.java
@@ -640,7 +640,6 @@
         // 5. Call Configuration.setBundleLocation( "locationB" )
         config.setBundleLocation( locationB );
         delay();
-        delay();
 
         // ==> configuration is bound to locationB
         TestCase.assertEquals( locationB, config.getBundleLocation() );
@@ -717,7 +716,6 @@
         // 5. Call Configuration.setBundleLocation( "locationB" )
         config.setBundleLocation( locationB );
         delay();
-        delay();
 
         // ==> configuration is bound to locationB
         TestCase.assertEquals( locationB, config.getBundleLocation() );
@@ -800,7 +798,6 @@
         // 5. Call Configuration.setBundleLocation( "locationB" )
         config.setBundleLocation( locationB );
         delay();
-        delay();
 
         // ==> configuration is bound to locationB
         TestCase.assertEquals( locationB, config.getBundleLocation() );
@@ -883,7 +880,6 @@
         // 5. Uninstall bundle A
         bundleA.uninstall();
         delay();
-        delay();
 
         /*
          * According to BJ Hargrave configuration is not re-dispatched
@@ -959,7 +955,6 @@
         // 5. Uninstall bundle A
         bundleA.uninstall();
         delay();
-        delay();
 
         /*
          * According to BJ Hargrave configuration is not re-dispatched
diff --git a/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationTestBase.java b/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationTestBase.java
index 50117e3..eda056e 100644
--- a/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationTestBase.java
+++ b/configadmin/src/test/java/org/apache/felix/cm/integration/ConfigurationTestBase.java
@@ -22,14 +22,18 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 import java.util.Dictionary;
 import java.util.Hashtable;
 
+import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
 import org.apache.felix.cm.integration.helper.BaseTestActivator;
 import org.apache.felix.cm.integration.helper.ManagedServiceTestActivator;
 import org.apache.felix.cm.integration.helper.MyTinyBundle;
+import org.apache.felix.cm.integration.helper.UpdateThreadSignalTask;
 import org.junit.After;
 import org.junit.Before;
 import org.ops4j.pax.exam.CoreOptions;
@@ -163,8 +167,42 @@
     }
 
 
-    protected static void delay()
+    protected void delay()
     {
+        Object ca = configAdminTracker.getService();
+        if ( ca != null )
+        {
+            try
+            {
+
+                Field caf = ca.getClass().getDeclaredField( "configurationManager" );
+                caf.setAccessible( true );
+                Object cm = caf.get( ca );
+
+                Field cmf = cm.getClass().getDeclaredField( "updateThread" );
+                cmf.setAccessible( true );
+                Object ut = cmf.get( cm );
+
+                Method utm = ut.getClass().getDeclaredMethod( "schedule" );
+                utm.setAccessible( true );
+
+                UpdateThreadSignalTask signalTask = new UpdateThreadSignalTask();
+                utm.invoke( ut, signalTask );
+                signalTask.waitSignal();
+
+                return;
+            }
+            catch ( AssertionFailedError afe )
+            {
+                throw afe;
+            }
+            catch ( Throwable t )
+            {
+                // ignore any problem and revert to timed delay (might log this)
+            }
+        }
+
+        // no configadmin or failure while setting up task
         try
         {
             Thread.sleep( 300 );
