diff --git a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
index 861fc401dca9595b1c6f98035c04c0a3a4be8d14..6e29fa66ad6fd6b45c53c13fa63215df3957d78e 100644
--- a/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
+++ b/src/main/java/org/olat/core/commons/editor/htmleditor/HTMLEditorController.java
@@ -152,11 +152,12 @@ public class HTMLEditorController extends FormBasicController {
 	}
 	
 	
-	public HTMLEditorController(UserRequest ureq, WindowControl wControl, VFSContainer baseContainer, String relFilePath,
-			CustomLinkTreeModel customLinkTreeModel, String mediaPath, boolean editorCheckEnabled, boolean versions, boolean withButtons, Form rootForm) {
+	public HTMLEditorController(UserRequest ureq, WindowControl wControl, VFSContainer baseContainer,
+			String relFilePath, CustomLinkTreeModel customLinkTreeModel, String mediaPath, boolean editorCheckEnabled,
+			boolean versions, boolean withButtons, VFSEdusharingProvider edusharingProvider, Form rootForm) {
 		super(ureq, wControl, LAYOUT_CUSTOM, "htmleditor", rootForm);
 		// set some basic variables
-		initEditorForm(baseContainer, relFilePath, customLinkTreeModel, mediaPath, editorCheckEnabled, versions, withButtons, null);
+		initEditorForm(baseContainer, relFilePath, customLinkTreeModel, mediaPath, editorCheckEnabled, versions, withButtons, edusharingProvider);
 		initForm(ureq);
 	}
 	
diff --git a/src/main/java/org/olat/core/commons/editor/htmleditor/WysiwygFactory.java b/src/main/java/org/olat/core/commons/editor/htmleditor/WysiwygFactory.java
index f2a71ab35181ee52932ce942974941ed9382fbe2..e4b28a651585c151ce4d262d4e19d771fe2a223f 100644
--- a/src/main/java/org/olat/core/commons/editor/htmleditor/WysiwygFactory.java
+++ b/src/main/java/org/olat/core/commons/editor/htmleditor/WysiwygFactory.java
@@ -84,6 +84,13 @@ public class WysiwygFactory {
 		return new HTMLEditorController(ureq, wControl, rootDir, filePath,
 				null, mediaPath, editorCheckEnabled, versions, null);
 	}
+	
+	public static HTMLEditorController createWysiwygController(UserRequest ureq, WindowControl wControl,
+			VFSContainer rootDir, String filePath, String mediaPath, boolean editorCheckEnabled, boolean versions,
+			VFSEdusharingProvider edusharingProvider) {
+		return new HTMLEditorController(ureq, wControl, rootDir, filePath, null, mediaPath, editorCheckEnabled,
+				versions, edusharingProvider);
+	}
 
 	/**
 	 * Factory method to create a file based HTML editor instance that uses
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 cc5172e939884259b7fd586f3243f351bb49ac6a..fdbacebe0e43b53892af9a5c4421c0de59cb0758 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
@@ -96,12 +96,14 @@ import org.olat.modules.ModuleConfiguration;
 import org.olat.modules.assessment.AssessmentService;
 import org.olat.modules.assessment.Role;
 import org.olat.modules.assessment.model.AssessmentEntryStatus;
+import org.olat.modules.edusharing.EdusharingService;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryRef;
 import org.olat.repository.RepositoryService;
 import org.olat.repository.manager.RepositoryEntryLifecycleDAO;
 import org.olat.repository.manager.RepositoryEntryRelationDAO;
 import org.olat.repository.model.RepositoryEntryLifecycle;
+import org.olat.repository.ui.settings.LazyRepositoryEdusharingProvider;
 import org.olat.resource.OLATResource;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -130,6 +132,8 @@ public class GTAManagerImpl implements GTAManager {
 	@Autowired
 	private AssessmentService assessmentService;
 	@Autowired
+	private EdusharingService edusharingService;
+	@Autowired
 	private RepositoryService repositoryService;
 	@Autowired
 	private BusinessGroupService businessGroupService;
@@ -224,6 +228,7 @@ public class GTAManagerImpl implements GTAManager {
 				if(deleteFile) {
 					VFSContainer tasksContainer = getTasksContainer(courseEnv, cNode);
 					VFSItem item = tasksContainer.resolve(removedTask.getFilename());
+					deleteEdusharingUsages(courseEnv, item);
 					if(item != null) {
 						item.delete();
 					}
@@ -233,6 +238,13 @@ public class GTAManagerImpl implements GTAManager {
 		});
 		
 	}
+	
+	private void deleteEdusharingUsages(CourseEnvironment courseEnv, VFSItem item) {
+		Long repositoryEntryKey = courseEnv.getCourseGroupManager().getCourseEntry().getKey();
+		LazyRepositoryEdusharingProvider edusharingProvider = new LazyRepositoryEdusharingProvider(repositoryEntryKey);
+		edusharingProvider.setSubPath(item);
+		edusharingService.deleteUsages(edusharingProvider);
+	}
 
 	@Override
 	public void updateTaskDefinition(String currentFilename, TaskDefinition task, CourseEnvironment courseEnv, GTACourseNode cNode) {
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/AbstractAssignmentEditController.java b/src/main/java/org/olat/course/nodes/gta/ui/AbstractAssignmentEditController.java
index a4d87ab060594eb27c190c1fe57166b7053c7564..3ec4dc422a9624b941ad803040c458edb9796bf6 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/AbstractAssignmentEditController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/AbstractAssignmentEditController.java
@@ -66,6 +66,8 @@ import org.olat.course.nodes.gta.model.TaskDefinition;
 import org.olat.course.nodes.gta.ui.TaskDefinitionTableModel.TDCols;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.modules.ModuleConfiguration;
+import org.olat.modules.edusharing.VFSEdusharingProvider;
+import org.olat.repository.ui.settings.LazyRepositoryEdusharingProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**
@@ -94,6 +96,7 @@ abstract class AbstractAssignmentEditController extends FormBasicController {
 	protected final GTACourseNode gtaNode;
 	protected final CourseEnvironment courseEnv;
 	protected final ModuleConfiguration config;
+	private final Long courseRepoKey;
 	
 	private int linkCounter = 0;
 	
@@ -111,6 +114,7 @@ abstract class AbstractAssignmentEditController extends FormBasicController {
 		this.courseEnv = courseEnv;
 		tasksFolder = gtaManager.getTasksDirectory(courseEnv, gtaNode);
 		tasksContainer = gtaManager.getTasksContainer(courseEnv, gtaNode);
+		courseRepoKey = courseEnv.getCourseGroupManager().getCourseEntry().getKey();
 		initForm(ureq);
 	}
 
@@ -325,8 +329,9 @@ abstract class AbstractAssignmentEditController extends FormBasicController {
 			tasksContainer.createChildLeaf(documentName);
 		}
 
+		VFSEdusharingProvider edusharingProvider = new LazyRepositoryEdusharingProvider(courseRepoKey);
 		newTaskEditorCtrl = WysiwygFactory.createWysiwygController(ureq, getWindowControl(),
-				tasksContainer, documentName, "media", true, true);
+				tasksContainer, documentName, "media", true, true, edusharingProvider);
 		newTaskEditorCtrl.getRichTextConfiguration().disableMedia();
 		newTaskEditorCtrl.getRichTextConfiguration().setAllowCustomMediaFactory(false);
 		newTaskEditorCtrl.setNewFile(true);
@@ -343,7 +348,7 @@ abstract class AbstractAssignmentEditController extends FormBasicController {
 		if(htmlDocument == null || !(htmlDocument instanceof VFSLeaf)) {
 			showError("error.missing.file");
 		} else {
-			editTaskEditorCtrl = new EditHTMLTaskController(ureq, getWindowControl(), taskDef, tasksContainer);
+			editTaskEditorCtrl = new EditHTMLTaskController(ureq, getWindowControl(), taskDef, tasksContainer, courseRepoKey );
 			listenTo(editTaskEditorCtrl);
 			
 			cmc = new CloseableModalController(getWindowControl(), "close", editTaskEditorCtrl.getInitialComponent());
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/EditHTMLTaskController.java b/src/main/java/org/olat/course/nodes/gta/ui/EditHTMLTaskController.java
index a7d7a42913f86b9673192af06377aefe9f05487a..0d3bb1f3a95e1429f034175c81bc04d96e1afbaf 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/EditHTMLTaskController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/EditHTMLTaskController.java
@@ -32,6 +32,8 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.vfs.VFSContainer;
 import org.olat.course.nodes.gta.model.TaskDefinition;
+import org.olat.modules.edusharing.VFSEdusharingProvider;
+import org.olat.repository.ui.settings.LazyRepositoryEdusharingProvider;
 
 /**
  * 
@@ -48,13 +50,15 @@ public class EditHTMLTaskController extends FormBasicController {
 	private final VFSContainer taskContainer;
 	
 	private final String filenameToReplace;
+	private final Long repositoryEntryKey;
 	
 	public EditHTMLTaskController(UserRequest ureq, WindowControl wControl,
-			TaskDefinition task, VFSContainer taskContainer) {
+			TaskDefinition task, VFSContainer taskContainer, Long repositoryEntryKey) {
 		super(ureq, wControl, LAYOUT_VERTICAL);
 		this.task = task;
 		this.filenameToReplace = task != null ? task.getFilename() : null;
 		this.taskContainer = taskContainer;
+		this.repositoryEntryKey = repositoryEntryKey;
 		initForm(ureq);
 	}
 	
@@ -78,7 +82,8 @@ public class EditHTMLTaskController extends FormBasicController {
 		String description = task.getDescription() == null ? "" : task.getDescription();
 		descriptionEl = uifactory.addTextAreaElement("descr", "task.description", 2048, 10, -1, true, false, description, formLayout);
 
-		contentEditor = new HTMLEditorController(ureq, getWindowControl(), taskContainer, task.getFilename(), null, "media", true, false, false, mainForm);
+		VFSEdusharingProvider edusharingProvider = new LazyRepositoryEdusharingProvider(repositoryEntryKey);
+		contentEditor = new HTMLEditorController(ureq, getWindowControl(), taskContainer, task.getFilename(), null, "media", true, false, false, edusharingProvider , mainForm);
 		contentEditor.getRichTextConfiguration().disableMedia();
 		contentEditor.getRichTextConfiguration().setAllowCustomMediaFactory(false);
 		listenTo(contentEditor);
diff --git a/src/main/java/org/olat/modules/edusharing/EdusharingService.java b/src/main/java/org/olat/modules/edusharing/EdusharingService.java
index 1939bc99566f2110504ab7c59366a0ed615b9e85..cb9a61241495d275b60ce64e47c104a74aa50606 100644
--- a/src/main/java/org/olat/modules/edusharing/EdusharingService.java
+++ b/src/main/java/org/olat/modules/edusharing/EdusharingService.java
@@ -74,6 +74,8 @@ public interface EdusharingService {
 
 	public void deleteUsage(Identity identity, String identifier) throws EdusharingException;
 	
-	public void deleteUsages(OLATResourceable ores, String subPath) throws EdusharingException;
+	public void deleteUsages(EdusharingProvider edusharingProvider);
 	
+	public void deleteUsages(OLATResourceable ores, String subPath) throws EdusharingException;
+
 }
diff --git a/src/main/java/org/olat/modules/edusharing/manager/EdusharingServiceImpl.java b/src/main/java/org/olat/modules/edusharing/manager/EdusharingServiceImpl.java
index b2103249ea2843f183713e8445affa6bd8e294b6..e321aa745e36c13ffbd2bebb2d5da98afb8fbce6 100644
--- a/src/main/java/org/olat/modules/edusharing/manager/EdusharingServiceImpl.java
+++ b/src/main/java/org/olat/modules/edusharing/manager/EdusharingServiceImpl.java
@@ -257,6 +257,11 @@ public class EdusharingServiceImpl implements EdusharingService {
 
 		deleteUsage(usage, userIdentifier);
 	}
+
+	@Override
+	public void deleteUsages(EdusharingProvider edusharingProvider) {
+		deleteUsages(edusharingProvider.getOlatResourceable(), edusharingProvider.getSubPath());
+	}
 	
 	@Override
 	public void deleteUsages(OLATResourceable ores, String subPath) throws EdusharingException {
@@ -267,6 +272,14 @@ public class EdusharingServiceImpl implements EdusharingService {
 	}
 
 	private void deleteUsage(EdusharingUsage usage, String userIdentifier) {
+		try {
+			tryDeleteUsage(usage, userIdentifier);
+		} catch (Exception e) {
+			log.warn("edu-sharing usage deleted failed for identifier: " + usage.getIdentifier());
+		}
+	}
+
+	private void tryDeleteUsage(EdusharingUsage usage, String userIdentifier) {
 		DeleteUsageParameter parameter = new DeleteUsageParameter(
 				usage.getIdentifier(),
 				usage.getObjectUrl(),