diff --git a/common/source/java/ch/systemsx/cisd/common/jython/IJythonInterpreter.java b/common/source/java/ch/systemsx/cisd/common/jython/IJythonInterpreter.java
index 627a2a3630e6abfce813ee71c07cf86bff583caf..68ec87109e08fbeb6914a8157d94eb0dcb36699b 100644
--- a/common/source/java/ch/systemsx/cisd/common/jython/IJythonInterpreter.java
+++ b/common/source/java/ch/systemsx/cisd/common/jython/IJythonInterpreter.java
@@ -19,6 +19,10 @@ package ch.systemsx.cisd.common.jython;
 public interface IJythonInterpreter
 {
     void exec(String scriptString, String scriptFile);
+    
+    void exec(String scriptString);
+    
+    void addToPath(String... pythonPaths);
 
     void set(String variableName, Object object);
 
diff --git a/common/source/java/ch/systemsx/cisd/common/jython/evaluator/Evaluator.java b/common/source/java/ch/systemsx/cisd/common/jython/evaluator/Evaluator.java
index 595997174c95e006191724e2ce838f42d6c7b270..08ea16c97a00a0a5b56444bb46367d0d74220c88 100644
--- a/common/source/java/ch/systemsx/cisd/common/jython/evaluator/Evaluator.java
+++ b/common/source/java/ch/systemsx/cisd/common/jython/evaluator/Evaluator.java
@@ -16,6 +16,8 @@
 
 package ch.systemsx.cisd.common.jython.evaluator;
 
+import ch.systemsx.cisd.common.jython.IJythonInterpreterFactory;
+
 /**
  * @author Jakub Straszewski
  */
@@ -30,6 +32,7 @@ public class Evaluator
     }
 
     private static IJythonEvaluatorFactory factory;
+    private static IJythonInterpreterFactory interpreterFactory;
 
     static void setFactory(IJythonEvaluatorFactory factory)
     {
@@ -40,13 +43,34 @@ public class Evaluator
     {
         if (factory == null)
         {
-            // we should make sure that the initialization hapens before first call to this method
-            throw new IllegalStateException(
-                    "Jython evaluator component not initialized. Application context is not initialized properly - JythonEvaluatorSpringComponent must be initialized before jython evaluators are used.");
+            // we should make sure that the initialization happens before first call to this method
+            throw createException("evaluators");
         }
         return factory;
     }
 
+    static void setInterpreterFactory(IJythonInterpreterFactory interpreterFactory)
+    {
+        Evaluator.interpreterFactory = interpreterFactory;
+    }
+
+    public static IJythonInterpreterFactory getInterpreterFactory()
+    {
+        if (interpreterFactory == null)
+        {
+            // we should make sure that the initialization happens before first call to this method
+            throw createException("interpreters");
+        }
+        return interpreterFactory;
+    }
+
+    private static IllegalStateException createException(String type)
+    {
+        return new IllegalStateException(
+                "Jython evaluator component not initialized. Application context is not initialized properly "
+                        + "- JythonEvaluatorSpringComponent must be initialized before jython " + type + " are used.");
+    }
+    
     public static boolean isMultiline(String expression)
     {
         return expression.indexOf('\n') >= 0;
diff --git a/common/source/java/ch/systemsx/cisd/common/jython/evaluator/JythonEvaluatorSpringComponent.java b/common/source/java/ch/systemsx/cisd/common/jython/evaluator/JythonEvaluatorSpringComponent.java
index 85a3dbabfca2d91461f73a11396f530b0c91607f..f698150a9222c78c5c867df6cfd7dfc88e4fbed5 100644
--- a/common/source/java/ch/systemsx/cisd/common/jython/evaluator/JythonEvaluatorSpringComponent.java
+++ b/common/source/java/ch/systemsx/cisd/common/jython/evaluator/JythonEvaluatorSpringComponent.java
@@ -21,7 +21,9 @@ import org.springframework.beans.factory.BeanInitializationException;
 
 import ch.rinn.restrictions.Private;
 import ch.systemsx.cisd.common.jython.v25.Jython25EvaluatorFactory;
+import ch.systemsx.cisd.common.jython.v25.Jython25InterpreterFactory;
 import ch.systemsx.cisd.common.jython.v27.Jython27EvaluatorFactory;
+import ch.systemsx.cisd.common.jython.v27.Jython27InterpreterFactory;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.spring.ExposablePropertyPlaceholderConfigurer;
@@ -42,9 +44,11 @@ public class JythonEvaluatorSpringComponent
         if ("2.7".equals(jythonVersion))
         {
             Evaluator.setFactory(new Jython27EvaluatorFactory());
+            Evaluator.setInterpreterFactory(new Jython27InterpreterFactory());
         } else if ("2.5".equals(jythonVersion))
         {
             Evaluator.setFactory(new Jython25EvaluatorFactory());
+            Evaluator.setInterpreterFactory(new Jython25InterpreterFactory());
         } else
         {
             String msg =
diff --git a/common/source/java/ch/systemsx/cisd/common/jython/v25/Jython25InterpreterFactory.java b/common/source/java/ch/systemsx/cisd/common/jython/v25/Jython25InterpreterFactory.java
index 2d31ee7ed1254834edbcbf4cd74393f74d8e4a58..f5fa157e0b3bc9feb659a8c386aae84f973cc98d 100644
--- a/common/source/java/ch/systemsx/cisd/common/jython/v25/Jython25InterpreterFactory.java
+++ b/common/source/java/ch/systemsx/cisd/common/jython/v25/Jython25InterpreterFactory.java
@@ -115,12 +115,24 @@ public class Jython25InterpreterFactory implements IJythonInterpreterFactory
             interpreter.exec(scriptString, scriptFile);
         }
 
+        @Override
+        public void exec(String scriptString)
+        {
+            interpreter.exec(scriptString);
+        }
+        
         @Override
         public void set(String variableName, Object object)
         {
             interpreter.set(variableName, object);
         }
 
+        @Override
+        public void addToPath(String... pythonPaths)
+        {
+            interpreter.addToPath(pythonPaths);
+        }
+
         @Override
         public void releaseResources()
         {
diff --git a/common/source/java/ch/systemsx/cisd/common/jython/v27/Jython27InterpreterFactory.java b/common/source/java/ch/systemsx/cisd/common/jython/v27/Jython27InterpreterFactory.java
index 2e3581ec6a1d4ac605c1bfdc063f40fe7ceaae1e..b7abfc09c1382bbaf065b9531dd6d9f6e54623ac 100644
--- a/common/source/java/ch/systemsx/cisd/common/jython/v27/Jython27InterpreterFactory.java
+++ b/common/source/java/ch/systemsx/cisd/common/jython/v27/Jython27InterpreterFactory.java
@@ -116,12 +116,24 @@ public class Jython27InterpreterFactory implements IJythonInterpreterFactory
             interpreter.exec(scriptString, scriptFile);
         }
 
+        @Override
+        public void exec(String scriptString)
+        {
+            interpreter.exec(scriptString);
+        }
+        
         @Override
         public void set(String variableName, Object object)
         {
             interpreter.set(variableName, object);
         }
 
+        @Override
+        public void addToPath(String... pythonPaths)
+        {
+            interpreter.addToPath(pythonPaths);
+        }
+
         @Override
         public void releaseResources()
         {
diff --git a/openbis/dist/server/register-master-data.sh b/openbis/dist/server/register-master-data.sh
index 2cbcbfb413ce5ebaf92efe369258c6a8d0026bc0..0ed3ec8c9ba872bf074863a0a4c8a60db6f9534b 100755
--- a/openbis/dist/server/register-master-data.sh
+++ b/openbis/dist/server/register-master-data.sh
@@ -18,10 +18,11 @@ if [ ! -x "$JVM" ]; then
   exit 1
 fi
 
+disableJythonByProperty
 
 LIB=$BASE/../webapps/$APPLICATION_NAME/WEB-INF/lib
 
 $JVM \
  -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StrErrLog \
- -cp $LIB/jython-2.5.2.jar:$LIB/\* \
+ -cp $LIB/\* \
  ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl.MasterDataRegistrationScriptRunnerStandalone "$@"
diff --git a/openbis/dist/server/setup-env b/openbis/dist/server/setup-env
index c488c62ea8549bb7d9d0e6319c33f23806e14dd8..449e089e32c21bc531e9af72131f14015d69aecb 100644
--- a/openbis/dist/server/setup-env
+++ b/openbis/dist/server/setup-env
@@ -87,3 +87,27 @@ printStatus()
     return 2
   fi
 }
+
+enableJython()
+{
+  version=$1
+  path=`ls webapps/openbis/WEB-INF/lib/jyth*$version*`
+  mv $path ${path%_*}
+  echo ${path%_*}
+}
+
+disableJythonByProperty()
+{
+  jython25=`enableJython 2.5`
+  jython27=`enableJython 2.7`
+  required_jython_version=`awk -F'=' '/^jython-version/ {gsub(/[ \t]/, "", $2); print $2}' etc/service.properties`
+  echo "required jython version: $required_jython_version"
+  if [ "$required_jython_version" == "2.5"  ]; then
+    mv "$jython27" "${jython27}_disabled"
+    echo jython 2.7 disabled
+  fi
+  if [ "$required_jython_version" == "2.7"  ]; then
+    mv "$jython25" "${jython25}_disabled"
+    echo jython 2.5 disabled
+  fi
+}
\ No newline at end of file
diff --git a/openbis/dist/server/startup.sh b/openbis/dist/server/startup.sh
index 32d681e828a7aad5c0694e870d86ab461e833c5c..9d7ec575016b929241b06f53c618fc5583953ff9 100755
--- a/openbis/dist/server/startup.sh
+++ b/openbis/dist/server/startup.sh
@@ -5,6 +5,8 @@
 
 source `dirname "$0"`/setup-env
 
+
+
 checkNotRoot
 
 bin/status.sh -q
@@ -13,6 +15,8 @@ if [ $? -eq 0 ]; then
   exit 1
 fi
 
+disableJythonByProperty
+
 $JVM -DSTOP.PORT=$JETTY_STOP_PORT \
      -DSTOP.KEY=$JETTY_STOP_KEY \
      $JAVA_OPTS $JAVA_MEM_OPTS \
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationScriptRunner.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationScriptRunner.java
index bb5cd51680f134180432af918cd8cc28b902f98f..922c4a70cfd8157921722e4987013d1a27621261 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationScriptRunner.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationScriptRunner.java
@@ -21,9 +21,10 @@ import java.util.List;
 
 import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
+import ch.systemsx.cisd.common.jython.IJythonInterpreter;
 import ch.systemsx.cisd.common.jython.JythonScriptSplitter;
 import ch.systemsx.cisd.common.jython.JythonUtils;
-import ch.systemsx.cisd.common.jython.PythonInterpreter;
+import ch.systemsx.cisd.common.jython.evaluator.Evaluator;
 
 /**
  * A class for running python scripts that register master data.
@@ -56,7 +57,7 @@ public class MasterDataRegistrationScriptRunner implements IMasterDataScriptRegi
         MasterDataRegistrationService service = new MasterDataRegistrationService(commonServer);
 
         // Configure the evaluator
-        PythonInterpreter interpreter = PythonInterpreter.createIsolatedPythonInterpreter();
+        IJythonInterpreter interpreter = Evaluator.getInterpreterFactory().createInterpreter();
         interpreter.addToPath(jythonPath);
         interpreter.set(SERVICE_VARIABLE_NAME, service);