diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java
index 485a930f10745e0e16160b2765cb28f660617c17..7768b2577985c6a2ac82323736b0058cef83be3e 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java
@@ -219,11 +219,13 @@ public class SyncConfig
     private Boolean dryRun = false;
 
     private Boolean verbose = false;
-    
+
     private boolean masterDataUpdate;
-    
+
+    private boolean propertyTypeUpdateAllowed;
+
     private boolean propertyUnassignmentAllowed;
-    
+
     private boolean deletionAllowed;
 
     private boolean keepOriginalTimestampsAndUsers;
@@ -370,6 +372,16 @@ public class SyncConfig
         this.propertyUnassignmentAllowed = propertyUnassignmentAllowed;
     }
 
+    public boolean isPropertyTypeUpdateAllowed()
+    {
+        return propertyTypeUpdateAllowed;
+    }
+
+    public void setPropertyTypeUpdateAllowed(boolean propertyTypeUpdateAllowed)
+    {
+        this.propertyTypeUpdateAllowed = propertyTypeUpdateAllowed;
+    }
+
     public boolean isDeletionAllowed()
     {
         return deletionAllowed;
diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SynchronizationConfigReader.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SynchronizationConfigReader.java
index 8ef5842cb87fc9174bd80f8544cfd0ce660fa6a8..e0827b3d3fc83fe7052c35dc816be976759ec83b 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SynchronizationConfigReader.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SynchronizationConfigReader.java
@@ -87,7 +87,9 @@ public class SynchronizationConfigReader
     private static final String MASTER_DATA_UPDATE_PROPERTY_NAME = "master-data-update";
 
     private static final String PROPERTY_UNASSIGNMENT_ALLOWED_PROPERTY_NAME = "property-unassignment-allowed";
-    
+
+    private static final String PROPERTY_TYPE_UPDATE_ALLOWED_PROPERTY_NAME = "property-type-update-allowed";
+
     private static final String DELETION_ALLOWED_PROPERTY_NAME = "deletion-allowed";
 
     private static final String KEEP_ORIGINAL_TIMESTAMPS_AND_USERS_PROPERTY_NAME = "keep-original-timestamps-and-users";
@@ -132,7 +134,7 @@ public class SynchronizationConfigReader
             config.setEmailAddresses(reader.getString(section, EMAIL_ADDRESSES_PROPERTY_NAME, null, true));
             config.setDataSourceAlias(reader.getString(section, DATA_SOURCE_ALIAS_PROPERTY_NAME, section, false));
             String defaultLogFilePath = DEFAULT_LOG_FILE_PATH.replaceFirst(Pattern.quote("{alias}"), config.getDataSourceAlias());
-            config.setLogFilePath(reader.getString(section, LOG_FILE_PROPERTY_NAME, defaultLogFilePath, false) 
+            config.setLogFilePath(reader.getString(section, LOG_FILE_PROPERTY_NAME, defaultLogFilePath, false)
                     + new SimpleDateFormat(".yyyy-MM-dd_HH-mm-ss", Locale.US).format(new Date()));
             config.setDataSourceURI(reader.getString(section, DATA_SOURCE_URL_PROPERTY_NAME, null, true));
             config.setDataSourceOpenbisURL(reader.getString(section, DATA_SOURCE_OPENBIS_URL_PROPERTY_NAME, null, true));
@@ -195,6 +197,7 @@ public class SynchronizationConfigReader
             config.setMasterDataUpdate(reader.getBoolean(section, MASTER_DATA_UPDATE_PROPERTY_NAME, true));
             config.setDeletionAllowed(reader.getBoolean(section, DELETION_ALLOWED_PROPERTY_NAME, false));
             config.setPropertyUnassignmentAllowed(reader.getBoolean(section, PROPERTY_UNASSIGNMENT_ALLOWED_PROPERTY_NAME, false));
+            config.setPropertyTypeUpdateAllowed(reader.getBoolean(section, PROPERTY_TYPE_UPDATE_ALLOWED_PROPERTY_NAME, false));
             config.setKeepOriginalTimestampsAndUsers(reader.getBoolean(section, KEEP_ORIGINAL_TIMESTAMPS_AND_USERS_PROPERTY_NAME, true));
             config.setKeepOriginalFrozenFlags(reader.getBoolean(section, KEEP_ORIGINAL_FROZEN_FLAGS_PROPERTY_NAME, true));
             config.setWishedNumberOfStreams(reader.getInt(section, WISHED_NUMBER_OF_STREAMS_PROPERTY_NAME, null, false));
diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java
index 316706e20829ca452c8b89b0222dec006a7fa7f6..0d538d039b71da6f93796fc91c809e5d64d8d6b8 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java
@@ -19,7 +19,6 @@ package ch.ethz.sis.openbis.generic.server.dss.plugins.sync.harvester.synchroniz
 import java.io.File;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
-import java.nio.charset.Charset;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataSynchronizer.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataSynchronizer.java
index 07cd741ed43f954747e7853e5026374ae0989a10..ea0c2f4adfd011477019ef9b340a71e2dd8e2b30 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataSynchronizer.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataSynchronizer.java
@@ -353,14 +353,11 @@ public class MasterDataSynchronizer
             if (existingEntityType != null)
             {
                 String diff = calculateDiff(entityKind, existingEntityType, incomingEntityType);
-                if (StringUtils.isNotBlank(diff))
+                if (StringUtils.isNotBlank(diff) && config.isPropertyTypeUpdateAllowed())
                 {
                     incomingEntityType.setModificationDate(existingEntityType.getModificationDate());
                     updateEntityType(entityKind, incomingEntityType, diff);
                 }
-                // existingEntityType.setCode(incomingEntityType.getCode());
-                // existingEntityType.setDescription(incomingEntityType.getDescription());
-                // existingEntityType.setValidationScript(incomingEntityType.getValidationScript());
                 if (list != null && entityKind != EntityKind.MATERIAL) // defer material property assignments until after property types are processed
                 {
                     processPropertyAssignments(existingEntityType, list);
@@ -396,7 +393,7 @@ public class MasterDataSynchronizer
             if (foundType != null)
             {
                 String diff = calculateDiff(foundType, newETPTAssignment);
-                if (StringUtils.isNotBlank(diff))
+                if (StringUtils.isNotBlank(diff) && config.isPropertyTypeUpdateAllowed())
                 {
                     newETPTAssignment.setModificationDate(foundType.getModificationDate());
                     synchronizerFacade.updatePropertyTypeAssignment(newETPTAssignment, diff);