diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractTypeDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractTypeDAO.java
index cf2fdcf0a06abecdcf0f4364e479ee1a73c626ab..814c7f3561e67169735fe269297b6adc0950b07d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractTypeDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractTypeDAO.java
@@ -78,8 +78,8 @@ abstract class AbstractTypeDAO<T extends AbstractTypePE> extends AbstractDAO
         if (operationLog.isDebugEnabled())
         {
             operationLog.debug(String.format("%s(%s,%s): Entity type '%s' has been found.",
-                    MethodUtils.describeMethod(MethodUtils.getCurrentMethod()), code,
-                    appendDatabaseInstance, entity, list.size()));
+                    MethodUtils.getCurrentMethod().getName(), code, appendDatabaseInstance, entity,
+                    list.size()));
         }
         return entity;
     }
@@ -102,8 +102,7 @@ abstract class AbstractTypeDAO<T extends AbstractTypePE> extends AbstractDAO
         if (operationLog.isDebugEnabled())
         {
             operationLog.debug(String.format("%s(%s): %d entity type(s) have been found.",
-                    MethodUtils.describeMethod(MethodUtils.getCurrentMethod()),
-                    appendDatabaseInstance, list.size()));
+                    MethodUtils.getCurrentMethod().getName(), appendDatabaseInstance, list.size()));
         }
         return list;
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DatabaseInstanceDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DatabaseInstanceDAO.java
index 0c0299632ec70a93cabd1d8e4cc0be04cce4601f..0f2e682b82f4023a8109b22d36e0693b5d61f1bb 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DatabaseInstanceDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/DatabaseInstanceDAO.java
@@ -26,6 +26,7 @@ import org.springframework.orm.hibernate3.HibernateTemplate;
 
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.common.utilities.MethodUtils;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDatabaseInstanceDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.CodeConverter;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
@@ -135,8 +136,8 @@ final class DatabaseInstanceDAO extends AbstractDAO implements IDatabaseInstance
         final List<DatabaseInstancePE> list = cast(getHibernateTemplate().loadAll(ENTITY_CLASS));
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("listDatabaseInstances(): " + list.size()
-                    + " database instance(s) have been found.");
+            operationLog.debug(String.format("%d database instance(s) have been found.", list
+                    .size()));
         }
         return list;
 
@@ -149,8 +150,8 @@ final class DatabaseInstanceDAO extends AbstractDAO implements IDatabaseInstance
                 (DatabaseInstancePE) getHibernateTemplate().load(ENTITY_CLASS, databaseInstanceId);
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("getDatabaseInstanceById(" + databaseInstanceId + "): '"
-                    + databaseInstance + "'.");
+            operationLog.debug(String.format("%s(%d): '%s'.", MethodUtils.getCurrentMethod()
+                    .getName(), databaseInstanceId, databaseInstance));
         }
         return databaseInstance;
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/GroupDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/GroupDAO.java
index 173e5774ccd7feeb50cee86d270ad89a441c2d19..847d38a51401e263bcb44a5787250d096c22c1dc 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/GroupDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/GroupDAO.java
@@ -28,6 +28,7 @@ import org.springframework.orm.hibernate3.HibernateTemplate;
 
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.common.utilities.MethodUtils;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IGroupDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.CodeConverter;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
@@ -74,8 +75,8 @@ final class GroupDAO extends AbstractDAO implements IGroupDAO
         final GroupPE entity = tryFindEntity(list, "group");
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("tryFindGroupByCodeAndDatabaseInstance(" + groupCode + ", "
-                    + databaseInstance + "): '" + entity + "'");
+            operationLog.debug(String.format("%s(%s, %s): '%s'.", MethodUtils.getCurrentMethod()
+                    .getName(), groupCode, databaseInstance, entity));
         }
         return entity;
     }
@@ -85,7 +86,8 @@ final class GroupDAO extends AbstractDAO implements IGroupDAO
         final List<GroupPE> list = cast(getHibernateTemplate().loadAll(ENTITY_CLASS));
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("listGroups(): " + list.size() + " group(s) have been found.");
+            operationLog.debug(String.format("%s(): %d group(s) have been found.", MethodUtils
+                    .getCurrentMethod().getName(), list.size()));
         }
         return list;
     }
@@ -100,8 +102,8 @@ final class GroupDAO extends AbstractDAO implements IGroupDAO
         final List<GroupPE> list = cast(getHibernateTemplate().findByCriteria(criteria));
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("listGroups(" + databaseInstance.getCode() + "): " + list.size()
-                    + " group(s) have been found.");
+            operationLog.debug(String.format("%s(%s): %d group(s) have been found.", MethodUtils
+                    .getCurrentMethod().getName(), databaseInstance, list.size()));
         }
         return list;
     }
@@ -111,7 +113,8 @@ final class GroupDAO extends AbstractDAO implements IGroupDAO
         final GroupPE group = (GroupPE) getHibernateTemplate().load(ENTITY_CLASS, groupId);
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("getGroupById(" + groupId + "): '" + group + "'.");
+            operationLog.debug(String.format("%s(%d): '%s'.", MethodUtils.getCurrentMethod()
+                    .getName(), groupId, group));
         }
         return group;
     }
@@ -119,6 +122,8 @@ final class GroupDAO extends AbstractDAO implements IGroupDAO
     public final void createGroup(final GroupPE group) throws DataAccessException
     {
         assert group != null : "Unspecified group";
+        // TODO 2008-12-28, Christian Ribeaud: This is a business rule. Find a better location for
+        // this.
         assert group.getDatabaseInstance().isOriginalSource() : "Registration on a non-home database is not allowed";
         validatePE(group);
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/PersonDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/PersonDAO.java
index 905166154bf3e42f5c9571a2b4686b24c87f5773..740c1136746c95705d8d0454d5731a98b949253b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/PersonDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/PersonDAO.java
@@ -26,6 +26,7 @@ import org.springframework.orm.hibernate3.HibernateTemplate;
 
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.common.utilities.MethodUtils;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IPersonDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
@@ -111,7 +112,8 @@ public final class PersonDAO extends AbstractDAO implements IPersonDAO
         final PersonPE person = tryFindEntity(persons, "persons", userId);
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("tryFindPersonIdByUserID(" + userId + "): '" + person + "'.");
+            operationLog.debug(String.format("%s(%s): '%s'.", MethodUtils.getCurrentMethod()
+                    .getName(), userId, person));
         }
         return person;
     }
@@ -124,7 +126,8 @@ public final class PersonDAO extends AbstractDAO implements IPersonDAO
                                 .getSimpleName()), toArray(getDatabaseInstance())));
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("listPersons(): " + list.size() + " person(s) have been found.");
+            operationLog.debug(String.format("%s(): %d person(s) have been found.", MethodUtils
+                    .getCurrentMethod().getName(), list.size()));
         }
         return list;
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/PropertyTypeDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/PropertyTypeDAO.java
index 48b6da4c16d2553cb860df293fc0a5755400373a..7be2e61724d34b15c40c9c8fdf00559b5edcad67 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/PropertyTypeDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/PropertyTypeDAO.java
@@ -25,6 +25,7 @@ import org.springframework.jdbc.support.JdbcAccessor;
 
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.common.utilities.MethodUtils;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IPropertyTypeDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.CodeConverter;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
@@ -69,7 +70,8 @@ final class PropertyTypeDAO extends AbstractDAO implements IPropertyTypeDAO
         final PropertyTypePE entity = tryFindEntity(list, "type");
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("tryFindPropertyTypeByCode(" + code + "): '" + entity + "'");
+            operationLog.debug(String.format("%s(%s): '%s'.", MethodUtils.getCurrentMethod()
+                    .getName(), code, entity));
         }
         return entity;
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/RoleAssignmentDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/RoleAssignmentDAO.java
index 2004ebec6501e87f03b0f3e3f86f818e0526aec4..646b9d03dfee4dcb3945c13a4c890b25fe3841c4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/RoleAssignmentDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/RoleAssignmentDAO.java
@@ -27,6 +27,7 @@ import org.springframework.orm.hibernate3.HibernateTemplate;
 
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
+import ch.systemsx.cisd.common.utilities.MethodUtils;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IRoleAssignmentDAO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
@@ -65,8 +66,8 @@ public final class RoleAssignmentDAO extends AbstractDAO implements IRoleAssignm
         final List<RoleAssignmentPE> list = cast(getHibernateTemplate().loadAll(ENTITY_CLASS));
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("listRoleAssignments(): " + list.size()
-                    + " role assignment(s) have been found.");
+            operationLog.debug(String.format("%s(): %d role assignment(s) have been found.",
+                    MethodUtils.getCurrentMethod().getName(), list.size()));
         }
         return list;
     }
@@ -80,8 +81,8 @@ public final class RoleAssignmentDAO extends AbstractDAO implements IRoleAssignm
         final List<RoleAssignmentPE> list = cast(getHibernateTemplate().findByCriteria(criteria));
         if (operationLog.isDebugEnabled())
         {
-            operationLog.debug("listRoleAssignmentsByPersonId(" + person + "): " + list.size()
-                    + " role assignment(s) have been found.");
+            operationLog.debug(String.format("%s(%s): %d role assignment(s) have been found.",
+                    MethodUtils.getCurrentMethod().getName(), person, list.size()));
         }
         return list;
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleTypeDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleTypeDAO.java
index 1ba0968c9215f15c875a2d49ece2d0c9d4387dfe..7b5a76086bd40acb4742cff2e1faf0185d7f2b58 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleTypeDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleTypeDAO.java
@@ -82,8 +82,7 @@ final class SampleTypeDAO extends AbstractTypeDAO<SampleTypePE> implements ISamp
         if (operationLog.isDebugEnabled())
         {
             operationLog.debug(String.format("%s(%s): %d sample type(s) have been found.",
-                    MethodUtils.describeMethod(MethodUtils.getCurrentMethod()), onlyListable, list
-                            .size()));
+                    MethodUtils.getCurrentMethod().getName(), onlyListable, list.size()));
         }
         return list;
     }
@@ -98,7 +97,7 @@ final class SampleTypeDAO extends AbstractTypeDAO<SampleTypePE> implements ISamp
         if (operationLog.isDebugEnabled())
         {
             operationLog.debug(String.format("%s(%s): Sample type '%s' found.", MethodUtils
-                    .describeMethod(MethodUtils.getCurrentMethod()), sampleType, result));
+                    .getCurrentMethod().getName(), sampleType, result));
         }
         return result;
     }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleTypeDAOTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleTypeDAOTest.java
index e4c1beae4438bba7a81e362810f4375c11c13f0f..90b0760cc6a76975b17a6e6f15d47b160ca3dfae 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleTypeDAOTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/SampleTypeDAOTest.java
@@ -179,7 +179,7 @@ public final class SampleTypeDAOTest extends AbstractDAOTest
         final SampleTypePE sampleType = sampleTypeDAO.tryFindSampleTypeByExample(example);
         checkSampleType(sampleType);
         assertEquals(
-                "SampleTypeDAO.tryFindSampleTypeByExample(SampleTypePE{"
+                "tryFindSampleTypeByExample(SampleTypePE{"
                         + "code=MASTER_PLATE,description=<null>,databaseInstance=<null>,listable=<null>,"
                         + "containerHierarchyDepth=<null>,generatedFromHierarchyDepth=<null>}): Sample type "
                         + "'SampleTypePE{code=MASTER_PLATE,description=Master Plate,"