diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DAOFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DAOFactory.java
index 24680eb5cfe7f11f435c3cab2104f00aa2b483f3..cbac76095484578227787b3c148e471fa0703865 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DAOFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DAOFactory.java
@@ -16,13 +16,11 @@
 
 package ch.systemsx.cisd.openbis.generic.server.dataaccess.db;
 
+import java.math.BigInteger;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
+import java.util.*;
 
 import javax.annotation.Resource;
 
@@ -400,11 +398,34 @@ public final class DAOFactory extends AuthorizationDAOFactory implements IDAOFac
                 if (triggerExists)
                 {
                     operationLog.info("Enable project samples by dropping the trigger 'disable_project_level_samples'.");
-                    statement.executeUpdate("DROP TRIGGER disable_project_level_samples ON samples_all");
 
+                    // CORNER CASE FIX - FROZEN PROJECTS - BEFORE UPDATE
+                    ResultSet frozenProjects = statement.executeQuery("SELECT id FROM projects WHERE frozen_for_samp='t'");
+                    List<Long> frozenProjectsIds = new ArrayList<>();
+                    while (frozenProjects.next()) {
+                        frozenProjectsIds.add(frozenProjects.getLong("id"));
+                    }
+                    statement.executeUpdate("UPDATE projects SET frozen_for_samp='f' WHERE frozen_for_samp='t'");
+                    //
+
+                    statement.executeUpdate("DROP TRIGGER disable_project_level_samples ON samples_all");
                     statement.executeUpdate(projectConstraintFunction);
                     statement.executeUpdate(projectConstraintTrigger);
                     statement.executeUpdate(setProjectsToSamplesWithExperiments);
+
+                    // CORNER CASE FIX - FROZEN PROJECTS - AFTER UPDATE
+                    if(!frozenProjectsIds.isEmpty()) {
+                        StringBuilder frozenProjectsIdsAsString = new StringBuilder();
+                        for (int idx = 0; idx < frozenProjectsIds.size(); idx++) {
+                            if( idx > 0) {
+                                frozenProjectsIdsAsString.append(",");
+                            }
+                            frozenProjectsIdsAsString.append(frozenProjectsIds.get(idx));
+                        }
+
+                        statement.executeUpdate("UPDATE projects SET frozen_for_samp='t' WHERE id in (" + frozenProjectsIdsAsString + ")");
+                    }
+                    //
                 } else
                 {
                     operationLog.info("Project samples already enabled.");