diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java b/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java
index dafb0d94157a10379736d4bf769c43b129728445..7be7a27b10dbc7547605bfc2bebbcec7897a1540 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java
@@ -432,7 +432,14 @@ public class RepositoryEntryMyCourseQueries {
 		return needIdentityKey;
 	}
 	
-
+	/**
+	 * Append additional informations and values to the select part of the query
+	 * needed by the order by.
+	 * 
+	 * @param params
+	 * @param sb
+	 * @return
+	 */
 	private boolean appendOrderByInSelect(SearchMyRepositoryEntryViewParams params, StringBuilder sb) {
 		boolean needIdentityKey = false;
 		OrderBy orderBy = params.getOrderBy();
@@ -493,7 +500,12 @@ public class RepositoryEntryMyCourseQueries {
 					appendAsc(sb, asc).append(" nulls last, lower(v.displayname) asc");
 					break;
 				case title:
-					sb.append(" order by lower(v.displayname)");
+					//life cycle always sorted from the newer to the older.
+					if(asc) {
+						sb.append(" order by lower(v.displayname) asc, lifecycle.validFrom desc nulls last, lower(v.externalRef) asc nulls last");
+					} else {
+						sb.append(" order by lower(v.displayname) desc, lifecycle.validFrom desc nulls last, lower(v.externalRef) desc nulls last");
+					}
 					appendAsc(sb, asc);
 					break;
 				case lifecycle:
diff --git a/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java b/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java
index 0d04ac51404a3d514b1b90ab355faa385044c3a0..8788bde88c45cf372ae029de33b1bb63e2ff3121 100644
--- a/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java
+++ b/src/test/java/org/olat/repository/manager/RepositoryEntryAuthorQueriesTest.java
@@ -35,6 +35,9 @@ import org.olat.test.OlatTestCase;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**
+ * 
+ * Check if the query with the sort argument are "playable" but don't
+ * check if the order by goes in the right direction.
  * 
  * Initial date: 04.06.2014<br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
diff --git a/src/test/java/org/olat/repository/manager/RepositoryEntryMyCourseQueriesTest.java b/src/test/java/org/olat/repository/manager/RepositoryEntryMyCourseQueriesTest.java
index 6c8eea49383b94651dbe61fa08f04f9480c3cea8..ea91b3d13ab4c3fd2e8f48b8d3b500df995a2569 100644
--- a/src/test/java/org/olat/repository/manager/RepositoryEntryMyCourseQueriesTest.java
+++ b/src/test/java/org/olat/repository/manager/RepositoryEntryMyCourseQueriesTest.java
@@ -35,6 +35,8 @@ import org.olat.test.OlatTestCase;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**
+ * Check if the query with the sort argument are "playable" but don't
+ * check if the order by goes in the right direction.
  * 
  * Initial date: 04.06.2014<br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com