diff --git a/product/CMFActivity/ActivityBuffer.py b/product/CMFActivity/ActivityBuffer.py
index 35b32ba258217811979f86a0d823c40265c91258..bda09081ec231e804644da14db3059ac0bda920f 100755
--- a/product/CMFActivity/ActivityBuffer.py
+++ b/product/CMFActivity/ActivityBuffer.py
@@ -52,6 +52,13 @@ class ActivityBuffer(TM):
             self.flushed_activity = []
             for activity in activity_list:              # Reset registration for each transaction
                 activity.registerActivityBuffer(self)
+            # In Zope 2.8 (ZODB 3.4), use beforeCommitHook instead of
+            # patching Trasaction.
+            transaction = get_transaction()
+            try:
+              transaction.beforeCommitHook(self.tpc_prepare, transaction)
+            except AttributeError:
+              pass
         except:
             LOG('ActivityBuffer', ERROR, "exception during _begin",
                 error=sys.exc_info())