diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DatabaseDefinition.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DatabaseDefinition.java
index 7dbdc0eefff14016f3c9491056e6bc15760556a2..09e105efdfa801b2e4f0d2f596496427d6754f59 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DatabaseDefinition.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/DatabaseDefinition.java
@@ -19,28 +19,57 @@ package ch.systemsx.cisd.openbis.plugin.query.server;
 import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
 
 /**
- * 
- *
  * @author Franz-Josef Elmer
  */
 public class DatabaseDefinition
 {
+    private final String key;
+
     private final String label;
+
+    private final String dataSpaceOrNull;
+
+    private final String creatorMinimalRole;
+
     private final DatabaseConfigurationContext configurationContext;
 
-    public DatabaseDefinition(String label, DatabaseConfigurationContext configurationContext)
+    public DatabaseDefinition(DatabaseConfigurationContext configurationContext, String key,
+            String label, String creatorMinimalRole, String dataSpaceOrNull)
     {
+        assert key != null;
+        assert label != null;
+        assert creatorMinimalRole != null;
+        assert configurationContext != null;
+        this.key = key;
         this.label = label;
+        this.dataSpaceOrNull = dataSpaceOrNull;
+        this.creatorMinimalRole = creatorMinimalRole;
         this.configurationContext = configurationContext;
     }
 
+    public String getKey()
+    {
+        return key;
+    }
+
     public String getLabel()
     {
         return label;
     }
 
+    public String getCreatorMinimalRole()
+    {
+        return creatorMinimalRole;
+    }
+
+    public String tryGetDataSpace()
+    {
+        return dataSpaceOrNull;
+    }
+
     public DatabaseConfigurationContext getConfigurationContext()
     {
         return configurationContext;
     }
+
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java
index bf9859ad46077f1bb921f93f6964b58f91966109..bc5e44c4ba1af448a7b11c59f2cd0c0e01b8d2f5 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java
@@ -30,8 +30,9 @@ import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.spring.ExposablePropertyPaceholderConfigurer;
 import ch.systemsx.cisd.common.spring.IInvocationLoggerContext;
 import ch.systemsx.cisd.common.utilities.BeanUtils;
-import ch.systemsx.cisd.common.utilities.ExtendedProperties;
+import ch.systemsx.cisd.common.utilities.PropertyParametersUtil;
 import ch.systemsx.cisd.common.utilities.PropertyUtils;
+import ch.systemsx.cisd.common.utilities.PropertyParametersUtil.SectionProperties;
 import ch.systemsx.cisd.dbmigration.DatabaseConfigurationContext;
 import ch.systemsx.cisd.openbis.generic.server.AbstractServer;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.DataAccessExceptionTranslator;
@@ -57,9 +58,16 @@ import ch.systemsx.cisd.openbis.plugin.query.shared.translator.QueryTranslator;
 @Component(ResourceNames.QUERY_PLUGIN_SERVER)
 public class QueryServer extends AbstractServer<IQueryServer> implements IQueryServer
 {
-    static final String DATABASE_PROPERTIES_PREFIX = "query-database.";
+    /** property with database keys/names separated by delimiter */
+    private static final String DATABASE_KEYS = "query-databases";
 
-    static final String LABEL_PROPERTY_KEY = "label";
+    private static final String LABEL_PROPERTY_KEY = "label";
+
+    private static final String CREATOR_MINIMAL_ROLE_KEY = "creator-minimal-role";
+
+    private static final String DEFAULT_CREATOR_MINIMAL_ROLE = "POWER_USER";
+
+    private static final String DATA_SPACE_KEY = "data-space";
 
     @Resource(name = "propertyConfigurer")
     private ExposablePropertyPaceholderConfigurer configurer;
@@ -221,17 +229,34 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS
         if (databaseDefinition == null)
         {
             Properties resolvedProps = configurer.getResolvedProps();
-            ExtendedProperties databaseProperties =
-                    ExtendedProperties.getSubset(resolvedProps,
-                            DATABASE_PROPERTIES_PREFIX, true);
-            if (databaseProperties.isEmpty() == false)
+            SectionProperties[] sectionsProperties =
+                    PropertyParametersUtil.extractSectionProperties(resolvedProps, DATABASE_KEYS,
+                            true);
+            DatabaseDefinition[] definitions = new DatabaseDefinition[sectionsProperties.length];
+            for (int i = 0; i < definitions.length; i++)
             {
-                DatabaseConfigurationContext configurationContext =
+                final String databaseKey = sectionsProperties[i].getKey();
+                final Properties databaseProperties = sectionsProperties[i].getProperties();
+
+                final DatabaseConfigurationContext configurationContext =
                         BeanUtils
                                 .createBean(DatabaseConfigurationContext.class, databaseProperties);
-                databaseDefinition =
-                        new DatabaseDefinition(PropertyUtils.getMandatoryProperty(
-                                databaseProperties, LABEL_PROPERTY_KEY), configurationContext);
+                final String label =
+                        PropertyUtils.getMandatoryProperty(databaseProperties, LABEL_PROPERTY_KEY);
+                final String creatorMinimalRole =
+                        PropertyUtils.getProperty(databaseProperties, CREATOR_MINIMAL_ROLE_KEY,
+                                DEFAULT_CREATOR_MINIMAL_ROLE);
+                final String dataSpaceOrNull =
+                        PropertyUtils.getProperty(databaseProperties, DATA_SPACE_KEY);
+
+                definitions[i] =
+                        new DatabaseDefinition(configurationContext, databaseKey, label,
+                                creatorMinimalRole, dataSpaceOrNull);
+            }
+            if (definitions.length > 0)
+            {
+                databaseDefinition = definitions[0];
+                // FIXME add support for multiple DBs
             }
         }
         return databaseDefinition;
diff --git a/openbis/source/java/service.properties b/openbis/source/java/service.properties
index 9bde1d43417ca3856f9f247e88cf1f9202898ec0..9ca119fffe4ddfce644c4bd38f01f7d434b32bd4 100644
--- a/openbis/source/java/service.properties
+++ b/openbis/source/java/service.properties
@@ -74,10 +74,13 @@ onlinehelp.generic.page-template = https://wiki-bsse.ethz.ch/pages/createpage.ac
 #onlinehelp.specific.root-url = https://wiki-bsse.ethz.ch/display/CISDDoc/OnlineHelp
 #onlinehelp.specific.page-template = https://wiki-bsse.ethz.ch/pages/createpage.action?spaceKey=CISDDoc&title=${title}&linkCreation=true&fromPageId=40633829
 
-query-database.label = openBIS meta data
-query-database.databaseEngineCode = ${database.engine}
-query-database.basicDatabaseName = openbis
-query-database.databaseKind = ${database.kind}
+# Database Configurations for Query module
+query-databases = 1
+
+1.label = openBIS meta data
+1.databaseEngineCode = ${database.engine}
+1.basicDatabaseName = openbis
+1.databaseKind = ${database.kind}
 
 # Comma-separated list of host names and IP addresses of clients on which an INSTANCE_ADMIN
 # user is allowed to change identity