diff --git a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/BundleDependencyAnnotation.java b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/BundleDependencyAnnotation.java
index 73dc79e..96cefc6 100644
--- a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/BundleDependencyAnnotation.java
+++ b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/BundleDependencyAnnotation.java
@@ -31,6 +31,9 @@
 import org.osgi.framework.BundleContext;
 
 public class BundleDependencyAnnotation {
+    public static final String ENSURE_CONSUMER = "BundleDependencyAnnotation.consumer";
+    public static final String ENSURE_ADAPTER = "BundleDependencyAnnotation.adapter";
+
     public interface ServiceInterface extends Runnable {
     }
 
@@ -42,7 +45,7 @@
         protected volatile boolean m_added;
         protected volatile boolean m_removed;
 
-        @ServiceDependency(filter = "(name=bundleDependencyTest.consumer)")
+        @ServiceDependency(filter = "(name=" + ENSURE_CONSUMER + ")")
         private volatile Ensure m_sequencer;
 
         @BundleDependency(required = false, removed = "removed", filter = "(Bundle-SymbolicName=org.apache.felix.dependencymanager)")
@@ -79,7 +82,7 @@
      */
     @Component
     public static class ServiceConsumer {
-        @ServiceDependency(filter = "(name=bundleDependencyTest.adapter)")
+        @ServiceDependency(filter = "(name=" + ENSURE_ADAPTER + ")")
         volatile Ensure m_sequencer;
 
         @ServiceDependency
@@ -102,7 +105,7 @@
         protected volatile Bundle m_bundle;
 
         // Our Sequencer required dependency
-        @ServiceDependency(filter = "(name=bundleDependencyTest.adapter)")
+        @ServiceDependency(filter = "(name=" + ENSURE_ADAPTER + ")")
         volatile Ensure m_sequencer;
 
         // Check auto config injections
diff --git a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/CompositeAnnotations.java b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/CompositeAnnotations.java
index 041d693..1f3c4f6 100644
--- a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/CompositeAnnotations.java
+++ b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/CompositeAnnotations.java
@@ -41,6 +41,8 @@
      */
     @Component
     public static class C1 implements C1Service {
+        public final static String ENSURE = "CompositeAnnotations.C1";
+        
         /* We are composed of this object, which will also be injected with our dependencies */
         private final C2 m_c2 = new C2();
 
@@ -49,7 +51,7 @@
         public volatile Runnable m_runnable;
 
         /* Object used to check that methods are called in the proper sequence */
-        @ServiceDependency(filter = "(name=test.compositeAnnotation.c1)")
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
         private volatile Ensure m_sequencer;
 
         /**
@@ -151,7 +153,9 @@
 
     @Component(properties = @Property(name = "foo", value = "bar1"))
     public static class Dependency1 implements Runnable {
-        @ServiceDependency(filter = "(name=test.compositeAnnotation.dependency1)")
+        public final static String ENSURE = "CompositeAnnotations.Dependency1";
+
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
         volatile Ensure m_sequencer;
 
         @Start
@@ -166,7 +170,9 @@
 
     @Component(properties = @Property(name = "foo", value = "bar2"))
     public static class Dependency2 implements Runnable {
-        @ServiceDependency(filter = "(name=test.compositeAnnotation.dependency2)")
+        public final static String ENSURE = "CompositeAnnotations.Dependency2";
+
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
         volatile Ensure m_sequencer;
 
         @Start
diff --git a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/FactoryConfigurationAdapterAnnotation.java b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/FactoryConfigurationAdapterAnnotation.java
index 6b12e5c..ce2fa14 100644
--- a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/FactoryConfigurationAdapterAnnotation.java
+++ b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/FactoryConfigurationAdapterAnnotation.java
@@ -68,7 +68,9 @@
      */
     @FactoryConfigurationAdapterService(factoryPid = "FactoryPidTest", properties = {@Property(name = "foo", value = "bar")}, propagate = true)
     public static class ServiceProvider implements ServiceInterface {
-        @ServiceDependency(filter="(name=test.FactoryConfigurationAdapterAnnotationTest)")
+        public final static String ENSURE = "FactoryConfigurationAdapterAnnotation.ServiceProvider";
+        
+        @ServiceDependency(filter="(name=" + ENSURE + ")")
         private volatile Ensure m_sequencer;
 
         private volatile boolean m_started;
diff --git a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/Felix4050.java b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/Felix4050.java
index ba41a0d..aa0975a 100644
--- a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/Felix4050.java
+++ b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/Felix4050.java
@@ -36,6 +36,8 @@
 import org.osgi.framework.ServiceRegistration;
 
 public class Felix4050 {
+    public final static String ENSURE = "Felix4050";
+    
     @Component(provides = {A.class})
     public static class A {
 
@@ -56,7 +58,7 @@
         @Inject
         volatile BundleContext _ctx;
 
-        @ServiceDependency(filter = "(name=test.Felix4050)")
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
         volatile Ensure m_sequencer;
 
         @Start
@@ -90,7 +92,7 @@
 
     @Component
     public static class S {
-        @ServiceDependency(filter = "(name=test.Felix4050)")
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
         volatile Ensure m_sequencer;
 
         @Inject
diff --git a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/MultipleAnnotations.java b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/MultipleAnnotations.java
index 4e82155..80a09ab 100644
--- a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/MultipleAnnotations.java
+++ b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/MultipleAnnotations.java
@@ -26,6 +26,8 @@
 import org.apache.felix.dm.annotation.api.Stop;
 
 public class MultipleAnnotations {
+    public final static String ENSURE = "MultipleAnnotations";
+    
     public static class Composite {
         void bind(Ensure seq) {
             seq.step(2);
@@ -34,7 +36,7 @@
 
     @Component
     public static class ServiceConsumer {
-        @ServiceDependency(filter="(name=test.MultipleAnnotationsTest)")
+        @ServiceDependency(filter="(name=" + ENSURE + ")")
         volatile Ensure m_sequencer;
 
         @ServiceDependency(filter = "(foo=bar)")
@@ -58,7 +60,7 @@
 
     @Component(properties = {@Property(name = "foo", value = "bar")})
     public static class ServiceProvider implements ServiceInterface {
-        @ServiceDependency(filter="(name=test.MultipleAnnotationsTest)")
+        @ServiceDependency(filter="(name=" + ENSURE + ")")
         volatile Ensure m_sequencer;
 
         volatile ServiceProvider2 m_serviceProvider2;
@@ -100,7 +102,7 @@
         @ServiceDependency(required = false, filter = "(foo=bar)") // NullObject
         volatile Runnable m_runnable;
 
-        @ServiceDependency(service = Ensure.class, filter="(name=test.MultipleAnnotationsTest)")
+        @ServiceDependency(service = Ensure.class, filter="(name=" + ENSURE + ")")
         void bind(Ensure seq) {
             m_sequencer = seq;
             m_sequencer.step(1);
diff --git a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/PropagateAnnotation.java b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/PropagateAnnotation.java
index b95cf71..480c79f 100644
--- a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/PropagateAnnotation.java
+++ b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/PropagateAnnotation.java
@@ -29,6 +29,8 @@
  * Verifies ServiceDependencyservice properties propagation.
  */
 public class PropagateAnnotation {
+    public final static String ENSURE = "PropagateAnnotation";
+    
     @Component
     public static class Consumer {
         private volatile Map m_producerProps;
@@ -38,7 +40,7 @@
             m_producerProps = props;
         }
 
-        @ServiceDependency(filter = "(name=test.PropagateAnnotationTest)")
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
         volatile Ensure m_sequencer;
 
         @Start
diff --git a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/SimpleAnnotations.java b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/SimpleAnnotations.java
index 68c2bff..02d6250 100644
--- a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/SimpleAnnotations.java
+++ b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/SimpleAnnotations.java
@@ -40,7 +40,9 @@
      */
     @Component(properties = {@Property(name = "foo", value = "bar")})
     public static class Producer implements Runnable {
-        @ServiceDependency(filter = "(name=simple.annotations.producer)")
+        public final static String ENSURE = "SimpleAnnotations.Producer";
+        
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
         volatile Ensure _ensure;
 
         @ServiceDependency
@@ -104,13 +106,15 @@
      */
     @Component
     public static class Consumer {
+        public final static String ENSURE = "SimpleAnnotations.Consumer";
+        
         @ServiceDependency
         volatile LogService _logService;
 
         @ServiceDependency
         volatile Runnable _runnable;
 
-        @ServiceDependency(filter = "(name=simple.annotations.consumer)")
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
         volatile Ensure _ensure;
 
         @Inject
diff --git a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/TemporalAnnotations.java b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/TemporalAnnotations.java
index 208af62..b805ff1 100644
--- a/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/TemporalAnnotations.java
+++ b/dependencymanager/test2/src/main/java/org/apache/felix/dependencymanager/test2/components/TemporalAnnotations.java
@@ -28,9 +28,10 @@
  */
 @Component(provides = {})
 public class TemporalAnnotations implements Runnable {
+    public final static String ENSURE = "TemporalAnnotations";
     Thread m_thread;
 
-    @ServiceDependency(filter = "(name=temporal.annotations)")
+    @ServiceDependency(filter = "(name=" + ENSURE + ")")
     volatile Ensure m_sequencer;
 
     @ServiceDependency(timeout = 1000L, filter = "(test=temporal)")
diff --git a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/BundleDependencyAnnotationTest.java b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/BundleDependencyAnnotationTest.java
index 8b4a1c4..ccd8fe6 100644
--- a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/BundleDependencyAnnotationTest.java
+++ b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/BundleDependencyAnnotationTest.java
@@ -18,6 +18,7 @@
 */
 package org.apache.felix.dependencymanager.test2.integration.annotations;
 
+import org.apache.felix.dependencymanager.test2.components.BundleDependencyAnnotation;
 import org.apache.felix.dependencymanager.test2.components.Ensure;
 import org.apache.felix.dependencymanager.test2.integration.common.TestBase;
 import org.junit.Test;
@@ -36,7 +37,7 @@
     @Test
     public void testBundleDependencyAnnotation() {
         Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, "bundleDependencyTest.consumer");        
+        ServiceRegistration sr = register(e, BundleDependencyAnnotation.ENSURE_CONSUMER);        
         e.waitForStep(1, 10000);
         stopTestComponentsBundle();
         e.waitForStep(2, 10000);
@@ -50,7 +51,7 @@
     @Test
     public void testBundleAdapterServiceAnnotation() throws Throwable {
         Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, "bundleDependencyTest.adapter");        
+        ServiceRegistration sr = register(e, BundleDependencyAnnotation.ENSURE_ADAPTER);        
         e.waitForStep(3, 10000);
         e.ensure();
         sr.unregister();
diff --git a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/CompositeAnnotationsTest.java b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/CompositeAnnotationsTest.java
index ccff547..4b45429 100644
--- a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/CompositeAnnotationsTest.java
+++ b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/CompositeAnnotationsTest.java
@@ -19,6 +19,9 @@
 package org.apache.felix.dependencymanager.test2.integration.annotations;
 
 import org.apache.felix.dependencymanager.test2.components.Ensure;
+import org.apache.felix.dependencymanager.test2.components.CompositeAnnotations.C1;
+import org.apache.felix.dependencymanager.test2.components.CompositeAnnotations.Dependency1;
+import org.apache.felix.dependencymanager.test2.components.CompositeAnnotations.Dependency2;
 import org.apache.felix.dependencymanager.test2.integration.common.TestBase;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -33,9 +36,9 @@
     @Test
     public void testComposite() {
         Ensure e = new Ensure();
-        ServiceRegistration sr1 = register(e, "test.compositeAnnotation.c1");
-        ServiceRegistration sr2 = register(e, "test.compositeAnnotation.dependency1");
-        ServiceRegistration sr3 = register(e, "test.compositeAnnotation.dependency2");
+        ServiceRegistration sr1 = register(e, C1.ENSURE);
+        ServiceRegistration sr2 = register(e, Dependency1.ENSURE);
+        ServiceRegistration sr3 = register(e, Dependency2.ENSURE);
         e.waitForStep(4, 10000);
         stopTestComponentsBundle();
         e.waitForStep(12, 10000);
diff --git a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/FactoryConfigurationAdapterAnnotationTest.java b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/FactoryConfigurationAdapterAnnotationTest.java
index 312b17b..f094da0 100644
--- a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/FactoryConfigurationAdapterAnnotationTest.java
+++ b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/FactoryConfigurationAdapterAnnotationTest.java
@@ -24,6 +24,7 @@
 import junit.framework.Assert;
 
 import org.apache.felix.dependencymanager.test2.components.Ensure;
+import org.apache.felix.dependencymanager.test2.components.FactoryConfigurationAdapterAnnotation.ServiceProvider;
 import org.apache.felix.dependencymanager.test2.integration.common.TestBase;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -40,7 +41,7 @@
     @Test
     public void testFactoryConfigurationAdapterAnnotation() throws Throwable {
         Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, "test.FactoryConfigurationAdapterAnnotationTest");
+        ServiceRegistration sr = register(e, ServiceProvider.ENSURE);
         ConfigurationAdmin cm = (ConfigurationAdmin) context.getService(context
                 .getServiceReference(ConfigurationAdmin.class.getName()));
         try {
diff --git a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/Felix4050Test.java b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/Felix4050Test.java
index 9db9566..633218c 100644
--- a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/Felix4050Test.java
+++ b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/Felix4050Test.java
@@ -19,6 +19,7 @@
 package org.apache.felix.dependencymanager.test2.integration.annotations;
 
 import org.apache.felix.dependencymanager.test2.components.Ensure;
+import org.apache.felix.dependencymanager.test2.components.Felix4050;
 import org.apache.felix.dependencymanager.test2.integration.common.TestBase;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -35,7 +36,7 @@
     @Test
     public void testFelix4050() {
         Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, "test.Felix4050");
+        ServiceRegistration sr = register(e, Felix4050.ENSURE);
         // wait for S to be started
         e.waitForStep(3, 10000);
         // remove our sequencer: this will stop S
diff --git a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/MultipleAnnotationsTest.java b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/MultipleAnnotationsTest.java
index f86c50b..121f950 100644
--- a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/MultipleAnnotationsTest.java
+++ b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/MultipleAnnotationsTest.java
@@ -19,6 +19,7 @@
 package org.apache.felix.dependencymanager.test2.integration.annotations;
 
 import org.apache.felix.dependencymanager.test2.components.Ensure;
+import org.apache.felix.dependencymanager.test2.components.MultipleAnnotations;
 import org.apache.felix.dependencymanager.test2.integration.common.TestBase;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -33,7 +34,7 @@
     @Test
     public void testMultipleAnnotations() {
         Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, "test.MultipleAnnotationsTest");
+        ServiceRegistration sr = register(e, MultipleAnnotations.ENSURE);
         e.waitForStep(7, 10000);
         stopTestComponentsBundle();
         // And check if the test.annotation bundle has been deactivated orderly
diff --git a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/PropagateAnnotationTest.java b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/PropagateAnnotationTest.java
index caea4db..e54e5c0 100644
--- a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/PropagateAnnotationTest.java
+++ b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/PropagateAnnotationTest.java
@@ -19,6 +19,7 @@
 package org.apache.felix.dependencymanager.test2.integration.annotations;
 
 import org.apache.felix.dependencymanager.test2.components.Ensure;
+import org.apache.felix.dependencymanager.test2.components.PropagateAnnotation;
 import org.apache.felix.dependencymanager.test2.integration.common.TestBase;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -33,7 +34,7 @@
     @Test
     public void testServiceDependencyPropagate() {
         Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, "test.PropagateAnnotationTest");
+        ServiceRegistration sr = register(e, PropagateAnnotation.ENSURE);
         e.waitForStep(3, 10000);
         sr.unregister();
     }
diff --git a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/SimpleAnnotationsTest.java b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/SimpleAnnotationsTest.java
index 2e37f5a..4b5fd83 100644
--- a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/SimpleAnnotationsTest.java
+++ b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/SimpleAnnotationsTest.java
@@ -20,6 +20,8 @@
 
 import org.apache.felix.dependencymanager.test2.components.Ensure;
 import org.apache.felix.dependencymanager.test2.components.SimpleAnnotations;
+import org.apache.felix.dependencymanager.test2.components.SimpleAnnotations.Consumer;
+import org.apache.felix.dependencymanager.test2.components.SimpleAnnotations.Producer;
 import org.apache.felix.dependencymanager.test2.integration.common.TestBase;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -36,9 +38,9 @@
 	public void testSimpleAnnotations() throws Throwable
     {
 	    Ensure e = new Ensure();
-		ServiceRegistration er = register(e, "simple.annotations.producer");        
+		ServiceRegistration er = register(e, Producer.ENSURE);        
         e.waitForStep(3, 10000); // Producer registered
-        ServiceRegistration er2 = register(e, "simple.annotations.consumer"); 
+        ServiceRegistration er2 = register(e, Consumer.ENSURE); 
 
         er2.unregister(); // stop consumer
         er.unregister(); // stop provider
diff --git a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/TemporalAnnotationsTest.java b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/TemporalAnnotationsTest.java
index 8ff273a..463248e 100644
--- a/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/TemporalAnnotationsTest.java
+++ b/dependencymanager/test2/src/test/java/org/apache/felix/dependencymanager/test2/integration/annotations/TemporalAnnotationsTest.java
@@ -22,6 +22,7 @@
 import java.util.Hashtable;
 
 import org.apache.felix.dependencymanager.test2.components.Ensure;
+import org.apache.felix.dependencymanager.test2.components.TemporalAnnotations;
 import org.apache.felix.dependencymanager.test2.integration.common.TestBase;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -38,7 +39,7 @@
     public void testTemporalServiceDependency()
     {
         Ensure ensure = new Ensure();
-        ServiceRegistration ensureReg = register(ensure, "temporal.annotations");                       
+        ServiceRegistration ensureReg = register(ensure, TemporalAnnotations.ENSURE);                       
         Dictionary props = new Hashtable() {{ put("test", "temporal"); }};
         Runnable r = Ensure.createRunnableStep(ensure, 1);             
         ServiceRegistration sr = context.registerService(Runnable.class.getName(), r, props);
