diff --git a/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java b/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java
index d5ec967011298193ffed8b3c51387ca877a72599..5ab9c6ba2bb220e9dc0b46ea9e91585b15a46b9a 100644
--- a/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java
+++ b/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java
@@ -737,24 +737,30 @@ public class GTAManagerImpl implements GTAManager, DeletableGroupData {
 				.createQuery(deleteTasks)
 				.setParameter("groupKey", group.getKey())
 				.executeUpdate();
-		return true;	
-
+		return true;
 	}
 
 	@Override
 	public int deleteTaskList(RepositoryEntryRef entry, GTACourseNode cNode) {
 		TaskList taskList = getTaskList(entry, cNode);
 		
-		int numOfDeletedObjects;
+		int numOfDeletedObjects = 0;
 		if(taskList != null) {
+			StringBuilder sb = new StringBuilder(128);
+			sb.append("delete from gtataskrevisiondate as taskrev where taskrev.task.key in (")
+			  .append("  select task.key from gtatask as task where task.taskList.key=:taskListKey)");
+			numOfDeletedObjects += dbInstance.getCurrentEntityManager()
+				.createQuery(sb.toString())
+				.setParameter("taskListKey", taskList.getKey())
+				.executeUpdate();
+			
+			
 			String deleteTasks = "delete from gtatask as task where task.taskList.key=:taskListKey";
-			int numOfTasks = dbInstance.getCurrentEntityManager().createQuery(deleteTasks)
+			numOfDeletedObjects += dbInstance.getCurrentEntityManager().createQuery(deleteTasks)
 				.setParameter("taskListKey", taskList.getKey())
 				.executeUpdate();
 			dbInstance.getCurrentEntityManager().remove(taskList);
-			numOfDeletedObjects = numOfTasks + 1;
-		} else {
-			numOfDeletedObjects = 0;
+			numOfDeletedObjects += 1;
 		}
 		return numOfDeletedObjects;
 	}
diff --git a/src/test/java/org/olat/course/nodes/gta/manager/GTAManagerTest.java b/src/test/java/org/olat/course/nodes/gta/manager/GTAManagerTest.java
index 899b5a35b578395071a8cf75a4f0858a8f1fad34..d79e8ead914e0e7526f8fdf0866ff2d5d5939946 100644
--- a/src/test/java/org/olat/course/nodes/gta/manager/GTAManagerTest.java
+++ b/src/test/java/org/olat/course/nodes/gta/manager/GTAManagerTest.java
@@ -441,6 +441,46 @@ public class GTAManagerTest extends OlatTestCase {
 		Assert.assertEquals(0, deletedAssignedTasks.size());
 	}
 	
+	@Test
+	public void deleteTaskList_withRevisionDates() {
+		Identity coach = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-9");
+		Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-10");
+		BusinessGroup businessGroup = businessGroupDao.createAndPersist(coach, "gdao", "gdao-desc", -1, -1, false, false, false, false, false);
+		businessGroupRelationDao.addRole(participant, businessGroup, GroupRole.participant.name());
+		dbInstance.commit();
+		RepositoryEntry re = deployGTACourse();
+		GTACourseNode node = getGTACourseNode(re);
+		node.getModuleConfiguration().setStringValue(GTACourseNode.GTASK_TYPE, GTAType.group.name());
+		TaskList tasks = gtaManager.createIfNotExists(re, node);
+		File taskFile = new File("bg.txt");
+		Assert.assertNotNull(tasks);
+		dbInstance.commit();
+		
+		//select
+		AssignmentResponse response = gtaManager.selectTask(businessGroup, tasks, node, taskFile);
+		dbInstance.commitAndCloseSession();
+		Assert.assertNotNull(response);
+		
+		//check that there is tasks
+		List<Task> assignedTasks = gtaManager.getTasks(participant, re, node);
+		Assert.assertNotNull(assignedTasks);
+		Assert.assertEquals(1, assignedTasks.size());
+		
+		// create a revision date
+		gtaManager.createAndPersistTaskRevisionDate(assignedTasks.get(0), 2, TaskProcess.correction);
+		dbInstance.commitAndCloseSession();
+		
+		//delete
+		int numOfDeletedObjects = gtaManager.deleteTaskList(re, node);
+		Assert.assertEquals(3, numOfDeletedObjects);
+		dbInstance.commitAndCloseSession();
+		
+		//check that there isn't any tasks
+		List<Task> deletedAssignedTasks = gtaManager.getTasks(participant, re, node);
+		Assert.assertNotNull(deletedAssignedTasks);
+		Assert.assertEquals(0, deletedAssignedTasks.size());
+	}
+	
 	/**
 	 * Create 2 pseudo nodes in a course, and delete the task of the first node
 	 * and check that the task of second are always there.
@@ -485,13 +525,20 @@ public class GTAManagerTest extends OlatTestCase {
 		Assert.assertNotNull(assignedTasks1);
 		Assert.assertEquals(1, assignedTasks1.size());
 		
+		// create a revision date
+		gtaManager.createAndPersistTaskRevisionDate(assignedTasks1.get(0), 2, TaskProcess.correction);
+		
 		List<Task> assignedTasks2 = gtaManager.getTasks(participant, re, node2);
 		Assert.assertNotNull(assignedTasks2);
 		Assert.assertEquals(1, assignedTasks2.size());
 		
+		// create a revision date
+		gtaManager.createAndPersistTaskRevisionDate(assignedTasks2.get(0), 2, TaskProcess.correction);
+		dbInstance.commitAndCloseSession();
+		
 		//delete
 		int numOfDeletedObjects = gtaManager.deleteTaskList(re, node1);
-		Assert.assertEquals(2, numOfDeletedObjects);
+		Assert.assertEquals(3, numOfDeletedObjects);
 		dbInstance.commitAndCloseSession();
 		
 		//check that there isn't any tasks in node 1
@@ -499,12 +546,22 @@ public class GTAManagerTest extends OlatTestCase {
 		Assert.assertNotNull(deletedAssignedTasks);
 		Assert.assertEquals(0, deletedAssignedTasks.size());
 		
+		List<TaskRevisionDate> revisionsTask1 = gtaManager.getTaskRevisions(assignedTasks1.get(0));
+		Assert.assertNotNull(revisionsTask1);
+		Assert.assertEquals(0, revisionsTask1.size());
+		
 		//but always in node 2
 		List<Task> notDeletedAssignedTasks2 = gtaManager.getTasks(participant, re, node2);
 		Assert.assertNotNull(notDeletedAssignedTasks2);
 		Assert.assertEquals(1, notDeletedAssignedTasks2.size());
+		
+		List<TaskRevisionDate> revisionsTask2 = gtaManager.getTaskRevisions(notDeletedAssignedTasks2.get(0));
+		Assert.assertNotNull(revisionsTask2);
+		Assert.assertEquals(1, revisionsTask2.size());
 	}
 	
+
+	
 	@Test
 	public void deleteAllTaskLists() {
 		Identity coach = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-9");