diff --git a/lib/classes/JsonApi/Routes/Courseware/Authority.php b/lib/classes/JsonApi/Routes/Courseware/Authority.php
index 1c7c9034192d7bccdffec29beae3320510db3fbd..da1724af36b18b87707a3958072c4af51fb71992 100644
--- a/lib/classes/JsonApi/Routes/Courseware/Authority.php
+++ b/lib/classes/JsonApi/Routes/Courseware/Authority.php
@@ -328,7 +328,7 @@ class Authority
 
     public static function canDeleteTask(User $user, Task $resource): bool
     {
-        return self::canCreateTasks($user, $resource->structural_element);
+        return self::canCreateTasks($user, $resource->structural_element) && !$resource->userIsASolver($user);
     }
 
     public static function canCreateTaskFeedback(User $user, Task $resource): bool
diff --git a/lib/classes/JsonApi/Schemas/Courseware/Task.php b/lib/classes/JsonApi/Schemas/Courseware/Task.php
index 32d4a187b4dabe6b754dceebb5266681f4cb49b0..a87d335b64ee4bac500ebd0d58ce0a79d8a54e00 100644
--- a/lib/classes/JsonApi/Schemas/Courseware/Task.php
+++ b/lib/classes/JsonApi/Schemas/Courseware/Task.php
@@ -33,7 +33,7 @@ class Task extends SchemaProvider
             'submission-date' => date('c', $resource['submission_date']),
             'submitted' => (bool) $resource['submitted'],
             'renewal' => empty($resource['renewal']) ? null : (string) $resource['renewal'],
-            'renewal-date' => $resource['renewal_date'] ? date('c', $resource['renewal_date']) : null,
+            'renewal-date' => date('c', $resource['renewal_date']),
             'mkdate' => date('c', $resource['mkdate']),
             'chdate' => date('c', $resource['chdate']),
         ];
diff --git a/resources/vue/components/courseware/CoursewareDashboardStudents.vue b/resources/vue/components/courseware/CoursewareDashboardStudents.vue
index 6ad27bfa25d22127c5ac5657e046f59493f6da42..025ad745700ca39e6daac1f2a578aeaa82b5a7b1 100644
--- a/resources/vue/components/courseware/CoursewareDashboardStudents.vue
+++ b/resources/vue/components/courseware/CoursewareDashboardStudents.vue
@@ -355,6 +355,7 @@ export default {
         },
         solveRenewalRequest(task) {
             this.currentDialogTask = _.cloneDeep(task);
+            this.currentDialogTask.attributes['renewal-date'] = new Date().toISOString();
             this.showRenewalDialog = true;
         },
         updateRenewal() {
diff --git a/resources/vue/components/courseware/CoursewareDashboardTasks.vue b/resources/vue/components/courseware/CoursewareDashboardTasks.vue
index 501fc47a56e58bf1a78f245daf5860d90f6fc39e..e1329baebb6c3bc3a61ed10b77238dba5441ff9a 100644
--- a/resources/vue/components/courseware/CoursewareDashboardTasks.vue
+++ b/resources/vue/components/courseware/CoursewareDashboardTasks.vue
@@ -39,7 +39,7 @@
                     <td>
                         <a :href="getLinkToElement(element.id)">{{ element.attributes.title }}</a>
                     </td>
-                    <td>{{ task.attributes.progress.toFixed(2) }}%</td>
+                    <td>{{ task.attributes?.progress?.toFixed(2) || '-'}}%</td>
                     <td>{{ getReadableDate(task.attributes['submission-date']) }}</td>
                     <td>
                         <studip-icon v-if="task.attributes.submitted" shape="accept" role="status-green" />
@@ -198,7 +198,7 @@ export default {
             return menuItems;
         },
         async renewalRequest(task) {
-            let attributes = {};
+            let attributes = task.attributes;
             attributes.renewal = 'pending';
             await this.updateTask({
                 attributes: attributes,