diff --git a/product/ERP5Type/Document/Folder.py b/product/ERP5Type/Document/Folder.py
index e523636d51ff2a844f8d3ab413ec5229f4cb74da..eaec7aae44bdcf89ace4c3e109863420e62286d2 100755
--- a/product/ERP5Type/Document/Folder.py
+++ b/product/ERP5Type/Document/Folder.py
@@ -543,9 +543,23 @@ be a problem)."""
     user = str(_getAuthenticatedUser(self))
     portal_type = self.getPortalType()
     if not cached_allowed_content_types.has_key((portal_type, user)):
-      cached_allowed_content_types[(portal_type, user)] = CMFBTreeFolder.allowedContentTypes(self)
+      # Sort the list for convenience -yo
+      # XXX This is not the best solution, because this does not take account i18n into consideration.
+      # XXX So sorting should be done in skins, after translation is performed.
+      def compareTypes(a, b): return cmp(a.title or a.id, b.title or b.id)
+      type_list = CMFBTreeFolder.allowedContentTypes(self)
+      type_list.sort(compareTypes)
+      cached_allowed_content_types[(portal_type, user)] = type_list
     return cached_allowed_content_types[(portal_type, user)]
 
+  # Flush the cache in Menu System
+  security.declareProtected(Permissions.ManagePortal, 'emptyCache')
+  def emptyCache( self ):
+    """
+      Empty the cache of allowed content types in the menu system.
+    """
+    cached_allowed_content_types = {}
+
   # Multiple Inheritance Priority Resolution
   _setProperty = Base._setProperty
   setProperty = Base.setProperty