diff --git a/docs/images/VID_errorReportButton.png b/docs/images/VID_errorReportButton.png
index 3d3e24e..c7d330c 100644
--- a/docs/images/VID_errorReportButton.png
+++ b/docs/images/VID_errorReportButton.png
Binary files differ
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/controller/aaiSubscriberController.js b/vid-app-common/src/main/webapp/app/vid/scripts/controller/aaiSubscriberController.js
index ed03e3a..072adf3 100755
--- a/vid-app-common/src/main/webapp/app/vid/scripts/controller/aaiSubscriberController.js
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/controller/aaiSubscriberController.js
@@ -25,6 +25,13 @@
     function (COMPONENT, FIELD, PARAMETER, DataService, PropertyService, $scope, $http, $timeout, $location, $log, $route, $uibModal, VIDCONFIGURATION, UtilityService, vidService, AaiService, MsoService, OwningEntityService, AsdcService, featureFlags, $q, _) {
 
         $scope.showReportWindow = function() {
+            let GuiMessage;
+
+            if ($scope.errorMsg !== undefined && $scope.errorMsg !== null) {
+                GuiMessage = $scope.errorMsg;
+            } else {
+                GuiMessage = $scope.status;
+            }
 
             const modalWindow = $uibModal.open({
                 templateUrl: 'app/vid/scripts/modals/report-modal/report-modal.html',
@@ -32,7 +39,7 @@
                 controllerAs: 'vm',
                 resolve: {
                     errorMsg: function () {
-                        return $scope.errorMsg;
+                        return GuiMessage;
                     }
                 }
             });
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/controller/msoCommitController.js b/vid-app-common/src/main/webapp/app/vid/scripts/controller/msoCommitController.js
index e4c75fb..c841f14 100755
--- a/vid-app-common/src/main/webapp/app/vid/scripts/controller/msoCommitController.js
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/controller/msoCommitController.js
@@ -74,8 +74,16 @@
 
 	$scope.showReportWindow = function() {
 		let requestInfo = {};
-		requestInfo.requestId = _this.requestId;
-		requestInfo.serviceUuid = $scope.service.model.service.uuid;
+		if(_this.requestId !== undefined) {
+			requestInfo.requestId = _this.requestId;
+		} else {
+			requestInfo.requestId = null;
+		}
+		if($scope.service !== undefined) {
+			requestInfo.serviceUuid = $scope.service.model.service.uuid;
+		} else {
+			requestInfo.serviceUuid = null;
+		}
 
 		const modalWindow = $uibModal.open({
 			templateUrl: 'app/vid/scripts/modals/report-modal/report-modal.html',
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/report-modal/report-modal-request.controller.js b/vid-app-common/src/main/webapp/app/vid/scripts/modals/report-modal/report-modal-request.controller.js
index 6b69a08..48179dd 100644
--- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/report-modal/report-modal-request.controller.js
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/report-modal/report-modal-request.controller.js
@@ -42,10 +42,11 @@
         };
 
         vm.saveReportData = function(response) {
-            vm.report =
-                "Selected test API: \n" + DataService.getMsoRequestParametersTestApi()
-                + "\n\n Data from GUI:\n" + errorMsg
-                + "\n\n Collected data from API:\n" + JSON.stringify(response.data,  null, "\t") ;
+            vm.report = "Selected test API: \n" + DataService.getMsoRequestParametersTestApi();
+            if(errorMsg !== undefined && errorMsg !== null) {
+                vm.report += "\n\n Data from GUI:\n" + errorMsg;
+            }
+            vm.report +="\n\n Collected data from API:\n" + JSON.stringify(response.data,  null, "\t") ;
 
             const blob = new Blob([ vm.report ], { type : 'text/plain' });
             vm.download = ($window.URL || $window.webkitURL).createObjectURL( blob );
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/report-modal/report-modal.controller.js b/vid-app-common/src/main/webapp/app/vid/scripts/modals/report-modal/report-modal.controller.js
index eff0291..2154396 100644
--- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/report-modal/report-modal.controller.js
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/report-modal/report-modal.controller.js
@@ -42,11 +42,11 @@
         };
 
         vm.saveReportData = function(response) {
-            vm.report =
-                "Selected test API: \n" + DataService.getMsoRequestParametersTestApi()
-                + "\n\n Data from GUI:\n" + errorMsg
-                + "\n\n Collected data from API:\n" + JSON.stringify(response.data,  null, "\t") ;
-
+            vm.report = "Selected test API: \n" + DataService.getMsoRequestParametersTestApi();
+            if(errorMsg !== undefined && errorMsg !== null) {
+                vm.report += "\n\n Data from GUI:\n" + errorMsg;
+            }
+            vm.report +="\n\n Collected data from API:\n" + JSON.stringify(response.data,  null, "\t") ;
 
             const blob = new Blob([ vm.report ], { type : 'text/plain' });
             vm.download = ($window.URL || $window.webkitURL).createObjectURL( blob );
