diff --git a/product/ERP5/Document/Image.py b/product/ERP5/Document/Image.py
index d210f20477c58a606c2f7a0a3790c68808095b25..42f8cf2d2867282cf6adf58d6fe25896a20ff51d 100644
--- a/product/ERP5/Document/Image.py
+++ b/product/ERP5/Document/Image.py
@@ -49,8 +49,10 @@ from Products.ERP5.Document.Document import ConversionError
 
 from OFS.Image import Image as OFSImage
 from OFS.Image import getImageInfo
-from OFS.content_types import guess_content_type
-
+try:
+    from OFS.content_types import guess_content_type
+except ImportError:
+    from zope.contenttype import guess_content_type
 from zLOG import LOG, WARNING
 
 from Products.CMFCore.utils import getToolByName
diff --git a/product/ERP5Form/PDFForm.py b/product/ERP5Form/PDFForm.py
index b90891440f3ada589bd0e444364005b58b871928..97b4caa9127d599a33d7db10361859666420f75b 100644
--- a/product/ERP5Form/PDFForm.py
+++ b/product/ERP5Form/PDFForm.py
@@ -30,7 +30,10 @@ from OFS.Image import File
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from Products.ERP5Type import PropertySheet, Permissions
 from Products.PageTemplates.Expressions import getEngine
-from Products.PageTemplates.TALES import SafeMapping
+try:
+    from Products.PageTemplates.TALES import SafeMapping
+except ImportError:
+    from Products.PageTemplates.Expressions import SafeMapping
 
 from urllib import quote
 from Products.ERP5Type.Globals import InitializeClass, PersistentMapping, DTMLFile
diff --git a/product/ERP5Form/tests/testPDFForm.py b/product/ERP5Form/tests/testPDFForm.py
index 8a5fba4c90464bb7784acc3efa62e3d46462bf68..1a280d60687a9f0a673191baf86344f517605680 100644
--- a/product/ERP5Form/tests/testPDFForm.py
+++ b/product/ERP5Form/tests/testPDFForm.py
@@ -74,7 +74,8 @@ class TestPDFForm(unittest.TestCase):
     self.assertEquals('here/getId', self.pdf_form.getCellTALES('text_1'))
 
   def test_setInvalidTALES(self):
-    from Products.PageTemplates.TALES import CompilerError
+    from Products.PageTemplates.Expressions import getEngine
+    CompilerError = getEngine().getCompilerError()
     self.pdf_form.setCellTALES('text_1', 'python:(inv.alid "= ')
     # maybe should raise when setting the TALES, not when getting ?
     self.assertRaises(CompilerError, self.pdf_form.evaluateCell, 'text_1')
diff --git a/product/ERP5OOo/Document/OOoDocument.py b/product/ERP5OOo/Document/OOoDocument.py
index 33b0c70a94b43b4a7cad3b9e2b7f495972a50899..6e4596a466bd4a85a703199be08c4bab455e1cf0 100644
--- a/product/ERP5OOo/Document/OOoDocument.py
+++ b/product/ERP5OOo/Document/OOoDocument.py
@@ -36,7 +36,10 @@ from AccessControl import ClassSecurityInfo
 from AccessControl import Unauthorized
 from OFS.Image import Pdata
 from OFS.Image import File as OFSFile
-from OFS.content_types import guess_content_type
+try:
+    from OFS.content_types import guess_content_type
+except ImportError:
+    from zope.contenttype import guess_content_type
 from Products.CMFCore.utils import getToolByName, _setCacheHeaders,\
     _ViewEmulator
 from Products.ERP5Type import Permissions, PropertySheet, Constraint
diff --git a/product/ERP5SyncML/SynchronizationTool.py b/product/ERP5SyncML/SynchronizationTool.py
index 32683c6658972e091d1b77d95b8a304e039fcf61..17a85ab8ad424f77f4e2b0ac474a8832de3a1e0f 100644
--- a/product/ERP5SyncML/SynchronizationTool.py
+++ b/product/ERP5SyncML/SynchronizationTool.py
@@ -34,7 +34,7 @@ from Products.ERP5Type.Base import Base
 from Products.CMFCore.utils import UniqueObject
 from Products.ERP5Type.Globals import InitializeClass, DTMLFile, PersistentMapping, Persistent
 from AccessControl import ClassSecurityInfo, getSecurityManager
-from Products.CMFCore import CMFCorePermissions
+from Products.CMFCore import permissions as CMFCorePermissions
 from Products.ERP5SyncML import _dtmldir
 from Products.ERP5SyncML import Conduit
 from Publication import Publication, Subscriber
diff --git a/product/ERP5Type/Constraint/TALESConstraint.py b/product/ERP5Type/Constraint/TALESConstraint.py
index a6da6b739956197cd38114b827e9d37e897ba0a3..2f5561906794da6126cd5f00e18173c98836a790 100644
--- a/product/ERP5Type/Constraint/TALESConstraint.py
+++ b/product/ERP5Type/Constraint/TALESConstraint.py
@@ -30,12 +30,12 @@ import sys
 
 from Products.CMFCore.Expression import Expression
 from ZODB.POSException import ConflictError
-try:
-  # Zope 2.8
-  from Products.PageTemplates.TALES import CompilerError
-except ImportError:
-  # Zope 2.12
-  from zope.tales.tales import CompilerError
+
+import Products.PageTemplates.Expressions
+# this gets the CompilerError class wherever it is defined (which is different
+# depending on the Zope version
+CompilerError = Products.PageTemplates.Expressions.getEngine().getCompilerError()
+
 from zLOG import LOG, PROBLEM
 
 from Constraint import Constraint
diff --git a/product/ERP5Type/Permissions.py b/product/ERP5Type/Permissions.py
index a6205d421aa621d7291eb045bbb112bf609c5e4c..0fa69517c711a7e5813e485f47a83737358bff8c 100644
--- a/product/ERP5Type/Permissions.py
+++ b/product/ERP5Type/Permissions.py
@@ -36,15 +36,7 @@ A complete explanation of the Zope security architecture is available here:
 http://dev.zope.org/Wikis/DevSite/Projects/DeclarativeSecurity/ZopeSecurityForDevelopers
 """
 
-try:
-  from Products.CMFCore import permissions
-except ImportError:
-  from Products.CMFCore import CMFCorePermissions as permissions
-  # XXX "Change local roles" didn't exist at the time of CMF 1.4
-  permissions.ChangeLocalRoles = 'Change local roles'
-  permissions.setDefaultRoles(permissions.ChangeLocalRoles,
-                              ('Owner', 'Manager'))
-
+from Products.CMFCore import permissions
 from AccessControl import Permissions as ac_permissions
 
 setDefaultRoles = permissions.setDefaultRoles
diff --git a/product/ERP5Type/tests/testConstraint.py b/product/ERP5Type/tests/testConstraint.py
index 0d6883eb9d990a2a87250d4b5e3fe157f802242f..6dd466514cd461e858ae6cdd9a6668f948009303 100644
--- a/product/ERP5Type/tests/testConstraint.py
+++ b/product/ERP5Type/tests/testConstraint.py
@@ -1176,7 +1176,8 @@ class TestConstraint(PropertySheetTestCase):
                    klass_name='TALESConstraint',
                    id='tales_constraint',
                    expression='python: None (" ')
-    from Products.PageTemplates.TALES import CompilerError
+    from Products.PageTemplates.Expressions import getEngine
+    CompilerError = getEngine().getCompilerError()
     self.assertRaises(CompilerError, constraint.checkConsistency, obj)
 
     constraint = self._createGenericConstraint(
diff --git a/product/MailTemplates/MTMultipart.py b/product/MailTemplates/MTMultipart.py
index 1e4ad4432cc5beaaf0d430435d4038034dfe5f91..e706241ab2f8ef848942af9ab0cca8b350f005a8 100644
--- a/product/MailTemplates/MTMultipart.py
+++ b/product/MailTemplates/MTMultipart.py
@@ -10,9 +10,9 @@ from email.MIMEBase import MIMEBase
 from email.MIMEMultipart import MIMEMultipart
 from App.class_init import default__class_init__ as InitializeClass
 try:
-  from zope.app.content_types import guess_content_type
+    from OFS.content_types import guess_content_type
 except ImportError:
-  from OFS.content_types import guess_content_type # Zope 2.7
+    from zope.contenttype import guess_content_type
 from OFS.Image import File
 from ZPublisher.HTTPRequest import FileUpload
 
diff --git a/product/ZLDAPConnection/Entry.py b/product/ZLDAPConnection/Entry.py
index ad642f4f3630594c9e970e40c3e99593f263311a..ccdef6d0d32817174765e3a55e24da2f815704cc 100644
--- a/product/ZLDAPConnection/Entry.py
+++ b/product/ZLDAPConnection/Entry.py
@@ -550,7 +550,7 @@ class ZopeEntry(OFS.SimpleItem.Item):
                 action ='manage_propertiesForm')
 
 
-import Globals
+import App.class_init
 for klass in (GenericEntry, TransactionalEntry, ZopeEntry):
-    Globals.default__class_init__(klass)
+    App.class_init.default__class_init__(klass)
 
diff --git a/product/ZLDAPConnection/LDCAccessors.py b/product/ZLDAPConnection/LDCAccessors.py
index 0c25deefc039fa7fd58df731caa8ab19141eb355..2c3ff108a6fa91ae87556f21433f45cd65ea544c 100644
--- a/product/ZLDAPConnection/LDCAccessors.py
+++ b/product/ZLDAPConnection/LDCAccessors.py
@@ -102,5 +102,5 @@ class LDAPConnectionAccessors:
         if not transactional:
             self._isCommitting = 1
         
-import Globals
-Globals.default__class_init__(LDAPConnectionAccessors)
+import App.class_init
+App.class_init.default__class_init__(LDAPConnectionAccessors)
diff --git a/product/ZLDAPMethods/LM.py b/product/ZLDAPMethods/LM.py
index 1517e58a76b147c429e350e5d12e52e81717751a..2ea1e88a8ea299d11675c87688d3fac95f7bab86 100644
--- a/product/ZLDAPMethods/LM.py
+++ b/product/ZLDAPMethods/LM.py
@@ -558,6 +558,6 @@ pretty_results=DocumentTemplate.HTML("""\
   </table>""")
 
 
-import Globals
-Globals.default__class_init__(LDAPMethod)
-Globals.default__class_init__(LDIFMethod)
\ No newline at end of file
+import App.class_init
+App.class_init.default__class_init__(LDAPMethod)
+App.class_init.default__class_init__(LDIFMethod)
\ No newline at end of file