diff --git a/product/CMFActivity/tests/testCMFActivity.py b/product/CMFActivity/tests/testCMFActivity.py
index 4fa56f57862a02ac9e266c13646fad8310aa3c2f..ccb5aecf60900f35d84eb75a8997033eba8e7c26 100644
--- a/product/CMFActivity/tests/testCMFActivity.py
+++ b/product/CMFActivity/tests/testCMFActivity.py
@@ -3757,6 +3757,39 @@ class TestCMFActivity(ERP5TypeTestCase, LogInterceptor):
       ZopeTestCase._print(message)
       LOG('Testing... ',0,message)
     self.TryNotificationSavedOnEventLogWhenSiteErrorLoggerRaises('SQLQueue')
+
+  def test_124_checkConflictErrorAndNoRemainingActivities(self):
+    """
+    When an activity creates several activities, make sure that all newly
+    created activities are not commited if there is ZODB Conflict error
+    """
+    from Products.CMFActivity.Activity import SQLQueue
+    old_MAX_MESSAGE_LIST_SIZE = SQLQueue.MAX_MESSAGE_LIST_SIZE
+    SQLQueue.MAX_MESSAGE_LIST_SIZE = 1
+    try:
+      activity_tool = self.getPortal().portal_activities
+      def doSomething(self):
+        self.serialize()
+        self.activate(activity='SQLQueue').getId()
+        self.activate(activity='SQLQueue').getTitle()
+        conn = self._p_jar
+        tid = self._p_serial
+        oid = self._p_oid
+        try:
+          conn.db().invalidate({oid: tid})
+        except TypeError:
+          conn.db().invalidate(tid, {oid: tid})
+        
+      activity_tool.__class__.doSomething = doSomething
+      activity_tool.activate(activity='SQLQueue').doSomething()
+      get_transaction().commit()
+      activity_tool.distribute()
+      activity_tool.tic()
+      message_list = activity_tool.getMessageList()
+      self.assertEquals(['doSomething'],[x.method_id for x in message_list])
+      activity_tool.manageClearActivities(keep=0)
+    finally:
+      SQLQueue.MAX_MESSAGE_LIST_SIZE = old_MAX_MESSAGE_LIST_SIZE
   
 def test_suite():
   suite = unittest.TestSuite()