diff --git a/product/CMFActivity/ActivityBuffer.py b/product/CMFActivity/ActivityBuffer.py
index ce408df3a7fd3296fb392d0292faeee4e0a5d475..d1a7ebbace78334d0b8e8c02477211e834f40a82 100644
--- a/product/CMFActivity/ActivityBuffer.py
+++ b/product/CMFActivity/ActivityBuffer.py
@@ -36,13 +36,15 @@ class ActivityBuffer(TM):
 
     _p_oid=_p_changed=_registered=None
 
-    def __init__(self):
+    def __init__(self, activity_tool=None):
         from thread import allocate_lock
         self._use_TM = self._transactions = 1
         if self._use_TM:
             self._tlock = allocate_lock()
             self._tthread = None
         self._lock = allocate_lock()
+        if activity_tool is not None:
+          self._activity_tool = activity_tool
 
     # Keeps a list of messages to add and remove
     # at end of transaction
diff --git a/product/CMFActivity/ActivityTool.py b/product/CMFActivity/ActivityTool.py
index 8086836b8fbac7f62e35a0da6eab48e8abd6d8ae..86b15642fd08dd9d984f4534d4db4e6d795ca7e2 100644
--- a/product/CMFActivity/ActivityTool.py
+++ b/product/CMFActivity/ActivityTool.py
@@ -609,7 +609,7 @@ class ActivityTool (Folder, UniqueObject):
       global is_initialized
       if not is_initialized: self.initialize()
       if getattr(self, '_v_activity_buffer', None) is None:
-        self._v_activity_buffer = ActivityBuffer()
+        self._v_activity_buffer = ActivityBuffer(activity_tool=self)
       return ActiveWrapper(object, activity, active_process, **kw)
 
     def deferredQueueMessage(self, activity, message):
@@ -617,7 +617,7 @@ class ActivityTool (Folder, UniqueObject):
 
     def deferredDeleteMessage(self, activity, message):
       if getattr(self, '_v_activity_buffer', None) is None:
-        self._v_activity_buffer = ActivityBuffer()
+        self._v_activity_buffer = ActivityBuffer(activity_tool=self)
       self._v_activity_buffer.deferredDeleteMessage(self, activity, message)
 
     def getRegisteredMessageList(self, activity):
@@ -636,7 +636,7 @@ class ActivityTool (Folder, UniqueObject):
       global is_initialized
       if not is_initialized: self.initialize()
       if getattr(self, '_v_activity_buffer', None) is None:
-        self._v_activity_buffer = ActivityBuffer()
+        self._v_activity_buffer = ActivityBuffer(activity_tool=self)
       if type(object) is TupleType:
         object_path = object
       else:
@@ -763,7 +763,7 @@ class ActivityTool (Folder, UniqueObject):
       global is_initialized
       if not is_initialized: self.initialize()
       if getattr(self, '_v_activity_buffer', None) is None:
-        self._v_activity_buffer = ActivityBuffer()
+        self._v_activity_buffer = ActivityBuffer(activity_tool=self)
       activity_dict[activity].queueMessage(self,
         Message(path, active_process, activity_kw, method_id, args, kw))