diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java
index dfd7214e8799b882404dbfa1113c383e1fe9450b..9bcf898dff005ce16892d4a8084e9f0f2d0eb42d 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java
@@ -250,7 +250,7 @@ public abstract class GTAAbstractController extends BasicController implements G
 		
 		resetTask(ureq, task);
 		
-		nodeLog();
+		nodeLog(task);
 		collapsedContents(task);
 	}
 	
@@ -460,7 +460,7 @@ public abstract class GTAAbstractController extends BasicController implements G
 		return assignedTask;
 	}
 	
-	protected void nodeLog() {
+	protected void nodeLog(@SuppressWarnings("unused") Task assignedTask) {
 		if(businessGroupTask) {
 			String groupLog = courseEnv.getAuditManager().getUserNodeLog(gtaNode, assessedGroup);
 			if(StringHelper.containsNonWhitespace(groupLog)) {
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
index 455ddba3a8525b37de9ad41e48e6ce13219c5318..cb2ab1c652f3282c69023290240167cf4b0fed27 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
@@ -67,6 +67,7 @@ import org.olat.course.nodes.gta.model.TaskDefinition;
 import org.olat.course.nodes.gta.ui.events.SubmitEvent;
 import org.olat.course.nodes.gta.ui.events.TaskMultiUserEvent;
 import org.olat.course.nodes.ms.MSCourseNodeRunController;
+import org.olat.course.run.scoring.AssessmentEvaluation;
 import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.group.BusinessGroup;
 import org.olat.modules.assessment.Role;
@@ -696,17 +697,34 @@ public class GTAParticipantController extends GTAAbstractController implements A
 	}
 
 	@Override
-	protected void nodeLog() {
-		if(businessGroupTask) {
-			String userLog = courseEnv.getAuditManager().getUserNodeLog(gtaNode, getIdentity());
-			if(StringHelper.containsNonWhitespace(userLog)) {
-				mainVC.contextPut("userLog", userLog);
+	protected void nodeLog(Task assignedTask) {
+		if(isResultVisible(assignedTask)) {
+			if(businessGroupTask) {
+				String userLog = courseEnv.getAuditManager().getUserNodeLog(gtaNode, getIdentity());
+				if(StringHelper.containsNonWhitespace(userLog)) {
+					mainVC.contextPut("userLog", userLog);
+				} else {
+					mainVC.contextRemove("userLog");
+				}
 			} else {
-				mainVC.contextRemove("userLog");
+				super.nodeLog(assignedTask);
+			}
+		} else {
+			mainVC.contextRemove("userLog");
+		}
+	}
+	
+	private boolean isResultVisible(Task assignedTask) {
+		boolean isVisible = false;
+		if(config.getBooleanSafe(GTACourseNode.GTASK_GRADING)) {
+			if (assignedTask != null && (assignedTask.getTaskStatus() == TaskProcess.grading || assignedTask.getTaskStatus() == TaskProcess.graded)) {
+				AssessmentEvaluation eval = gtaNode.getUserScoreEvaluation(getAssessedUserCourseEnvironment());
+				isVisible = eval.getUserVisible() == null || eval.getUserVisible().booleanValue();
 			}
 		} else {
-			super.nodeLog();
+			isVisible = true;
 		}
+		return isVisible;
 	}
 
 	private TaskDefinition getTaskDefinition(Task task) {
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GroupAssessmentController.java b/src/main/java/org/olat/course/nodes/gta/ui/GroupAssessmentController.java
index f06428c9fdf921cf91b26703c5033230379c2a73..2f46d0611d6fefd54a3a4550bae44f0b51cadd4a 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GroupAssessmentController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GroupAssessmentController.java
@@ -382,7 +382,7 @@ public class GroupAssessmentController extends FormBasicController {
 				}
 			}
 			
-			if(withScore || withPassed || withPassed) {
+			if(withScore || withPassed) {
 				Boolean userVisible = scoreEval.getUserVisible();
 				if(userVisible == null) {
 					userVisible = Boolean.TRUE;
diff --git a/src/main/java/org/olat/modules/forms/ui/EvaluationFormExecutionController.java b/src/main/java/org/olat/modules/forms/ui/EvaluationFormExecutionController.java
index 62a6a3c6447130d7050c22f6167263ade5258de3..8338c9eddffa271d6bce27d39d09cca2158adaf6 100644
--- a/src/main/java/org/olat/modules/forms/ui/EvaluationFormExecutionController.java
+++ b/src/main/java/org/olat/modules/forms/ui/EvaluationFormExecutionController.java
@@ -33,6 +33,7 @@ import org.olat.core.gui.components.form.flexible.FormItemContainer;
 import org.olat.core.gui.components.form.flexible.elements.FormLink;
 import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
 import org.olat.core.gui.components.form.flexible.impl.FormEvent;
+import org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit;
 import org.olat.core.gui.components.link.Link;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
@@ -80,7 +81,7 @@ public class EvaluationFormExecutionController extends FormBasicController imple
 	private final Map<String, EvaluationFormElementHandler> handlerMap = new HashMap<>();
 	private final List<ExecutionFragment> fragments = new ArrayList<>();
 	private FormLink saveLink;
-	private FormLink doneLink;
+	private FormSubmit doneLink;
 	private DialogBoxController confirmDoneCtrl;
 	private PageFragmentsElementImpl fragmentsEl;
 
@@ -197,8 +198,7 @@ public class EvaluationFormExecutionController extends FormBasicController imple
 		boolean anonymous = !notAnonymous;
 		flc.contextPut("anonymous", Boolean.valueOf(showDoneButton && anonymous));
 
-		doneLink = uifactory.addFormLink("save.as.done", "save.as.done", null, flc, Link.BUTTON);
-		doneLink.setPrimary(true);
+		doneLink = uifactory.addFormSubmitButton("save.as.done", "save.as.done", formLayout);
 		saveLink = uifactory.addFormLink("save.intermediate", "save.intermediate", null, flc, Link.BUTTON);
 		showHideButtons();
 	}