diff --git a/product/CMFActivity/ActivityTool.py b/product/CMFActivity/ActivityTool.py
index 335c07aa09f53e0a1c5719957642faca3a004f16..cc3581a8ee18b08d49bcee84c761d23757adf13d 100755
--- a/product/CMFActivity/ActivityTool.py
+++ b/product/CMFActivity/ActivityTool.py
@@ -123,8 +123,18 @@ class ActiveWrapper:
 
 class ActivityTool (Folder, UniqueObject):
     """
-    This is a ZSQLCatalog that filters catalog queries.
-    It is based on ZSQLCatalog
+    ActivityTool is the central point for activity management.
+
+    Improvement to consider to reduce locks:
+
+      Idea 1: create an SQL tool which accumulate queries and executes them at the end of a transaction,
+              thus allowing all SQL transaction to happen in a very short time
+              (this would also be a great way of using MyISAM tables)
+
+      Idea 2: do the same at the level of ActivityTool
+
+      Idea 3: do the same at the level of each activity (ie. queueMessage
+              accumulates and fires messages at the end of the transactino)
     """
     id = 'portal_activities'
     meta_type = 'CMF Activity Tool'
diff --git a/product/CMFActivity/skins/activity/SQLDict_assignMessage.zsql b/product/CMFActivity/skins/activity/SQLDict_assignMessage.zsql
index 4e2424530d65c30a1b6802833f32e81612980ada..a6df67a3271954b32b7c1e1105c26e7dbfba76e8 100755
--- a/product/CMFActivity/skins/activity/SQLDict_assignMessage.zsql
+++ b/product/CMFActivity/skins/activity/SQLDict_assignMessage.zsql
@@ -8,8 +8,12 @@ class_name:
 class_file:
 </dtml-comment>
 <params>path
-processing_node</params>
+processing_node
+method_id</params>
 UPDATE message
-SET processing_node=<dtml-sqlvar processing_node type="int">
+SET
+  processing_node=<dtml-sqlvar processing_node type="int">,
+  processing=0
 WHERE
-  path = <dtml-sqlvar path type="string">
\ No newline at end of file
+  path = <dtml-sqlvar path type="string">
+<dtml-if method_id>AND method_id = <dtml-sqlvar method_id type="string"></dtml-if>
\ No newline at end of file
diff --git a/product/CMFActivity/skins/activity/SQLDict_readMessage.zsql b/product/CMFActivity/skins/activity/SQLDict_readMessage.zsql
index 9a6a7b46be393c421290cf35af36030ddb71b0d8..558017fd2763a8cbee729f01960abd11985667c9 100755
--- a/product/CMFActivity/skins/activity/SQLDict_readMessage.zsql
+++ b/product/CMFActivity/skins/activity/SQLDict_readMessage.zsql
@@ -11,7 +11,7 @@ class_file:
 SELECT * FROM
     message
 WHERE
-    processing = 1
+    processing = 0
 <dtml-if processing_node>
 AND processing_node = <dtml-sqlvar processing_node type="int">
 </dtml-if>
\ No newline at end of file
diff --git a/product/CMFActivity/skins/activity/SQLDict_readMessageList.zsql b/product/CMFActivity/skins/activity/SQLDict_readMessageList.zsql
index 8a5211e2fab4716af39963e9257eeb5df4409ed5..f39ac54dbfea1c503cf0f989fb062203a5f3b99e 100755
--- a/product/CMFActivity/skins/activity/SQLDict_readMessageList.zsql
+++ b/product/CMFActivity/skins/activity/SQLDict_readMessageList.zsql
@@ -13,7 +13,7 @@ processing_node</params>
 SELECT * FROM
   message
 WHERE
-    processing = 1
+    processing = 0
 <dtml-if processing_node>AND processing_node = <dtml-sqlvar processing_node type="int"> </dtml-if>
 <dtml-if path>AND path = <dtml-sqlvar path type="string"></dtml-if>
 <dtml-if method_id>AND method_id = <dtml-sqlvar method_id type="string"></dtml-if>