diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py
index 3d14a5ff491b8fd7d0c92125d63dcfc216a89200..9c086aa87d8456dd436a7caee646f745d5ffbdfa 100755
--- a/product/ERP5Type/Base.py
+++ b/product/ERP5Type/Base.py
@@ -72,6 +72,8 @@ from email import Encoders
 from socket import gethostname, gethostbyaddr
 import random
 
+from DateTime import DateTime
+
 try:
   from transaction import get as get_transaction
 except ImportError:
@@ -950,6 +952,7 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ):
         elif hasattr(self, accessor_name):
           #LOG("Calling: ",0, accessor_name)
           method = getattr(self, accessor_name)
+          #LOG("Calling: ",0, method.__class__)
           try:
             old_value = method() # XXX Why not use getProperty ???
           except TypeError:
@@ -966,6 +969,8 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ):
           self._setProperty(key, kw[key])
       elif self.id != kw['id']:
         self.setId(kw['id'], reindex=reindex_object)
+    # Modification date is supported by edit_workflow in ERP5
+    # There is no need to change it here
     if reindex_object:
       # We do not want to reindex the object if nothing is changed
       if (self._v_modified_property_dict != {}):
@@ -1004,11 +1009,22 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ):
   # XXX Is this useful ? (Romain)
   edit = WorkflowMethod(edit)
 
-  # Accessing object property Ids
+  # Accessing object property through ERP5ish interface
   security.declareProtected( Permissions.View, 'getPropertyIdList' )
   def getPropertyIdList(self):
     return self.propertyIds()
-    #return map(lambda p: p['id'], self.__class__._properties)
+
+  security.declareProtected( Permissions.View, 'getPropertyValueList' )
+  def getPropertyValueList(self):
+    return self.propertyValues()
+
+  security.declareProtected( Permissions.View, 'getPropertyItemList' )
+  def getPropertyItemList(self):
+    return self.propertyItems()
+
+  security.declareProtected( Permissions.View, 'getPropertyMap' )
+  def getPropertyMap(self):
+    return self.propertyMap()
 
   # Catalog Related
   security.declareProtected( Permissions.View, 'getObject' )
@@ -1962,7 +1978,7 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ):
         local_permission_list += ((permission,permission_role),)
     return local_permission_list
 
-  security.declareProtected(Permissions.View, 'get_local_permissions')
+  security.declareProtected(Permissions.ManagePortal, 'manage_setLocalPermissions')
   def manage_setLocalPermissions(self,permission,local_permission_list=None):
     """
     This works like manage_setLocalRoles. It allows to set all
@@ -2037,6 +2053,60 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ):
 
   security.declareProtected(Permissions.ModifyPortalContent,'setDescription')
 
+  # Creation and modification date support through workflow
+  security.declareProtected(Permissions.AccessContentsInformation, 'getCreationDate')
+  def getCreationDate(self):
+    """
+      Returns the creation date of the document based on workflow information
+    """
+    # XXX To be implemenented
+    # Check if edit workflow defined
+    # Return none if not (or get it from parent ?)
+    # Then get the first line of edit_workflow
+    return None
+
+  security.declareProtected(Permissions.AccessContentsInformation, 'getModificationDate')
+  def getModificationDate(self):
+    """
+      Returns the modification date of the document based on workflow information
+    """
+    # XXX To be implemenented
+    # Check if edit workflow defined
+    # Return none if not (or get it from parent ?)
+    # Then get the first line of edit_workflow
+    return None
+
+  # Dublin Core Emulation for CMF interoperatibility
+  # CMF Dublin Core Compatibility
+  def Title(self):
+    return self.getTitle('')
+
+  def Subject(self):
+    return self.getSubjectList()
+
+  def Description(self):
+    return self.getDescription('')
+
+  def Contributors(self):
+    return self.getContributorList('')
+
+  def EffectiveDate(self):
+    return self.getEffectiveDate('None')
+
+  def ExpirationDate(self):
+    return self.getExpirationDate('None')
+
+  def Contributors(self):
+    return self.getContributorList()
+
+  def Format(self):
+    return self.getFormat('')
+
+  def Language(self):
+    return self.getLanguage('')
+
+  def Rights(self):
+    return self.getRight('')
 
 InitializeClass(Base)
 
@@ -2062,7 +2132,6 @@ class TempBase(Base):
   def setUid(self, value):
     self.uid = value # Required for Listbox so that no casting happens when we use TempBase to create new objects
 
-
   def setTitle(self, value):
     """
     Required so that getProperty('title') will work on tempBase objects
@@ -2076,6 +2145,9 @@ class TempBase(Base):
     self.title = value
 
   def getTitle(self):
+    """
+      Returns the title of this document
+    """
     return getattr(self,'title',None)
 
-  security.declarePublic('setProperty')
+  security.declarePublic('setProperty')
\ No newline at end of file