diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationDialog.vue
index deecd8edd52b9335ee18faeb5e3a6d5b72f87550..5bf15da36395d954fe6b3db0176d08b21f9e0273 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationDialog.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationDialog.vue
@@ -20,8 +20,18 @@
       <!-- Abwesenheit/Entschuldigung Zusammenfassung --> 
     </template>
     <template #content>
-    <absence-creation-form v-if="form" />
-    <absence-creation-summary v-else />
+    <absence-creation-form v-if="form"
+      @persons="persons = $event"
+      @start-date="startDate = $event"
+      @end-date="endDate = $event"
+      @comment="comment = $event"
+      @absence-reason="absenceReason = $event"
+    />
+    <absence-creation-summary v-else
+      :persons="persons"
+      :start-date="startDate"
+      :end-date="endDate"
+    />
     </template>
     <template #actions>
       <!-- secondary -->
@@ -70,6 +80,12 @@ export default {
       popup: false,
       form: true,
       loading: false,
+      // TODO: All needed? Check if sensible defaults.
+      persons: [],
+      startDate: "",
+      endDate: "",
+      comment: "",
+      absenceReason: null,
     };
   },
   methods: {
diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue
index 1dd08a14ac5a5397488dc8786855ed91d3f9fbe9..7f3c28bdcadf54633bd72591eea5f275cf8290a2 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue
@@ -7,7 +7,7 @@
         item-text="fullName"
         item-value="id"
         multiple
-        @input="persons = $event"
+        @input="$emit('persons', $event)"
       />
     </v-row>
     <!-- TODO: No outer padding. -->
@@ -20,7 +20,7 @@
           :label="$t('forms.labels.start')"
           :disabled="loading"
           :max="endDate"
-          @input="startDate = $event"
+          @input="$emit('start-date', $event)"
           />
       </v-col>
       <v-col
@@ -31,7 +31,7 @@
           :label="$t('forms.labels.end')"
           :disabled="loading"
           :min="startDate"
-          @input="endDate = $event"
+          @input="$emit('end-date', $event)"
           />
       </v-col>
     </v-row>
@@ -39,12 +39,12 @@
       <v-text-field
         :label="$t('forms.labels.comment')"
         :loading="loading"
-        @input="comment = $event"
+        @input="$emit('comment', $event)"
       />
     </v-row>
     <v-row>
       <absence-reason-group-select
-        @input="absenceReason = $event"
+        @input="$emit('absence-reason', $event)"
       />
     </v-row>
   </v-container>
@@ -53,7 +53,7 @@
 <script>
 import AbsenceReasonGroupSelect from "aleksis.apps.kolego/components/AbsenceReasonGroupSelect.vue";
 import DateField from "aleksis.core/components/generic/forms/DateField.vue";
-import { persons } from "./absenceCreation.graphql"
+import { persons } from "./absenceCreation.graphql";
 
 export default {
   name: "AbsenceCreationForm",
@@ -61,22 +61,12 @@ export default {
     AbsenceReasonGroupSelect,
     DateField,
   },
+  emits: ["persons", "start-date", "end-date", "comment", "absence-reason"],
   apollo: {
     // TODO: Query currently returns all persons. But should return
     // only persons the current user can create ParticipationStati and
     // KolegoAbsences for!
     allPersons: persons,
   },
-  data() {
-    return {
-      // TODO: All needed? Check if sensible defaults.
-      loading: false,
-      persons: [],
-      startDate: "",
-      endDate: "",
-      comment: "",
-      absenceReason: null,
-    };
-  },
 };
 </script>
diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationSummary.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationSummary.vue
index 4254090b4bf6e4d9110f591c4b960f07fe86d595..82a94dd90a109600490b360ed404e75e824c4583 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationSummary.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationSummary.vue
@@ -1,8 +1,8 @@
 <template>
   <!-- TODO: Hide header -->
   <c-r-u-d-iterator
-    :gql-query=""
-    :gql-additional-query-args="FROM FORM"
+    :gql-query="gqlQuery"
+    :gql-additional-query-args="gqlArgs"
     :enable-create="false"
     :enable-edit="false"
     :elevated="false"
@@ -15,11 +15,40 @@
 
 <script>
 import CRUDIterator from "aleksis.core/components/generic/CRUDIterator.vue";
+import { lessonsForPersons } from "./absenceCreation.graphql";
 
 export default {
   name: "AbsenceCreationSummary",
   components: {
     CRUDIterator,
   },
+  props: {
+    persons: {
+      type: Array,
+      required: true,
+    },
+    startDate: {
+      type: String,
+      required: true,
+    },
+    endDate: {
+      type: String,
+      required: true,
+    },
+  },
+  data() {
+    return {
+      gqlQuery: lessonsForPersons,
+    };
+  },
+  computed: {
+    gqlArgs() {
+      return {
+        persons: this.persons.map((person) => person.id),
+        start: this.startDate,
+        end: this.endDate,
+      };
+    },
+  },
 };
 </script>