diff --git a/vid-webpack-master/cypress/integration/iFrames/instantiationStatus.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/instantiationStatus.e2e.ts
index 6abd6a3..3b65734 100644
--- a/vid-webpack-master/cypress/integration/iFrames/instantiationStatus.e2e.ts
+++ b/vid-webpack-master/cypress/integration/iFrames/instantiationStatus.e2e.ts
@@ -28,7 +28,7 @@
   });
 
   it('should display the correct icons per status', function () {
-      const serviceAction:any = {INSTANTIATE : 'Instantiate', DELETE: 'Delete', UPDATE: 'Update'};
+      const serviceAction:any = {INSTANTIATE : 'Instantiate', DELETE: 'Delete', UPDATE: 'Update', UPGRADE: 'Upgrade'};
       cy.openIframe('app/ui/#/instantiationStatus');
       for(let i = 0 ; i < asyncRes.length; i++){
         if(asyncRes[i].project){
diff --git a/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.spec.ts b/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.spec.ts
index d115984..27d3f41 100644
--- a/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.spec.ts
+++ b/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.spec.ts
@@ -139,7 +139,7 @@
     'STOPPED': 'Stopped: Due to previous failure, will not be instantiated.',
     'StOpPeD': 'Stopped: Due to previous failure, will not be instantiated.',
     'COMPLETED_WITH_ERRORS': 'Completed with errors: some of the planned actions where successfully committed while other have not.\n Open the service to check it out.',
-    'UNEXPECTED_STATUS': 'Unexpected status: "UNEXPECTED_RANDOM_STATUS"',
+    'UNEXPECTED_RANDOM_STATUS': 'Unexpected status: "UNEXPECTED_RANDOM_STATUS"',
   })) {
 
     test(`getStatusTooltip should return status popover: status=${status}`, () => {
@@ -148,6 +148,12 @@
 
   }
 
+  test(`service.getStatus should handle undefined status`, () => {
+    const statusResult = service.getStatus(undefined);
+    expect(statusResult.tooltip).toEqual('Unexpected status: "undefined"');
+    expect(statusResult.iconClassName).toEqual(UNKNOWN);
+  });
+
   test('getStatusTooltip should return correct icon per job status', () => {
     let result : ServiceStatus  = service.getStatus('pending');
     expect(result.iconClassName).toEqual(PENDING);
@@ -172,6 +178,9 @@
 
     result = service.getStatus('UNEXPECTED_RANDOM_STATUS');
     expect(result.iconClassName).toEqual(UNKNOWN);
+
+    result = service.getStatus(undefined);
+    expect(result.iconClassName).toEqual(UNKNOWN);
   });
 
   function generateServiceInfoData(){
diff --git a/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.ts b/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.ts
index 6a85d9d..ffc2e68 100644
--- a/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.ts
+++ b/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.ts
@@ -138,7 +138,7 @@
   }
 
   getStatus(status : string) : ServiceStatus {
-    switch(status.toUpperCase()) {
+    switch(`${status}`.toUpperCase()) {
       case  'PENDING' :
         return new ServiceStatus(PENDING, 'primary', 'Pending: The action required will be sent as soon as possible.');
       case  'IN_PROGRESS' :
