diff --git a/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationImpl.java b/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationImpl.java
index d7060fb..2ff0b4d 100644
--- a/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationImpl.java
+++ b/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationImpl.java
@@ -257,17 +257,20 @@
         if ( localPersistenceManager != null )
         {
             // read configuration from persistence (again)
-            Dictionary properties = localPersistenceManager.load( getPid() );
-
-            // ensure serviceReference pid
-            String servicePid = ( String ) properties.get( Constants.SERVICE_PID );
-            if ( servicePid != null && !getPid().equals( servicePid ) )
+            if ( localPersistenceManager.exists( getPid() ) )
             {
-                throw new IOException( "PID of configuration file does match requested PID; expected " + getPid() + ", got "
-                    + servicePid );
-            }
+                Dictionary properties = localPersistenceManager.load( getPid() );
 
-            configureFromPersistence( properties );
+                // ensure serviceReference pid
+                String servicePid = ( String ) properties.get( Constants.SERVICE_PID );
+                if ( servicePid != null && !getPid().equals( servicePid ) )
+                {
+                    throw new IOException( "PID of configuration file does match requested PID; expected " + getPid()
+                        + ", got " + servicePid );
+                }
+
+                configureFromPersistence( properties );
+            }
 
             // update the service but do not fire an CM_UPDATED event
             getConfigurationManager().updated( this, false );
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 fa8cb9b..5787eaa 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
@@ -1417,7 +1417,13 @@
             this.config = config;
             synchronized ( config )
             {
-                this.properties = config.getProperties( true );
+                Dictionary props = config.getProperties( true );
+                if ( props == null )
+                {
+                    props = new Hashtable();
+                }
+
+                this.properties = props;
                 this.lastModificationTime = config.getLastModificationTime();
             }
         }
@@ -1575,7 +1581,7 @@
                             {
                                 final ManagedServiceFactory srv = ( ManagedServiceFactory ) bundleContext
                                     .getService( ref );
-                                if ( srv != null && properties != null )
+                                if ( srv != null )
                                 {
                                     Dictionary props = new CaseInsensitiveDictionary( properties );
                                     callPlugins( props, config.getFactoryPid(), ref, config );
