diff --git a/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java b/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
index 8224290..a2163b6 100644
--- a/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
+++ b/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
@@ -925,7 +925,7 @@
                 ConfigurationImpl cfg;
                 try
                 {
-                    cfg = getConfiguration( pid, bundleLocation );
+                    cfg = getConfiguration( pid, false );
                 }
                 catch ( IOException ioe )
                 {
@@ -945,7 +945,7 @@
                 else if ( !factoryPid.equals( cfg.getFactoryPid() ) )
                 {
                     log( LogService.LOG_ERROR, "Configuration " + pid + " referred to by factory " + factoryPid
-                        + " does not exist seems to belong to factory " + cfg.getFactoryPid(), null );
+                        + " seems to belong to factory " + cfg.getFactoryPid(), null );
                     factory.removePID( pid );
                     factory.storeSilently();
                     continue;
@@ -1040,7 +1040,11 @@
                                 return;
                             }
 
-                            srv.updated( config.getProperties() );
+                            // prepare the configuration for the service (call plugins)
+                            Dictionary dictionary = callPlugins( sr[0], config );
+
+                            // update the ManagedService with the properties
+                            srv.updated( dictionary );
                         }
                         finally
                         {
@@ -1076,7 +1080,12 @@
                                 return;
                             }
 
-                            srv.updated( config.getPid(), config.getProperties() );
+
+                            // prepare the configuration for the service (call plugins)
+                            Dictionary dictionary = callPlugins( sr[0], config );
+
+                            // update the ManagedServiceFactory with the properties
+                            srv.updated( config.getPid(), dictionary );
                         }
                         finally
                         {
