diff --git a/product/CMFActivity/ActivityTool.py b/product/CMFActivity/ActivityTool.py
index 1a9fb424247912e086a5d364a500bc1cb99f0266..711b3b346e1e4c40183ae2bb3dc86ba6599ba106 100644
--- a/product/CMFActivity/ActivityTool.py
+++ b/product/CMFActivity/ActivityTool.py
@@ -856,18 +856,20 @@ class ActivityTool (Folder, UniqueObject):
         old_ihotfix_context = False
         my_self = self
         LOG('CMFActivity.ActivityTool.invoke', INFO, 'Strange: invoke is called outside of acquisition context.')
-      message(my_self)
-      if old_ihotfix_context is not False:
-        # Restore iHotfix context
-        id = get_ident()
-        iHotfix._the_lock.acquire()
-        try:
-          if old_ihotfix_context is None:
-            del iHotfix.contexts[id]
-          else:
-            iHotfix.contexts[id] = old_ihotfix_context
-        finally:
-          iHotfix._the_lock.release()
+      try:
+        message(my_self)
+      finally:
+        if old_ihotfix_context is not False:
+          # Restore iHotfix context
+          id = get_ident()
+          iHotfix._the_lock.acquire()
+          try:
+            if old_ihotfix_context is None:
+              del iHotfix.contexts[id]
+            else:
+              iHotfix.contexts[id] = old_ihotfix_context
+          finally:
+            iHotfix._the_lock.release()
       if logging:
         LOG('Activity Tracking', INFO, 'invoked message')
       if my_self is not self: # We rewrapped self