diff --git a/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java b/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java
index ebd0744b91ffc567476de5b5f71e5339d73830ff..94c52b6eab73c255665ec5983281c7c689d848f2 100644
--- a/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java
+++ b/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java
@@ -166,16 +166,27 @@ public class DefaultColumnDescriptor implements ColumnDescriptor {
 	}
 	
 	protected int compareString(final String a, final String b) {
-		return collator.compare(a, b);
+		if (a == null || b == null) {
+			return compareNullObjects(a, b);
+		}
+		return collator == null ? a.compareTo(b) : collator.compare(a, b);
 	}
 
 	protected int compareBooleans(final Boolean a, final Boolean b) {
+		if (a == null || b == null) {
+			return compareNullObjects(a, b);
+		}
+		
 		boolean ba = a.booleanValue();
 		boolean bb = b.booleanValue();
 		return ba? (bb? 0: -1):(bb? 1: 0);
 	}
 	
 	protected int compareDateAndTimestamps(Date a, Date b) {
+		if (a == null || b == null) {
+			return compareNullObjects(a, b);
+		}
+		
 		if (a instanceof Timestamp) { // a timestamp (a) cannot compare a date (b), but vice versa is ok.
 			if(b instanceof Timestamp) {
 				return ((Timestamp)a).compareTo((Timestamp)b);