diff --git a/integration-tests/readme.txt b/integration-tests/readme.txt
index 60ff3d3fd9f2f36a5ad383aaa663e4e68d3e8c57..19008119f2502e2d9ad083f5f860ddc66a5192c7 100644
--- a/integration-tests/readme.txt
+++ b/integration-tests/readme.txt
@@ -21,7 +21,8 @@ Directories
 
 Launching
 -----------------
-Simply run ant with default target in build directory to start tests. Target 'clean' cleans everything afterwards.  
+Tests are run automatically in Continuous Integration process. 
+You can also run them manually. To do that, simply run ant with default target in build directory (integration-tests/build). 
 Testing is fully automatic. Script returns non-zero value if error occurs. 
 When testing is launched, following things happen:
 - source code is fetched from the repository and is built
@@ -29,5 +30,7 @@ When testing is launched, following things happen:
 - all pieces of software are launched
 - Approriate assertions are made to ensure the result is ok. 
 Exact reason of an error can be checked by reading standard output or playground/all_err_log.txt.
-If you want to restart tests without building from source, delete playground directory and leave install directory untouched.
+Launching run.sh again will redo the tests without rebuilding or reinstaling anything. 
+To reinstall everything without rebuilding binaries, delete playground directory.
+If you want to starting tests from the scratch, run ant with 'clean' target before.
  
diff --git a/integration-tests/run.sh b/integration-tests/run.sh
index 62e49052a4e9cbacbff45067b943be6f8fd818bd..f1fbb9e5aa0d22e5025112f157ef0a7dccaf6e70 100755
--- a/integration-tests/run.sh
+++ b/integration-tests/run.sh
@@ -3,7 +3,8 @@
 # Implementation assumptions:
 # - the current directory after calling a function does not change
 
-TEST_FAILED=false # if true then some tests failed
+# ----------------------------- configuration
+TIME_TO_COMPLETE=40 # time (in seconds) needed by the whole pipline to process everything
 SVN_PATHS="/opt/local/bin /usr/bin"
 LSOF_PATHS="/usr/sbin"
 
@@ -20,6 +21,9 @@ LIMS_CLIENT=$WORK/$LIMS_CLIENT_NAME
 DATA=$WORK/data
 ERR_LOG=$WORK/all_err_log.txt
 
+# ---- global state
+TEST_FAILED=false # working variable, if true then some tests failed
+
 # -------------------------- instalation
 
 function get_env_path {
@@ -49,7 +53,7 @@ function build_zips {
     rm -fr $RSC
     run_svn checkout svn+ssh://source.systemsx.ch/repos/cisd/build_resources/trunk $RSC
     cd $RSC
-    ./build.sh lims 
+    ./build.sh lims_webclient
     ./build.sh datamover
     ./build.sh etlserver
     cd ..
@@ -337,7 +341,7 @@ function launch_tests {
     sleep 4
 
     generate_test_data
-    sleep 30
+    sleep $TIME_TO_COMPLETE
 
     switch_processing_pipeline "off"
 }
diff --git a/integration-tests/templates/lims-client/commands.txt b/integration-tests/templates/lims-client/commands.txt
index b17ff863049ab4c33d7852e9d2699a4b243a5d1b..7a43e4f8051ae621803ca70204eb49e283ce6d29 100644
--- a/integration-tests/templates/lims-client/commands.txt
+++ b/integration-tests/templates/lims-client/commands.txt
@@ -1,5 +1,6 @@
 login -o 3V -u test -p <password>
 register-project NEMO
+register-controls testdata/controlMaterials.txt
 register-master-plate testdata/MP001-1.txt code1
 register-master-plate testdata/MP002-1.txt code2
 register-dilution-plates testdata/exampleDilutionPlates.txt
diff --git a/integration-tests/templates/lims-client/testdata/controlMaterials.txt b/integration-tests/templates/lims-client/testdata/controlMaterials.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0f479386bfe9231dfdac1e7345bebb2d8e5fe55c
--- /dev/null
+++ b/integration-tests/templates/lims-client/testdata/controlMaterials.txt
@@ -0,0 +1,3 @@
+code	description
+SCRAM	scrambled materials
+GFP	Green fluorescent protein
\ No newline at end of file