diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java
index 432ebece1240012c68a7ba9df509287485396a60..c6f8871c33127426687f1d8b1c0a720774db68d6 100644
--- a/src/main/java/org/olat/repository/RepositoryManager.java
+++ b/src/main/java/org/olat/repository/RepositoryManager.java
@@ -600,6 +600,10 @@ public class RepositoryManager extends BasicManager {
 	 * @throws AssertException if the softkey could not be found (strict=true)
 	 */
 	public RepositoryEntry lookupRepositoryEntryBySoftkey(String softkey, boolean strict) {
+		if(softkey == null || "sf.notconfigured".equals(softkey)) {
+			return null;
+		}
+
 		StringBuilder sb = new StringBuilder();
 		sb.append("select v from ").append(RepositoryEntry.class.getName()).append(" v")
 		  .append(" inner join fetch v.olatResource as ores ")
diff --git a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java
index 415a7ee7859f0e5e1513fc7f451e56c75be0836c..fe71742f41df0eb5c5793f7301b51df1e9919c2b 100644
--- a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java
+++ b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java
@@ -582,9 +582,9 @@ public class RepositoryDetailsController extends BasicController implements Gene
 				doCloseDetailView(ureq);
 				return;
 			} else if (sourceLink == downloadButton){
-				doDownload(ureq, false);
+				doDownload(ureq, repositoryEntry, false);
 			} else if (sourceLink == launchButton){
-				doLaunch(ureq);
+				doLaunch(ureq, repositoryEntry);
 			} else if (sourceLink == loginLink){
 				DispatcherAction.redirectToDefaultDispatcher(ureq.getHttpResp());
 			} else if (sourceLink.getUserObject() instanceof IdentityShort) {
@@ -617,7 +617,7 @@ public class RepositoryDetailsController extends BasicController implements Gene
 	private void doCloseDetailView(UserRequest ureq) {
 		// REVIEW:pb:note:handles jumps from Catalog and Course
 		if (jumpfromcourse && repositoryEntry.getCanLaunch()) {
-			doLaunch(ureq);
+			doLaunch(ureq, repositoryEntry);
 		} else {
 			fireEvent(ureq, Event.DONE_EVENT);
 		}
@@ -654,28 +654,28 @@ public class RepositoryDetailsController extends BasicController implements Gene
 	 * 
 	 * @param ureq
 	 */
-	boolean doLaunch(UserRequest ureq) {
-		RepositoryHandler typeToLaunch = RepositoryHandlerFactory.getInstance().getRepositoryHandler(repositoryEntry);
+	boolean doLaunch(UserRequest ureq, RepositoryEntry re) {
+		RepositoryHandler typeToLaunch = RepositoryHandlerFactory.getInstance().getRepositoryHandler(re);
 		if (typeToLaunch == null){
 			StringBuilder sb = new StringBuilder(translate("error.launch"));
 			sb.append(": No launcher for repository entry: ");
-			sb.append(repositoryEntry.getKey());
+			sb.append(re.getKey());
 			throw new OLATRuntimeException(RepositoryDetailsController.class,sb.toString(), null);
 		}
-		if (RepositoryManager.getInstance().lookupRepositoryEntry(repositoryEntry.getKey()) == null) {
+		if (RepositoryManager.getInstance().lookupRepositoryEntry(re.getKey()) == null) {
 			showInfo("info.entry.deleted");
 			return false;
 		}
 		
 		try {
-			String businessPath = "[RepositoryEntry:" + repositoryEntry.getKey() + "]";
+			String businessPath = "[RepositoryEntry:" + re.getKey() + "]";
 			boolean ok = NewControllerFactory.getInstance().launch(businessPath, ureq, getWindowControl());
 			if(ok) {
 				fireEvent(ureq, LAUNCHED_EVENT);
 			}
 			return ok;
 		} catch (CorruptedCourseException e) {
-			logError("Corrupted course: " + repositoryEntry, e);
+			logError("Corrupted course: " + re, e);
 			return false;
 		}
 	}
@@ -731,16 +731,16 @@ public class RepositoryDetailsController extends BasicController implements Gene
 	 * 
 	 * @param ureq
 	 */
-	void doDownload(UserRequest ureq, boolean backwardsCompatible) {
-		RepositoryHandler typeToDownload = RepositoryHandlerFactory.getInstance().getRepositoryHandler(repositoryEntry);
+	void doDownload(UserRequest ureq, RepositoryEntry re, boolean backwardsCompatible) {
+		RepositoryHandler typeToDownload = RepositoryHandlerFactory.getInstance().getRepositoryHandler(re);
 
 		if (typeToDownload == null){
 			StringBuilder sb = new StringBuilder(translate("error.download"));
 			sb.append(": No download handler for repository entry: ");
-			sb.append(repositoryEntry.getKey());
+			sb.append(re.getKey());
 			throw new OLATRuntimeException(RepositoryDetailsController.class, sb.toString(), null);
 		}
-		OLATResource ores = OLATResourceManager.getInstance().findResourceable(repositoryEntry.getOlatResource());
+		OLATResource ores = OLATResourceManager.getInstance().findResourceable(re.getOlatResource());
 		if (ores == null) {
 			showError("error.download");
 			return;
@@ -751,7 +751,7 @@ public class RepositoryDetailsController extends BasicController implements Gene
 		  if(lockResult==null || (lockResult!=null && lockResult.isSuccess() && !isAlreadyLocked)) {
 		    MediaResource mr = typeToDownload.getAsMediaResource(ores, backwardsCompatible);
 		    if(mr!=null) {
-		      RepositoryManager.getInstance().incrementDownloadCounter(repositoryEntry);
+		      RepositoryManager.getInstance().incrementDownloadCounter(re);
 		      ureq.getDispatchResult().setResultingMediaResource(mr);
 		    } else {
 			    showError("error.export");
@@ -876,12 +876,12 @@ public class RepositoryDetailsController extends BasicController implements Gene
 			//
 		} else if (source == detailsToolC) {
 			if (cmd.equals(ACTION_DOWNLOAD)) { // download
-				doDownload(ureq, false);
+				doDownload(ureq, repositoryEntry, false);
 				return;
 			} else if (cmd.equals(ACTION_DOWNLOAD_BACKWARD_COMPAT)) {
-				doDownload(ureq, true);
+				doDownload(ureq, repositoryEntry, true);
 			} else if (cmd.equals(ACTION_LAUNCH)) { // launch resource
-				doLaunch(ureq);
+				doLaunch(ureq, repositoryEntry);
 				return;
 			} else if (cmd.equals(ACTION_EDIT)) { // start editor
 				doEdit(ureq);
diff --git a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java
index 4c91c4c374dcfdba8de0d77dde4c4c95bb1968c9..ac086a6c6bd221fe4a06ca99fec59a6dd340c88c 100644
--- a/src/main/java/org/olat/repository/controllers/RepositoryMainController.java
+++ b/src/main/java/org/olat/repository/controllers/RepositoryMainController.java
@@ -71,7 +71,6 @@ import org.olat.fileresource.types.ScormCPFileResource;
 import org.olat.fileresource.types.SharedFolderFileResource;
 import org.olat.fileresource.types.WikiResource;
 import org.olat.group.BusinessGroupService;
-import org.olat.group.model.SearchBusinessGroupParams;
 import org.olat.ims.qti.fileresource.SurveyFileResource;
 import org.olat.ims.qti.fileresource.TestFileResource;
 import org.olat.portfolio.EPTemplateMapResource;
@@ -536,8 +535,9 @@ public class RepositoryMainController extends MainLayoutBasicController implemen
 			if (event.equals(Event.CHANGED_EVENT)) {
 				getWindowControl().pop();
 				removeAsListenerAndDispose(creationWizardController);
-				detailsController.setEntry(chooseStepsController.getCourseRepositoryEntry(), urequest, false);
-				detailsController.doLaunch(urequest);
+				RepositoryEntry re = chooseStepsController.getCourseRepositoryEntry();
+				detailsController.setEntry(re, urequest, false);
+				detailsController.doLaunch(urequest, re);
 			} else if (event.equals(Event.CANCELLED_EVENT)) {
 				// delete entry when the wizard was cancelled
 				detailsController.deleteRepositoryEntry(urequest, getWindowControl(), (RepositoryEntry) chooseStepsController.getCourseRepositoryEntry());
@@ -599,17 +599,19 @@ public class RepositoryMainController extends MainLayoutBasicController implemen
 			if (event.getCommand().equals(RepositoryTableModel.TABLE_ACTION_SELECT_ENTRY)) {
 				// entry has been selected to be launched in the
 				// searchController
-				ToolController toolC = detailsController.setEntry(selectedEntry, urequest, false);
+
 				if (selectedEntry.getCanLaunch()) {
-					if(!detailsController.doLaunch(urequest)) {
+					if(!detailsController.doLaunch(urequest, selectedEntry)) {
 						//cannot launch -> open details
+						ToolController toolC = detailsController.setEntry(selectedEntry, urequest, false);
 						Component toolComp = (toolC == null ? null : toolC.getInitialComponent());
 						columnsLayoutCtr.setCol2(toolComp);
 						mainPanel.setContent(detailsController.getInitialComponent());
 					}
 				} else if (selectedEntry.getCanDownload()) {
-					detailsController.doDownload(urequest, false);
+					detailsController.doDownload(urequest, selectedEntry, false);
 				} else { // offer details view
+					ToolController toolC = detailsController.setEntry(selectedEntry, urequest, false);
 					Component toolComp = (toolC == null ? null : toolC.getInitialComponent());
 					columnsLayoutCtr.setCol2(toolComp);
 					mainPanel.setContent(detailsController.getInitialComponent());
@@ -625,25 +627,19 @@ public class RepositoryMainController extends MainLayoutBasicController implemen
 			}
 		} else if (source == detailsController) { // back from details
 			//fxdiff FXOLAT-128: back/resume function
-			if (event.equals(Event.DONE_EVENT) || event.equals(RepositoryDetailsController.LAUNCHED_EVENT)) {
+			if (event.equals(Event.DONE_EVENT)) {
 				if (backtocatalog) {
 					backtocatalog = false;
 					ToolController toolC = catalogCntrllr.createCatalogToolController();
 					Component toolComp = (toolC == null ? null : toolC.getInitialComponent());
 					columnsLayoutCtr.setCol2(toolComp);
 					mainPanel.setContent(catalogCntrllr.getInitialComponent());
-					//fxdiff BAKS-7 Resume function
-					if(!event.equals(RepositoryDetailsController.LAUNCHED_EVENT)) {
-						catalogCntrllr.updateHistory(urequest);
-					}
+					catalogCntrllr.updateHistory(urequest);
 				} else {
 					Component toolComp = (mainToolC == null ? null : mainToolC.getInitialComponent());
 					columnsLayoutCtr.setCol2(toolComp);
 					mainPanel.setContent(main);
-					//fxdiff BAKS-7 Resume function
-					if(!event.equals(RepositoryDetailsController.LAUNCHED_EVENT)) {
-						addToHistory(urequest, searchWindowControl);
-					}
+					addToHistory(urequest, searchWindowControl);
 				}
 			} else if (event instanceof EntryChangedEvent) {
 				Component toolComp = (mainToolC == null ? null : mainToolC.getInitialComponent());