diff --git a/product/ERP5/Tool/TemplateTool.py b/product/ERP5/Tool/TemplateTool.py
index 8f4aade7cfd3b0c6de60ae9bc847a17e59089328..b332912778c88c13315aa34488d02768e132f13e 100644
--- a/product/ERP5/Tool/TemplateTool.py
+++ b/product/ERP5/Tool/TemplateTool.py
@@ -56,7 +56,7 @@ import cPickle
 import posixpath
 from base64 import b64encode, b64decode
 from Products.ERP5Type.Message import translateString
-from zLOG import LOG, INFO
+from zLOG import LOG, INFO, WARNING
 from base64 import decodestring
 import subprocess
 
@@ -637,9 +637,14 @@ class TemplateTool (BaseTool):
       # inconsistent, the called method should not return None when
       # nothing is selected
       portal = self.getPortalObject()
-      script_id_list = portal.portal_preferences\
-        .getPreferredDiffFilterScriptIdList() or ()
-      return [getattr(portal, x) for x in script_id_list]
+      script_list = []
+      for script_id in portal.portal_preferences\
+         .getPreferredDiffFilterScriptIdList() or ():
+        try:
+          script_list.append(getattr(portal, script_id))
+        except AttributeError:
+          LOG("TemplateTool", WARNING, "Unable to find %r script" % script_id)
+      return script_list
 
     def getFilteredDiffAsHTML(self, diff):
       """