diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Currency.py b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Currency.py
index d21a387ffe71653039d98bd38bbb23db97d223fa..b8d2f0d585499060f80788ffddae3c6b8aa2c642 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Currency.py
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Currency.py
@@ -56,7 +56,7 @@ class Currency(Resource):
 
   # Unit conversion
   security.declareProtected(Permissions.AccessContentsInformation, 'convertQuantity')
-  def convertQuantity(self, quantity, from_unit, to_unit, variation_list=()):
+  def convertQuantity(self, quantity, from_unit, to_unit, variation_list=(), transformed_resource=None, transformed_variation_list=()):
     # 'variation_list' parameter may be deprecated:
     # cf Measure.getConvertedQuantity
     return quantity
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Currency.xml b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Currency.xml
index 1c0ba2cfc7f9bcf141efb73c7cbd5d8da3610a4c..5bf3b30c1e22de8f25908723b187cd8e344d0b9a 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Currency.xml
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Currency.xml
@@ -6,6 +6,12 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>Currency</string> </value>
@@ -14,6 +20,12 @@
             <key> <string>default_source_reference</string> </key>
             <value> <string>Products.ERP5.Document.Currency</string> </value>
         </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
         <item>
             <key> <string>id</string> </key>
             <value> <string>document.erp5.Currency</string> </value>
@@ -37,9 +49,7 @@
         <item>
             <key> <string>text_content_warning_message</string> </key>
             <value>
-              <tuple>
-                <string>W: 59,  2: Arguments number differs from overridden \'convertQuantity\' method (arguments-differ)</string>
-              </tuple>
+              <tuple/>
             </value>
         </item>
         <item>
@@ -49,13 +59,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -68,7 +93,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -77,7 +102,7 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
       <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Image.py b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Image.py
index 19b30869ba27001afa65b85220758cf870cca783..30dce8cdfefb5a874d857f3947fa57e1d124e223 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Image.py
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Image.py
@@ -54,7 +54,7 @@ from Products.ERP5Type.ImageUtil import transformUrlToDataURI
 # import mixin
 from Products.ERP5.mixin.text_convertable import TextConvertableMixin
 
-def getDefaultImageQuality(portal, format=None):
+def getDefaultImageQuality(portal, format=None):  # pylint: disable=redefined-builtin
   preference_tool = portal.portal_preferences
   return preference_tool.getPreferredImageQuality()
 
@@ -173,7 +173,10 @@ class Image(TextConvertableMixin, File, OFSImage):
     return self.height
 
   security.declareProtected(Permissions.AccessContentsInformation, 'getContentType')
-  def getContentType(self, default=_MARKER):
+  def getContentType(  # pylint: disable=arguments-differ,dangerous-default-value
+      self,
+      default=_MARKER,
+    ):
     """Original photo content_type."""
     self._upgradeImage()
     if self.hasData() and not self.hasContentType():
@@ -208,8 +211,13 @@ class Image(TextConvertableMixin, File, OFSImage):
     return links
 
   security.declareProtected(Permissions.AccessContentsInformation, 'displayMap')
-  def displayMap(self, exclude=None, format=None, quality=_MARKER,\
-                                                              resolution=None):
+  def displayMap(  # pylint: disable=dangerous-default-value
+      self,
+      exclude=None,
+      format=None,  # pylint: disable=redefined-builtin
+      quality=_MARKER,
+      resolution=None,
+  ):
     """Return list of displays with size info."""
     displays = []
     if quality is _MARKER:
@@ -236,7 +244,7 @@ class Image(TextConvertableMixin, File, OFSImage):
 
 
   security.declarePrivate('_convertToText')
-  def _convertToText(self, format):
+  def _convertToText(self, format):  # pylint: disable=redefined-builtin
     """
     Convert the image to text with portaltransforms
     """
@@ -258,7 +266,7 @@ class Image(TextConvertableMixin, File, OFSImage):
     return mime_type, result
 
   # Conversion API
-  def _convert(self, format, **kw):
+  def _convert(self, format, **kw):  # pylint: disable=redefined-builtin
     """
     Implementation of conversion for Image files
     """
@@ -319,7 +327,16 @@ class Image(TextConvertableMixin, File, OFSImage):
   # Photo processing
   #
 
-  def _resize(self, quality, width, height, format, resolution, frame, crop=False):
+  def _resize(
+      self,
+      quality,
+      width,
+      height,
+      format,  # pylint: disable=redefined-builtin
+      resolution,
+      frame,
+      crop=False,
+  ):
     """Resize and resample photo."""
     icc_profile = os.path.join(os.path.dirname(__file__),
                                '..', 'misc', 'sRGB.icc')
@@ -376,7 +393,15 @@ class Image(TextConvertableMixin, File, OFSImage):
       return StringIO(image)
     raise ConversionError('Image conversion failed (%s).' % err)
 
-  def _getDisplayData(self, format, quality, resolution, frame, image_size, crop):
+  def _getDisplayData(
+      self,
+      format,  # pylint: disable=redefined-builtin
+      quality,
+      resolution,
+      frame,
+      image_size,
+      crop,
+  ):
     """Return raw photo data for given display."""
     if crop:
       width, height = image_size
@@ -389,13 +414,19 @@ class Image(TextConvertableMixin, File, OFSImage):
       return self.getData()
     return self._resize(quality, width, height, format, resolution, frame, crop)
 
-  def _makeDisplayPhoto(self, format=None, quality=_MARKER,
-                                 resolution=None, frame=None, image_size=None,
-                                 crop=False):
+  def _makeDisplayPhoto(  # pylint: disable=dangerous-default-value
+      self,
+      format=None,  # pylint: disable=redefined-builtin
+      quality=_MARKER,
+      resolution=None,
+      frame=None,
+      image_size=None,
+      crop=False,
+  ):
     """Create given display."""
     if quality is _MARKER:
       quality = self.getDefaultImageQuality(format)
-    width, height = image_size
+    width, height = image_size  # pylint: disable=unpacking-non-sequence
     base, ext = splitext(self.id)
     id_ = '%s_%s_%s.%s'% (base, width, height, ext,)
     image = OFSImage(id_, self.getTitle(),
@@ -453,7 +484,7 @@ class Image(TextConvertableMixin, File, OFSImage):
     self._update_image_info()
 
   security.declareProtected(Permissions.AccessContentsInformation, 'getDefaultImageQuality')
-  def getDefaultImageQuality(self, format=None):
+  def getDefaultImageQuality(self, format=None):  # pylint: disable=redefined-builtin
     """
     Get default image quality for a format.
     """
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Image.xml b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Image.xml
index 16a96ab02fca077fb4753cc1c61ff49a1e0e6137..2723ce751181b75120aafc36404529ccd313be87 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Image.xml
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Image.xml
@@ -6,6 +6,12 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>Image</string> </value>
@@ -14,6 +20,12 @@
             <key> <string>default_source_reference</string> </key>
             <value> <string>Products.ERP5.Document.Image</string> </value>
         </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
         <item>
             <key> <string>id</string> </key>
             <value> <string>document.erp5.Image</string> </value>
@@ -37,21 +49,7 @@
         <item>
             <key> <string>text_content_warning_message</string> </key>
             <value>
-              <tuple>
-                <string>W: 57, 35: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W:176,  2: Dangerous default value _MARKER (__builtin__.list) as argument (dangerous-default-value)</string>
-                <string>W:176,  2: Arguments number differs from overridden \'getContentType\' method (arguments-differ)</string>
-                <string>W:211, 37: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W:211,  2: Dangerous default value _MARKER (__builtin__.list) as argument (dangerous-default-value)</string>
-                <string>W:239, 27: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W:261, 21: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W:322, 44: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W:379, 28: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W:392, 30: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W:392,  2: Dangerous default value _MARKER (__builtin__.list) as argument (dangerous-default-value)</string>
-                <string>W:398,  4: Attempting to unpack a non-sequence defined at line 393 (unpacking-non-sequence)</string>
-                <string>W:456, 35: Redefining built-in \'format\' (redefined-builtin)</string>
-              </tuple>
+              <tuple/>
             </value>
         </item>
         <item>
@@ -61,13 +59,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -80,7 +93,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -89,7 +102,7 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
       <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Login.py b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Login.py
index b505793c7d8a620f78911e032084011962ad586b..d3bcc792ff79c575a2c1f5e97ca84a3691a9c343 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Login.py
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Login.py
@@ -6,7 +6,7 @@
 # programmers who take the whole responsability of assessing all potential
 # consequences resulting from its eventual inadequacies and bugs
 # End users who are looking for a ready-to-use solution with commercial
-# garantees and support are strongly adviced to contract a Free Software
+# guarantees and support are strongly adviced to contract a Free Software
 # Service Company
 #
 # This program is Free Software; you can redistribute it and/or
@@ -30,9 +30,9 @@ from AccessControl import ClassSecurityInfo
 from erp5.component.mixin.EncryptedPasswordMixin import EncryptedPasswordMixin
 from erp5.component.mixin.LoginAccountProviderMixin import LoginAccountProviderMixin
 from Products.ERP5Type import Permissions, PropertySheet, interfaces
-from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
 from Products.ERP5Type.XMLObject import XMLObject
 
+
 class Login(XMLObject, LoginAccountProviderMixin, EncryptedPasswordMixin):
   meta_type = 'ERP5 Login'
   portal_type = 'Login'
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.MappedProperty.py b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.MappedProperty.py
index b9d971625066746710be96bb9f19d8e773dc2477..00b32fd26f1b2a35608c064139d6c9775329fc04 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.MappedProperty.py
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.MappedProperty.py
@@ -76,13 +76,13 @@ class MappedProperty(XMLObject):
       return mapping_dict
 
   # XXX do we need to protect this method?
-  def getMappedPropertyId(self, property, reverse=False):
+  def getMappedPropertyId(self, property, reverse=False): #  pylint: disable=redefined-builtin
     return self.getMappingDict(reverse=reverse).get(property, property)
 
   # Security should be handled by the target document not by the mapped
   # property document.
   security.declarePublic('getMappedProperty')
-  def getMappedProperty(self, document, property):
+  def getMappedProperty(self, document, property): #  pylint: disable=redefined-builtin
     if property.endswith('_list'):
       property = property[:-5]
       getProperty = document.getPropertyList
@@ -98,7 +98,7 @@ class MappedProperty(XMLObject):
   # Security should be handled by the target document not by the mapped
   # property document.
   security.declarePublic('setMappedProperty')
-  def setMappedProperty(self, document, property, value):
+  def setMappedProperty(self, document, property, value): #  pylint: disable=redefined-builtin
     if property.endswith('_list'):
       property = property[:-5]
       setProperty = document.setPropertyList
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.MappedProperty.xml b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.MappedProperty.xml
index 6c1d83282eaad391026bc37dfeb09b1b8bdee172..40b1d0d381c38fc79202c97004598e3b8775d818 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.MappedProperty.xml
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.MappedProperty.xml
@@ -6,6 +6,12 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>MappedProperty</string> </value>
@@ -14,6 +20,12 @@
             <key> <string>default_source_reference</string> </key>
             <value> <string>Products.ERP5.Document.MappedProperty</string> </value>
         </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
         <item>
             <key> <string>id</string> </key>
             <value> <string>document.erp5.MappedProperty</string> </value>
@@ -37,11 +49,7 @@
         <item>
             <key> <string>text_content_warning_message</string> </key>
             <value>
-              <tuple>
-                <string>W: 79, 32: Redefining built-in \'property\' (redefined-builtin)</string>
-                <string>W: 85, 40: Redefining built-in \'property\' (redefined-builtin)</string>
-                <string>W:101, 40: Redefining built-in \'property\' (redefined-builtin)</string>
-              </tuple>
+              <tuple/>
             </value>
         </item>
         <item>
@@ -51,13 +59,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -70,7 +93,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -79,7 +102,7 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
       <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OOoDocument.py b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OOoDocument.py
index 292a49847af01bc8cca9392e59dc199e5a6dc1df..a88876f578e75d95bd55e4c22a0408e3af5ed86b 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OOoDocument.py
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OOoDocument.py
@@ -1,4 +1,3 @@
-
 # -*- coding: utf-8 -*-
 ##############################################################################
 #
@@ -190,7 +189,7 @@ class OOoDocument(OOoDocumentExtensibleTraversableMixin, BaseConvertableFileMixi
 
     return cached_getTargetFormatItemList(self.getBaseContentType())
 
-  def _getConversionFromProxyServer(self, format):
+  def _getConversionFromProxyServer(self, format): #  pylint: disable=redefined-builtin
     """
       Communicates with server to convert a file
     """
@@ -226,7 +225,7 @@ class OOoDocument(OOoDocumentExtensibleTraversableMixin, BaseConvertableFileMixi
     return response_dict['mime'], Pdata(dec(response_dict['data']))
 
   # Conversion API
-  def _convert(self, format, frame=0, **kw):
+  def _convert(self, format, frame=0, **kw): #  pylint: disable=redefined-builtin
     """Convert the document to the given format.
 
     If a conversion is already stored for this format, it is returned
@@ -346,8 +345,7 @@ class OOoDocument(OOoDocumentExtensibleTraversableMixin, BaseConvertableFileMixi
     if zip_file is None:
       format_list = [x for x in self.getTargetFormatList()
                                 if x.startswith('html') or x.endswith('html')]
-      format = format_list[0]
-      mime, data = self._getConversionFromProxyServer(format)
+      mime, data = self._getConversionFromProxyServer(format_list[0])
       archive_file = cStringIO.StringIO()
       archive_file.write(str(data))
       zip_file = zipfile.ZipFile(archive_file)
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OOoDocument.xml b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OOoDocument.xml
index 1de340f27f08f1fd1d2a25b7f8c6bc7a81f2be5c..2baa2ed90dda16ca29bc768ca085e667bdd95be4 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OOoDocument.xml
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OOoDocument.xml
@@ -6,6 +6,12 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>OOoDocument</string> </value>
@@ -43,11 +49,7 @@
         <item>
             <key> <string>text_content_warning_message</string> </key>
             <value>
-              <tuple>
-                <string>W:193, 42: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W:229, 21: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W:349,  6: Redefining built-in \'format\' (redefined-builtin)</string>
-              </tuple>
+              <tuple/>
             </value>
         </item>
         <item>
@@ -57,13 +59,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -76,7 +93,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -85,7 +102,7 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
       <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OrderBuilder.py b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OrderBuilder.py
index 37ceb716ae7d98a8d0ee2c0eb7da0fa59ec55bcf..00b7ebb6ac42a1c4080567b4ca608486747e6240 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OrderBuilder.py
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OrderBuilder.py
@@ -28,4 +28,7 @@
 #       for builders, and still distinguish order builders from others
 #       Once legacy simulation is dropped, "Order Builder" portal type should
 #       should be changed to use SimulatedDeliveryBuilder class.
-from erp5.component.document.GeneratedDeliveryBuilder import GeneratedDeliveryBuilder as OrderBuilder
+from erp5.component.document.GeneratedDeliveryBuilder import GeneratedDeliveryBuilder
+
+class OrderBuilder(GeneratedDeliveryBuilder):
+  pass
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OrderBuilder.xml b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OrderBuilder.xml
index f086732129c25e017e97afadd52d8429dda88a67..425aa72c1a798ece5585abb724ae817477af4756 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OrderBuilder.xml
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.OrderBuilder.xml
@@ -6,6 +6,12 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>OrderBuilder</string> </value>
@@ -53,13 +59,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -72,7 +93,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -81,7 +102,7 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
       <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Person.py b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Person.py
index 2142489f8298a8272c638859499ea1e571536489..2c3c9a949b7581ac01a80e51ef71b6084dfd97f1 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Person.py
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Person.py
@@ -1,4 +1,3 @@
-
 ##############################################################################
 #
 # Copyright (c) 2002-2005 Nexedi SARL and Contributors. All Rights Reserved.
@@ -46,10 +45,19 @@ else:
   from Products.ERP5Security.ERP5UserManager import ERP5UserManager
   from Products.ERP5Security.ERP5LoginUserManager import ERP5LoginUserManager
 
-class UserExistsError(ValidationFailed):
+
+class UserExistsError(
+    ValidationFailed,
+    # to workaround pylint's false positive:
+    #   Exception doesn't inherit from standard "Exception" class (nonstandard-exception)
+    # because it cannot import ValidationFailed (which is set by a monkey patch), we also
+    # inherit from Exception.
+    Exception,
+  ):
   def __init__(self, user_id):
     super(UserExistsError, self).__init__('user id %s already exists' % (user_id, ))
 
+
 class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin, ERP5UserMixin):
   """
       An Person object holds the information about
@@ -91,7 +99,7 @@ class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin, ERP5UserMi
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getTitle')
-  def getTitle(self, **kw):
+  def getTitle(self, **kw):  # pylint: disable=super-on-old-class
     """
     Returns the title if it exists or a combination of
     first name, middle name and last name
@@ -105,7 +113,7 @@ class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin, ERP5UserMi
 
   security.declareProtected(Permissions.AccessContentsInformation,
                             'getTranslatedTitle')
-  def getTranslatedTitle(self, **kw):
+  def getTranslatedTitle(self, **kw):  # pylint: disable=super-on-old-class
     """
     Returns the title if it exists or a combination of
     first name, middle name and last name
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Person.xml b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Person.xml
index 7433a6852656eb1a9191e5e77b19c0d9e52e759e..fb0d2713c8b5784ca9bee8be3b820fac757878db 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Person.xml
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Person.xml
@@ -6,6 +6,12 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>Person</string> </value>
@@ -43,11 +49,7 @@
         <item>
             <key> <string>text_content_warning_message</string> </key>
             <value>
-              <tuple>
-                <string>W:158, 10: Exception doesn\'t inherit from standard "Exception" class (nonstandard-exception)</string>
-                <string>W:166,  6: Exception doesn\'t inherit from standard "Exception" class (nonstandard-exception)</string>
-                <string>W:178,  6: Exception doesn\'t inherit from standard "Exception" class (nonstandard-exception)</string>
-              </tuple>
+              <tuple/>
             </value>
         </item>
         <item>
@@ -57,13 +59,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -76,7 +93,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -85,7 +102,7 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
       <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SimulatedDeliveryBuilder.py b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SimulatedDeliveryBuilder.py
index b79aa1efa1d25c7a1d50df04b4d7a925cccc6137..ae6edbe34b8f82d1f7cf19991ec4756231bf94ae 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SimulatedDeliveryBuilder.py
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SimulatedDeliveryBuilder.py
@@ -1,4 +1,3 @@
-
 # -*- coding: utf-8 -*-
 ##############################################################################
 #
@@ -203,8 +202,8 @@ class SimulatedDeliveryBuilder(BuilderMixin):
     if property_dict in (None, {}):
       return
     delivery = self.getPortalObject().restrictedTraverse(delivery_relative_url)
-    for (property, value) in property_dict.iteritems():
-      delivery.setPropertyList(property, value)
+    for (prop, value) in property_dict.iteritems():
+      delivery.setPropertyList(prop, value)
 
     # Try to remove existing properties/categories from Movements that
     # should exist on Deliveries.
@@ -341,7 +340,7 @@ class SimulatedDeliveryBuilder(BuilderMixin):
                             'solveDivergence')
   solveDivergence = UnrestrictedMethod(_solveDivergence)
 
-  def _createDelivery(self, delivery_module, movement_list, activate_kw):
+  def _createDelivery(self, delivery_module, movement_list, activate_kw):  # pylint: disable=super-on-old-class
     """
       Refer to the docstring in GeneratedDeliveryBuilder.
       Unlike GeneratedDeliveryBuilder, SimulatedDeliveryBuilder needs to respect
diff --git a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SimulatedDeliveryBuilder.xml b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SimulatedDeliveryBuilder.xml
index ab166ddf5625f69d87c1588905a621a6da62c516..4b4825d04e66198a559cb30fa9a537a26d5e4543 100644
--- a/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SimulatedDeliveryBuilder.xml
+++ b/bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.SimulatedDeliveryBuilder.xml
@@ -6,6 +6,12 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>SimulatedDeliveryBuilder</string> </value>
@@ -43,9 +49,7 @@
         <item>
             <key> <string>text_content_warning_message</string> </key>
             <value>
-              <tuple>
-                <string>W:206,  9: Redefining built-in \'property\' (redefined-builtin)</string>
-              </tuple>
+              <tuple/>
             </value>
         </item>
         <item>
@@ -55,13 +59,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -74,7 +93,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -83,7 +102,7 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
       <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
diff --git a/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BarcodeUtils.py b/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BarcodeUtils.py
index e5d67277d2ba77da86f9ff937e4bc57d956e3aef..a4ab5277363855b38103df0b921328fb9a4e8e2c 100644
--- a/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BarcodeUtils.py
+++ b/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BarcodeUtils.py
@@ -10,7 +10,7 @@ def generateBarcodeImage(self, barcode_type, data, REQUEST=None):
                      stdout=PIPE,
                      stderr=PIPE,
                      close_fds=True)
-    output, error = process.communicate(input=data)
+    output, _ = process.communicate(input=data)
   elif barcode_type == 'ean13':
     from hubarcode.ean13 import EAN13Encoder 
     encoder = EAN13Encoder(data)
diff --git a/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BarcodeUtils.xml b/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BarcodeUtils.xml
index 895826d85bb1ea95ad455845292bb1518641888a..30ad3bd690ca0b7082a99e16179ca3673f6db9d8 100644
--- a/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BarcodeUtils.xml
+++ b/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BarcodeUtils.xml
@@ -6,10 +6,22 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>BarcodeUtils</string> </value>
         </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
         <item>
             <key> <string>id</string> </key>
             <value> <string>extension.erp5.BarcodeUtils</string> </value>
@@ -24,6 +36,18 @@
               <none/>
             </value>
         </item>
+        <item>
+            <key> <string>text_content_error_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_warning_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
         <item>
             <key> <string>version</string> </key>
             <value> <string>erp5</string> </value>
@@ -31,13 +55,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -50,7 +89,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -59,26 +98,30 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
-      <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
     <pickle>
-      <tuple>
-        <none/>
-        <list>
-          <dictionary>
-            <item>
-                <key> <string>action</string> </key>
-                <value> <string>validate</string> </value>
-            </item>
-            <item>
-                <key> <string>validation_state</string> </key>
-                <value> <string>validated</string> </value>
-            </item>
-          </dictionary>
-        </list>
-      </tuple>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>validate</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>validation_state</string> </key>
+                      <value> <string>validated</string> </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
     </pickle>
   </record>
 </ZopeData>
diff --git a/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BaseMigration.py b/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BaseMigration.py
index dd1b60794f4658c875292a73b468bdcc072e6548..b190ae27faf81e5cc1ec7123d2d1fdd2b459a92e 100644
--- a/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BaseMigration.py
+++ b/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BaseMigration.py
@@ -37,7 +37,6 @@ def migrateToEmbeddedFile(self, force=0):
   if portal_type in ('File', 'Image') and self.getValidationState()=='embedded':
     embedded_type = 'Embedded File'
     container = self.getParentValue()
-    id = self.id
     if force == 1:
-      changeObjectClass(container, id, getattr(erp5.portal_type, embedded_type))
+      changeObjectClass(container, self.id, getattr(erp5.portal_type, embedded_type))
     return '%s: %s -> %s' % (self.getRelativeUrl(), portal_type, embedded_type),
diff --git a/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BaseMigration.xml b/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BaseMigration.xml
index b2fdf2fabd2560983dd5681a48f58894f1208f0f..195625e6628b5494de86dcd2ba8b48845dd86caf 100644
--- a/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BaseMigration.xml
+++ b/bt5/erp5_base/ExtensionTemplateItem/portal_components/extension.erp5.BaseMigration.xml
@@ -6,10 +6,22 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>BaseMigration</string> </value>
         </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
         <item>
             <key> <string>id</string> </key>
             <value> <string>extension.erp5.BaseMigration</string> </value>
@@ -24,6 +36,18 @@
               <none/>
             </value>
         </item>
+        <item>
+            <key> <string>text_content_error_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_warning_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
         <item>
             <key> <string>version</string> </key>
             <value> <string>erp5</string> </value>
@@ -31,13 +55,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -50,7 +89,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -59,26 +98,30 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
-      <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
     <pickle>
-      <tuple>
-        <none/>
-        <list>
-          <dictionary>
-            <item>
-                <key> <string>action</string> </key>
-                <value> <string>validate</string> </value>
-            </item>
-            <item>
-                <key> <string>validation_state</string> </key>
-                <value> <string>validated</string> </value>
-            </item>
-          </dictionary>
-        </list>
-      </tuple>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>validate</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>validation_state</string> </key>
+                      <value> <string>validated</string> </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
     </pickle>
   </record>
 </ZopeData>
diff --git a/bt5/erp5_base/InterfaceTemplateItem/portal_components/interface.erp5.IEncryptedPassword.py b/bt5/erp5_base/InterfaceTemplateItem/portal_components/interface.erp5.IEncryptedPassword.py
index 6968f8eac30a8d42fb8af52906b07b48a7403fde..3769b39751269814d1f8f38131c3401a8a555589 100644
--- a/bt5/erp5_base/InterfaceTemplateItem/portal_components/interface.erp5.IEncryptedPassword.py
+++ b/bt5/erp5_base/InterfaceTemplateItem/portal_components/interface.erp5.IEncryptedPassword.py
@@ -47,7 +47,7 @@ class IEncryptedPassword(Interface):
     Check if the password value is acceptable - i.e. follows site rules.
     """
 
-  def setEncodedPassword(value, format='default'):
+  def setEncodedPassword(value, format='default'): # pylint: disable=redefined-builtin
     """
     Set an already encoded password.
     """
diff --git a/bt5/erp5_base/InterfaceTemplateItem/portal_components/interface.erp5.IEncryptedPassword.xml b/bt5/erp5_base/InterfaceTemplateItem/portal_components/interface.erp5.IEncryptedPassword.xml
index 7c5562c8ab8f4e0dd8d3b99b287a3d1b9553733d..8af1730a2e67bd4925b3e8983b7e3bcc184cb349 100644
--- a/bt5/erp5_base/InterfaceTemplateItem/portal_components/interface.erp5.IEncryptedPassword.xml
+++ b/bt5/erp5_base/InterfaceTemplateItem/portal_components/interface.erp5.IEncryptedPassword.xml
@@ -6,6 +6,12 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>IEncryptedPassword</string> </value>
@@ -14,6 +20,12 @@
             <key> <string>default_source_reference</string> </key>
             <value> <string>Products.ERP5.interfaces.encrypted_password</string> </value>
         </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
         <item>
             <key> <string>id</string> </key>
             <value> <string>interface.erp5.IEncryptedPassword</string> </value>
@@ -37,9 +49,7 @@
         <item>
             <key> <string>text_content_warning_message</string> </key>
             <value>
-              <tuple>
-                <string>W: 50, 32: Redefining built-in \'format\' (redefined-builtin)</string>
-              </tuple>
+              <tuple/>
             </value>
         </item>
         <item>
@@ -49,13 +59,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -68,7 +93,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -77,7 +102,7 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
       <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
diff --git a/bt5/erp5_base/MixinTemplateItem/portal_components/mixin.erp5.EncryptedPasswordMixin.py b/bt5/erp5_base/MixinTemplateItem/portal_components/mixin.erp5.EncryptedPasswordMixin.py
index cc993e5e8e73a577ccf00803397ba4e6bbf3eb52..87572ac99577f3417b6fbf7552a1301b28ff6a83 100644
--- a/bt5/erp5_base/MixinTemplateItem/portal_components/mixin.erp5.EncryptedPasswordMixin.py
+++ b/bt5/erp5_base/MixinTemplateItem/portal_components/mixin.erp5.EncryptedPasswordMixin.py
@@ -77,14 +77,22 @@ class EncryptedPasswordMixin:
     if not _checkPermission(Permissions.SetOwnPassword, self):
       raise AccessControl_Unauthorized('setPassword')
 
-  def _setEncodedPassword(self, value, format='default'):
+  def _setEncodedPassword(
+      self,
+      value,
+      format='default',  # pylint: disable=redefined-builtin
+  ):
     password = getattr(aq_base(self), 'password', None)
     if password is None or isinstance(password, basestring):
       password = self.password = PersistentMapping()
     self.password[format] = value
 
   security.declarePublic('setEncodedPassword')
-  def setEncodedPassword(self, value, format='default'):
+  def setEncodedPassword(
+      self,
+      value,
+      format='default',  # pylint: disable=redefined-builtin
+  ):
     """
     """
     self.checkUserCanChangePassword()
@@ -121,14 +129,14 @@ class EncryptedPasswordMixin:
     if password is marker:
       password = default_password
     else:
-      format = kw.get('format', 'default')
+      format_ = kw.get('format', 'default')
       # Backward compatibility: if it's not a PersistentMapping instance,
       # assume it's a monovalued string, which corresponds to default
       # password encoding.
       if isinstance(password, PersistentMapping):
-        password = password.get(format, default_password)
+        password = password.get(format_, default_password)
       else:
-        if format != 'default':
+        if format_ != 'default':
           password = default_password
     return password
 
diff --git a/bt5/erp5_base/MixinTemplateItem/portal_components/mixin.erp5.EncryptedPasswordMixin.xml b/bt5/erp5_base/MixinTemplateItem/portal_components/mixin.erp5.EncryptedPasswordMixin.xml
index b93cc6f48f60a34a9d7216b0178c1deb7d80e039..e3ab20e18f401cfe9f19e6061b43ba514e97ff19 100644
--- a/bt5/erp5_base/MixinTemplateItem/portal_components/mixin.erp5.EncryptedPasswordMixin.xml
+++ b/bt5/erp5_base/MixinTemplateItem/portal_components/mixin.erp5.EncryptedPasswordMixin.xml
@@ -6,6 +6,12 @@
     </pickle>
     <pickle>
       <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
         <item>
             <key> <string>default_reference</string> </key>
             <value> <string>EncryptedPasswordMixin</string> </value>
@@ -14,6 +20,12 @@
             <key> <string>default_source_reference</string> </key>
             <value> <string>Products.ERP5.mixin.encrypted_password</string> </value>
         </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
         <item>
             <key> <string>id</string> </key>
             <value> <string>mixin.erp5.EncryptedPasswordMixin</string> </value>
@@ -37,11 +49,7 @@
         <item>
             <key> <string>text_content_warning_message</string> </key>
             <value>
-              <tuple>
-                <string>W: 79, 39: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W: 86, 38: Redefining built-in \'format\' (redefined-builtin)</string>
-                <string>W:123,  6: Redefining built-in \'format\' (redefined-builtin)</string>
-              </tuple>
+              <tuple/>
             </value>
         </item>
         <item>
@@ -51,13 +59,28 @@
         <item>
             <key> <string>workflow_history</string> </key>
             <value>
-              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
             </value>
         </item>
       </dictionary>
     </pickle>
   </record>
   <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
     <pickle>
       <global name="PersistentMapping" module="Persistence.mapping"/>
     </pickle>
@@ -70,7 +93,7 @@
                 <item>
                     <key> <string>component_validation_workflow</string> </key>
                     <value>
-                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
                     </value>
                 </item>
               </dictionary>
@@ -79,7 +102,7 @@
       </dictionary>
     </pickle>
   </record>
-  <record id="3" aka="AAAAAAAAAAM=">
+  <record id="4" aka="AAAAAAAAAAQ=">
     <pickle>
       <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
     </pickle>
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/BankAccount_validateIBAN.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/BankAccount_validateIBAN.py
index e339a13ca6e5645aaea2ce3abc371b5c3b457829..dc69727cdeea7da4d5b1ec55fd4ad13c46243eb3 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/BankAccount_validateIBAN.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/BankAccount_validateIBAN.py
@@ -67,8 +67,8 @@ iban_code = ''.join([str(letter_code_dict.get(x, x))
                 for x in bban + country_code + checksum])
 
 try:
-    iban_int = int(iban_code)
+  iban_int = int(iban_code)
 except ValueError:
-    return False
+  return False
 
 return iban_int % 97 == 1
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_changeId.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_changeId.py
index db642d7772cbf0ad39d4493251c165cc7293796b..17c9201fa027190bf9c1bcb3d78cdfedec03bb4a 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_changeId.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_changeId.py
@@ -1,3 +1,5 @@
+# this script has an `id` argument
+# pylint: disable=redefined-builtin
 from Products.ERP5Type.Message import translateString
 
 if id and id != context.getId():
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_createMailMessageAsString.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_createMailMessageAsString.py
index adb435696a592f98af1d5711e9e831350af5f2f9..6d36645a36fe6ca40dfd29353507ca3ab92c134e 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_createMailMessageAsString.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_createMailMessageAsString.py
@@ -23,7 +23,7 @@ if content_type == 'text/html':
 else:
   mail_template = context.Event_viewMimeMessage
 
-attachment_list = attachment_list[:]
+attachment_list = list(attachment_list)
 for embedded_file in embedded_file_list:
   mime_type, content = embedded_file.getMimeTypeAndContent()
   name = embedded_file.getFilename()
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_createMailMessageAsString.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_createMailMessageAsString.xml
index 80d1658d1987cebda62d550c5e16d4e46337cb67..736d5f9b4da7d341465e5050f0de26c8f47c6846 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_createMailMessageAsString.xml
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_createMailMessageAsString.xml
@@ -50,7 +50,7 @@
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>from_url, to_url, subject, body, content_type, attachment_list=[], embedded_file_list=[], extra_header_dict=None</string> </value>
+            <value> <string>from_url, to_url, subject, body, content_type, attachment_list=(), embedded_file_list=(), extra_header_dict=None</string> </value>
         </item>
         <item>
             <key> <string>id</string> </key>
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_generateDomain.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_generateDomain.py
index 5133ea8c6e0c6095dc609c747b65e05b85d282d2..8bde17a310f263f2051d3ca47c2aa6cbabc603b6 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_generateDomain.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_generateDomain.py
@@ -1,3 +1,5 @@
+# this script has an `id` argument
+# pylint: disable=redefined-builtin
 domain = parent.generateTempDomain(id=id)
 domain.edit(title=title,
             criterion_property_list=[criterion_property])
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_getDiffBetweenDateAndNow.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_getDiffBetweenDateAndNow.py
index dc985b190cc59be0a32339041fe9d13ec3dbd993..720a6b4793b8bf96d88dd325264c652178c7bfb0 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_getDiffBetweenDateAndNow.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_getDiffBetweenDateAndNow.py
@@ -3,7 +3,7 @@ if not date:
 try:
   now =  DateTime()
   date = DateTime(date)
-except:
+except Exception:
   return ''  
 Base_translateString = context.Base_translateString
 diff = now - date
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_postQuery.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_postQuery.py
index ebbe917564211a5ff5651b5b47d2c72da8dcffbe..f413ab2aac9dd76097bcbff1b6f908ad60aea5d2 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_postQuery.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Base_postQuery.py
@@ -1,5 +1,4 @@
 translateString = context.Base_translateString
-request = context.REQUEST
 ptype = context.getPortalType()
 
 if not description:
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/CurrencyExchange_getExchangeRateList.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/CurrencyExchange_getExchangeRateList.py
index f55a3b14615f01e41189549cedf7465f2b308640..ca697810bad67a426f1411142f266d2b65aad345 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/CurrencyExchange_getExchangeRateList.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/CurrencyExchange_getExchangeRateList.py
@@ -6,14 +6,14 @@
 # Assumes that 2 currencies with the same ID, they are the same currency
 if from_currency is not None and to_currency is not None and \
    [x for x in from_currency.split('/') if x.strip()][-1] == [x for x in to_currency.split('/') if x.strip()][-1]:
-    return [1]
+  return [1]
 
 def sort_by_date(a, b):
   if a.getStartDateRangeMin() > b.getStartDateRangeMin() :
     return -1
   return 1
 
-object = context
+object_ = context
 
 from Products.ERP5Type.Cache import CachingMethod
 
@@ -37,15 +37,15 @@ if to_currency is not None:
     if currency_exchange_type is not None:
       temp_kw['category_list'].append('currency_exchange_type/%s' % currency_exchange_type)
     temp_object.edit(**temp_kw)
-    object = temp_object
-    mapped_value = context.portal_domains.generateMappedValue(object, 
+    object_ = temp_object
+    mapped_value = context.portal_domains.generateMappedValue(object_,
                                                       has_cell_content=0, 
                                                       validation_state='validated',
                                                       sort_method=sort_by_date)
     base_price = getattr(mapped_value, 'base_price', None)
     discount = getattr(mapped_value, 'discount', None)
     if base_price is None and discount is None:
-      mapped_value = context.portal_domains.generateMappedValue(object, 
+      mapped_value = context.portal_domains.generateMappedValue(object_,
                                                       has_cell_content=1, 
                                                       validation_state='validated',
                                                       sort_method=sort_by_date)
@@ -63,14 +63,14 @@ else:
   if start_date is None:
     if getattr(context,'isDelivery',None):
       start_date = context.getStartDate()
-  mapped_value = context.portal_domains.generateMappedValue(object, 
+  mapped_value = context.portal_domains.generateMappedValue(object_,
                                                    has_cell_content=0, 
                                                    validation_state='validated',
                                                    sort_method=sort_by_date)
   base_price = getattr(mapped_value, 'base_price', None)
   discount = getattr(mapped_value, 'discount', None)
   if base_price is None and discount is None:
-    mapped_value = context.portal_domains.generateMappedValue(object, 
+    mapped_value = context.portal_domains.generateMappedValue(object_,
                                                    has_cell_content=1, 
                                                    validation_state='validated',
                                                    sort_method=sort_by_date)  
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getCellGroupDivergenceList.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getCellGroupDivergenceList.py
index b5656e0dfdb47c7a90004cc0694dca630ebad2e9..6b422f49e9719dad28ee0630081da2a9ec487ddd 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getCellGroupDivergenceList.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getCellGroupDivergenceList.py
@@ -16,10 +16,10 @@ for divergence in divergence_list:
   uid = 'new_%s&%s' % (simulation_movement_url,
                        divergence.getProperty('tested_property'))
 
-  object = portal_object.restrictedTraverse(object_relative_url)
-  o = newTempBase(object.getParentValue(), object.getId(), uid=uid,
+  document = portal_object.restrictedTraverse(object_relative_url)
+  o = newTempBase(document.getParentValue(), document.getId(), uid=uid,
                   message=str(divergence.getTranslatedMessage()),
-                  object_title=object.getTranslatedTitle(),
+                  object_title=document.getTranslatedTitle(),
                   prevision_title=prevision_title,
                   decision_title=decision_title,
                   candidate_list=[(context.Base_translateString('Do nothing'), 'ignore'),
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getDeliveryGroupDivergenceList.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getDeliveryGroupDivergenceList.py
index 1c58ff60883a480f589175fb11d442fb714182ff..a14acfc3882123ee30dae776a6b3bebc59978338 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getDeliveryGroupDivergenceList.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getDeliveryGroupDivergenceList.py
@@ -10,14 +10,14 @@ for divergence in divergence_list:
   prop = divergence.getProperty('tested_property')
   if prop in (None, '') or divergence.getCollectOrderGroup() != 'delivery':
     continue
-  message, candidate_list, value_list, decision_title_list, prevision_title_list = candidate_dict.get(prop, ['', [], [], [], []])
+  _, candidate_list, value_list, decision_title_list, prevision_title_list = candidate_dict.get(prop, ['', [], [], [], []])
   decision_value = divergence.getProperty('decision_value')
   decision_title = divergence.getProperty('decision_title', decision_value)
   prevision_value = divergence.getProperty('prevision_value')
   prevision_title = divergence.getProperty('prevision_title', prevision_value)
   object_relative_url = divergence.getProperty('object_relative_url')
   simulation_movement_url = divergence.getProperty('simulation_movement').getRelativeUrl()
-  object = portal_object.restrictedTraverse(object_relative_url)
+  document = portal_object.restrictedTraverse(object_relative_url)
   if decision_value not in value_list:
     candidate_list.append((decision_title, object_relative_url))
     value_list.append(decision_value)
@@ -32,11 +32,11 @@ for divergence in divergence_list:
 
 for prop, candidate_list in candidate_dict.items():
   uid = 'new_%s' % prop
-  object = context
+  document = context
 
   o = newTempBase(context.getParentValue(), context.getId(), uid, uid=uid,
                   message=candidate_list[0],
-                  object_title=object.getTranslatedTitle(),
+                  object_title=document.getTranslatedTitle(),
                   decision_title=', '.join([str(x) for x in candidate_list[3]]),
                   prevision_title=', '.join([str(x) for x in candidate_list[4]]),
                   candidate_list=[(context.Base_translateString('Do nothing'), 'ignore')]+candidate_list[1])
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getLineGroupDivergenceList.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getLineGroupDivergenceList.py
index 77e473b5023af26037fe310ca27dea8d4f0bb6b3..53934a31a2835cf1d5d704d3b8e1589c02173401 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getLineGroupDivergenceList.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getLineGroupDivergenceList.py
@@ -17,11 +17,11 @@ for divergence in divergence_list:
   uid = 'new_%s&%s' % (simulation_movement_url,
                        divergence.getProperty('tested_property'))
 
-  object = portal_object.restrictedTraverse(object_relative_url)
-  o = newTempBase(object.getParentValue(), object.getId(), uid=uid,
+  document = portal_object.restrictedTraverse(object_relative_url)
+  o = newTempBase(document.getParentValue(), document.getId(), uid=uid,
                   message=str(divergence.getTranslatedMessage()),
-                  object_portal_type=object.getTranslatedPortalType(),
-                  object_title=object.getTranslatedTitle(),
+                  object_portal_type=document.getTranslatedPortalType(),
+                  object_title=document.getTranslatedTitle(),
                   prevision_title=prevision_title,
                   decision_title=decision_title,
                   candidate_list=[(context.Base_translateString('Do nothing'), 'ignore'),
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getODTDataDict.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getODTDataDict.py
index 50b12b0c86d7f5fea7a72ad0ab8fb63ce81eb100..d466d1ddf44f78cb88fcb9abdac0703b09b1ec30 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getODTDataDict.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Delivery_getODTDataDict.py
@@ -1,3 +1,4 @@
+# coding: utf-8
 translateString = context.Base_translateString
 request = context.REQUEST
 
@@ -94,7 +95,6 @@ def getTaxLineList(order):
   return tax_line_list
 
 line_base_contribution_list = []
-number = 0
 tax_free_line_totalprice = 0
 line_list = []
 line_not_tax = []
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_checkConversionFormatPermission.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_checkConversionFormatPermission.py
index 1cc0abf4c47719dc032f3dd22506a94bfc20aa48..cab6965db9f3fc157e343518c90d718ee9ed2e53 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_checkConversionFormatPermission.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_checkConversionFormatPermission.py
@@ -1,3 +1,5 @@
+# this script has an `format` argument
+# pylint: disable=redefined-builtin
 """
 This script provides a facility to permit conversion by format.
 """
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_getStandardFileName.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_getStandardFileName.py
index 8062d5d687e5bf37198dd601bc0c2f0c6d3c35ab..5e5f7576b3e6e4db07724625d4c6db1c7ba54f85 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_getStandardFileName.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_getStandardFileName.py
@@ -1,3 +1,5 @@
+# this script has an `format` argument
+# pylint: disable=redefined-builtin
 """Just an alias for real script
 """
 from Products.ERP5Type.Log import log
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_getStandardFilename.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_getStandardFilename.py
index 6551241b61023ee5356ef5176dafb91b8e017330..5ea32e5ebaaf89d1ace3494ed3a9ec083704cfd3 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_getStandardFilename.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Document_getStandardFilename.py
@@ -1,3 +1,5 @@
+# this script has an `format` argument
+# pylint: disable=redefined-builtin
 """
   This script returns a standard file name, build from reference, version and
   language (this is only the base part of the name, the extension should be appended
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Type_acquireSecurityFromCategory.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Type_acquireSecurityFromCategory.py
index 175e95e939edf568c5bb3f25c2baccaf098dcdd5..6e84dec82551b00c0f9f617392b8ae46985a1221 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Type_acquireSecurityFromCategory.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Type_acquireSecurityFromCategory.py
@@ -1,21 +1,21 @@
 """
 WARNING: this script requires proxy manager
 
-This script tries to acquire category values from other objects
+This script tries to acquire category values from other documents
 
 base_category_list - list of category values we need to retrieve
-object             - object which we want to assign roles to.
+obj                - document which we want to assign roles to.
 """
 category_dict = {}
 
-if object is None:
+if obj is None:
   return []
 
 for base_category in base_category_list:
   if base_category == 'parent':
-    o_list = [object.getParentValue()]
+    o_list = [obj.getParentValue()]
   else:
-    o_list = object.getValueList(base_category)
+    o_list = obj.getValueList(base_category)
   for o in o_list:
     for user, role_list in o.get_local_roles():
       for role in role_list:
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Type_acquireSecurityFromCategory.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Type_acquireSecurityFromCategory.xml
index b271774ac092dd829b496333a0a42c270d31a6fd..6de206c9736e8667ed2e97479764ae23fc3d050c 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Type_acquireSecurityFromCategory.xml
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/ERP5Type_acquireSecurityFromCategory.xml
@@ -50,7 +50,7 @@
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>base_category_list, user_name, object, portal_type</string> </value>
+            <value> <string>base_category_list, user_name, obj, portal_type</string> </value>
         </item>
         <item>
             <key> <string>_proxy_roles</string> </key>
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/MailMessage_send.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/MailMessage_send.py
index 43e27b8fd0d65eb8ef8f6cab80184d63dcf3330b..955e75bbfc4d5678c53e8af1152c919a908c1ce3 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/MailMessage_send.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/MailMessage_send.py
@@ -64,13 +64,12 @@ if download or not use_activity:
         if not from_url:
           raise ValueError('Preferred Event Sender Email not configured')
 
-    # Return-Path
+    # Return-Path (TODO)
     if reply_url is None:
       reply_url = portal.portal_preferences.getPreferredEventSenderEmail()
-    additional_headers = None
+    additional_headers = None # pylint: disable=unused-variable
     if reply_url:
       additional_headers = {'Return-Path':reply_url}
-
     content_type = context.getContentType()
 
     mail_message = context.Base_createMailMessageAsString(
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_init.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_init.py
index 3326a38cab63843ebc2b7c3a484c923d892f5da7..89882995871bc21b6760c807b19444e0b0ed221d 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_init.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Organisation_init.py
@@ -1 +1,2 @@
 # this script can be overridden as you wish.
+pass
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getCareerStartDate.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getCareerStartDate.py
index a14210c3f3ee52676a42654fc734a03c79a87dc2..2224560e3c12a239a47719550440ff2374571c8a 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getCareerStartDate.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getCareerStartDate.py
@@ -8,7 +8,7 @@ for career_step in all_career_step_list :
       career_step.getSubordination() == subordination_relative_url) and \
      career_step.getStartDate() and \
      career_step.getValidationState() not in ('cancelled', 'deleted'):
-      career_step_list.append(career_step)
+    career_step_list.append(career_step)
     
 # sort them by start date
 career_step_list.sort(key=lambda x: x.getStartDate())
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPersonDetailedContributionList.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPersonDetailedContributionList.py
index 2694c0730702c9069722e2f0c49e5335c5933942..ab0de6ceecdff38668c47a1077ef680fbc108d72 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPersonDetailedContributionList.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPersonDetailedContributionList.py
@@ -1,5 +1,4 @@
 from Products.PythonScripts.standard import Object
-from Products.ZSQLCatalog.SQLCatalog import Query
 from Products.ERP5Type.DateUtils import atTheEndOfPeriod
 request = container.REQUEST
 from_date = request.get('from_date', None)
@@ -8,10 +7,10 @@ aggregation_level = request.get('aggregation_level', None)
 portal = context.getPortalObject()
 module_list = []
 for module_id in portal.objectIds(spec=('ERP5 Folder',)):
-    module = portal.restrictedTraverse(module_id, None)
-    if module is not None:
-      if portal.portal_membership.checkPermission('View', module):
-        module_list.append(module)
+  module = portal.restrictedTraverse(module_id, None)
+  if module is not None:
+    if portal.portal_membership.checkPermission('View', module):
+      module_list.append(module)
 module_list.sort(key=lambda x: x.getTitle())
 
 # build document portal type list
@@ -69,25 +68,25 @@ line_list = []
 append = line_list.append
 period_count_dict = {}
 for portal_type in portal_type_list:
-    if portal_type_count_dict.has_key(portal_type):
-      period_count = portal_type_count_dict[portal_type]
-      obj = Object(uid="new_")
-      obj["document_type"] = context.Base_translateString(portal_type)
-    else:
-      continue
-    line_counter = 0
-    for period in period_list:
-      if period_count.has_key(period):
-        obj[period] = period_count[period]
-        line_counter += period_count[period]
-        if period_count_dict.has_key(period):
-          period_count_dict[period] = period_count_dict[period] + period_count[period]
-        else:
-          period_count_dict[period] = period_count[period]
+  if portal_type_count_dict.has_key(portal_type):
+    period_count = portal_type_count_dict[portal_type]
+    obj = Object(uid="new_")
+    obj["document_type"] = context.Base_translateString(portal_type)
+  else:
+    continue
+  line_counter = 0
+  for period in period_list:
+    if period_count.has_key(period):
+      obj[period] = period_count[period]
+      line_counter += period_count[period]
+      if period_count_dict.has_key(period):
+        period_count_dict[period] = period_count_dict[period] + period_count[period]
       else:
-        obj[period] = 0
-    obj['total'] = line_counter
-    append(obj)
+        period_count_dict[period] = period_count[period]
+    else:
+      obj[period] = 0
+  obj['total'] = line_counter
+  append(obj)
 
 # sort lines
 def cmpType(a, b):
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPersonDetailedEventList.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPersonDetailedEventList.py
index 7fd26c8f0aa447f7c74e7f371b119af727c9ec0d..0c4fc50c27cc3d0fe53e991783a0571cf40457a1 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPersonDetailedEventList.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPersonDetailedEventList.py
@@ -1,4 +1,3 @@
-from Products.ZSQLCatalog.SQLCatalog import Query
 from Products.ERP5Type.DateUtils import atTheEndOfPeriod
 request = container.REQUEST
 portal = context.getPortalObject()
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPrimaryGroup.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPrimaryGroup.py
index 2f72d73360796fa49e8848fd6894fd7db1ef71ae..79a4b1a4fb4f6efdf9d7e8199e9131342d49af29 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPrimaryGroup.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_getPrimaryGroup.py
@@ -28,7 +28,7 @@ for assignment in context.contentValues(portal_type='Assignment'):
       and assignment.getValidationState() == 'open' \
       and ( assignment.getStartDate() is None or
             assignment.getStartDate() <= now <= assignment.getStopDate()):
-   existing_group_set[assignment.getGroup()] = 1
+    existing_group_set[assignment.getGroup()] = 1
 
 # If we have multiple groups defined on assignments, this scripts does not
 # try to guess, and fallback to the default career's group
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_shiftDefaultCareer.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_shiftDefaultCareer.py
index a374840ce46e90141c5fb4a7ee7b771acee8b089..e57a2a6fe483caf217d8cfbbe132ca42f94c6220 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_shiftDefaultCareer.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_shiftDefaultCareer.py
@@ -2,7 +2,6 @@ from Products.CMFActivity.Errors import ActivityPendingError
 Base_translateString = context.Base_translateString
 
 person = context
-career_list = []
 
 default_career = None
 if 'default_career' in person.objectIds():
diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_statPersonDetailedContributionList.py b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_statPersonDetailedContributionList.py
index 0839066b7a688e332ca1a360c725f30163ceed9a..3d249400653cea700ae889a9ce212f3b2d259f9b 100644
--- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_statPersonDetailedContributionList.py
+++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/Person_statPersonDetailedContributionList.py
@@ -1,75 +1,3 @@
 request = container.REQUEST
-RESPONSE =  request.RESPONSE
-
 stat_line = request.get('stat_line', None)
-
 return stat_line
-
-
-# XXX example of another way to get the stat line but this is slower
-from Products.ERP5Type.Log import log
-from Products.PythonScripts.standard import Object
-from Products.ZSQLCatalog.SQLCatalog import Query
-request = container.REQUEST
-from_date = request.get('from_date', None)
-to_date = request.get('at_date', None)
-aggregation_level = request.get('aggregation_level', None)
-log("in stat method", "")
-# build document portal type list
-portal_type_list = []
-extend = portal_type_list.extend
-for title, path in context.ERP5Site_getModuleItemList():
-  document_type_list = context.restrictedTraverse(path).allowedContentTypes()
-  extend([x.id for x in document_type_list])
-
-# compute sql params, we group and order by date and portal type
-if aggregation_level == "year":
-  sql_format = "%Y"
-elif aggregation_level == "month":
-  sql_format = "%Y-%m"
-elif aggregation_level == "week":
-  sql_format = "%Y-%u"
-elif aggregation_level == "day":
-  sql_format = "%Y-%m-%d"
-count_kw = {}
-if from_date is not None and to_date is not None:  
-  count_kw['creation_date'] = {
-    'range': 'minngt',
-    'query': (from_date, to_date),
-  }
-elif from_date is not None:
-  count_kw['creation_date'] = {
-    'range': 'min',
-    'query': from_date,
-  }
-elif to_date is not None:
-  count_kw['creation_date'] = {
-    'range': 'ngt',
-    'query': to_date,
-  }
-
-# count number of object created by the user for each type of document
-result_list = context.portal_catalog.countResults(select_dict={'date': 'DATE_FORMAT(creation_date, "%s")' % sql_format},
-                                                  portal_type=portal_type_list,limit=None,
-                                                  owner=context.Person_getUserId(),
-                                                  group_by=['DATE_FORMAT(creation_date, "%s")' % sql_format],
-                                                  **count_kw)
-
-# build result dict per portal_type then period
-period_count_dict = {}
-for result in result_list:
-  period_count_dict[result[1]] = result[0]
-
-# build line
-obj = Object(uid="new_")
-obj["document_type"] = 'Total'
-line_counter = 0
-for period in period_list:
-  if period_count_dict.has_key(period):
-    obj[period] = period_count_dict[period]
-    line_counter += period_count_dict[period]
-  else:
-    obj[period] = 0
-obj['total'] = line_counter
-
-return [obj,]
diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/currency_exchange_line_interaction_workflow/scripts/CurrencyExchangeLine_updateMatrix.py b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/currency_exchange_line_interaction_workflow/scripts/CurrencyExchangeLine_updateMatrix.py
index a4c36451297b3f7d0b60ef57dff7d8570afc9aa0..c4254765de0f93984bc7b57e1fd6773a3317b129 100644
--- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/currency_exchange_line_interaction_workflow/scripts/CurrencyExchangeLine_updateMatrix.py
+++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/currency_exchange_line_interaction_workflow/scripts/CurrencyExchangeLine_updateMatrix.py
@@ -14,9 +14,8 @@ context.setMembershipCriterionCategoryList(membership_list)
 context.setResourceValue(context.getParentValue())
 context.setMappedValuePropertyList(('base_price','discount'))
 if cell_range_key_list != [[None, None]] :
-  i = 0
   for k in cell_range_key_list:
-    category_list = filter(lambda k_item: k_item is not None, k)
+    category_list = [k_item for k_item in k if k is not None]
     c = context.newCell(*k, **kwd)
     c.edit(mapped_value_property_list = ('base_price','discount'),
            force_update = 1,
diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_callSolveDivergenceTransition.py b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_callSolveDivergenceTransition.py
index 882e708ec14b2edec026b9a7979480c5652bb911..2ebd3a3cdb22464bfe80a28cc8b353225d104df9 100644
--- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_callSolveDivergenceTransition.py
+++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_callSolveDivergenceTransition.py
@@ -13,8 +13,7 @@ if listbox is not None:
   for k, v in listbox.items():
     object_url = v['choice']
     if object_url != 'ignore':
-      object = delivery.restrictedTraverse(object_url)
-      delivery_solve_property_dict[k] = object.getPropertyList(k)
+      delivery_solve_property_dict[k] = delivery.restrictedTraverse(object_url).getPropertyList(k)
 
 divergence_to_accept_list = []
 divergence_to_adopt_list = []
@@ -22,8 +21,7 @@ divergence_to_adopt_list = []
 divergence_dict = {}
 for divergence in divergence_list:
   simulation_movement_url = divergence.getProperty('simulation_movement').getRelativeUrl()
-  property = divergence.getProperty('tested_property')
-  divergence_dict['%s&%s' % (simulation_movement_url, property)] = divergence
+  divergence_dict['%s&%s' % (simulation_movement_url, divergence.getProperty('tested_property'))] = divergence
 
 for listbox in [state_change['kwargs'].get('line_group_listbox'),
                 state_change['kwargs'].get('cell_group_listbox')]:
diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_callSplitAndDeferTransition.py b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_callSplitAndDeferTransition.py
index 806a75e175204241404a1d4df2efb664fee0cadb..3c2b57b814fed24a19be03d7d9f2b98efd84435e 100644
--- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_callSplitAndDeferTransition.py
+++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_callSplitAndDeferTransition.py
@@ -3,8 +3,6 @@ delivery = state_change['object']
 stop_date = state_change.kwargs['stop_date']
 start_date = state_change.kwargs['start_date']
 
-tag = delivery.getPath() + '_split'
-split_and_defer = 0
 listbox = state_change['kwargs'].get('listbox')
 split_movement_list = []
 if listbox is not None:
diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_splitAndDefer.py b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_splitAndDefer.py
index 5ac432e4ba6b37dd2bc75c6808088481f8b7b128..f5a3d6efd5270d9a81afbf59d1546b5a4dd2d4d5 100644
--- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_splitAndDefer.py
+++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Delivery_splitAndDefer.py
@@ -19,10 +19,10 @@ delivery.activate(after_tag=tag).updateCausalityState()
 
 # Create delivery
 explanation_uid_list = []
-object = delivery
-while object is not None:
-  explanation_uid_list.append(object.getUid())
-  object = object.getCausalityValue()
+object_ = delivery
+while object_ is not None:
+  explanation_uid_list.append(object_.getUid())
+  object_ = object_.getCausalityValue()
     
 previous_tag = None
 for delivery_builder in delivery.getBuilderList():
diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Workflow_solveDivergenceAutomatically.py b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Workflow_solveDivergenceAutomatically.py
index 9f9bf9c82223a88ab0d729090de066580888716a..752dac6f50be4e9e0306d56de3a543023ae831c3 100644
--- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Workflow_solveDivergenceAutomatically.py
+++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/scripts/Workflow_solveDivergenceAutomatically.py
@@ -1,10 +1,7 @@
 delivery = state_change['object']
 
 portal = delivery.getPortalObject()
-try:
-  portal.portal_solvers
-  portal.portal_solver_processes
-except AttributeError:
+if not (hasattr(portal, 'portal_solvers') and hasattr(portal, 'portal_solver_processes')):
   delivery.diverge()
 else:
   solver_tag = '%s_solve' % delivery.getPath()
diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/query_workflow/scripts/notifyOwner.py b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/query_workflow/scripts/notifyOwner.py
index 589895128142a2753771ce0cc03296e736e1d3ff..49153a9ba0c875ad2ccbe6e04d1d20c3f067782f 100644
--- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/query_workflow/scripts/notifyOwner.py
+++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/query_workflow/scripts/notifyOwner.py
@@ -7,12 +7,12 @@ catalog.
 """
 from Products.ERP5Type.Log import log
 
-object = sci['object']
-portal = object.getPortalObject()
+document = sci['object']
+portal = document.getPortalObject()
 translateString = portal.Base_translateString
 
 # Get the owner
-owner = object.getViewPermissionOwner()
+owner = document.getViewPermissionOwner()
 owner_value = portal.Base_getUserValueByUserId(owner)
 
 # Get the authenticated user
@@ -43,11 +43,11 @@ Answer:
 ${answer}
 """ 
 msg = translateString(msg, 
-             mapping=dict(id=object.getId(),
+             mapping=dict(id=document.getId(),
                           subject=subject,
                           user=user_value.getTitle(),
-                          question=object.getDescription(),
-                          answer=object.getTextContent())
+                          question=document.getDescription(),
+                          answer=document.getTextContent())
             )
 
 # We can now notify the owner through the notification tool
diff --git a/bt5/erp5_base/bt/skip_coding_style_test b/bt5/erp5_base/bt/skip_coding_style_test
deleted file mode 100644
index 56a6051ca2b02b04ef92d5150c9ef600403cb1de..0000000000000000000000000000000000000000
--- a/bt5/erp5_base/bt/skip_coding_style_test
+++ /dev/null
@@ -1 +0,0 @@
-1
\ No newline at end of file