diff --git a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
index c5dc328..1e42ade 100644
--- a/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
+++ b/src/main/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtil.java
@@ -98,7 +98,7 @@
                 for(final String key : keysA ) {
                     final Object valA = a.get(key);
                     final Object valB = b.get(key);
-                    if ( valA.getClass().isArray() ) {
+                    if ( valA.getClass().isArray() && valB.getClass().isArray()) {
                         final Object[] arrA = convertToObjectArray(valA);
                         final Object[] arrB = convertToObjectArray(valB);
 
@@ -112,12 +112,16 @@
                                 break;
                             }
                         }
-                    } else {
-                        // we always do a string comparison
+                    } else if (!valA.getClass().isArray() && !valB.getClass().isArray()) {
+                        // if no arrays do a string comparison
                         if ( !(String.valueOf(valA).equals(String.valueOf(valB))) ) {
                             result = false;
                             break;
                         }
+                    } else {
+                        // one value is array the other is not!
+                        result = false;
+                        break;
                     }
                 }
             }
diff --git a/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java b/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java
index e63eed8..57e0402 100644
--- a/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java
+++ b/src/test/java/org/apache/sling/installer/factories/configuration/impl/ConfigUtilTest.java
@@ -119,4 +119,16 @@
         Configuration cfg = ConfigUtil.getConfiguration(cm, "a.b.c", "c1");
         assertSame(c1, cfg);
     }
+    
+
+    @Test public void testIsSameDataWithSwitchFromArrayToSingleValue() throws Exception {
+        final Dictionary<String, Object> a = new Hashtable<>();
+        final Dictionary<String, Object> b = new Hashtable<>();
+
+        a.put("b", new int[] {1,2,3});
+        b.put("b", 1);
+
+        assertFalse(ConfigUtil.isSameData(a, b));
+        assertFalse(ConfigUtil.isSameData(b, a));
+    }
 }
