diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/ScriptField.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/ScriptField.java
index c29cef57de26111f07bd907c7dacfce79b297c07..850d7554ac28591a340aa5cec25f59243a34c0a4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/ScriptField.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/ScriptField.java
@@ -16,60 +16,26 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field;
 
-import com.extjs.gxt.ui.client.widget.form.Field;
-import com.extjs.gxt.ui.client.widget.form.Validator;
-
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IMessageProvider;
 import ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.Dict;
 
 /**
  * A text area to specify a script.
  * <p>
- * If the script is multiline it should contain definition of <code>calculate()</code> function.
+ * It is possible to type tabs in the field area.
  * 
  * @author Piotr Buczek
  */
 public class ScriptField extends MultilineVarcharField
 {
 
-    private final static String CALCULATE_DEFINITION = "def calculate():";
-
-    private final static String CALCULATE_DEFINITION_NOT_FOUND_MSG =
-            "Multiline script should contain definition of 'calculate()' function.";
-
     private final static String BLANK_TEXT_MSG = "Script text required";
 
     public ScriptField(IMessageProvider messageProvider)
     {
         super(messageProvider.getMessage(Dict.SCRIPT), true, 20);
-        setValidator(new ScriptValidator());
         getMessages().setBlankText(BLANK_TEXT_MSG);
         treatTabKeyAsInput();
     }
 
-    /** {@link Validator} for script. */
-    protected class ScriptValidator implements Validator
-    {
-        private static final String NEWLINE = "\n";
-
-        public String validate(Field<?> field, final String fieldValue)
-        {
-            if (fieldValue.contains(NEWLINE))
-            {
-                final String[] lines = fieldValue.split(NEWLINE);
-                for (String line : lines)
-                {
-                    if (line.startsWith(CALCULATE_DEFINITION))
-                    {
-                        // validated value is valid
-                        return null;
-                    }
-                }
-                return CALCULATE_DEFINITION_NOT_FOUND_MSG;
-            }
-            // validated value is valid
-            return null;
-        }
-    }
-
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/AbstractScriptEditRegisterForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/AbstractScriptEditRegisterForm.java
index 82869ff5f9b9467fafa0a46679045e6df5ecb4ed..09591d74c036b4af8cc1b08c86b497776c9ef8b3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/AbstractScriptEditRegisterForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/script/AbstractScriptEditRegisterForm.java
@@ -16,6 +16,9 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.script;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import com.extjs.gxt.ui.client.event.BaseEvent;
 import com.extjs.gxt.ui.client.event.ButtonEvent;
 import com.extjs.gxt.ui.client.event.Events;
@@ -23,9 +26,11 @@ import com.extjs.gxt.ui.client.event.Listener;
 import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
 import com.extjs.gxt.ui.client.event.SelectionChangedListener;
 import com.extjs.gxt.ui.client.event.SelectionListener;
+import com.extjs.gxt.ui.client.widget.form.Field;
 import com.extjs.gxt.ui.client.widget.form.FormPanel;
 import com.extjs.gxt.ui.client.widget.form.SimpleComboValue;
 import com.extjs.gxt.ui.client.widget.form.TextField;
+import com.extjs.gxt.ui.client.widget.form.Validator;
 import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem;
 import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
 import com.google.gwt.user.client.Element;
@@ -152,6 +157,7 @@ abstract public class AbstractScriptEditRegisterForm extends AbstractRegistratio
     protected void onScriptTypeChanged(ScriptType scriptType)
     {
         rightPanel.setVisible(scriptType == ScriptType.DYNAMIC_PROPERTY);
+        scriptField.setValidator(validatorsByScriptType.get(scriptType));
     }
 
     private IValidable asValidable(final FormPanel panel)
@@ -237,4 +243,61 @@ abstract public class AbstractScriptEditRegisterForm extends AbstractRegistratio
         layout();
     }
 
+    //
+    // script validators
+    //
+
+    private static Map<ScriptType, Validator> validatorsByScriptType =
+            new HashMap<ScriptType, Validator>();
+
+    static
+    {
+        validatorsByScriptType.put(ScriptType.DYNAMIC_PROPERTY,
+                new DynamicPropertyScriptValidator());
+        validatorsByScriptType.put(ScriptType.MANAGED_PROPERTY,
+                new ManagedPropertyScriptValidator());
+    }
+
+    private final static String NEWLINE = "\n";
+
+    /** {@link Validator} for script of type {@link ScriptType#DYNAMIC_PROPERTY}. */
+    private static class DynamicPropertyScriptValidator implements Validator
+    {
+
+        private final static String CALCULATE_DEFINITION = "def calculate():";
+
+        private final static String CALCULATE_DEFINITION_NOT_FOUND_MSG =
+                "Multiline script should contain definition of 'calculate()' function.";
+
+        public String validate(Field<?> field, final String fieldValue)
+        {
+            if (fieldValue.contains(NEWLINE))
+            {
+                final String[] lines = fieldValue.split(NEWLINE);
+                for (String line : lines)
+                {
+                    if (line.startsWith(CALCULATE_DEFINITION))
+                    {
+                        // validated value is valid
+                        return null;
+                    }
+                }
+                return CALCULATE_DEFINITION_NOT_FOUND_MSG;
+            }
+            // validated value is valid
+            return null;
+        }
+    }
+
+    /** {@link Validator} for script of type {@link ScriptType#MANAGED_PROPERTY}. */
+    private static class ManagedPropertyScriptValidator implements Validator
+    {
+
+        public String validate(Field<?> field, String value)
+        {
+            // TODO Auto-generated method stub
+            return null;
+        }
+    }
+
 }