diff --git a/product/ERP5/tests/testAccounting.py b/product/ERP5/tests/testAccounting.py
index 50156b5111cfcca35ce71e971f1bc223be2714c7..4fd495805587fd62348e08943b251f72a23048f9 100644
--- a/product/ERP5/tests/testAccounting.py
+++ b/product/ERP5/tests/testAccounting.py
@@ -42,7 +42,7 @@ from Products.ERP5Type.tests.utils import reindex
 from Products.DCWorkflow.DCWorkflow import ValidationFailed
 from AccessControl.SecurityManagement import newSecurityManager
 from Products.ERP5Type.tests.Sequence import SequenceList
-from Products.ERP5Form.Document.Preference import Priority
+from Products.ERP5Form.PreferenceTool import Priority
 
 SOURCE = 'source'
 DESTINATION = 'destination'
diff --git a/product/ERP5/tests/testTemplate.py b/product/ERP5/tests/testTemplate.py
index 5066b30d43e501f84a4ce00742b1e93c9c37f16b..9ce0298d7947b97f4a7dcb677661cf4f6a7f8a3d 100644
--- a/product/ERP5/tests/testTemplate.py
+++ b/product/ERP5/tests/testTemplate.py
@@ -35,7 +35,7 @@ from AccessControl.SecurityManagement import newSecurityManager
 from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
 from Products.ERP5Type.tests.backportUnittest import expectedFailure
 from Products.ERP5Type import Permissions
-from Products.ERP5Form.Document.Preference import Priority
+from Products.ERP5Form.PreferenceTool import Priority
 
 
 class TestTemplate(ERP5TypeTestCase):
diff --git a/product/ERP5Banking/tests/testERP5BankingAvailableInventory.py b/product/ERP5Banking/tests/testERP5BankingAvailableInventory.py
index 87278a9908ef61433ee831ed2b67bbe1bd3741ad..e9670a643fb55250f29bec337c6951b574fc8603 100644
--- a/product/ERP5Banking/tests/testERP5BankingAvailableInventory.py
+++ b/product/ERP5Banking/tests/testERP5BankingAvailableInventory.py
@@ -36,7 +36,7 @@ from Products.ERP5Banking.tests.testERP5BankingCheckPayment \
       import TestERP5BankingCheckPaymentMixin
 from Products.ERP5Banking.tests.testERP5BankingMoneyDeposit \
       import TestERP5BankingMoneyDepositMixin
-from Products.ERP5Form.Document.Preference import Priority
+from Products.ERP5Form.PreferenceTool import Priority
 
 # Needed in order to have a log file inside the current folder
 os.environ['EVENT_LOG_FILE']     = os.path.join(os.getcwd(), 'zLOG.log')
diff --git a/product/ERP5Form/Document/Preference.py b/product/ERP5Form/Document/Preference.py
index e65a997cc7b8152bbb371bdc8844500b745cdf78..6aa574928f25cbb44d6d8cc4c4cba7c8450a8aba 100644
--- a/product/ERP5Form/Document/Preference.py
+++ b/product/ERP5Form/Document/Preference.py
@@ -31,9 +31,12 @@ from AccessControl import ClassSecurityInfo
 from Products.ERP5Type import Permissions, PropertySheet, Constraint
 from Products.ERP5Type.Core.Folder import Folder
 from Products.CMFCore.utils import getToolByName
+from Products.ERP5Form.PreferenceTool import PreferenceTool
 
 class Priority:
-  """ names for priorities """
+  """ names for priorities
+      XXX This was moved to PreferenceTool directly
+  """
   SITE  = 1
   GROUP = 2
   USER  = 3
@@ -89,3 +92,11 @@ class Preference( Folder ):
   def disable(self):
     """Workflow method"""
     self._clearCache()
+
+  def _aq_dynamic(self, id):
+    """ force _aq_dynamic on preference tool, because list of property sheet of
+        preferences depends on the code of PreferenceTool._aq_dynamic"""
+    if not PreferenceTool.aq_preference_generated:
+      portal = self.getPortalObject()
+      portal.portal_preferences._aq_dynamic('dummy')
+    return Preference.inheritedAttribute('_aq_dynamic')(self, id)
diff --git a/product/ERP5Form/PreferenceTool.py b/product/ERP5Form/PreferenceTool.py
index eb9b6365a1efb13005fc45ee3332d4fc5970c366..de08cd3a3f4bc8c395c2ed8bc8a873129c67c0e4 100644
--- a/product/ERP5Form/PreferenceTool.py
+++ b/product/ERP5Form/PreferenceTool.py
@@ -41,10 +41,15 @@ from Products.ERP5Type.Cache import CachingMethod
 from Products.ERP5Type.Utils import convertToUpperCase
 from Products.ERP5Type.Accessor.TypeDefinition import list_types
 from Products.ERP5Form import _dtmldir
-from Products.ERP5Form.Document.Preference import Priority
 
 _marker = object()
 
+class Priority:
+  """ names for priorities """
+  SITE  = 1
+  GROUP = 2
+  USER  = 3
+
 def updatePreferenceClassPropertySheetList():
   # The Preference class should be imported from the common location
   # in ERP5Type since it could be overloaded in another product
diff --git a/product/ERP5Form/tests/testPreferences.py b/product/ERP5Form/tests/testPreferences.py
index 1245eed57b02dae4c51cd9840c97aeed34ea1514..ce548f4b2e5160cc83cf143d5ce1e23bc9883e27 100644
--- a/product/ERP5Form/tests/testPreferences.py
+++ b/product/ERP5Form/tests/testPreferences.py
@@ -37,7 +37,7 @@ from zExceptions import Unauthorized
 from DateTime import DateTime
 
 from Products.ERP5Type.tests.testERP5Type import PropertySheetTestCase
-from Products.ERP5Form.Document.Preference import Priority
+from Products.ERP5Form.PreferenceTool import Priority
 from Products.ERP5.PropertySheet.HtmlStylePreference import HtmlStylePreference
 
 default_large_image_height, = [pref.get('default')
diff --git a/product/ERP5OOo/tests/testDms.py b/product/ERP5OOo/tests/testDms.py
index 9e5015aa1b00a362949afd7a2acda37d15d37104..f571a5c58522eb3c210ae4da02f2c711c2b1a66f 100644
--- a/product/ERP5OOo/tests/testDms.py
+++ b/product/ERP5OOo/tests/testDms.py
@@ -63,7 +63,7 @@ from AccessControl.SecurityManagement import newSecurityManager
 from AccessControl import getSecurityManager
 from zLOG import LOG
 from Products.ERP5.Document.Document import NotConvertedError
-from Products.ERP5Form.Document.Preference import Priority
+from Products.ERP5Form.PreferenceTool import Priority
 from Products.ERP5Type.tests.utils import createZODBPythonScript
 import os
 from threading import Thread