diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py
index fc1ab326e7bfe38e7d974cd8f8896030add68a1c..baca7a3463a180be853e07c5925584e9374d5180 100644
--- a/product/ERP5Type/Base.py
+++ b/product/ERP5Type/Base.py
@@ -1378,10 +1378,9 @@ class Base( CopyContainer,
         if not isinstance(result, (list, tuple)):
           result = [result]
         return result
-    else:
-      if d is not _MARKER:
-        return ERP5PropertyManager.getProperty(self, key, d=d, **kw)
-      return ERP5PropertyManager.getProperty(self, key, **kw)
+    if d is not _MARKER:
+      return ERP5PropertyManager.getProperty(self, key, d=d, **kw)
+    return ERP5PropertyManager.getProperty(self, key, **kw)
 
   security.declareProtected( Permissions.AccessContentsInformation, 'getPropertyList' )
   def getPropertyList(self, key, d=None):
diff --git a/product/ERP5Type/tests/testERP5Type.py b/product/ERP5Type/tests/testERP5Type.py
index e328391212895d05196109de199774cffc0c52a0..9c4752400d1728c8cca4faa9b74c658215aebe84 100644
--- a/product/ERP5Type/tests/testERP5Type.py
+++ b/product/ERP5Type/tests/testERP5Type.py
@@ -2583,6 +2583,19 @@ class TestPropertySheet:
       person.setPropertyList('foo_bar', [])
       self.assertEquals(person.getFooBarList(), [])
 
+    def testUndefinedProperties(self):
+      """
+      Make sure that getProperty and setProperty on a property not defined
+      in a propertysheet is working properly.
+      """
+      person = self.getPersonModule().newContent(portal_type='Person')
+      self.assertEquals(person.getProperty('foo_bar'), None)
+      person.setProperty('foo_bar', 'foo')
+      self.assertEquals(person.getProperty('foo_bar'), 'foo')
+      self.assertEquals(person.getPropertyList('foo_bar_list'), None)
+      person.setProperty('foo_bar_list', ['foo', 'bar'])
+      self.assertEquals(list(person.getProperty('foo_bar_list')), ['foo', 'bar'])
+
 class TestAccessControl(ERP5TypeTestCase):
   # Isolate test in a dedicaced class in order not to break other tests
   # when this one fails.