diff --git a/product/CMFActivity/ActivityTool.py b/product/CMFActivity/ActivityTool.py
index 6f861748f89ffc813167cfdc8f3fcd2a505778f1..7e74b9681f5556fc8b83bf4b0cb7529428622b3d 100644
--- a/product/CMFActivity/ActivityTool.py
+++ b/product/CMFActivity/ActivityTool.py
@@ -121,6 +121,9 @@ class Message:
     else:
       self.active_process = active_process.getPhysicalPath()
       self.active_process_uid = active_process.getUid()
+    if activity_kw.get('serialization_tag', False) is None:
+      # Remove serialization_tag if it's None.
+      del activity_kw['serialization_tag']
     self.activity_kw = activity_kw
     self.method_id = method_id
     self.args = args
diff --git a/product/CMFActivity/tests/testCMFActivity.py b/product/CMFActivity/tests/testCMFActivity.py
index 2bfda1a60d14d13b2b418cec7eef0dbbe46fcfe5..e034e55294161745758a75e98d3587f5f8536028 100644
--- a/product/CMFActivity/tests/testCMFActivity.py
+++ b/product/CMFActivity/tests/testCMFActivity.py
@@ -2796,6 +2796,11 @@ class TestCMFActivity(ERP5TypeTestCase):
     self.tic()
     result = activity_tool.getMessageList()
     self.assertEqual(len(result), 0)
+    # Check that giving a None value to serialization_tag does not confuse
+    # CMFActivity
+    organisation.activate(activity=activity, serialization_tag=None).getTitle()
+    self.tic()
+    self.assertEqual(len(activity_tool.getMessageList()), 0)
 
   def test_106_checkSerializationTagSQLDict(self, quiet=0, run=run_all_test):
     if not run: return