diff --git a/product/ERP5Type/ERP5Type.py b/product/ERP5Type/ERP5Type.py
index 46201c4e24eb4e72632ea3525d45cdba3b230f46..c04c85a693b35a0ecc80dd5f9d542454dec9185a 100644
--- a/product/ERP5Type/ERP5Type.py
+++ b/product/ERP5Type/ERP5Type.py
@@ -211,6 +211,7 @@ class ERP5TypeInformation(XMLObject,
 
     acquire_local_roles = False
     property_sheet_list = ()
+    zodb_property_sheet_list = ()
     base_category_list = ()
     init_script = ''
     product = 'ERP5Type'
@@ -346,8 +347,6 @@ class ERP5TypeInformation(XMLObject,
       ob = klass(id)
 
       if temp_object:
-        if id in (None, ''):
-          raise ValueError("invalid object id")
         ob = ob.__of__(container)
         for ignore in ('activate_kw', 'is_indexable', 'reindex_kw'):
           kw.pop(ignore, None)
@@ -376,7 +375,10 @@ class ERP5TypeInformation(XMLObject,
         #ob._setPortalTypeName(self.getId())
         # XXX rafael: if we use _set because it is trigger by interaction
         # workflow and it is annoyning without security setted
-        ob.portal_type = self.getId()
+        try:
+          ob.portal_type = self.getId()
+        except:
+          import pdb; pdb.set_trace()
 
       if not temp_object:
         # Do not reindex object because it's already done by manage_afterAdd
@@ -423,6 +425,12 @@ class ERP5TypeInformation(XMLObject,
       """Getter for 'type_property_sheet' property"""
       return list(self.property_sheet_list)
 
+    security.declareProtected(Permissions.AccessContentsInformation,
+                              'getTypeZodbPropertySheetList')
+    def getTypeZodbPropertySheetList(self):
+      """Getter for 'zodb_type_property_sheet' property"""
+      return list(self.zodb_property_sheet_list)
+
     security.declareProtected(Permissions.AccessContentsInformation,
                               'getTypeBaseCategoryList')
     def getTypeBaseCategoryList(self):