diff --git a/js-test/.project b/js-test/.project
index 006fc7dd876ae8580c665debd50114853bf40d1b..ca813d6581489c88c755c8461100c6b01d978c06 100644
--- a/js-test/.project
+++ b/js-test/.project
@@ -22,12 +22,30 @@
 	</natures>
 	<filteredResources>
 		<filter>
-			<id>1367518396890</id>
+			<id>1367570718419</id>
 			<name></name>
 			<type>30</type>
 			<matcher>
 				<id>org.eclipse.ui.ide.multiFilter</id>
-				<arguments>1.0-projectRelativePath-matches-false-false-servers/dsu/core-plugins/*</arguments>
+				<arguments>1.0-projectRelativePath-matches-false-false-servers/dsu/core-plugins/downloader/*</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1367570718425</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-servers/dsu/core-plugins/laneStatistics/*</arguments>
+			</matcher>
+		</filter>
+		<filter>
+			<id>1367570718430</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.ui.ide.multiFilter</id>
+				<arguments>1.0-projectRelativePath-matches-false-false-servers/novartis/core-plugins/ngs-sample-overview-graph/*</arguments>
 			</matcher>
 		</filter>
 	</filteredResources>
diff --git a/js-test/build/build.xml b/js-test/build/build.xml
index 062fd2a0d81ff4ed650b39af94ab0b57d7d3f540..f487651b2133012952f53a64247ff601c457559c 100644
--- a/js-test/build/build.xml
+++ b/js-test/build/build.xml
@@ -91,6 +91,14 @@
 		</antcall>
 	</target>
 	
+	<target name="create-webapp-novartis">
+		<antcall target="create-webapp">
+			<param name="js-test.project.name" value="openbis" />
+			<param name="js-test.webapp.name" value="ch.systemsx.cisd.openbis.OpenBIS" />
+			<param name="js-test.suite.name" value="novartis" />
+		</antcall>
+	</target>
+	
 	<target name="run-webapp-common">
 		<antcall target="run-webapp">
 			<param name="js-test.suite.name" value="common" />
@@ -105,6 +113,13 @@
 		</antcall>
 	</target>
 	
+	<target name="run-webapp-novartis">
+		<antcall target="run-webapp">
+			<param name="js-test.suite.name" value="novartis" />
+			<param name="js-test.suite.class" value="ch.systemsx.cisd.openbis.jstest.suite.novartis.JsTestNovartis" />
+		</antcall>
+	</target>
+	
 	<target name="run-tests-js-on-new-server" depends="compile-tests">
 		<delete dir="${output.test}" />
 		<testng workingDir="servers/common/openBIS-server"
diff --git a/js-test/servers/dsu/core-plugins/core-plugins.properties b/js-test/servers/dsu/core-plugins/core-plugins.properties
index d57d5635dd708d303fa1d4e6749fdd657b6904f8..a3a413a8d1e56146ef9721969cf96fa9779aef0e 100644
--- a/js-test/servers/dsu/core-plugins/core-plugins.properties
+++ b/js-test/servers/dsu/core-plugins/core-plugins.properties
@@ -1,2 +1,2 @@
 
-enabled-modules = downloader, illumina-ngs, laneStatistics, ngs-sample-overview-graph
+enabled-modules = downloader, laneStatistics
diff --git a/js-test/servers/novartis/core-plugins/core-plugins.properties b/js-test/servers/novartis/core-plugins/core-plugins.properties
new file mode 100644
index 0000000000000000000000000000000000000000..705ab4803ed614073be123ece6f420f84fd63de4
--- /dev/null
+++ b/js-test/servers/novartis/core-plugins/core-plugins.properties
@@ -0,0 +1,2 @@
+
+enabled-modules = ngs-sample-overview-graph
diff --git a/js-test/servers/novartis/core-plugins/ngs-sample-overview-graph b/js-test/servers/novartis/core-plugins/ngs-sample-overview-graph
new file mode 120000
index 0000000000000000000000000000000000000000..5b2cf363c6f2d0c924dc6d236d8ac06b72069265
--- /dev/null
+++ b/js-test/servers/novartis/core-plugins/ngs-sample-overview-graph
@@ -0,0 +1 @@
+../../../../deep_sequencing_unit/source/core-plugins/ngs-sample-overview-graph
\ No newline at end of file
diff --git a/js-test/servers/novartis/.gitignore b/js-test/servers/novartis/datastore_server/data/incoming-default/.gitignore
similarity index 100%
rename from js-test/servers/novartis/.gitignore
rename to js-test/servers/novartis/datastore_server/data/incoming-default/.gitignore
diff --git a/js-test/servers/novartis/datastore_server/data/post-registration/cleanup-tasks/.gitignore b/js-test/servers/novartis/datastore_server/data/post-registration/cleanup-tasks/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/js-test/servers/novartis/datastore_server/data/store/.SHREDDER/.gitignore b/js-test/servers/novartis/datastore_server/data/store/.SHREDDER/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/js-test/servers/novartis/datastore_server/data/store/1/pre-commit/.gitignore b/js-test/servers/novartis/datastore_server/data/store/1/pre-commit/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/js-test/servers/novartis/datastore_server/data/store/1/pre-staging/.gitignore b/js-test/servers/novartis/datastore_server/data/store/1/pre-staging/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/js-test/servers/novartis/datastore_server/data/store/1/recovery-marker/default-dropbox/.gitignore b/js-test/servers/novartis/datastore_server/data/store/1/recovery-marker/default-dropbox/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/js-test/servers/novartis/datastore_server/data/store/1/staging/.gitignore b/js-test/servers/novartis/datastore_server/data/store/1/staging/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/js-test/servers/novartis/datastore_server/data/store/commandQueue b/js-test/servers/novartis/datastore_server/data/store/commandQueue
new file mode 100644
index 0000000000000000000000000000000000000000..2e08dce276e43c677d121d627a250d1710fed824
Binary files /dev/null and b/js-test/servers/novartis/datastore_server/data/store/commandQueue differ
diff --git a/js-test/servers/novartis/datastore_server/data/store/deleteDatasetsAlreadyDeletedFromApplicationServerTaskLastSeen b/js-test/servers/novartis/datastore_server/data/store/deleteDatasetsAlreadyDeletedFromApplicationServerTaskLastSeen
new file mode 100644
index 0000000000000000000000000000000000000000..626644fadca1c7471dee803656968e2f72368c58
--- /dev/null
+++ b/js-test/servers/novartis/datastore_server/data/store/deleteDatasetsAlreadyDeletedFromApplicationServerTaskLastSeen
@@ -0,0 +1 @@
+1060
\ No newline at end of file
diff --git a/js-test/servers/novartis/datastore_server/db/.gitignore b/js-test/servers/novartis/datastore_server/db/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/js-test/servers/novartis/datastore_server/etc/log.xml b/js-test/servers/novartis/datastore_server/etc/log.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5cee0a68436a19a6c4ec4b14b580e6d9f75bf84f
--- /dev/null
+++ b/js-test/servers/novartis/datastore_server/etc/log.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
+
+  <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
+     <layout class="org.apache.log4j.PatternLayout">
+       <param name="ConversionPattern" value="%d %-5p [%t] %c - %m%n"/>
+     </layout>
+  </appender>
+
+  <appender name="NULL" class="org.apache.log4j.varia.NullAppender" />
+
+  <root>
+     <priority value ="info" />
+     <appender-ref ref="STDOUT" />
+  </root>
+
+</log4j:configuration>
diff --git a/js-test/servers/novartis/datastore_server/etc/service.properties b/js-test/servers/novartis/datastore_server/etc/service.properties
new file mode 100644
index 0000000000000000000000000000000000000000..82d5ab4c337f4137c10be14890c6a24f281b33bf
--- /dev/null
+++ b/js-test/servers/novartis/datastore_server/etc/service.properties
@@ -0,0 +1,169 @@
+# Unique code of this Data Store Server. Not more than 40 characters.
+data-store-server-code = DSS1
+
+# host name of the machine on which the datastore server is running
+host-address = http://localhost
+
+# parent directory of the store directory and all the dropboxes
+root-dir = data
+
+# The root directory of the data store
+storeroot-dir = ${root-dir}/store
+
+incoming-root-dir = ${root-dir}
+
+# Cache for data set files from other Data Store Servers
+cache-workspace-folder ${root-dir}/dss-cache
+
+# The directory where the command queue file is located; defaults to storeroot-dir 
+commandqueue-dir =
+
+# Port
+port = 20001
+use-ssl = false
+
+# Session timeout in minutes
+session-timeout = 720
+
+# Path to the keystore
+keystore.path = etc/openBIS.keystore
+# Password of the keystore
+keystore.password = changeit
+# Key password of the keystore
+keystore.key-password = changeit
+
+# The check interval (in seconds)
+check-interval = 5
+
+quiet-period = 10
+
+
+# The time-out for clean up work in the shutdown sequence (in seconds).
+# Note that that the maximal time for the shutdown sequence to complete can be as large 
+# as twice this time.
+# Remark: On a network file system, it is not recommended to turn this value to something 
+# lower than 180.
+shutdown-timeout = 180
+
+# The minimum time (in seconds) of availability of the data stream since moment when user requested
+# for the data stream url. If not specified default value (20 seconds) will be used.
+# minimum-time-to-keep-streams-in-sec = 20
+
+#�If free disk space goes below value defined here, a notification email will be sent.
+# Value must be specified in kilobytes (1048576 = 1024 * 1024 = 1GB). If no high water mark is
+# specified or if value is negative, the system will not be watching. There are 2 different kinds
+# of highwater mark supported: the one that is checking the space on the store, and one that is
+# checking the amount of free space for recovery state (on the local filesystem). 
+highwater-mark = -1
+recovery-highwater-mark = -1
+
+# If a data set is successfully registered it sends out an email to the registrator. 
+# If this property is not specified, no email is sent to the registrator. This property
+# does not affect the mails which are sent, when the data set could not be registered.
+notify-successful-registration = false
+
+# The URL of the openBIS server
+server-url = ${host-address}:20000
+
+# The username to use when contacting the openBIS server
+username = etlserver
+
+# The password for the etlserver user who contacts the openBIS server
+password=e1AWO4f0ro
+
+# The base URL for Web client access to the data store server.
+download-url = ${host-address}:${port}
+
+# SMTP properties (must start with 'mail' to be considered).
+# The current configuration saves the emails in the file system in the root directory 
+mail.smtp.host = file://${root-dir}
+# mail.smtp.host = localhost
+# mail.from = openbis-dss@localhost
+# mail.smtp.user = 
+# mail.smtp.password = 
+
+
+# Data sources
+data-sources = path-info-db 
+
+# Data source for pathinfo database
+path-info-db.version-holder-class = ch.systemsx.cisd.openbis.dss.generic.shared.PathInfoDatabaseVersionHolder
+path-info-db.databaseEngineCode = postgresql
+path-info-db.basicDatabaseName = pathinfo
+# The host and optionally port. Default is 'localhost'.
+# path-info-db.urlHostPart =
+path-info-db.databaseKind = test_js_novartis
+path-info-db.scriptFolder = datastore_server/sql
+
+# ---------------------------------------------------------------------------
+# maintenance plugins configuration
+# ---------------------------------------------------------------------------
+
+# Comma separated names of maintenance plugins. Each plugin should have configuration properties prefixed with its name.
+maintenance-plugins = post-registration, path-info-deletion
+
+# Maintenance task for post registration of all paths of a freshly registered data set to be fed into pathinfo database  
+post-registration.class = ch.systemsx.cisd.etlserver.postregistration.PostRegistrationMaintenanceTask
+post-registration.interval = 30
+post-registration.cleanup-tasks-folder = ${root-dir}/post-registration/cleanup-tasks
+post-registration.last-seen-data-set-file = ${root-dir}/post-registration/last-seen-data-set.txt
+post-registration.post-registration-tasks = pathinfo-feeding
+post-registration.pathinfo-feeding.class = ch.systemsx.cisd.etlserver.path.PathInfoDatabaseFeedingTask
+post-registration.pathinfo-feeding.compute-checksum = true
+
+# Maintenance task for deleting entries from pathinfo database after deletion of a data set
+path-info-deletion.class = ch.systemsx.cisd.etlserver.plugins.DeleteFromExternalDBMaintenanceTask
+path-info-deletion.interval = 120
+path-info-deletion.data-source = path-info-db
+path-info-deletion.data-set-table-name = data_sets
+path-info-deletion.data-set-perm-id = CODE
+
+# ---------------------------------------------------------------------------
+# processing plugins configuration
+# ---------------------------------------------------------------------------
+
+# Comma separated names of processing plugins. Each plugin should have configuration properties prefixed with its name.
+processing-plugins = path-info-db-consistency-check
+
+# Processing task that checks the consistency between the data store and the meta information stored in the PathInfoDB.
+# It sends out an email which contains all differences found. 
+path-info-db-consistency-check.label = Path Info DB consistency check
+path-info-db-consistency-check.dataset-types = .*
+path-info-db-consistency-check.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.DataSetAndPathInfoDBConsistencyCheckProcessingPlugin
+
+# ---------------------------------------------------------------------------
+# dropbox configurations
+# ---------------------------------------------------------------------------
+inputs = default-dropbox
+dss-rpc.put-default = default-dropbox
+
+default-dropbox.incoming-dir = ${incoming-root-dir}/incoming-default
+default-dropbox.incoming-data-completeness-condition = auto-detection
+default-dropbox.top-level-data-set-handler = ch.systemsx.cisd.etlserver.registrator.api.v2.JavaTopLevelDataSetHandlerV2
+default-dropbox.program-class = ch.systemsx.cisd.etlserver.registrator.DefaultDropbox
+default-dropbox.storage-processor = ch.systemsx.cisd.etlserver.DefaultStorageProcessor
+default-dropbox.validation-script-path = ../core-plugins/default/default-validation-script.py
+
+# ---------------------------------------------------------------------------
+# Archiver configuration (optional)
+# ---------------------------------------------------------------------------
+
+# Configuration of an archiver task. All properties are prefixed with 'archiver.'.
+
+# Archiver class specification (together with the list of packages this class belongs to).
+#archiver.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.demo.DemoArchiver
+
+# ---------------------------------------------------------------------------
+# Imaging database for screening (optional, only used if screening technology switched on)
+# ---------------------------------------------------------------------------
+# Format: <host>[:<port>]. Default: localhost
+# imaging-database.url-host-part =
+# Default: prod.
+imaging-database.kind = test_js_novartis
+
+
+# ---------------------------------------------------------------------------
+#                      INTERNAL CONFIGURATION, 
+# Do not change this part unless you are developing openBIS extensions.
+# ---------------------------------------------------------------------------
+
diff --git a/js-test/servers/novartis/openBIS-server/db/.gitignore b/js-test/servers/novartis/openBIS-server/db/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/js-test/servers/novartis/openBIS-server/etc/log.xml b/js-test/servers/novartis/openBIS-server/etc/log.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c437339ded6a0516430f8b148c172fccb4ec73f3
--- /dev/null
+++ b/js-test/servers/novartis/openBIS-server/etc/log.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!--
+  // This configuration file is suitable for testing purposes. 
+-->
+<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>
+
+  <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
+    <layout class="org.apache.log4j.PatternLayout">
+      <!--
+        // %d: outputs the date of the logging event.
+        // %-5p: priority (i.e. level) of the logging event should be left justified to
+        //       a width of five characters.
+        // %t: outputs the name of the thread that generated the logging event.
+        // %c: outputs the category of the logging event.
+        // %m: outputs the application supplied message associated with the logging event.
+        // %n: outputs the platform dependent line separator character or characters.
+        // %X: outputs the MDC (mapped diagnostic context) associated with the thread that generated the logging event.
+      -->
+      <param name="ConversionPattern"
+        value="%d %-5p [%t]%X{sessionInfo} %c - %m%n" />
+    </layout>
+  </appender>
+
+  <!--
+    // Defined but not used right now.
+  -->
+  <appender name="NULL" class="org.apache.log4j.varia.NullAppender" />
+
+  <!--
+    // Enable full wire (header and content) + context logging
+    // For more information look at http://jakarta.apache.org/commons/httpclient/logging.html.
+    // We do not need to set a level value here as loggers inherit their level from the root logger.
+  -->
+
+  <!-- 
+    // Do not use log level debug otherwise plain passwords are readable.
+  -->
+  <logger name="httpclient.wire">
+    <level value="ERROR" />
+  </logger>
+
+  <!--  
+    // Uncomment this for debugging value binding in Hibernate
+      <category name="org.hibernate.type">  
+        <priority value="TRACE"/>  
+      </category>
+  -->
+
+  <!--
+    <logger name="org.apache.commons.httpclient">
+    <level value="DEBUG" />
+    </logger>
+  -->
+
+  <root>
+    <priority value="info" />
+    <appender-ref ref="STDOUT" />
+  </root>
+
+</log4j:configuration>
diff --git a/js-test/servers/novartis/openBIS-server/etc/service.properties b/js-test/servers/novartis/openBIS-server/etc/service.properties
new file mode 100644
index 0000000000000000000000000000000000000000..d21f1e9af60f18e4d1861e19be6b146c5800d2a4
--- /dev/null
+++ b/js-test/servers/novartis/openBIS-server/etc/service.properties
@@ -0,0 +1,254 @@
+# ---------------------------------------------------------------------------
+# Core plugins configuration
+# ---------------------------------------------------------------------------
+
+core-plugins-folder=../core-plugins
+
+# ---------------------------------------------------------------------------
+# Database configuration
+# ---------------------------------------------------------------------------
+# The database instance local unique identifier. Used when the new database is created.
+database-instance = DEFAULT
+
+# The host and optionally port. Default is 'localhost'.
+# database.url-host-part =
+database.kind = test_js_novartis
+# User who owns the database. Default: Operating system user running the server.
+database.owner =
+database.owner-password =
+# Superuser of the database. Default: database-dependent.
+database.admin-user = 
+database.admin-password =
+# Max. number of active database connections. Default: 20. 
+database.max-active-connections =
+# Max. number of idle database connections to keep open. Default: 20.  
+database.max-idle-connections = 
+# Log interval (in seconds) between two regular log entries of the number of active database 
+# connections. Default: 3600s.
+database.active-connections-log-interval =
+
+# ---------------------------------------------------------------------------
+# Authentication configuration
+# ---------------------------------------------------------------------------
+# Supported Authentication options are:
+# 'file-authentication-service'
+# 'ldap-authentication-service'
+# 'crowd-authentication-service'
+# 'file-crowd-authentication-service'
+# 'file-ldap-authentication-service'
+# 'stacked-authentication-service' : ldap - crowd
+# For a detailed description please have a look at the Installation and Administrator
+# Guide of the openBIS Server: https://wiki-bsse.ethz.ch/x/oYIUBQ 
+
+authentication-service = dummy-authentication-service
+dss-rpc.put.dss-code = DSS1
+
+# ---------------------------------------------------------------------------
+# Crowd configuration
+# ---------------------------------------------------------------------------
+crowd.service.host = crowd-bsse.ethz.ch
+crowd.service.port = 8443
+crowd.application.name = openbis
+crowd.application.password =
+
+# ---------------------------------------------------------------------------
+# LDAP configuration
+# ---------------------------------------------------------------------------
+# The URL of the LDAP server, e.g. "ldap://d.ethz.ch/DC=d,DC=ethz,DC=ch"
+ldap.server.url = <LDAP URL>
+# The distinguished name of the security principal,
+# e.g. "CN=carl,OU=EthUsers,DC=d,DC=ethz,DC=ch"
+ldap.security.principal.distinguished.name = <distinguished name to login to the LDAP server>
+# Password of the LDAP user account that will be used to login to the LDAP server to perform the queries
+ldap.security.principal.password = <password of the user to connect to the LDAP server>
+# The security protocol to use, use "ssl" or "none", default is "ssl"
+ldap.security.protocol =
+# The authentication method to use: "none" (no authentication), "simple", "strong" (SASL), defaults to "simple"
+ldap.security.authentication-method =
+# The referral mode:
+# "follow" - follow referrals automatically (the default)
+# "ignore" - ignore referrals
+# "throw" - throw ReferralException when a referral is encountered
+ldap.referral =
+# The attribute name for the user id, defaults to "uid"
+ldap.attributenames.user.id =
+# The attribute name for the email, defaults to "mail"
+ldap.attributenames.email =
+# The attribute name for the first name, defaults to "givenName"
+ldap.attributenames.first.name =
+# The attribute name for the last name, defaults to "sn"
+ldap.attributenames.last.name =
+# Set to true to also query for email aliases
+ldap.queryEmailForAliases = true
+# The query template, needs to contain %s which will be filled with the query term, e.g. uid=username
+# The default is:
+# ldap.queryTemplate = (&(objectClass=organizationalPerson)(objectCategory=person)(objectClass=user)(%s))
+# which is known to work for many Active Directory installations.
+# For OpenLDAP, replace by: 
+# ldap.queryTemplate = (&(%s))
+# For restriction to BSSE accounts in OpenLDAP, set to: 
+# ldap.queryTemplate = (&(objectClass=bssePosixAccount)(%s))
+ldap.queryTemplate = 
+# The number of times a failed LDAP query is retried at the max. Default: 1.
+ldap.maxRetries = 
+# The timeout (in ms) to wait for an LDAP query to return, -1 for "wait indefinitely". Default: 10000. 
+ldap.timeout = 
+# Time time (in ms) to wait after a failure before retrying the query. Default: 10000. 
+ldap.timeToWaitAfterFailure=
+
+# ---------------------------------------------------------------------------
+# Anonymous login configuration (optional)
+# ---------------------------------------------------------------------------
+# Login of the existing user whose settings will be used for anonymous login 
+#user-for-anonymous-login = <user-login>
+
+# ---------------------------------------------------------------------------
+# Client configuration
+# ---------------------------------------------------------------------------
+# Name of the file that stores Web Client configuration
+web-client-configuration-file = etc/web-client.properties
+
+# A comma-separated list of trusted cross-origin domains, that are allowed to
+# query openBIS content. Typically these are lightweight webapps that integrate with openBIS 
+# via JSON-RPC services, but are not directly hosted within the openBIS application.
+# 
+# Example 1 (two different domains configured):
+# 
+# trusted-cross-origin-domains=https://myapp.domain.com:8443, http://other.domain.com
+#
+# Example 2 (match every domain):
+#
+# trusted-cross-origin-domains= *
+#
+# The '*' matches any arbitrary domain. It should be used with care as it opens openBIS 
+# for potential cross-site scripting attacks.
+#
+#trusted-cross-origin-domains=
+
+# ---------------------------------------------------------------------------
+# Session configuration
+# ---------------------------------------------------------------------------
+# The time after which an inactive session is expired by the service (in minutes).
+session-timeout = 720
+
+# ---------------------------------------------------------------------------
+# Business rules configuration
+# ---------------------------------------------------------------------------
+# When set to "true" enables the system to store material codes containing non-alphanumeric characters.
+# Regardless of the value of this property no white spaces are allowed in the material codes.
+#material-relax-code-constraints=false
+
+# ---------------------------------------------------------------------------
+# CIFEX connection configuration.
+# ---------------------------------------------------------------------------
+# The URL of the CIFEX server
+cifex-url = https://cifex.ethz.ch:443
+# Cifex users that will receive and automatically manage uploaded data.
+# The user names should be prepended with 'id:' prefix for example. 
+# Example:
+# cifex-recipient = id:dropboxuser, id:backpuser
+cifex-recipient = 
+
+# ---------------------------------------------------------------------------
+# Hibernate Search
+# ---------------------------------------------------------------------------
+# The working directory.
+hibernate.search.index-base = ./indices
+# One of NO_INDEX, SKIP_IF_MARKER_FOUND, INDEX_FROM_SCRATCH.
+# If not specified, default (SKIP_IF_MARKER_FOUND) is taken.
+hibernate.search.index-mode = SKIP_IF_MARKER_FOUND
+# Defines the maximum number of elements indexed before flushing the transaction-bound queue.
+# Default is 1000.
+hibernate.search.batch-size = 1000
+# Maximum number of search results
+hibernate.search.maxResults = 100000
+# If 'async', the update of indices will be done in a separate thread.
+hibernate.search.worker.execution=async
+
+# ---------------------------------------------------------------------------
+# Online Help
+# ---------------------------------------------------------------------------
+# Online help is broken into two sections -- generic and specific. Generic help links back to
+# the CISD. Specific help is provided by the host of the installation
+#
+# OpenBIS needs to know the root URL for the online help and a template for the individual pages.
+# The template should have on parameter, called title, and should be constructed to automatically
+# create the page if it does not already exist.
+# The template can be created by going to the root page, adding a new link to the page, and
+# replacing the title of the new page with the ${title}
+onlinehelp.generic.root-url = https://wiki-bsse.ethz.ch/display/CISDDoc/OnlineHelp
+onlinehelp.generic.page-template = https://wiki-bsse.ethz.ch/pages/createpage.action?spaceKey=CISDDoc&title=${title}&linkCreation=true&fromPageId=40633829
+#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
+
+# ---------------------------------------------------------------------------
+# JMX memory monitor
+# ---------------------------------------------------------------------------
+# Interval between two runs of the memory monitor (in seconds). 
+# Set to -1 to disable the memory monitor.
+memorymonitor-monitoring-interval = 60
+# Interval between two regular log call of the memory monitor (in seconds).
+# Set to -1 to disable regular memory usage logging. 
+memorymonitor-log-interval = 3600
+# The percentage of memory that, if exceeded, triggers a notify log of the memory manager, 
+# Set to 100 to disable.
+memorymonitor-high-watermark-percent = 90
+
+# ---------------------------------------------------------------------------
+# Database Configurations for Query module (optional)
+# ---------------------------------------------------------------------------
+# Comma separated keys of databases configured for Query module.
+# Each database should have configuration properties prefixed with its key.
+# Mandatory properties for each <database> include: 
+#   <database>.label                - name shown to the openBIS user when adding or editing a customized query
+#		<database>.database-driver      - JDBC Driver of the database (e.g. org.postgresql.Driver)
+#   <database>.database-url	        - JDBC URL to the database (e.g. jdbc:postgresql://localhost/openbis)
+# Optional properties for each <database> include:
+#   <database>.database-user        - name of the database user (default: user.name from system properties)
+#   <database>.database-password    - password of the database user
+#   <database>.creator-minimal-role - minimal role required to create/edit queries on this database (default: POWER_USER)
+#   <database>.data-space           - If NOT specified OBSERVER of any space will be allowed to perform 
+#                                     queries and <creator-minimal-role> of any space will allowed 
+#                                     to create/edit queries on this DB.
+#                                   - If specified only OBSERVER of the space will be allowed to perform 
+#                                     queries and <creator-minimal-role> of the space will allowed 
+#                                     to create/edit queries on this DB.
+#query-databases = openbisDB
+#
+#openbisDB.label = openBIS meta data
+#openbisDB.data-space = CISD
+#openbisDB.creator-minimal-role = SPACE_ADMIN
+#openbisDB.database-driver = org.postgresql.Driver
+#openbisDB.database-url = jdbc:postgresql://localhost/openbis_standard-technologies
+#openbisDB.database-username =
+#openbisDB.database-password =
+
+# ---------------------------------------------------------------------------
+# Maintenance plugins configuration (optional)
+# ---------------------------------------------------------------------------
+# Comma separated names of maintenance plugins.  
+# Each plugin should have configuration properties prefixed with its name.
+# Mandatory properties for each <plugin> include: 
+#   <plugin>.class - Fully qualified plugin class name
+#   <plugin>.interval - The time between plugin executions (in seconds)
+# Optional properties for each <plugin> include:
+#   <plugin>.start - Time of the first execution (HH:mm)
+#   <plugin>.execute-only-once - If true the task will be executed exactly once, 
+#                                interval will be ignored. By default set to false.
+#maintenance-plugins = demo
+#
+#demo.class = ch.systemsx.cisd.openbis.generic.server.task.DemoMaintenanceTask
+#demo.interval = 60
+#demo.property_1 = some value
+#demo.property_2 = some value 2
+
+#
+# Internal - do not change
+#
+
+# Authorization
+# Supported: 'no-authorization' and 'active-authorization'
+authorization-component-factory = active-authorization
+
+script-folder = .
+
diff --git a/js-test/servers/novartis/openBIS-server/etc/web-client.properties b/js-test/servers/novartis/openBIS-server/etc/web-client.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f946e8e9637b650d76c5bb464b0dffb5d75843af
--- /dev/null
+++ b/js-test/servers/novartis/openBIS-server/etc/web-client.properties
@@ -0,0 +1,77 @@
+# Experimental: Enable moving entities to trash (non-permanent deletion).
+# Default value: false
+enable-trash = true
+
+# Default view mode that should be used if user doesn't have it specified in URL. 
+# Options: 'NORMAL' (standard mode - default), 'SIMPLE' (readonly mode with simplified GUI). 
+#
+#default-view-mode = SIMPLE
+
+# Flag specifying whether default login mode is anonymous or not. 
+# If true a user-for-anonymous-login has to be defined in service.properties
+# Default value: false
+#default-anonymous-login = true
+
+# Maximal number of visible columns in tables. Default: 50.
+max-visible-columns = 25
+
+# Should the feature of adding unofficial/ad-hoc terms to vocabularies be turned on.
+# Default value: false 
+allow-adding-unofficial-terms = true
+
+# (optional) List of data set types for which there should be an image overview shown in dataset tables.
+# If not specified image overview will not be shown for any datasets. 
+data-set-types-with-image-overview = HCS_IMAGE, UNKNOWN
+
+# (optional) Allows power users adding vocabulary terms when editing the form.
+# If not specified, default is false
+# allow-adding-unofficial-terms = true
+
+# Configuration of entity (experiment, sample, data set, material) detail views.
+#
+# Mandatory properties: 
+#   - view (entity detail view id) 
+#   - types (list of entity type codes)
+# Optional properties: 
+#   - hide-sections (list of section ids)
+#   - hide-smart-view (removes "Smart View" from Data Set Detail View -> Data View) (generic_dataset_viewer)
+#   - hide-file-view (removes "File View" from Data Set Detail View -> Data View) (generic_dataset_viewer)
+# Available sections in entity-detail-views:
+#   generic_dataset_viewer
+#   	data-set-data-section
+#   	data-set-parents-section
+#   	data-set-children-section
+#   	data-set-contained-section
+#   	query-section
+#   generic_experiment_viewer
+#   	data-sets-section
+#   	attachment-section
+#   	query-section
+#   	experiment-sample-section
+#   generic_sample_viewer
+#   	container-sample-section
+#   	derived-samples-section
+#   	parent-samples-section
+#   	data-sets-section
+#   	attachment-section
+#   	query-section
+#   generic_material_viewer
+#   	query-section
+#
+# Example:
+# 
+detail-views = sample-view, experiment-view, data-view  
+
+sample-view.view = generic_sample_viewer
+sample-view.types = CELL_PLATE, CONTROL_LAYOUT
+sample-view.hide-sections = attachment-section, module-section
+
+experiment-view.view = generic_experiment_viewer
+experiment-view.types = COMPOUND_HCS
+experiment-view.hide-sections = attachment-section
+
+data-view.view = generic_dataset_viewer
+data-view.types = HCS_IMAGE
+data-view.hide-smart-view = false
+data-view.hide-file-view = false
+
diff --git a/js-test/source/bash/dump_databases_dsu.sh b/js-test/source/bash/dump_databases_dsu.sh
index c5134b3dff1cfd017a7ccce559d7a521f8d39263..1ed6a1197f73f4077916c1d85294b0764dbaa708 100755
--- a/js-test/source/bash/dump_databases_dsu.sh
+++ b/js-test/source/bash/dump_databases_dsu.sh
@@ -3,5 +3,5 @@
 SCRIPT_PATH="`dirname \"$0\"`"
 SCRIPT_PATH="`( cd \"$SCRIPT_PATH\" && pwd )`"
 
-pg_dump -U postgres -O openbis_dsu > $SCRIPT_PATH/../../servers/dsu/openBIS-server/db/openbis_test_js_dsu.sql
-pg_dump -U postgres -O pathinfo_dsu > $SCRIPT_PATH/../../servers/dsu/datastore_server/db/pathinfo_test_js_dsu.sql
+pg_dump -U postgres -O openbis_test_js_dsu > $SCRIPT_PATH/../../servers/dsu/openBIS-server/db/openbis_test_js_dsu.sql
+pg_dump -U postgres -O pathinfo_test_js_dsu > $SCRIPT_PATH/../../servers/dsu/datastore_server/db/pathinfo_test_js_dsu.sql
diff --git a/js-test/source/bash/dump_databases_novartis.sh b/js-test/source/bash/dump_databases_novartis.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0f2eec5215cfef241b499747113416109995d2e8
--- /dev/null
+++ b/js-test/source/bash/dump_databases_novartis.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+SCRIPT_PATH="`dirname \"$0\"`"
+SCRIPT_PATH="`( cd \"$SCRIPT_PATH\" && pwd )`"
+
+pg_dump -U postgres -O openbis_novartis > $SCRIPT_PATH/../../servers/novartis/openBIS-server/db/openbis_test_js_novartis.sql
+pg_dump -U postgres -O pathinfo_novartis > $SCRIPT_PATH/../../servers/novartis/datastore_server/db/pathinfo_test_js_novartis.sql
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestDataStoreServer.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestDataStoreServer.java
similarity index 99%
rename from js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestDataStoreServer.java
rename to js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestDataStoreServer.java
index 5b32d988b67f4263bd42e6e761bd0b27ad281c2e..25bf1019dd26828f2254ac08b5f5ab1a8fab983f 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestDataStoreServer.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestDataStoreServer.java
@@ -15,9 +15,9 @@
  */
 
 
-package ch.systemsx.cisd.openbis.jstest;
+package ch.systemsx.cisd.openbis.jstest.server;
 
-import ch.systemsx.cisd.openbis.test.TestDataStoreServer;
+import ch.systemsx.cisd.openbis.test.server.TestDataStoreServer;
 
 /**
  * @author pkupczyk
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestDataStoreServer1.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestDataStoreServer1.java
similarity index 95%
rename from js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestDataStoreServer1.java
rename to js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestDataStoreServer1.java
index 20cde94cbc3a57466a7bf5cbeb5dd466b5df9ae4..7fedb01a9c9866229d83b3bafc7619a1b85a162f 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestDataStoreServer1.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestDataStoreServer1.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.jstest;
+package ch.systemsx.cisd.openbis.jstest.server;
 
 /**
  * @author pkupczyk
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestDataStoreServer2.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestDataStoreServer2.java
similarity index 95%
rename from js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestDataStoreServer2.java
rename to js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestDataStoreServer2.java
index ae1d953636a92d9c4995437863acfd5250e770e1..aac9b81ab25d9803467c60652441bdcf982fac4a 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestDataStoreServer2.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestDataStoreServer2.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.jstest;
+package ch.systemsx.cisd.openbis.jstest.server;
 
 /**
  * @author pkupczyk
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestGenericApplicationServer.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestGenericApplicationServer.java
similarity index 89%
rename from js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestGenericApplicationServer.java
rename to js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestGenericApplicationServer.java
index 5bf8a3f18bd7082b7f85f1ebee9a70887eddc495..1bbcd01cc6bc02b912bc1cbb64ab7a5297304073 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestGenericApplicationServer.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestGenericApplicationServer.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.jstest;
+package ch.systemsx.cisd.openbis.jstest.server;
 
-import ch.systemsx.cisd.openbis.test.TestApplicationServer;
+import ch.systemsx.cisd.openbis.test.server.TestApplicationServer;
 
 /**
  * @author pkupczyk
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestScreeningApplicationServer.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestScreeningApplicationServer.java
similarity index 90%
rename from js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestScreeningApplicationServer.java
rename to js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestScreeningApplicationServer.java
index 7d5ffe619c63736d44b22d08bca9b6099037f920..add2530a48f3c83a05eb44acee333b972b21f4be 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/JsTestScreeningApplicationServer.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/server/JsTestScreeningApplicationServer.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.jstest;
+package ch.systemsx.cisd.openbis.jstest.server;
 
-import ch.systemsx.cisd.openbis.test.TestApplicationServer;
+import ch.systemsx.cisd.openbis.test.server.TestApplicationServer;
 
 /**
  * @author pkupczyk
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonApplicationServer.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonApplicationServer.java
index d0a11120891c3f3e71a75799ab894e048ea31c2c..287c4f0ea24e36ce192ce9393066894b0b346560 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonApplicationServer.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonApplicationServer.java
@@ -16,7 +16,7 @@
 
 package ch.systemsx.cisd.openbis.jstest.suite.common;
 
-import ch.systemsx.cisd.openbis.jstest.JsTestScreeningApplicationServer;
+import ch.systemsx.cisd.openbis.jstest.server.JsTestScreeningApplicationServer;
 
 /**
  * @author pkupczyk
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonDataStoreServer1.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonDataStoreServer1.java
index 2ddc5f83dfa79c82e111c22e1d6320b766babd6e..dc2e9f3c936b91fd5a543dd5da515bd5e705a807 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonDataStoreServer1.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonDataStoreServer1.java
@@ -16,7 +16,7 @@
 
 package ch.systemsx.cisd.openbis.jstest.suite.common;
 
-import ch.systemsx.cisd.openbis.jstest.JsTestDataStoreServer1;
+import ch.systemsx.cisd.openbis.jstest.server.JsTestDataStoreServer1;
 
 /**
  * @author pkupczyk
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonDataStoreServer2.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonDataStoreServer2.java
index 41637e006055dea1af607337633e4f4e1f167aa6..0086f54af1eb54e74d14599d6d42ff99ba57cba5 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonDataStoreServer2.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/common/JsTestCommonDataStoreServer2.java
@@ -16,7 +16,7 @@
 
 package ch.systemsx.cisd.openbis.jstest.suite.common;
 
-import ch.systemsx.cisd.openbis.jstest.JsTestDataStoreServer2;
+import ch.systemsx.cisd.openbis.jstest.server.JsTestDataStoreServer2;
 
 /**
  * @author pkupczyk
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/dsu/JsTestDsuApplicationServer.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/dsu/JsTestDsuApplicationServer.java
index 5286c8eea9804d3be020261b5297e73f49183e8e..0f584e39803c747eb329a3613dd22eadc70ff90d 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/dsu/JsTestDsuApplicationServer.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/dsu/JsTestDsuApplicationServer.java
@@ -16,7 +16,7 @@
 
 package ch.systemsx.cisd.openbis.jstest.suite.dsu;
 
-import ch.systemsx.cisd.openbis.jstest.JsTestGenericApplicationServer;
+import ch.systemsx.cisd.openbis.jstest.server.JsTestGenericApplicationServer;
 
 /**
  * @author pkupczyk
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/dsu/JsTestDsuDataStoreServer.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/dsu/JsTestDsuDataStoreServer.java
index 4d66d61495ecf5c3e195070fe38a4804e0922373..05463440498f7b48526ff44252c5304ce7b79742 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/dsu/JsTestDsuDataStoreServer.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/dsu/JsTestDsuDataStoreServer.java
@@ -16,7 +16,7 @@
 
 package ch.systemsx.cisd.openbis.jstest.suite.dsu;
 
-import ch.systemsx.cisd.openbis.jstest.JsTestDataStoreServer1;
+import ch.systemsx.cisd.openbis.jstest.server.JsTestDataStoreServer1;
 
 /**
  * @author pkupczyk
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/novartis/JsTestNovartis.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/novartis/JsTestNovartis.java
new file mode 100644
index 0000000000000000000000000000000000000000..f8cb08c0d88b2003ef37cb27d4c62f4ec2692d47
--- /dev/null
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/novartis/JsTestNovartis.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2013 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.jstest.suite.novartis;
+
+/**
+ * @author pkupczyk
+ */
+public class JsTestNovartis
+{
+
+    public static void main(String[] args) throws Exception
+    {
+        JsTestNovartisApplicationServer as = new JsTestNovartisApplicationServer();
+        JsTestNovartisDataStoreServer dss = new JsTestNovartisDataStoreServer();
+
+        as.start();
+        dss.start();
+    }
+
+}
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/novartis/JsTestNovartisApplicationServer.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/novartis/JsTestNovartisApplicationServer.java
new file mode 100644
index 0000000000000000000000000000000000000000..395312c5e76302337f2b0bbec28a450da97e3541
--- /dev/null
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/novartis/JsTestNovartisApplicationServer.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2013 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.jstest.suite.novartis;
+
+import ch.systemsx.cisd.openbis.jstest.server.JsTestGenericApplicationServer;
+
+/**
+ * @author pkupczyk
+ */
+public class JsTestNovartisApplicationServer extends JsTestGenericApplicationServer
+{
+
+}
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/novartis/JsTestNovartisDataStoreServer.java b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/novartis/JsTestNovartisDataStoreServer.java
new file mode 100644
index 0000000000000000000000000000000000000000..350d1755aaab72c0c5ff01b5e31d5fef589588fa
--- /dev/null
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/jstest/suite/novartis/JsTestNovartisDataStoreServer.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2013 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.jstest.suite.novartis;
+
+import ch.systemsx.cisd.openbis.jstest.server.JsTestDataStoreServer1;
+
+/**
+ * @author pkupczyk
+ */
+public class JsTestNovartisDataStoreServer extends JsTestDataStoreServer1
+{
+
+    public JsTestNovartisDataStoreServer()
+    {
+        setName("standard");
+    }
+
+}
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/test/TestApplicationServer.java b/js-test/source/java/ch/systemsx/cisd/openbis/test/server/TestApplicationServer.java
similarity index 98%
rename from js-test/source/java/ch/systemsx/cisd/openbis/test/TestApplicationServer.java
rename to js-test/source/java/ch/systemsx/cisd/openbis/test/server/TestApplicationServer.java
index 96f3510b3049f2bae8fd055fa3e79096fec8be9a..affa0c3a1b5fa3fe0157e78a923dd6de872657dd 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/test/TestApplicationServer.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/test/server/TestApplicationServer.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.test;
+package ch.systemsx.cisd.openbis.test.server;
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/test/TestDataStoreServer.java b/js-test/source/java/ch/systemsx/cisd/openbis/test/server/TestDataStoreServer.java
similarity index 99%
rename from js-test/source/java/ch/systemsx/cisd/openbis/test/TestDataStoreServer.java
rename to js-test/source/java/ch/systemsx/cisd/openbis/test/server/TestDataStoreServer.java
index cf29fbf9e76180c980919dd9b3ddcf684cd4d80d..706848a3ba11bc4945a47b13574bb6ac0a533a52 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/test/TestDataStoreServer.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/test/server/TestDataStoreServer.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.test;
+package ch.systemsx.cisd.openbis.test.server;
 
 import java.io.BufferedReader;
 import java.io.File;
diff --git a/js-test/source/java/ch/systemsx/cisd/openbis/test/TestDatabase.java b/js-test/source/java/ch/systemsx/cisd/openbis/test/server/TestDatabase.java
similarity index 99%
rename from js-test/source/java/ch/systemsx/cisd/openbis/test/TestDatabase.java
rename to js-test/source/java/ch/systemsx/cisd/openbis/test/server/TestDatabase.java
index be75756d50d2a0f6f96aa2b385fab79dc6cc147e..10e661c666ebc6a41dedff45546f0810eb7868bf 100644
--- a/js-test/source/java/ch/systemsx/cisd/openbis/test/TestDatabase.java
+++ b/js-test/source/java/ch/systemsx/cisd/openbis/test/server/TestDatabase.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package ch.systemsx.cisd.openbis.test;
+package ch.systemsx.cisd.openbis.test.server;
 
 import java.io.File;
 import java.util.Arrays;