diff --git a/product/CMFActivity/Activity/SQLBase.py b/product/CMFActivity/Activity/SQLBase.py
index a0613cf9329576981a18d220e9672c78c01b9f77..45043e7fc42233a78ba0310a144ef5365e1ba66e 100644
--- a/product/CMFActivity/Activity/SQLBase.py
+++ b/product/CMFActivity/Activity/SQLBase.py
@@ -196,6 +196,7 @@ class SQLBase:
         # something is missing (context object cannot be found, method cannot
         # be accessed on object).
         non_executable_message_list.append(uid)
+        notify_user_list.append((m, False))
     if deletable_uid_list:
       try:
         self._retryOnLockError(activity_tool.SQLBase_delMessage,
diff --git a/product/CMFActivity/ActivityTool.py b/product/CMFActivity/ActivityTool.py
index 4a1ad6b60d652543239c9dfbb9a52bd060e2b82c..75347628acdf1caf48fd3619c0f75e13d855abcc 100644
--- a/product/CMFActivity/ActivityTool.py
+++ b/product/CMFActivity/ActivityTool.py
@@ -323,7 +323,9 @@ class Message(BaseMessage):
       call_traceback = 'Created at:\n%s' % self.call_traceback
 
     fail_count = self.line.retry + 1
-    if retry:
+    if m.getExecutionState() == MESSAGE_NOT_EXECUTABLE:
+      message = "Not executable activity"
+    elif retry:
       message = "Pending activity already failed %s times" % fail_count
     else:
       message = "Activity failed"
diff --git a/product/CMFActivity/tests/testCMFActivity.py b/product/CMFActivity/tests/testCMFActivity.py
index 751ae7781b4516da103b76d9b65411fd60cef006..678c047425eb02299fb485bd767595bad82c5787 100644
--- a/product/CMFActivity/tests/testCMFActivity.py
+++ b/product/CMFActivity/tests/testCMFActivity.py
@@ -2336,11 +2336,19 @@ class TestCMFActivity(ERP5TypeTestCase):
     Message.notifyUser = fake_notifyUser
     Organisation.failingMethod = failingMethod
     try:
-      obj.activate(activity=activity, priority=6).failingMethod()
+      # MESSAGE_NOT_EXECUTED
+      obj.activate(activity=activity).failingMethod()
       get_transaction().commit()
       self.assertEqual(len(notification_done), 0)
       self.flushAllActivities(silent=1, loop_size=100)
       self.assertEqual(len(notification_done), 1)
+      # MESSAGE_NOT_EXECUTABLE
+      obj.getParentValue()._delObject(obj.getId())
+      obj.activate(activity=activity).getId()
+      get_transaction().commit()
+      self.assertEqual(len(notification_done), 1)
+      self.flushAllActivities(silent=1, loop_size=100)
+      self.assertEqual(len(notification_done), 2)
     finally:
       Message.notifyUser = original_notifyUser
       delattr(Organisation, 'failingMethod')