diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonTypeAndClassDeserializer.java b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonTypeAndClassDeserializer.java
index feeab4de70d31e9608722de017af27ff59c6a2a0..ec50687085e5a5ae923c457b20de7ac679a870e3 100644
--- a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonTypeAndClassDeserializer.java
+++ b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonTypeAndClassDeserializer.java
@@ -80,6 +80,20 @@ public class JsonTypeAndClassDeserializer extends AsPropertyTypeDeserializer
         return new JsonTypeAndClassDeserializer(this, prop);
     }
 
+    @Override
+    public Object deserializeTypedFromAny(JsonParser jp, DeserializationContext ctxt)
+            throws IOException, JsonProcessingException
+    {
+        return deserializeTypedFromObject(jp, ctxt);
+    }
+
+    @Override
+    public Object deserializeTypedFromArray(JsonParser jp, DeserializationContext ctxt)
+            throws IOException, JsonProcessingException
+    {
+        return deserializeTypedFromObject(jp, ctxt);
+    }
+
     @Override
     public Object deserializeTypedFromObject(JsonParser jp, DeserializationContext ctxt)
             throws IOException, JsonProcessingException
@@ -211,9 +225,20 @@ public class JsonTypeAndClassDeserializer extends AsPropertyTypeDeserializer
     public Object deserializeWithoutType(JsonParser jp, DeserializationContext ctxt, TokenBuffer tb)
             throws IOException, JsonProcessingException
     {
+        JsonToken t = jp.getCurrentToken();
+
         final JsonParser actualJp;
-        final JsonDeserializer<Object> deserializer =
-                ctxt.findContextualValueDeserializer(_baseType, _property);
+        final JsonDeserializer<Object> deserializer;
+
+        if (t == JsonToken.START_ARRAY && _baseType.getRawClass().equals(Object.class))
+        {
+            JavaType collectionType =
+                    ctxt.getConfig().getTypeFactory().constructRawCollectionType(Collection.class);
+            deserializer = ctxt.findContextualValueDeserializer(collectionType, _property);
+        } else
+        {
+            deserializer = ctxt.findContextualValueDeserializer(_baseType, _property);
+        }
 
         if (tb != null)
         {