diff --git a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java
index 1c593e34cdbad8ce6f4720a437d19706f3175927..6cb68286719922c2d8c507d6eaeeb3649a3e4b97 100644
--- a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java
+++ b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java
@@ -595,14 +595,10 @@ public class MailManagerImpl extends BasicManager implements MailManager {
 		File baseFolder = new File(WebappHelper.getUserDataRoot(), MAIL_TEMPLATE_FOLDER);	
 		File template = new File(baseFolder, "mail_template.html");
 		if(template.exists()) {
-			InputStream in = null;
-			try {
-				in = new FileInputStream(template);
+			try(InputStream in = new FileInputStream(template)) {
 				return IOUtils.toString(in);
 			} catch (IOException e) {
 				logError("", e);
-			} finally {
-				IOUtils.closeQuietly(in);
 			}
 		}
 		return getDefaultMailTemplate();
@@ -629,8 +625,7 @@ public class MailManagerImpl extends BasicManager implements MailManager {
 
 	@Override
 	public String getDefaultMailTemplate() {
-		try {
-			InputStream in = MailModule.class.getResourceAsStream("_content/mail_template.html");
+		try(InputStream in = MailModule.class.getResourceAsStream("_content/mail_template.html")) {
 			return IOUtils.toString(in);
 		} catch (IOException e) {
 			logError("Cannot read the default mail template", e);
diff --git a/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java b/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java
index acb83a73615297470926cee6593e48f0e7914781..6106efb167d0c96b94e29c0749e57b8522c868bf 100644
--- a/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java
+++ b/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java
@@ -228,8 +228,7 @@ public class OpenXMLDocument {
 		margins.setAttribute("w:gutter", "0");
 		
 		if(StringHelper.containsNonWhitespace(documentHeader)) {
-			try {
-				InputStream headerIn = OpenXMLDocument.class.getResourceAsStream("_resources/header.xml");
+			try(InputStream headerIn = OpenXMLDocument.class.getResourceAsStream("_resources/header.xml")) {
 				String headerTemplate = IOUtils.toString(headerIn);
 				String header = headerTemplate.replace("[oodocumentitlte]", documentHeader);
 
diff --git a/src/main/java/org/olat/core/util/openxml/OpenXMLDocumentWriter.java b/src/main/java/org/olat/core/util/openxml/OpenXMLDocumentWriter.java
index 39edc71df59e05c8cfc52f45d6a5446ea013c2c8..89d0697d6574f8efa74efb3571e42f3680c2186b 100644
--- a/src/main/java/org/olat/core/util/openxml/OpenXMLDocumentWriter.java
+++ b/src/main/java/org/olat/core/util/openxml/OpenXMLDocumentWriter.java
@@ -124,20 +124,21 @@ public class OpenXMLDocumentWriter {
 	protected void appendMedias(ZipOutputStream out, OpenXMLDocument document)
 	throws IOException {
 		for(DocReference img:document.getImages()) {
-			FileInputStream in = new FileInputStream(img.getFile());
-			ZipEntry wordDocument = new ZipEntry("word/media/" + img.getFile().getName());
-			out.putNextEntry(wordDocument);
-
-			IOUtils.copy(in, out);
-			OpenXMLUtils.writeTo(document.getDocument(), out, false);
-			out.closeEntry();
+			try(FileInputStream in = new FileInputStream(img.getFile())) {
+				ZipEntry wordDocument = new ZipEntry("word/media/" + img.getFile().getName());
+				out.putNextEntry(wordDocument);
+	
+				IOUtils.copy(in, out);
+				OpenXMLUtils.writeTo(document.getDocument(), out, false);
+				out.closeEntry();
+			} catch(Exception e) {
+				log.error("", e);
+			}
 		}
 	}
 	
 	private void appendPredefinedStyles(ZipOutputStream out, OpenXMLStyles styles) {
-		InputStream in = null;
-		try {
-			in = OpenXMLDocumentWriter.class.getResourceAsStream("_resources/styles.xml");
+		try(InputStream in = OpenXMLDocumentWriter.class.getResourceAsStream("_resources/styles.xml")) {
 			if(styles != null) {
 				Document stylesDoc = OpenXMLUtils.createDocument(in);
 				NodeList stylesElList = stylesDoc.getElementsByTagName("w:styles");
@@ -151,8 +152,6 @@ public class OpenXMLDocumentWriter {
 			}
 		} catch (IOException e) {
 			log.error("", e);
-		} finally {
-			IOUtils.closeQuietly(in);
 		}
 	}
 	
diff --git a/src/main/java/org/olat/ims/qti/render/LocalizedXSLTransformer.java b/src/main/java/org/olat/ims/qti/render/LocalizedXSLTransformer.java
index 0e2f8435d4d4b65ec45a5968703116d550d937e1..c2b8bf49b5f0abf2eaca13c8832977b579453e20 100644
--- a/src/main/java/org/olat/ims/qti/render/LocalizedXSLTransformer.java
+++ b/src/main/java/org/olat/ims/qti/render/LocalizedXSLTransformer.java
@@ -173,14 +173,12 @@ public class LocalizedXSLTransformer {
 	 * Helper to create XSLT transformer for this instance
 	 */
 	private void initTransformer() {
-		// build new transformer
-		InputStream xslin = getClass().getResourceAsStream("/org/olat/ims/resources/xsl/" + XSLFILENAME);
 		// translate xsl with velocity
 		Context vcContext = new VelocityContext();
 		vcContext.put("t", pT);
 		vcContext.put("staticPath", StaticMediaDispatcher.createStaticURIFor(""));
 		String xslAsString = "";
-		try {
+		try(InputStream xslin = getClass().getResourceAsStream("/org/olat/ims/resources/xsl/" + XSLFILENAME)) {
 			xslAsString = slurp(xslin);
 		} catch (IOException e) {
 			log.error("Could not convert xsl to string!", e);
diff --git a/src/main/java/org/olat/portfolio/manager/EPStructureManager.java b/src/main/java/org/olat/portfolio/manager/EPStructureManager.java
index 1c9d3ba8e1f344ef8a0ac132155cb95088d85f27..f4497c4fbaa439261c7dcd42160295abe10d0176 100755
--- a/src/main/java/org/olat/portfolio/manager/EPStructureManager.java
+++ b/src/main/java/org/olat/portfolio/manager/EPStructureManager.java
@@ -41,6 +41,7 @@ import org.olat.basesecurity.SecurityGroupMembershipImpl;
 import org.olat.basesecurity.manager.GroupDAO;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.persistence.DB;
+import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.commons.persistence.DBQuery;
 import org.olat.core.commons.persistence.PersistentObject;
 import org.olat.core.commons.services.commentAndRating.CommentAndRatingService;
@@ -961,22 +962,17 @@ public class EPStructureManager extends BasicManager {
 			return;//nothing to delete
 		}
 
-		//already delete in removeStructureRecursively: deletePortfolioMapTemplateRecursively((EPStructureElement)map);
+		if(map instanceof EPAbstractMap) {
+			//owner group has its constraints shared beetwen the repository entry and the template
+			((EPAbstractMap)map).getGroups().clear();
+			map = DBFactory.getInstance().getCurrentEntityManager().merge(map);
+		}
+		
 		removeStructureRecursively(map);
-		//already delete in removeStructureRecursively: dbInstance.deleteObject(map);
+		
+		dbInstance.commit();
 	}
 	
-	/*private void deletePortfolioMapTemplateRecursively(EPStructureElement element) {
-		element.getInternalArtefacts().clear();
-		element.setRoot(null);
-		element.setRootMap(null);
-		List<EPStructureToStructureLink> links = element.getInternalChildren();
-		for(EPStructureToStructureLink subLink:links) {
-			deletePortfolioMapTemplateRecursively((EPStructureElement)subLink.getChild());
-		}
-		links.clear();
-	}*/
-	
 	public void removeStructureRecursively(PortfolioStructure struct){
 		List<PortfolioStructure> children = loadStructureChildren(struct); 
 		for (PortfolioStructure childstruct : children) {
diff --git a/src/main/java/org/olat/repository/handlers/PortfolioHandler.java b/src/main/java/org/olat/repository/handlers/PortfolioHandler.java
index 8e640d14c0d24ade4629e3f9013954aed99fd212..af811b7e78eb227ee91b2dc21e6f8533a1ac47cb 100644
--- a/src/main/java/org/olat/repository/handlers/PortfolioHandler.java
+++ b/src/main/java/org/olat/repository/handlers/PortfolioHandler.java
@@ -180,30 +180,28 @@ public class PortfolioHandler implements RepositoryHandler {
 
 	@Override
 	public boolean readyToDelete(OLATResourceable res, Identity identity, Roles roles, Locale locale, ErrorList errors) {
-		EPFrontendManager ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager");
+		EPFrontendManager ePFMgr = CoreSpringFactory.getImpl(EPFrontendManager.class);
 		PortfolioStructure map = ePFMgr.loadPortfolioStructure(res);
-		if(map != null) {
-			//owner group has its constraints shared beetwen the repository entry and the template
-			((EPAbstractMap)map).setGroups(null);
-		}
 		if(map instanceof EPStructuredMapTemplate) {
 			EPStructuredMapTemplate exercise = (EPStructuredMapTemplate)map;
-			if (ePFMgr.isTemplateInUse(exercise, null, null, null)) return false;
+			if (ePFMgr.isTemplateInUse(exercise, null, null, null)) {
+				return false;
+			}
 		}
+
 		ReferenceManager refM = ReferenceManager.getInstance();
 		String referencesSummary = refM.getReferencesToSummary(res, locale);
 		if (referencesSummary != null) {
 			Translator translator = Util.createPackageTranslator(RepositoryManager.class, locale);
 			errors.setError(translator.translate("details.delete.error.references", new String[] { referencesSummary }));
 			return false;
-		}		
+		}
 		return true;
 	}
 
 	@Override
 	public boolean cleanupOnDelete(OLATResourceable res) {
-		EPFrontendManager ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager");
-		ePFMgr.deletePortfolioMapTemplate(res);
+		CoreSpringFactory.getImpl(EPFrontendManager.class).deletePortfolioMapTemplate(res);
 		return true;
 	}
 
@@ -215,7 +213,7 @@ public class PortfolioHandler implements RepositoryHandler {
 	public MediaResource getAsMediaResource(OLATResourceable res, boolean backwardsCompatible) {
 		MediaResource mr = null;
 
-		EPFrontendManager ePFMgr = (EPFrontendManager)CoreSpringFactory.getBean("epFrontendManager");
+		EPFrontendManager ePFMgr = CoreSpringFactory.getImpl(EPFrontendManager.class);
 		PortfolioStructure structure = ePFMgr.loadPortfolioStructure(res);
 		try {
 			InputStream inOut = EPXStreamHandler.toStream(structure);
diff --git a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java
index c3e5a01e0bfbee050192eb45be830ef08ba9e284..32f943f4dc39f5d44b07e750138eff2e44939c83 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java
@@ -308,7 +308,7 @@ public class RepositoryServiceImpl implements RepositoryService {
 	public void deleteRepositoryEntryAndBaseGroups(RepositoryEntry entry) {
 		RepositoryEntry reloadedEntry = dbInstance.getCurrentEntityManager()
 				.getReference(RepositoryEntry.class, entry.getKey());
-		OLATResource resource = reloadedEntry.getOlatResource();
+		Long resourceKey = reloadedEntry.getOlatResource().getKey();
 
 		Group defaultGroup = reToGroupDao.getDefaultGroup(reloadedEntry);
 		groupDao.removeMemberships(defaultGroup);
@@ -317,8 +317,11 @@ public class RepositoryServiceImpl implements RepositoryService {
 		dbInstance.getCurrentEntityManager().remove(reloadedEntry);
 		groupDao.removeGroup(defaultGroup);
 		dbInstance.commit();
-
-		dbInstance.getCurrentEntityManager().remove(resource);
+		
+		OLATResource reloadedResource = resourceManager.findResourceById(resourceKey);
+		if(reloadedResource != null) {
+			dbInstance.getCurrentEntityManager().remove(reloadedResource);
+		}
 		dbInstance.commit();
 	}
 
diff --git a/src/main/java/org/olat/resource/OLATResourceManager.java b/src/main/java/org/olat/resource/OLATResourceManager.java
index d5d5f7c9af45e92a0ba4fbb2ded8701c59d3a88f..5ae7dd1e60da7f54128609aa3e4eade7b7917488 100644
--- a/src/main/java/org/olat/resource/OLATResourceManager.java
+++ b/src/main/java/org/olat/resource/OLATResourceManager.java
@@ -200,7 +200,7 @@ public class OLATResourceManager extends BasicManager {
 		List<OLATResource> resources = dbInstance.getCurrentEntityManager()
 				.createQuery(s, OLATResource.class)
 				.setParameter("resname", type)
-				.setParameter("resid", resourceableId.longValue())
+				.setParameter("resid", resourceableId)
 				.setHint("org.hibernate.cacheable", Boolean.TRUE)
 				.getResultList();
 
@@ -210,4 +210,15 @@ public class OLATResourceManager extends BasicManager {
 		}
 		return resources.get(0);
 	}
+	
+	public OLATResource findResourceById(Long key) {
+		if (key == null) return null;
+
+		String s = "select ori from org.olat.resource.OLATResourceImpl ori where ori.key=:resourceKey";
+		List<OLATResource> resources = dbInstance.getCurrentEntityManager()
+				.createQuery(s, OLATResource.class)
+				.setParameter("resourceKey", key)
+				.getResultList();
+		return resources.isEmpty() ? null : resources.get(0);
+	}
 }
\ No newline at end of file