diff --git a/core/src/main/java/se/su/dsv/scipro/CoreConfig.java b/core/src/main/java/se/su/dsv/scipro/CoreConfig.java
index 43c4d7ed10..46a1ef3127 100644
--- a/core/src/main/java/se/su/dsv/scipro/CoreConfig.java
+++ b/core/src/main/java/se/su/dsv/scipro/CoreConfig.java
@@ -669,13 +669,15 @@ public class CoreConfig {
         OppositionReportRepo oppositionReportRepository,
         GradingReportTemplateRepo gradingReportTemplateRepository,
         FileService fileService,
-        FinalSeminarOppositionRepo finalSeminarOppositionRepository
+        FinalSeminarOppositionRepo finalSeminarOppositionRepository,
+        Clock clock
     ) {
         return new OppositionReportServiceImpl(
             oppositionReportRepository,
             gradingReportTemplateRepository,
             fileService,
-            finalSeminarOppositionRepository
+            finalSeminarOppositionRepository,
+            clock
         );
     }
 
diff --git a/core/src/main/java/se/su/dsv/scipro/finalseminar/FinalSeminarOpposition.java b/core/src/main/java/se/su/dsv/scipro/finalseminar/FinalSeminarOpposition.java
index 9825e981a8..8a1533fedd 100755
--- a/core/src/main/java/se/su/dsv/scipro/finalseminar/FinalSeminarOpposition.java
+++ b/core/src/main/java/se/su/dsv/scipro/finalseminar/FinalSeminarOpposition.java
@@ -8,6 +8,7 @@ import jakarta.persistence.JoinColumn;
 import jakarta.persistence.ManyToOne;
 import jakarta.persistence.OneToOne;
 import jakarta.persistence.Table;
+import java.time.Instant;
 import java.util.Objects;
 import se.su.dsv.scipro.file.FileReference;
 import se.su.dsv.scipro.project.Project;
@@ -31,6 +32,14 @@ public class FinalSeminarOpposition extends FinalSeminarParticipation {
     @Column(name = "feedback", length = FEEDBACK_LENGTH)
     private String feedback;
 
+    @Basic
+    @Column(name = "improvements_requested_at")
+    private Instant improvementsRequestedAt;
+
+    @Basic
+    @Column(name = "supervisor_improvements_comment")
+    private String supervisorCommentForImprovements;
+
     // ----------------------------------------------------------------------------------
     // JPA-mappings of foreign keys in this table (final_seminar_opposition) referencing
     // other tables.
@@ -92,6 +101,22 @@ public class FinalSeminarOpposition extends FinalSeminarParticipation {
         this.oppositionReport = oppositionReport;
     }
 
+    public Instant getImprovementsRequestedAt() {
+        return improvementsRequestedAt;
+    }
+
+    public void setImprovementsRequestedAt(Instant improvementsRequestedAt) {
+        this.improvementsRequestedAt = improvementsRequestedAt;
+    }
+
+    public String getSupervisorCommentForImprovements() {
+        return supervisorCommentForImprovements;
+    }
+
+    public void setSupervisorCommentForImprovements(String supervisorCommentsForImprovements) {
+        this.supervisorCommentForImprovements = supervisorCommentsForImprovements;
+    }
+
     // ----------------------------------------------------------------------------------
     // Methods Common To All Objects
     // ----------------------------------------------------------------------------------
diff --git a/core/src/main/java/se/su/dsv/scipro/report/OppositionReportService.java b/core/src/main/java/se/su/dsv/scipro/report/OppositionReportService.java
index 60f1db90b0..9fb030804f 100644
--- a/core/src/main/java/se/su/dsv/scipro/report/OppositionReportService.java
+++ b/core/src/main/java/se/su/dsv/scipro/report/OppositionReportService.java
@@ -7,4 +7,6 @@ public interface OppositionReportService {
     void save(OppositionReport oppositionReport);
     void deleteOppositionReport(FinalSeminarOpposition finalSeminarOpposition);
     void deleteOpponentReport(FinalSeminarOpposition modelObject);
+
+    void requestCompletion(FinalSeminarOpposition opposition, String supervisorComment);
 }
diff --git a/core/src/main/java/se/su/dsv/scipro/report/OppositionReportServiceImpl.java b/core/src/main/java/se/su/dsv/scipro/report/OppositionReportServiceImpl.java
index f993503d09..088fa22ff4 100644
--- a/core/src/main/java/se/su/dsv/scipro/report/OppositionReportServiceImpl.java
+++ b/core/src/main/java/se/su/dsv/scipro/report/OppositionReportServiceImpl.java
@@ -3,6 +3,7 @@ package se.su.dsv.scipro.report;
 import jakarta.inject.Inject;
 import jakarta.inject.Named;
 import jakarta.transaction.Transactional;
+import java.time.Clock;
 import se.su.dsv.scipro.file.FileReference;
 import se.su.dsv.scipro.file.FileService;
 import se.su.dsv.scipro.finalseminar.FinalSeminarOpposition;
@@ -15,18 +16,21 @@ public class OppositionReportServiceImpl implements OppositionReportService {
     private GradingReportTemplateRepo gradingReportTemplateRepo;
     private FileService fileService;
     private FinalSeminarOppositionRepo finalSeminarOppositionRepo;
+    private final Clock clock;
 
     @Inject
     public OppositionReportServiceImpl(
         OppositionReportRepo oppositionReportRepo,
         GradingReportTemplateRepo gradingReportTemplateRepo,
         FileService fileService,
-        FinalSeminarOppositionRepo finalSeminarOppositionRepo
+        FinalSeminarOppositionRepo finalSeminarOppositionRepo,
+        Clock clock
     ) {
         this.oppositionReportRepo = oppositionReportRepo;
         this.gradingReportTemplateRepo = gradingReportTemplateRepo;
         this.fileService = fileService;
         this.finalSeminarOppositionRepo = finalSeminarOppositionRepo;
+        this.clock = clock;
     }
 
     @Override
@@ -74,4 +78,16 @@ public class OppositionReportServiceImpl implements OppositionReportService {
             finalSeminarOppositionRepo.save(finalSeminarOpposition);
         }
     }
+
+    @Override
+    @Transactional
+    public void requestCompletion(FinalSeminarOpposition opposition, String supervisorComment) {
+        OppositionReport oppositionReport = opposition.getOppositionReport();
+        if (oppositionReport == null) {
+            return;
+        }
+        oppositionReport.setSubmitted(false);
+        opposition.setImprovementsRequestedAt(clock.instant());
+        opposition.setSupervisorCommentForImprovements(supervisorComment);
+    }
 }
diff --git a/core/src/main/resources/db/migration/V5__final_seminar_opposition_request_improvements.sql b/core/src/main/resources/db/migration/V5__final_seminar_opposition_request_improvements.sql
new file mode 100644
index 0000000000..e922687232
--- /dev/null
+++ b/core/src/main/resources/db/migration/V5__final_seminar_opposition_request_improvements.sql
@@ -0,0 +1,3 @@
+ALTER TABLE `final_seminar_opposition`
+    ADD COLUMN `improvements_requested_at` DATETIME NULL,
+    ADD COLUMN `supervisor_improvements_comment` TEXT NULL;