diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/cleanupcontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/cleanupcontroller.js
index 13de0463b74ff29bbd4da1d3757ca95ce13a25fb..79abb6f8ebbee79925a8391347c0afb980743a9f 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/cleanupcontroller.js
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/cleanupcontroller.js
@@ -18,11 +18,6 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
         return defer.promise;
     };
 
-    self.deleteSelectedTasksDataWithConfirmation = function() {
-        var tasks = dataService.selected_task_ids.map(function(t_id) { return dataService.taskDict[t_id]; });
-        self.deleteTasksDataWithConfirmation(tasks);
-    }
-
     self.deleteTasksDataWithConfirmation = function(tasks) {
         suc_tasks_promises = [];
         for(var task of tasks) {
@@ -96,7 +91,7 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                             <label ng-if="has_im" style="margin-left:24px">IM: {{amount_im}}<input style="margin-left:8px" type="checkbox" ng-model="$parent.delete_im"></label>\
                             <label ng-if="has_img" style="margin-left:24px">Images: {{amount_img}}<input style="margin-left:8px" type="checkbox" ng-model="$parent.delete_img"></label>\
                             <label ng-if="has_pulp" style="margin-left:24px">Pulp: {{amount_pulp}}<input style="margin-left:8px" type="checkbox" ng-model="$parent.delete_pulp"></label>\
-                            <label ng-if="has_scratch" style="margin-left:24px">scratch<input style="margin-left:8px" type="checkbox" ng-model="$parent.delete_scratch"></label>\
+                            <label ng-if="has_scratch" style="margin-left:24px">scratch: {{amount_scratch}}<input style="margin-left:8px" type="checkbox" ng-model="$parent.delete_scratch"></label>\
                         </div>\
                         <div class="modal-footer">\
                             <button class="btn btn-primary" type="button" ng-click="ok()">OK</button>\
@@ -117,6 +112,7 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                 $scope.amount_im = 0;
                 $scope.amount_img = 0;
                 $scope.amount_pulp = 0;
+                $scope.amount_scratch = 0;
 
                 for(var du_result of du_results) {
                     var path = du_result.task_directory.path;
@@ -126,7 +122,7 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                     var has_im = du_result.sub_directories.hasOwnProperty(path + '/im');
                     var has_img = du_result.sub_directories.hasOwnProperty(path + '/img');
                     var has_pulp = du_result.sub_directories.hasOwnProperty(path + '/pulp');
-                    var has_scratch = du_result.sub_directories.hasOwnProperty('scratch_paths');
+                    var has_scratch = du_result.task_directory.hasOwnProperty('scratch_paths');
 
                     $scope.has_is |= has_is;
                     $scope.has_cs |= has_cs;
@@ -142,6 +138,14 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                     $scope.amount_im += has_im ? du_result.sub_directories[path + '/im'].disk_usage : 0;
                     $scope.amount_img += has_img ? du_result.sub_directories[path + '/img'].disk_usage : 0;
                     $scope.amount_pulp += has_pulp ? du_result.sub_directories[path + '/pulp'].disk_usage : 0;
+                    if(has_scratch) {
+                        for(var scratch_path in du_result.task_directory.scratch_paths) {
+                            var scratch_path_du = du_result.task_directory.scratch_paths[scratch_path];
+                            if(scratch_path_du.found) {
+                                $scope.amount_scratch += scratch_path_du.disk_usage;
+                            }
+                        }
+                    }
                 }
 
                 $scope.amount_is = dataService.humanreadablesize($scope.amount_is);
@@ -150,6 +154,7 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                 $scope.amount_im = dataService.humanreadablesize($scope.amount_im);
                 $scope.amount_img = dataService.humanreadablesize($scope.amount_img);
                 $scope.amount_pulp = dataService.humanreadablesize($scope.amount_pulp);
+                $scope.amount_scratch = dataService.humanreadablesize($scope.amount_scratch);
 
                 $scope.delete_is = true;
                 $scope.delete_cs = true;
@@ -202,6 +207,7 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                 };
 
                 const OBJECT_TYPE_TASK = 'task';
+                const OBJECT_TYPE_TASKS = 'tasks';
                 const OBJECT_TYPE_PROJECT = 'project';
                 const OBJECT_TYPE_PROJECTS = 'projects';
                 $scope.watchedObjectType = OBJECT_TYPE_TASK;
@@ -210,6 +216,7 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
 
                 $scope.onPieClicked = function(event) {
                     switch($scope.watchedObjectType) {
+                        case OBJECT_TYPE_TASKS:
                         case OBJECT_TYPE_PROJECT:
                             loadTaskDiskUsage(this.otdb_id);
                             break;
@@ -224,6 +231,7 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                         case OBJECT_TYPE_TASK:
                             loadProjectDiskUsage($scope.diskUsageChartSeries[0].project_name);
                             break;
+                        case OBJECT_TYPE_TASKS:
                         case OBJECT_TYPE_PROJECT:
                             loadAllProjectsDiskUsage();
                             break;
@@ -347,7 +355,7 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                         if(result.found) {
                             $scope.watchedObjectType = OBJECT_TYPE_TASK;
                             $scope.diskUsageChartConfig.title.text = result.task_directory.name + ' ' + result.task_directory.disk_usage_readable;
-                            $scope.diskUsageChartSeries[0].name = result.task_directory.name + ' ' + result.task_directory.disk_usage_readable;
+                            $scope.diskUsageChartSeries[0].name = $scope.diskUsageChartConfig.title.text;
                             var path_parts = result.task_directory.path.split('/');
                             $scope.diskUsageChartSeries[0].project_name = path_parts[path_parts.length-2];
                             $scope.diskUsageChartSeries[0].data.splice(0, $scope.diskUsageChartSeries[0].data.length);
@@ -371,12 +379,41 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                     });
                 };
 
+                var loadTasksDiskUsage = function(tasks) {
+                    var du_promises = tasks.map(function(t) { return dataService.getTaskDiskUsageByOTDBId(t.otdb_id); });
+                    $q.all(du_promises).then(function(du_results) {
+                        var found_task_dus = du_results.filter(function(r) { return r.found;}).map(function(r) { return r.task_directory; });
+
+                        if(found_task_dus.length > 0) {
+                            $scope.watchedObjectType = OBJECT_TYPE_TASKS;
+
+                            $scope.leastRecentCacheTimestamp = new Date(Math.min.apply(null, found_task_dus.map(function(tdu) { return dataService.convertDatestringToLocalUTCDate(tdu.cache_timestamp); })));
+
+                            var total_usage = found_task_dus.map(function(tdu) { return tdu.disk_usage; }).reduce(function(a, b) { return a + b;});
+                            var total_usage_readable = dataService.humanreadablesize(total_usage);
+
+                            $scope.diskUsageChartConfig.title.text = 'Total size: ' + total_usage_readable;
+                            $scope.diskUsageChartSeries[0].data.splice(0, $scope.diskUsageChartSeries[0].data.length);
+                            $scope.diskUsageChartSeries[0].name = $scope.diskUsageChartConfig.title.text;
+
+                            for(var task_du of found_task_dus) {
+                                $scope.diskUsageChartSeries[0].data.push({name:task_du.name + ' ' + task_du.disk_usage_readable,
+                                                                          y:task_du.disk_usage || 0,
+                                                                          otdb_id: task_du.otdb_id });
+                            }
+                        }else {
+                            $scope.ok();
+                            $scope.$evalAsync(function() { alert("Could not find disk usage for task " + otdb_id); });
+                        }
+                    });
+                };
+
                 var loadProjectDiskUsage = function(project_name) {
                     dataService.getProjectDiskUsage(project_name).then(function(result) {
                         if(result.found) {
                             $scope.watchedObjectType = OBJECT_TYPE_PROJECT;
                             $scope.diskUsageChartConfig.title.text = result.projectdir.name + ' ' + result.projectdir.disk_usage_readable;
-                            $scope.diskUsageChartSeries[0].name = result.projectdir.name + ' ' + result.projectdir.disk_usage_readable;
+                            $scope.diskUsageChartSeries[0].name = $scope.diskUsageChartConfig.title.text;
                             $scope.diskUsageChartSeries[0].data.splice(0, $scope.diskUsageChartSeries[0].data.length);
                             $scope.leastRecentCacheTimestamp = result.projectdir.cache_timestamp;
 
@@ -405,7 +442,7 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                         if(result.found) {
                             $scope.watchedObjectType = OBJECT_TYPE_PROJECTS;
                             $scope.diskUsageChartConfig.title.text = result.projectdir.name + ' ' + result.projectdir.disk_usage_readable;
-                            $scope.diskUsageChartSeries[0].name = result.projectdir.name + ' ' + result.projectdir.disk_usage_readable;
+                            $scope.diskUsageChartSeries[0].name = $scope.diskUsageChartConfig.title.text;
                             $scope.diskUsageChartSeries[0].data.splice(0, $scope.diskUsageChartSeries[0].data.length);
                             $scope.leastRecentCacheTimestamp = result.projectdir.cache_timestamp;
 
@@ -430,7 +467,11 @@ cleanupControllerMod.controller('CleanupController', ['$scope', '$uibModal', '$m
                 };
 
                 if(task) {
-                    loadTaskDiskUsage(task.otdb_id);
+                    if(task.constructor === Array) {
+                        loadTasksDiskUsage(task);
+                    } else {
+                        loadTaskDiskUsage(task.otdb_id);
+                    }
                 } else {
                     loadAllProjectsDiskUsage();
                 }
diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
index 5c19bb062b45755636aab3fffc33bc2bf25390a8..b632a2dc85d950955da5b9439ae47bd404b4fdc0 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
@@ -214,8 +214,10 @@ $scope.columns = [
                         var otdb_col = $scope.gridApi.grid.columns.find(function(c) {return c.field == 'otdb_id'; });
                         if(otdb_col && otdb_col.filters.length && otdb_col.filters[0].hasOwnProperty('term')) {
                             var otdb_id = otdb_col.filters[0].term;
-                            $scope.$parent.$parent.loadTaskByOTDBIdSelectAndJumpIntoView(otdb_id).then(function() {
-                                otdb_col.filters[0].term = null;
+                            $scope.$parent.$parent.loadTaskByOTDBIdSelectAndJumpIntoView(otdb_id).then(function(task) {
+                                if(task) {
+                                    otdb_col.filters[0].term = null;
+                                }
                             });
                         } else {
                             var mom_col = $scope.gridApi.grid.columns.find(function(c) {return c.field == 'mom_id'; });
@@ -223,8 +225,9 @@ $scope.columns = [
                             if(mom_col && mom_col.filters.length && mom_col.filters[0].hasOwnProperty('term')) {
                                 var mom_id = mom_col.filters[0].term;
                                 $scope.$parent.$parent.loadTaskByMoMIdSelectAndJumpIntoView(mom_id).then(function(task) {
-                                    mom_col.filters[0].term = null;
-                                    if(task == undefined) {
+                                    if(task) {
+                                        mom_col.filters[0].term = null;
+                                    } else {
                                         //getting the task by mom_id did not find a task
                                         //maybe the entered id was a mom group_id?
                                         //let's try to loadTasksByMoMGroupIdSelectAndJumpIntoView
@@ -711,25 +714,29 @@ gridControllerMod.directive('contextMenu', ['$document', '$window', function($do
                 });
             }
 
-            var liContent = selected_cep4_tasks.length == selected_tasks.length ? '<li><a href="#">Show disk usage</a></li>' : '<li><a href="#" style="color:#aaaaaa">Show disk usage</a></li>'
+            var completed_selected_cep4_tasks = selected_cep4_tasks.filter(function(t) { return t.status == 'finished' || t.status == 'aborted'; });
+
+            var liContent = completed_selected_cep4_tasks.length > 0 ? '<li><a href="#">Show disk usage</a></li>' : '<li><a href="#" style="color:#aaaaaa">Show disk usage</a></li>'
             var liElement = angular.element(liContent);
             ulElement.append(liElement);
-            if(selected_cep4_tasks.length == selected_tasks.length) {
+            if(completed_selected_cep4_tasks.length > 0) {
                 liElement.on('click', function() {
                     closeContextMenu();
-                    cleanupCtrl.showTaskDiskUsage(task);
+                    if(selected_cep4_tasks.length == 1) {
+                        cleanupCtrl.showTaskDiskUsage(task);
+                    } else {
+                        cleanupCtrl.showTaskDiskUsage(completed_selected_cep4_tasks);
+                    }
                 });
             }
 
-            var completed_selected_cep4_tasks = selected_cep4_tasks.filter(function(t) { return t.status == 'finished' || t.status == 'aborted'; });
-
-            var liContent = completed_selected_cep4_tasks.length == selected_tasks.length ? '<li><a href="#">Delete data</a></li>' : '<li><a href="#" style="color:#aaaaaa">Delete data</a></li>'
+            var liContent = completed_selected_cep4_tasks.length > 0 ? '<li><a href="#">Delete data</a></li>' : '<li><a href="#" style="color:#aaaaaa">Delete data</a></li>'
             var liElement = angular.element(liContent);
             ulElement.append(liElement);
-            if(completed_selected_cep4_tasks.length == selected_tasks.length) {
+            if(completed_selected_cep4_tasks.length > 0) {
                 liElement.on('click', function() {
                     closeContextMenu();
-                    cleanupCtrl.deleteSelectedTasksDataWithConfirmation();
+                    cleanupCtrl.deleteTasksDataWithConfirmation(completed_selected_cep4_tasks);
                 });
             }
 
diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/gantt-plugins/angular-gantt-contextmenu-plugin.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/gantt-plugins/angular-gantt-contextmenu-plugin.js
index 746cd6707e5418a217307c23f6d8c5a17d9bc8c7..06bfc0308fec37e18e0cb6922d3c8cebc3d8a62f 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/gantt-plugins/angular-gantt-contextmenu-plugin.js
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/gantt-plugins/angular-gantt-contextmenu-plugin.js
@@ -115,25 +115,29 @@
                                 });
                             }
 
-                            var liContent = selected_cep4_tasks.length == selected_tasks.length ? '<li><a href="#">Show disk usage</a></li>' : '<li><a href="#" style="color:#aaaaaa">Show disk usage</a></li>'
+                            var completed_selected_cep4_tasks = selected_cep4_tasks.filter(function(t) { return t.status == 'finished' || t.status == 'aborted'; });
+
+                            var liContent = completed_selected_cep4_tasks.length > 0 ? '<li><a href="#">Show disk usage</a></li>' : '<li><a href="#" style="color:#aaaaaa">Show disk usage</a></li>'
                             var liElement = angular.element(liContent);
                             ulElement.append(liElement);
-                            if(selected_cep4_tasks.length == selected_tasks.length) {
+                            if(completed_selected_cep4_tasks.length > 0) {
                                 liElement.on('click', function() {
                                     closeContextMenu();
-                                    cleanupCtrl.showTaskDiskUsage(task);
+                                    if(selected_cep4_tasks.length == 1) {
+                                        cleanupCtrl.showTaskDiskUsage(task);
+                                    } else {
+                                        cleanupCtrl.showTaskDiskUsage(completed_selected_cep4_tasks);
+                                    }
                                 });
                             }
 
-                            var completed_selected_cep4_tasks = selected_cep4_tasks.filter(function(t) { return t.status == 'finished' || t.status == 'aborted'; });
-
-                            var liContent = completed_selected_cep4_tasks.length == selected_tasks.length ? '<li><a href="#">Delete data</a></li>' : '<li><a href="#" style="color:#aaaaaa">Delete data</a></li>'
+                            var liContent = completed_selected_cep4_tasks.length > 0 ? '<li><a href="#">Delete data</a></li>' : '<li><a href="#" style="color:#aaaaaa">Delete data</a></li>'
                             var liElement = angular.element(liContent);
                             ulElement.append(liElement);
-                            if(completed_selected_cep4_tasks.length == selected_tasks.length) {
+                            if(completed_selected_cep4_tasks.length > 0) {
                                 liElement.on('click', function() {
                                     closeContextMenu();
-                                    cleanupCtrl.deleteSelectedTasksDataWithConfirmation();
+                                    cleanupCtrl.deleteTasksDataWithConfirmation(completed_selected_cep4_tasks);
                                 });
                             }