diff --git a/src/org/openbravo/dal/core/TriggerHandler.java b/src/org/openbravo/dal/core/TriggerHandler.java
--- a/src/org/openbravo/dal/core/TriggerHandler.java
+++ b/src/org/openbravo/dal/core/TriggerHandler.java
@@ -24,6 +24,7 @@
 import java.sql.SQLException;
 
 import org.apache.log4j.Logger;
+import org.openbravo.base.exception.OBException;
 import org.openbravo.base.provider.OBProvider;
 import org.openbravo.base.util.Check;
 import org.openbravo.dal.service.OBDal;
@@ -68,7 +69,7 @@
       ps.executeUpdate();
       sessionStatus.set(Boolean.TRUE);
     } catch (Exception e) {
-      log.error("Couldn't disable triggers: ", e);
+      throw new OBException("Couldn't disable triggers: ", e);
     } finally {
       try {
         ps.close();
@@ -107,8 +108,10 @@
       ps.executeUpdate();
       sessionStatus.set(null);
     } catch (Exception e) {
-      log.error("Couldn't enable triggers: ", e);
+      throw new OBException("Couldn't disable triggers: ", e);
     } finally {
+      // always clear the threadlocal
+      clear();
       try {
         ps.close();
       } catch (SQLException e) {
diff --git a/src/org/openbravo/service/system/SystemService.java b/src/org/openbravo/service/system/SystemService.java
--- a/src/org/openbravo/service/system/SystemService.java
+++ b/src/org/openbravo/service/system/SystemService.java
@@ -226,6 +226,8 @@
       TriggerHandler.getInstance().enable();
       OBDal.getInstance().commitAndClose();
     } finally {
+      // always clear the threadlocal
+      TriggerHandler.getInstance().clear();
       OBContext.restorePreviousMode();
     }
   }
