diff --git a/core/src/main/java/se/su/dsv/scipro/DataInitializer.java b/core/src/main/java/se/su/dsv/scipro/DataInitializer.java
index 380176606b..7807205f64 100644
--- a/core/src/main/java/se/su/dsv/scipro/DataInitializer.java
+++ b/core/src/main/java/se/su/dsv/scipro/DataInitializer.java
@@ -14,6 +14,8 @@ import java.util.function.Function;
 import se.su.dsv.scipro.checklist.ChecklistCategory;
 import se.su.dsv.scipro.file.FileUpload;
 import se.su.dsv.scipro.match.ApplicationPeriod;
+import se.su.dsv.scipro.match.Idea;
+import se.su.dsv.scipro.match.IdeaService;
 import se.su.dsv.scipro.match.Keyword;
 import se.su.dsv.scipro.milestones.dataobjects.MilestoneActivityTemplate;
 import se.su.dsv.scipro.milestones.dataobjects.MilestonePhaseTemplate;
@@ -28,6 +30,7 @@ import se.su.dsv.scipro.reviewing.ReviewerAssignmentService;
 import se.su.dsv.scipro.reviewing.RoughDraftApprovalService;
 import se.su.dsv.scipro.security.auth.roles.Roles;
 import se.su.dsv.scipro.system.*;
+import se.su.dsv.scipro.util.Pair;
 
 public class DataInitializer implements Lifecycle {
 
@@ -42,6 +45,9 @@ public class DataInitializer implements Lifecycle {
     @Inject
     private PasswordService passwordService;
 
+    @Inject
+    private IdeaService ideaService;
+
     @Inject
     private MilestoneActivityTemplateService milestoneActivityTemplateService;
 
@@ -83,6 +89,8 @@ public class DataInitializer implements Lifecycle {
     private Set<ResearchArea> researchAreas;
     private Long researchAreaId = RESEARCH_AREA_ID;
     private Set<Language> languages;
+    private ApplicationPeriod applicationPeriod;
+    private Keyword keyword1;
     private ResearchArea researchArea1;
     private ResearchArea researchArea2;
     private ProjectType masterClass;
@@ -101,6 +109,7 @@ public class DataInitializer implements Lifecycle {
             createKeywordsIfNotDone();
             createMilestonesIfNotDone();
             createUsers();
+            createMatchedIdea();
             createProjects();
             createRoughDraftApproval();
         }
@@ -127,18 +136,18 @@ public class DataInitializer implements Lifecycle {
     }
 
     private void createApplicationPeriodIfNotDone() {
-        ApplicationPeriod applicationPeriod = new ApplicationPeriod("HT 2014");
+        applicationPeriod = new ApplicationPeriod("HT 2014");
         applicationPeriod.setStartDate(LocalDate.now().minusDays(APPLICATION_PERIOD_START_MINUS_DAYS));
         applicationPeriod.setEndDate(LocalDate.now().plusDays(APPLICATION_PERIOD_END_PLUS_DAYS));
         applicationPeriod.setCourseStartDate(LocalDate.now().plusDays(APPLICATION_PERIOD_COURSE_START_PLUS_DAYS));
         applicationPeriod.setCourseStartTime(LocalTime.of(8, 0));
         applicationPeriod = save(applicationPeriod);
-        applicationPeriod.setProjectTypes(new HashSet<>(Collections.singletonList(bachelorClass)));
+        applicationPeriod.setProjectTypes(new HashSet<>(Set.of(bachelorClass, masterClass)));
         save(applicationPeriod);
     }
 
     private void createKeywordsIfNotDone() {
-        Keyword keyword1 = new Keyword("IT");
+        keyword1 = new Keyword("IT");
         keyword1.addResearchArea(researchArea1);
         keyword1.addResearchArea(researchArea2);
         save(keyword1);
@@ -273,6 +282,22 @@ public class DataInitializer implements Lifecycle {
         return u;
     }
 
+    private void createMatchedIdea() {
+        Idea idea = new Idea();
+        idea.setApplicationPeriod(applicationPeriod);
+        idea.setType(Idea.Type.SUPERVISOR);
+        idea.setProjectType(masterClass);
+        idea.setTitle("Idea without first meeting");
+        idea.setDescription("Explore the deep sea");
+        idea.setPrerequisites("Diving experience");
+        idea.setResearchArea(researchArea1);
+        idea.setPublished(true);
+        Idea saved = ideaService.saveSupervisorIdea(idea, eve_employee, new ArrayList<>(Set.of(keyword1)), true);
+        Pair<Boolean, String> validated = ideaService.validateAdminAddAuthors(saved, Set.of(sid_student));
+        assert validated.getHead();
+        ideaService.setAuthors(saved, Set.of(sid_student), eve_employee);
+    }
+
     private void createGradingCriterionTemplateIfNotDone() {
         save(getBachelorTemplate());
         save(getMasterTemplate());
diff --git a/view/src/main/java/se/su/dsv/scipro/firstmeeting/FirstMeetingPanel.java b/view/src/main/java/se/su/dsv/scipro/firstmeeting/FirstMeetingPanel.java
index c7b62f64cd..3158294d42 100644
--- a/view/src/main/java/se/su/dsv/scipro/firstmeeting/FirstMeetingPanel.java
+++ b/view/src/main/java/se/su/dsv/scipro/firstmeeting/FirstMeetingPanel.java
@@ -169,7 +169,11 @@ public class FirstMeetingPanel extends GenericPanel<Idea> {
         }
 
         private void saveAndNotify() {
-            firstMeetingRepository.save(getModelObject());
+            FirstMeeting saved = firstMeetingRepository.save(getModelObject());
+            // After saving the first meeting we have to populate it on the already loaded idea to
+            // make sure that other places that want to render the first meeting get the correct data.
+            // An alternative would be to detach the idea model to force a database refresh.
+            FirstMeetingPanel.this.getModelObject().setFirstMeeting(saved);
             NotificationSource source = new NotificationSource();
             String date = dateService.format(getModelObject().getFirstMeetingDate(), DateStyle.DATETIME);
             String room = getModelObject().getRoom();
diff --git a/view/src/main/java/se/su/dsv/scipro/match/SupervisorMyIdeasPanel.java b/view/src/main/java/se/su/dsv/scipro/match/SupervisorMyIdeasPanel.java
index cd59b023bf..f59bd4ac49 100755
--- a/view/src/main/java/se/su/dsv/scipro/match/SupervisorMyIdeasPanel.java
+++ b/view/src/main/java/se/su/dsv/scipro/match/SupervisorMyIdeasPanel.java
@@ -337,29 +337,26 @@ public class SupervisorMyIdeasPanel extends Panel {
                 if (idea.getMatch() == null) {
                     return "-";
                 }
-                switch (idea.getMatchStatus()) {
-                    case UNMATCHED:
-                        return getString("status.unmatched");
-                    case COMPLETED:
-                        return getString("status.completed");
-                    case INACTIVE:
-                        return getString("status.inactive");
-                    case MATCHED:
+                return switch (idea.getMatchStatus()) {
+                    case UNMATCHED -> getString("status.unmatched");
+                    case COMPLETED -> getString("status.completed");
+                    case INACTIVE -> getString("status.inactive");
+                    case MATCHED -> {
                         if (applicationPeriodService.courseStartHasPassed(idea.getApplicationPeriod())) {
                             if (idea.isExported()) {
                                 if (idea.wasExportSuccessful()) {
-                                    return getString("status.project.created");
+                                    yield getString("status.project.created");
                                 } else {
-                                    return getString("status.export.failed");
+                                    yield getString("status.export.failed");
                                 }
                             } else {
-                                return getString("status.awaiting.project.creation");
+                                yield getString("status.awaiting.project.creation");
                             }
                         } else {
-                            return getString("status.awaiting.course.start", Model.of(idea.getApplicationPeriod()));
+                            yield getString("status.awaiting.course.start", Model.of(idea.getApplicationPeriod()));
                         }
-                }
-                return "-"; // can't happen
+                    }
+                };
             }
         };
     }