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 2d80e25fcce44ebee08fdf3445eae60f6393ee1c..4c7f8ffe09a4ff012f95777423c1df312fbb9e97 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
@@ -37,16 +37,17 @@ import java.util.concurrent.atomic.AtomicInteger;
 import javax.persistence.LockModeType;
 import javax.persistence.Query;
 
+import org.apache.logging.log4j.Logger;
 import org.hibernate.LazyInitializationException;
 import org.olat.basesecurity.GroupRoles;
 import org.olat.basesecurity.IdentityRef;
 import org.olat.core.commons.modules.bc.FolderConfig;
 import org.olat.core.commons.persistence.DB;
+import org.olat.core.commons.persistence.QueryBuilder;
 import org.olat.core.commons.services.notifications.NotificationsManager;
 import org.olat.core.commons.services.notifications.PublisherData;
 import org.olat.core.commons.services.notifications.SubscriptionContext;
 import org.olat.core.id.Identity;
-import org.apache.logging.log4j.Logger;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.FileUtils;
 import org.olat.core.util.StringHelper;
@@ -755,6 +756,31 @@ public class GTAManagerImpl implements GTAManager {
 
 		return tasks.isEmpty() ? null : tasks.get(0);
 	}
+	
+	/**
+	 * Load the task list with the underlying repository
+	 * entry (full).
+	 * 
+	 * @param task
+	 * @return
+	 */
+	public TaskList getTaskList(TaskRef task ) {
+		QueryBuilder sb = new QueryBuilder();
+		sb.append("select taskList from gtatask task")
+		  .append(" inner join task.taskList as taskList")
+		  .append(" inner join fetch taskList.entry as v")
+		  .append(" inner join fetch v.olatResource as ores")
+		  .append(" inner join fetch v.statistics as statistics")
+		  .append(" left join fetch v.lifecycle as lifecycle")
+		  .append(" where task.key=:taskKey");
+		
+		List<TaskList> tasks = dbInstance.getCurrentEntityManager()
+			.createQuery(sb.toString(), TaskList.class)
+			.setParameter("taskKey", task.getKey())
+			.getResultList();
+
+		return tasks.isEmpty() ? null : tasks.get(0);
+	}
 
 	@Override
 	public int deleteTaskList(RepositoryEntryRef entry, GTACourseNode cNode) {
@@ -1690,7 +1716,8 @@ public class GTAManagerImpl implements GTAManager {
 	private void syncAssessmentEntry(TaskImpl taskImpl, GTACourseNode cNode, Role by) {
 		if(taskImpl == null || taskImpl.getTaskStatus() == null || cNode == null) return;
 		
-		RepositoryEntry courseRepoEntry = taskImpl.getTaskList().getEntry();
+		TaskList taskList = getTaskList(taskImpl);
+		RepositoryEntry courseRepoEntry = taskList.getEntry();
 		AssessmentEntryStatus assessmentStatus = convertToAssessmentEntrystatus(taskImpl, cNode);
 		if(GTAType.group.name().equals(cNode.getModuleConfiguration().getStringValue(GTACourseNode.GTASK_TYPE))) {
 			//update whole group
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 54f23a9f321ce5a76dec3e872b216b0a269b01e5..20591c75358400f6b790600d045bfd73e26bea3a 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
@@ -194,6 +194,44 @@ public class GTAManagerTest extends OlatTestCase {
 		Assert.assertEquals(1, assignedTasks.size());
 	}
 	
+	@Test
+	public void getTaskList_byTask() {
+		Identity coach = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-3");
+		Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("gta-user-4");
+		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);
+		
+		List<Task> assignedTasks = gtaManager.getTasks(participant, re, node);
+		Assert.assertNotNull(assignedTasks);
+		Assert.assertEquals(1, assignedTasks.size());
+		
+		//reload and check
+		TaskList reloadedTasks = gtaManager.getTaskList(assignedTasks.get(0));
+		dbInstance.commitAndCloseSession();// entry nneed to be fetched
+		Assert.assertNotNull(reloadedTasks);
+		Assert.assertEquals(tasks, reloadedTasks);
+		Assert.assertTrue(reloadedTasks instanceof TaskListImpl);
+		TaskListImpl tasksImpl = (TaskListImpl)reloadedTasks;
+		Assert.assertNotNull(tasksImpl.getCreationDate());
+		Assert.assertNotNull(tasksImpl.getLastModified());
+		Assert.assertEquals(re, tasksImpl.getEntry());
+		Assert.assertEquals(node.getIdent(), tasksImpl.getCourseNodeIdent());
+		dbInstance.commit();
+	}
+	
 	@Test
 	public void isTaskAssigned() {
 		//create an individual task