diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverter.java
index e5f8d10003900b656fb3c388f41078828e17d1ba..e5c72fb2fe6e42de3b9b559e250d3bf32b1fa74c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverter.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityPropertiesConverter.java
@@ -286,12 +286,13 @@ public final class EntityPropertiesConverter implements IEntityPropertiesConvert
             final IEntityProperty[] properties, final String entityTypeCode,
             final PersonPE registrator)
     {
-        return convertProperties(properties, entityTypeCode, registrator, true);
+        return convertProperties(properties, entityTypeCode, registrator, true, true);
     }
 
     private final <T extends EntityPropertyPE> List<T> convertProperties(
             final IEntityProperty[] properties, final String entityTypeCode,
-            final PersonPE registrator, final boolean createManagedPropertiesPlaceholders)
+            final PersonPE registrator, final boolean createManagedPropertiesPlaceholders,
+            boolean createDynamicPropertiesPlaceholders)
     {
         assert entityTypeCode != null : "Unspecified entity type code.";
         assert registrator != null : "Unspecified registrator";
@@ -304,7 +305,11 @@ public final class EntityPropertiesConverter implements IEntityPropertiesConvert
         Set<String> propertiesToUpdate = extractPropertiesToUpdate(properties);
         dynamicPropertiesUpdateChecker.checkDynamicPropertiesNotManuallyUpdated(propertiesToUpdate,
                 dynamicProperties);
-        placeholderCreator.addDynamicPropertiesPlaceholders(definedProperties, dynamicProperties);
+        if (createDynamicPropertiesPlaceholders)
+        {
+            placeholderCreator.addDynamicPropertiesPlaceholders(definedProperties,
+                    dynamicProperties);
+        }
         if (createManagedPropertiesPlaceholders)
         {
             placeholderCreator.addManagedPropertiesPlaceholders(definedProperties,
@@ -486,7 +491,7 @@ public final class EntityPropertiesConverter implements IEntityPropertiesConvert
             final PersonPE registrator)
     {
         IEntityProperty[] propsArray = properties.toArray(new IEntityProperty[0]);
-        return convertProperties(propsArray, entityTypeCode, registrator, false);
+        return convertProperties(propsArray, entityTypeCode, registrator, false, false);
     }
 
     public <T extends EntityPropertyPE> Set<T> updateProperties(Collection<T> oldProperties,
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/PlaceholderPropertyCreator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/PlaceholderPropertyCreator.java
index b905307cb073e572841cee89440d473db34fe982..f5d56d2fb0eb928dc9de123ef1e88a52880a399d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/PlaceholderPropertyCreator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/PlaceholderPropertyCreator.java
@@ -32,8 +32,8 @@ class PlaceholderPropertyCreator implements IPropertyPlaceholderCreator
     public void addDynamicPropertiesPlaceholders(Set<IEntityProperty> definedProperties,
             Set<String> dynamicProperties)
     {
-        // Note: if you want to set the dynamicProperties to 'invalid', this is the right place
-        // to do it.
+        addPlaceholders(definedProperties, dynamicProperties,
+                BasicConstant.DYNAMIC_PROPERTY_PLACEHOLDER_VALUE);
     }
 
     /**
diff --git a/openbis/source/sql/postgresql/091/function-091.sql b/openbis/source/sql/postgresql/091/function-091.sql
index cf5a9e79a370007e782fd442cadbb73403d89e08..27de2c674457c3de06e31356c6996e178b17b636 100644
--- a/openbis/source/sql/postgresql/091/function-091.sql
+++ b/openbis/source/sql/postgresql/091/function-091.sql
@@ -659,18 +659,11 @@ CREATE OR REPLACE RULE data_deleted_delete AS
        DELETE FROM data_all
               WHERE id = OLD.id;               
               
-----------------------------------------------------------------------------------------------------
--- Rules for properties history
-----------------------------------------------------------------------------------------------------
-
--- Material Properties --
-
 CREATE OR REPLACE RULE material_properties_update AS
     ON UPDATE TO material_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' AND OLD.VALUE != NEW.VALUE) 
         OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
+        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)
     DO ALSO 
        INSERT INTO material_properties_history (
          ID, 
@@ -696,10 +689,9 @@ CREATE OR REPLACE RULE material_properties_update AS
        
 CREATE OR REPLACE RULE material_properties_delete AS
     ON DELETE TO material_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
         OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
+        OR OLD.MATE_PROP_ID IS NOT NULL
     DO ALSO 
        INSERT INTO material_properties_history (
          ID, 
@@ -722,186 +714,6 @@ CREATE OR REPLACE RULE material_properties_delete AS
          OLD.MODIFICATION_TIMESTAMP,
          current_timestamp
        );
-       
--- Experiment Properties --
-
-CREATE OR REPLACE RULE experiment_properties_update AS
-    ON UPDATE TO experiment_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
-        OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
-    DO ALSO 
-       INSERT INTO experiment_properties_history (
-         ID, 
-         EXPE_ID,
-         ETPT_ID, 
-         VALUE, 
-         CVTE_ID, 
-         MATE_PROP_ID, 
-         PERS_ID_AUTHOR,
-         VALID_FROM_TIMESTAMP,
-         VALID_UNTIL_TIMESTAMP 
-       ) VALUES (
-         nextval('EXPERIMENT_PROPERTY_ID_SEQ'), 
-         OLD.EXPE_ID, 
-         OLD.ETPT_ID, 
-         OLD.VALUE, 
-         OLD.CVTE_ID, 
-         OLD.MATE_PROP_ID, 
-         OLD.PERS_ID_AUTHOR,
-         OLD.MODIFICATION_TIMESTAMP,
-         current_timestamp
-       );
-       
-CREATE OR REPLACE RULE experiment_properties_delete AS
-    ON DELETE TO experiment_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
-        OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
-    DO ALSO 
-       INSERT INTO experiment_properties_history (
-         ID, 
-         EXPE_ID,
-         ETPT_ID, 
-         VALUE, 
-         CVTE_ID, 
-         MATE_PROP_ID, 
-         PERS_ID_AUTHOR,
-         VALID_FROM_TIMESTAMP,
-         VALID_UNTIL_TIMESTAMP 
-       ) VALUES (
-         nextval('EXPERIMENT_PROPERTY_ID_SEQ'), 
-         OLD.EXPE_ID, 
-         OLD.ETPT_ID, 
-         OLD.VALUE, 
-         OLD.CVTE_ID, 
-         OLD.MATE_PROP_ID, 
-         OLD.PERS_ID_AUTHOR,
-         OLD.MODIFICATION_TIMESTAMP,
-         current_timestamp
-       );
-       
--- Sample Properties --
-
-CREATE OR REPLACE RULE sample_properties_update AS
-    ON UPDATE TO sample_properties
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
-        OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
-    DO ALSO
-       INSERT INTO sample_properties_history (
-         ID, 
-         SAMP_ID,
-         STPT_ID, 
-         VALUE, 
-         CVTE_ID, 
-         MATE_PROP_ID, 
-         PERS_ID_AUTHOR,
-         VALID_FROM_TIMESTAMP,
-         VALID_UNTIL_TIMESTAMP 
-       ) VALUES (
-         nextval('SAMPLE_PROPERTY_ID_SEQ'), 
-         OLD.SAMP_ID, 
-         OLD.STPT_ID, 
-         OLD.VALUE, 
-         OLD.CVTE_ID, 
-         OLD.MATE_PROP_ID, 
-         OLD.PERS_ID_AUTHOR,
-         OLD.MODIFICATION_TIMESTAMP,
-         current_timestamp
-       );
-       
-CREATE OR REPLACE RULE sample_properties_delete AS
-    ON DELETE TO sample_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
-        OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
-    DO ALSO
-       INSERT INTO sample_properties_history (
-         ID, 
-         SAMP_ID,
-         STPT_ID, 
-         VALUE, 
-         CVTE_ID, 
-         MATE_PROP_ID, 
-         PERS_ID_AUTHOR,
-         VALID_FROM_TIMESTAMP,
-         VALID_UNTIL_TIMESTAMP 
-       ) VALUES (
-         nextval('SAMPLE_PROPERTY_ID_SEQ'), 
-         OLD.SAMP_ID, 
-         OLD.STPT_ID, 
-         OLD.VALUE, 
-         OLD.CVTE_ID, 
-         OLD.MATE_PROP_ID, 
-         OLD.PERS_ID_AUTHOR,
-         OLD.MODIFICATION_TIMESTAMP,
-         current_timestamp
-       );
-       
--- Data Set Properties --
-
-CREATE OR REPLACE RULE data_set_properties_update AS
-    ON UPDATE TO data_set_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
-        OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
-    DO ALSO
-       INSERT INTO data_set_properties_history (
-         ID, 
-         DS_ID,
-         DSTPT_ID, 
-         VALUE, 
-         CVTE_ID, 
-         MATE_PROP_ID, 
-         PERS_ID_AUTHOR,
-         VALID_FROM_TIMESTAMP,
-         VALID_UNTIL_TIMESTAMP 
-       ) VALUES (
-         nextval('DATA_SET_PROPERTY_ID_SEQ'), 
-         OLD.DS_ID, 
-         OLD.DSTPT_ID, 
-         OLD.VALUE, 
-         OLD.CVTE_ID, 
-         OLD.MATE_PROP_ID, 
-         OLD.PERS_ID_AUTHOR,
-         OLD.MODIFICATION_TIMESTAMP,
-         current_timestamp
-       );
-
-CREATE OR REPLACE RULE data_set_properties_delete AS
-    ON DELETE TO data_set_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
-        OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
-    DO ALSO
-       INSERT INTO data_set_properties_history (
-         ID, 
-         DS_ID,
-         DSTPT_ID, 
-         VALUE, 
-         CVTE_ID, 
-         MATE_PROP_ID, 
-         PERS_ID_AUTHOR,
-         VALID_FROM_TIMESTAMP,
-         VALID_UNTIL_TIMESTAMP 
-       ) VALUES (
-         nextval('DATA_SET_PROPERTY_ID_SEQ'), 
-         OLD.DS_ID, 
-         OLD.DSTPT_ID, 
-         OLD.VALUE, 
-         OLD.CVTE_ID, 
-         OLD.MATE_PROP_ID, 
-         OLD.PERS_ID_AUTHOR,
-         OLD.MODIFICATION_TIMESTAMP,
-         current_timestamp
-       );
 
 
 CREATE OR REPLACE RULE data_set_relationships_insert AS
diff --git a/openbis/source/sql/postgresql/migration/migration-090-091.sql b/openbis/source/sql/postgresql/migration/migration-090-091.sql
index f635c26ec70ea7a7fb1ae23cb840afd5be630d01..4a5b66bf0546f5535d0fe01f82441aa89ac1e19c 100644
--- a/openbis/source/sql/postgresql/migration/migration-090-091.sql
+++ b/openbis/source/sql/postgresql/migration/migration-090-091.sql
@@ -74,10 +74,9 @@ ALTER TABLE material_properties_history ALTER COLUMN valid_from_timestamp SET NO
 
 CREATE OR REPLACE RULE material_properties_update AS
     ON UPDATE TO material_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' AND OLD.VALUE != NEW.VALUE) 
         OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
+        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)
     DO ALSO 
        INSERT INTO material_properties_history (
          ID, 
@@ -103,10 +102,9 @@ CREATE OR REPLACE RULE material_properties_update AS
        
 CREATE OR REPLACE RULE material_properties_delete AS
     ON DELETE TO material_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
         OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
+        OR OLD.MATE_PROP_ID IS NOT NULL
     DO ALSO 
        INSERT INTO material_properties_history (
          ID, 
@@ -134,10 +132,9 @@ CREATE OR REPLACE RULE material_properties_delete AS
 
 CREATE OR REPLACE RULE experiment_properties_update AS
     ON UPDATE TO experiment_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' AND OLD.VALUE != NEW.VALUE) 
         OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
+        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)
     DO ALSO 
        INSERT INTO experiment_properties_history (
          ID, 
@@ -163,10 +160,9 @@ CREATE OR REPLACE RULE experiment_properties_update AS
        
 CREATE OR REPLACE RULE experiment_properties_delete AS
     ON DELETE TO experiment_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
         OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
+        OR OLD.MATE_PROP_ID IS NOT NULL
     DO ALSO 
        INSERT INTO experiment_properties_history (
          ID, 
@@ -194,10 +190,9 @@ CREATE OR REPLACE RULE experiment_properties_delete AS
 
 CREATE OR REPLACE RULE sample_properties_update AS
     ON UPDATE TO sample_properties
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' AND OLD.VALUE != NEW.VALUE) 
         OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
+        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)
     DO ALSO
        INSERT INTO sample_properties_history (
          ID, 
@@ -223,10 +218,9 @@ CREATE OR REPLACE RULE sample_properties_update AS
        
 CREATE OR REPLACE RULE sample_properties_delete AS
     ON DELETE TO sample_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
         OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
+        OR OLD.MATE_PROP_ID IS NOT NULL
     DO ALSO
        INSERT INTO sample_properties_history (
          ID, 
@@ -254,10 +248,9 @@ CREATE OR REPLACE RULE sample_properties_delete AS
 
 CREATE OR REPLACE RULE data_set_properties_update AS
     ON UPDATE TO data_set_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' AND OLD.VALUE != NEW.VALUE) 
         OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
+        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)
     DO ALSO
        INSERT INTO data_set_properties_history (
          ID, 
@@ -283,10 +276,9 @@ CREATE OR REPLACE RULE data_set_properties_update AS
 
 CREATE OR REPLACE RULE data_set_properties_delete AS
     ON DELETE TO data_set_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
         OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
+        OR OLD.MATE_PROP_ID IS NOT NULL
     DO ALSO
        INSERT INTO data_set_properties_history (
          ID, 
diff --git a/openbis/sourceTest/sql/postgresql/091/finish-091.sql b/openbis/sourceTest/sql/postgresql/091/finish-091.sql
index 59fc8e3589cf2d1eed0e2c8e5060a7969ca6b3bd..29b7a875d6a849182062793410dddbb2a0c05d1e 100644
--- a/openbis/sourceTest/sql/postgresql/091/finish-091.sql
+++ b/openbis/sourceTest/sql/postgresql/091/finish-091.sql
@@ -305,10 +305,9 @@ CREATE RULE data_deleted_update AS ON UPDATE TO data_deleted DO INSTEAD UPDATE d
 CREATE RULE data_insert AS ON INSERT TO data DO INSTEAD INSERT INTO data_all (id, code, ctnr_id, ctnr_order, del_id, expe_id, dast_id, data_producer_code, dsty_id, is_derived, is_placeholder, is_valid, modification_timestamp, pers_id_registerer, production_timestamp, registration_timestamp, samp_id) VALUES (new.id, new.code, new.ctnr_id, new.ctnr_order, new.del_id, new.expe_id, new.dast_id, new.data_producer_code, new.dsty_id, new.is_derived, new.is_placeholder, new.is_valid, new.modification_timestamp, new.pers_id_registerer, new.production_timestamp, new.registration_timestamp, new.samp_id);
 CREATE RULE data_set_properties_update AS
     ON UPDATE TO data_set_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' AND OLD.VALUE != NEW.VALUE) 
         OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
+        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)
     DO ALSO
        INSERT INTO data_set_properties_history (
          ID, 
@@ -333,10 +332,9 @@ CREATE RULE data_set_properties_update AS
        );
 CREATE RULE data_set_properties_delete AS
     ON DELETE TO data_set_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
         OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
+        OR OLD.MATE_PROP_ID IS NOT NULL
     DO ALSO
        INSERT INTO data_set_properties_history (
          ID, 
@@ -366,10 +364,9 @@ CREATE RULE experiment_delete AS ON DELETE TO experiments DO INSTEAD DELETE FROM
 CREATE RULE experiment_insert AS ON INSERT TO experiments DO INSTEAD INSERT INTO experiments_all (id, code, del_id, exty_id, is_public, mate_id_study_object, modification_timestamp, perm_id, pers_id_registerer, proj_id, registration_timestamp) VALUES (new.id, new.code, new.del_id, new.exty_id, new.is_public, new.mate_id_study_object, new.modification_timestamp, new.perm_id, new.pers_id_registerer, new.proj_id, new.registration_timestamp);
 CREATE RULE experiment_properties_update AS
     ON UPDATE TO experiment_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' AND OLD.VALUE != NEW.VALUE) 
         OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
+        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)
     DO ALSO 
        INSERT INTO experiment_properties_history (
          ID, 
@@ -394,10 +391,9 @@ CREATE RULE experiment_properties_update AS
        );
 CREATE RULE experiment_properties_delete AS
     ON DELETE TO experiment_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
         OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
+        OR OLD.MATE_PROP_ID IS NOT NULL
     DO ALSO 
        INSERT INTO experiment_properties_history (
          ID, 
@@ -425,10 +421,9 @@ CREATE RULE experiments_deleted_delete AS ON DELETE TO experiments_deleted DO IN
 CREATE RULE experiments_deleted_update AS ON UPDATE TO experiments_deleted DO INSTEAD UPDATE experiments_all SET del_id = new.del_id, modification_timestamp = new.modification_timestamp WHERE ((experiments_all.id)::bigint = (new.id)::bigint);
 CREATE RULE material_properties_update AS
     ON UPDATE TO material_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' AND OLD.VALUE != NEW.VALUE) 
         OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
+        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)
     DO ALSO 
        INSERT INTO material_properties_history (
          ID, 
@@ -453,10 +448,9 @@ CREATE RULE material_properties_update AS
        );
 CREATE RULE material_properties_delete AS
     ON DELETE TO material_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
         OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
+        OR OLD.MATE_PROP_ID IS NOT NULL
     DO ALSO 
        INSERT INTO material_properties_history (
          ID, 
@@ -485,10 +479,9 @@ CREATE RULE sample_deleted_update AS ON UPDATE TO samples_deleted DO INSTEAD UPD
 CREATE RULE sample_insert AS ON INSERT TO samples DO INSTEAD INSERT INTO samples_all (id, code, dbin_id, del_id, expe_id, modification_timestamp, perm_id, pers_id_registerer, registration_timestamp, samp_id_part_of, saty_id, space_id) VALUES (new.id, new.code, new.dbin_id, new.del_id, new.expe_id, new.modification_timestamp, new.perm_id, new.pers_id_registerer, new.registration_timestamp, new.samp_id_part_of, new.saty_id, new.space_id);
 CREATE RULE sample_properties_update AS
     ON UPDATE TO sample_properties
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND ((OLD.VALUE IS NOT NULL AND OLD.VALUE != NEW.VALUE) 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd' AND OLD.VALUE != NEW.VALUE) 
         OR (OLD.CVTE_ID IS NOT NULL AND OLD.CVTE_ID != NEW.CVTE_ID) 
-        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)) 
+        OR (OLD.MATE_PROP_ID IS NOT NULL AND OLD.MATE_PROP_ID != NEW.MATE_PROP_ID)
     DO ALSO
        INSERT INTO sample_properties_history (
          ID, 
@@ -513,10 +506,9 @@ CREATE RULE sample_properties_update AS
        );
 CREATE RULE sample_properties_delete AS
     ON DELETE TO sample_properties 
-    WHERE decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd'
-      AND (OLD.VALUE IS NOT NULL 
+    WHERE (OLD.VALUE IS NOT NULL AND decode(substring(OLD.value from 1 for 1), 'escape') != E'\\xefbfbd')
         OR OLD.CVTE_ID IS NOT NULL 
-        OR OLD.MATE_PROP_ID IS NOT NULL) 
+        OR OLD.MATE_PROP_ID IS NOT NULL
     DO ALSO
        INSERT INTO sample_properties_history (
          ID,