diff --git a/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/handlers/configuration/ConfigurationHandler.java b/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/handlers/configuration/ConfigurationHandler.java
index b5659f2..37e1b83 100644
--- a/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/handlers/configuration/ConfigurationHandler.java
+++ b/ipojo/runtime/core/src/main/java/org/apache/felix/ipojo/handlers/configuration/ConfigurationHandler.java
@@ -18,11 +18,7 @@
  */
 package org.apache.felix.ipojo.handlers.configuration;
 
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Properties;
+import java.util.*;
 
 import org.apache.felix.ipojo.ConfigurationException;
 import org.apache.felix.ipojo.HandlerFactory;
@@ -223,7 +219,16 @@
         // Check if the component is dynamically configurable
         // Propagation enabled by default.
         m_mustPropagate = true;
-        m_toPropagate = configuration; // Instance configuration to propagate.
+        // We must create a copy as the Config Admin dictionary has some limitation
+        m_toPropagate = new Properties();
+        if (configuration != null) {
+            Enumeration keys = configuration.keys();
+            while (keys.hasMoreElements()) {
+                String key = (String) keys.nextElement();
+                m_toPropagate.put(key, configuration.get(key));
+            }
+        }
+
         String propa = confs[0].getAttribute("propagation");
         if (propa != null && propa.equalsIgnoreCase("false")) {
             m_mustPropagate = false;
diff --git a/ipojo/tests/integration-tests/pom.xml b/ipojo/tests/integration-tests/pom.xml
index e954520..603df79 100644
--- a/ipojo/tests/integration-tests/pom.xml
+++ b/ipojo/tests/integration-tests/pom.xml
@@ -272,22 +272,14 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.configadmin</artifactId>
-            <version>1.2.4</version>
+            <version>1.2.8</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+             <groupId>ipojo.tests</groupId>
+             <artifactId>tests.core.configadmin</artifactId>
+             <version>${ipojo.core.snapshot}</version>
+             <scope>test</scope>
+         </dependency>
     </dependencies>
-
-    <profiles>
-        <profile>
-            <id>configadmin</id>
-            <dependencies>
-                <dependency>
-                    <groupId>ipojo.tests</groupId>
-                    <artifactId>tests.core.configadmin</artifactId>
-                    <version>${ipojo.core.snapshot}</version>
-                    <scope>test</scope>
-                </dependency>
-            </dependencies>
-        </profile>
-    </profiles>
 </project>
