diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
index 8c4abfb3c5606ca7d060f0bb0315e2772684cf42..5471b45a67b88a30ee0354187fa95650df350b3d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/CommonServer.java
@@ -129,6 +129,7 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calcu
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.EntityAdaptorFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.EntityValidationCalculator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.EntityValidationCalculator.IValidationRequestDelegate;
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.INonAbstractEntityAdapter;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IEntityAdaptor;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl.EncapsulatedCommonServer;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl.MasterDataRegistrationScriptRunner;
@@ -2810,14 +2811,18 @@ public final class CommonServer extends AbstractCommonServer<ICommonServerForInt
 
             EntityValidationCalculator calculator =
                     EntityValidationCalculator.create(info.getScript(),
-                            new IValidationRequestDelegate()
+                            new IValidationRequestDelegate<INonAbstractEntityAdapter>()
                                 {
                                     @Override
-                                    public void requestValidation(Object o)
+                                    public void requestValidation(
+                                            INonAbstractEntityAdapter entityAdaptor)
                                     {
-                                        objectsWhichValidationWouldBeForced
-                                                .add(((IEntityInformationWithPropertiesHolder) o)
-                                                        .getIdentifier());
+                                        IEntityInformationWithPropertiesHolder localEntity =
+                                                entityAdaptor.entityPE();
+                                        objectsWhichValidationWouldBeForced.add(localEntity
+                                                .getEntityKind()
+                                                + " "
+                                                + localEntity.getIdentifier());
                                     }
                                 });
             IDynamicPropertyEvaluator evaluator =
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityValidationInterceptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityValidationInterceptor.java
index 570d3627bdd063276ff872826768aedca3bc7afd..21b88564987d7bbdfac9306ea46d7ce62ac46408 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityValidationInterceptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/EntityValidationInterceptor.java
@@ -36,6 +36,7 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.IDyna
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.EntityAdaptorFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.EntityValidationCalculator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.EntityValidationCalculator.IValidationRequestDelegate;
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.INonAbstractEntityAdapter;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IEntityAdaptor;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder;
@@ -56,7 +57,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.ScriptPE;
  * @author Jakub Straszewski
  */
 public class EntityValidationInterceptor extends EmptyInterceptor implements
-        IValidationRequestDelegate
+        IValidationRequestDelegate<INonAbstractEntityAdapter>
 {
     private static final long serialVersionUID = ServiceVersionHolder.VERSION;
 
@@ -293,17 +294,15 @@ public class EntityValidationInterceptor extends EmptyInterceptor implements
     }
 
     @Override
-    public void requestValidation(Object entity)
+    public void requestValidation(INonAbstractEntityAdapter entityAdapter)
     {
+        IEntityInformationWithPropertiesHolder entity = entityAdapter.entityPE();
         if (validatedEntities.contains(entity) || entitiesToValidate.contains(entity))
         {
             // forcing validation of entity already listed for validation
         } else
         {
-            IEntityInformationWithPropertiesHolder typedEntity =
-                    (IEntityInformationWithPropertiesHolder) entity;
-
-            entitiesToValidate.add(typedEntity);
+            entitiesToValidate.add(entity);
             totalEntitiesToValidateCount++;
         }
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/EntityValidationCalculator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/EntityValidationCalculator.java
index 908e39f1ecd6920aa897bdd67435921e8e0a5df3..d5584fa6cf0aea0ed8b104b58d0436f4e5e3c4ae 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/EntityValidationCalculator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/EntityValidationCalculator.java
@@ -19,7 +19,6 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calc
 import ch.systemsx.cisd.common.evaluator.Evaluator;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IEntityAdaptor;
 import ch.systemsx.cisd.openbis.generic.shared.calculator.AbstractCalculator;
-import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationWithPropertiesHolder;
 
 /**
  * @author Jakub Straszewski
@@ -38,9 +37,9 @@ public class EntityValidationCalculator extends AbstractCalculator
     private static final String VALIDATION_REQUEST_FUNCTION = "def requestValidation(entity):\n  "
             + CALCULATOR_VARIABLE + ".requestValidation(entity)\n";
 
-    public interface IValidationRequestDelegate
+    public interface IValidationRequestDelegate<T>
     {
-        public void requestValidation(Object o);
+        public void requestValidation(T o);
     }
 
     /**
@@ -50,7 +49,7 @@ public class EntityValidationCalculator extends AbstractCalculator
      * "isNewEntity"
      */
     public static EntityValidationCalculator create(String expression,
-            final IValidationRequestDelegate validationRequestedDelegate)
+            final IValidationRequestDelegate<INonAbstractEntityAdapter> validationRequestedDelegate)
     {
         String initialScript = getBasicInitialScript();
         initialScript += importFunctions(EntityValidationCalculator.class) + NEWLINE;
@@ -63,14 +62,14 @@ public class EntityValidationCalculator extends AbstractCalculator
     }
 
     public EntityValidationCalculator(Evaluator evaluator,
-            final IValidationRequestDelegate validationRequested)
+            final IValidationRequestDelegate<INonAbstractEntityAdapter> validationRequested)
     {
         super(evaluator);
 
         // wrap the request validation with argument checking, so that the implementators of the
         // interface can focus on logic
-        IValidationRequestDelegate wrappedValidationRequestedDelegate =
-                new IValidationRequestDelegate()
+        IValidationRequestDelegate<Object> wrappedValidationRequestedDelegate =
+                new IValidationRequestDelegate<Object>()
                     {
                         @Override
                         public void requestValidation(Object entity)
@@ -80,13 +79,14 @@ public class EntityValidationCalculator extends AbstractCalculator
                                 return;
                             }
 
-                            if (false == entity instanceof IEntityInformationWithPropertiesHolder)
+                            if (false == entity instanceof INonAbstractEntityAdapter)
                             {
                                 throw new IllegalArgumentException(
                                         "Trying to force the validation of an object of invalid type "
                                                 + entity.getClass());
                             }
-                            validationRequested.requestValidation(entity);
+                            validationRequested
+                                    .requestValidation((INonAbstractEntityAdapter) entity);
                         }
                     };
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExperimentAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExperimentAdaptor.java
index 39ad7d0ee2f256b008614e7167009c3c000e398d..b4c34377140989ba6214c5e03b6d3bb745043ee3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExperimentAdaptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExperimentAdaptor.java
@@ -42,6 +42,7 @@ public class ExperimentAdaptor extends AbstractEntityAdaptor implements IExperim
         return experimentPE;
     }
 
+    @Override
     public ExperimentPE entityPE()
     {
         return experimentPE();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExternalDataAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExternalDataAdaptor.java
index 8aada43b25f8250b0c77c32707083399faf66e3c..4282d37362338edcdd664650672ee3fe152437d8 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExternalDataAdaptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExternalDataAdaptor.java
@@ -48,6 +48,7 @@ public class ExternalDataAdaptor extends AbstractEntityAdaptor implements IDataA
         return externalDataPE;
     }
 
+    @Override
     public DataPE entityPE()
     {
         return externalDataPE();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/INonAbstractEntityAdapter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/INonAbstractEntityAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe073e53b3831a2984e1bf00590a7c4dcf3065ce
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/INonAbstractEntityAdapter.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2012 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.generic.server.dataaccess.dynamic_property.calculator;
+
+import ch.systemsx.cisd.openbis.generic.shared.dto.IEntityInformationWithPropertiesHolder;
+
+/**
+ * @author Jakub Straszewski
+ */
+public interface INonAbstractEntityAdapter
+{
+    public IEntityInformationWithPropertiesHolder entityPE();
+}
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/MaterialAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/MaterialAdaptor.java
index 25c235a2f535dc7bcd383899ec4fd7bab3f5b161..80a0f4461792603b4546cc278052c2574a55f4cd 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/MaterialAdaptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/MaterialAdaptor.java
@@ -42,6 +42,7 @@ public class MaterialAdaptor extends AbstractEntityAdaptor implements IMaterialA
         return MaterialPE;
     }
 
+    @Override
     public MaterialPE entityPE()
     {
         return materialPE();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/SampleAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/SampleAdaptor.java
index c907c9badfd1d4fa9a6a39cc87a216784e0587f2..c49b4ea483e18fe72e3ebc6aac1b457e85a00015 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/SampleAdaptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/SampleAdaptor.java
@@ -47,6 +47,7 @@ public class SampleAdaptor extends AbstractEntityAdaptor implements ISampleAdapt
         return samplePE;
     }
 
+    @Override
     public SamplePE entityPE()
     {
         return samplePE();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IDataAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IDataAdaptor.java
index afa771005deb0894bddb1fb276b2be5c1bb6022a..818905f13defc578ddecaf065679f2a5b17426ef 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IDataAdaptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IDataAdaptor.java
@@ -18,10 +18,12 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calc
 
 import java.util.List;
 
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.INonAbstractEntityAdapter;
+
 /**
  * @author Jakub Straszewski
  */
-public interface IDataAdaptor
+public interface IDataAdaptor extends INonAbstractEntityAdapter
 {
     /**
      * Returns the experiment of this data set, or null if not exists.
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IExperimentAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IExperimentAdaptor.java
index 5e5b26d4c0b019699be1666a97a8715fec85fba5..b6fa496c0a9440ce7bbf396b8041b1c78eb5e114 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IExperimentAdaptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IExperimentAdaptor.java
@@ -16,12 +16,12 @@
 
 package ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api;
 
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.INonAbstractEntityAdapter;
+
 /**
- * 
- *
  * @author Jakub Straszewski
  */
-public interface IExperimentAdaptor
+public interface IExperimentAdaptor extends INonAbstractEntityAdapter
 {
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IMaterialAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IMaterialAdaptor.java
index d2a247f2869518029fc654975035acad2a8f4bed..d065423b6f12ce5d4184cf59c49cb549bb62fb95 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IMaterialAdaptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IMaterialAdaptor.java
@@ -16,12 +16,12 @@
 
 package ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api;
 
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.INonAbstractEntityAdapter;
+
 /**
- * 
- *
  * @author Jakub Straszewski
  */
-public interface IMaterialAdaptor
+public interface IMaterialAdaptor extends INonAbstractEntityAdapter
 {
 
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/ISampleAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/ISampleAdaptor.java
index ed64afe8b136cb572429671fde5d740fa5c2b02f..d5abf3f54e1fc43a9eeb9a6bc2ec55b6b1a25eed 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/ISampleAdaptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/ISampleAdaptor.java
@@ -18,10 +18,12 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calc
 
 import java.util.List;
 
+import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.INonAbstractEntityAdapter;
+
 /**
  * @author Jakub Straszewski
  */
-public interface ISampleAdaptor extends IEntityAdaptor
+public interface ISampleAdaptor extends IEntityAdaptor, INonAbstractEntityAdapter
 {
     /**
      * Returns the experiment of this sample, or null if not exists.
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/identifier/IdentifierHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/identifier/IdentifierHelper.java
index a95d90aa52b2eceb658f741af20407975be35da0..3a99377113f59ac130c229ea16d46cb1548e4997 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/identifier/IdentifierHelper.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/identifier/IdentifierHelper.java
@@ -61,7 +61,7 @@ public final class IdentifierHelper
     }
 
     /**
-     * Creates a {@link GroupIdentifier} from given <var>groupPE</var>.
+     * Creates a {@link DatabaseInstanceIdentifier} from given <var>groupPE</var>.
      */
     public final static DatabaseInstanceIdentifier createDatabaseInstanceIdentifier(
             final DatabaseInstancePE databaseInstancePE)
diff --git a/openbis/sourceTest/sql/postgresql/120/057=scripts.tsv b/openbis/sourceTest/sql/postgresql/120/057=scripts.tsv
index f5337aa5e81fabbab1ae6dea35b88b6c11130637..c50c5101ac626cf10ebe6b22a641b407251619ab 100644
--- a/openbis/sourceTest/sql/postgresql/120/057=scripts.tsv
+++ b/openbis/sourceTest/sql/postgresql/120/057=scripts.tsv
@@ -5,6 +5,6 @@
 5	1	validateOK	\N	def validate(entity, isNew):\n  pass\n 	2010-10-27 15:16:48.994831+02	2	\N	ENTITY_VALIDATION
 6	1	validateFAIL	\N	def validate(entity, isNew):\n  return "This check always fail"\n 	2010-10-27 15:16:48.994831+02	2	\N	ENTITY_VALIDATION
 7	1	validateUpdateFAIL	\N	def validate(entity, isNew):\n  if (not isNew):\n    return "Cannot update this entity"\n 	2010-10-27 15:16:48.994831+02	2	\N	ENTITY_VALIDATION
-8	1	validateChildren	\N	def validate(entity, isNew):\n  for childRelation in entity.entityPE().getChildRelationships():\n    requestValidation(childRelation.getChildSample())	2010-10-27 15:16:48.994831+02	2	\N	ENTITY_VALIDATION
+8	1	validateChildren	\N	def validate(entity, isNew):\n  for child in entity.children():\n    requestValidation(child)	2010-10-27 15:16:48.994831+02	2	\N	ENTITY_VALIDATION
 9	1	code_date	\N	"%s %s" % (entity.code(), str(currentDate().getTime()))	2010-10-27 15:16:48.994831+02	2	\N	DYNAMIC_PROPERTY
 10	1	waitOK	\N	import time;\ndef validate(entity, isNew):\n  time.sleep(1);\n 	2010-10-27 15:16:48.994831+02	2	\N	ENTITY_VALIDATION