diff --git a/configadmin/changelog.txt b/configadmin/changelog.txt
index e10f332..622da53 100644
--- a/configadmin/changelog.txt
+++ b/configadmin/changelog.txt
@@ -1,5 +1,12 @@
+Changes from 1.8.4 to 1.8.6
+---------------------------
+
+** Bug
+    * [FELIX-4884] - listConfigurations should return null if no configuration is found
+
+
 Changes from 1.8.2 to 1.8.4
-----------------------------
+---------------------------
 
 ** Bug
     * [FELIX-4846] - Wrong exception type in list operation
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 21bfb38..e9e4620 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
@@ -702,6 +702,10 @@
             }
         }
 
+        if ( configList.size() == 0 )
+        {
+            return null;
+        }
         return ( ConfigurationImpl[] ) configList.toArray( new ConfigurationImpl[configList
             .size()] );
     }
@@ -1440,6 +1444,7 @@
             managedServiceTracker.provideConfiguration( sr, configPid, null, properties, revision, this.configs );
         }
 
+        @Override
         public String toString()
         {
             return "ManagedService Update: pid=" + Arrays.asList( pids );
@@ -1600,6 +1605,7 @@
         }
 
 
+        @Override
         public String toString()
         {
             return "ManagedServiceFactory Update: factoryPid=" + Arrays.asList( this.factoryPids );
@@ -1767,6 +1773,7 @@
         }
 
 
+        @Override
         public String toString()
         {
             return "Update: pid=" + config.getPid();
@@ -1851,6 +1858,7 @@
             }
         }
 
+        @Override
         public String toString()
         {
             return "Delete: pid=" + config.getPid();
@@ -1926,6 +1934,7 @@
         }
 
 
+        @Override
         public String toString()
         {
             return "Location Changed (pid=" + config.getPid() + "): " + oldLocation + " ==> "
@@ -2007,6 +2016,7 @@
         }
 
 
+        @Override
         public String toString()
         {
             return "Fire ConfigurationEvent: pid=" + pid;
