diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.html b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.html
index 4680760..7a18bce 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.html
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.html
@@ -7,7 +7,7 @@
         [testId]="'backBtn'"
         [size]="'large'"
         [name]="'navigation-arrow-back'">
-              </svg-icon>
+      </svg-icon>
     </span>
 
     <div class="header-col middleDetails" style="padding-top: 7px;padding-left: 13px;line-height: 100%;" *ngIf="isServiceFailed">
@@ -38,10 +38,13 @@
     <span [attr.data-tests-id]="'isViewOnly-status-test'" class="service-instance-label purple">{{getModeName()}}</span>
   </div>
 
-
   <div class="right-header">
-    <span class="action-status-type-header delete" [attr.data-tests-id]="'delete-status-type-header'" *ngIf="isDeleted === true">Delete</span>
-    <span class="action-status-type-header resume" [attr.data-tests-id]="'resume-status-type-header'" *ngIf="isResume === true">Resume</span>
+    <span
+      *ngIf = "isUpgrade || isDeleted || isResume"
+      [ngClass] = "isDeleted===true ? 'action-status-type-header delete' : 'action-status-type-header resume'"
+      [attr.data-tests-id]="determineDataTestId()">
+      {{getAction()}}
+    </span>
     <span class="menu-container notShowOnViewMode notShowOnRetryMode">
       <span [attr.data-tests-id]="'openMenuBtn'" class="icon-browse" (click)="onContextMenu($event)"></span>
       <context-menu>
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.ts
index 51f9053..7923313 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.component.ts
@@ -39,12 +39,16 @@
   mode : DrawingBoardModes = DrawingBoardModes.CREATE;
   serviceOrchStatus: string;
   isDeleted: boolean = false;
+  isUpgrade: boolean = false;
   isResume: boolean = false;
   store : NgRedux<AppState>;
   drawingBoardPermissions : DrawingBoardPermissions;
   drawingBoardHeaderService : DrawingBoardHeaderService;
   isServiceFailed: boolean;
   serviceStatusMessage: string;
+  private readonly action: string;
+  private presentedAction: string;
+
   constructor(private _contextMenuService: ContextMenuService, private dialogService: DialogService,
               private _iframeService : IframeService,
               private route: ActivatedRoute, private msoService: MsoService,
@@ -68,6 +72,11 @@
           });
         }
       });
+    if (!_.isNil(this.store.getState().service.serviceInstance[this.serviceModelId].action)){
+      if (this.store.getState().service.serviceInstance[this.serviceModelId].action.includes("Upgrade")) {
+        this.isUpgrade = true;
+      }
+    }
   }
 
 
@@ -114,6 +123,7 @@
       this.serviceOrchStatus =  serviceInstance.orchStatus || "";
       this.isServiceFailed = serviceInstance.isFailed;
       this.serviceStatusMessage = serviceInstance.statusMessage;
+      this.isUpgrade = serviceInstance.isUpgraded;
     }
   }
 
@@ -131,12 +141,25 @@
     });
   }
 
+
+
   onDeleteUndoDeleteClick(){
     this.cancelResume(this.serviceModelId);
     this.isDeleted = !this.isDeleted;
     this._drawingBoardHeaderService.deleteService(this.serviceModelId, this.isDeleted)
   }
 
+  determineDataTestId() :string {
+    switch(true) {
+      case this.isResume:
+        return'resume-status-type-header';
+      case this.isDeleted:
+        return 'delete-status-type-header';
+      case this.isUpgrade:
+        return 'upgrade-status-type-header';
+    }
+  }
+
   onResumeUndoResumeClick(){
     this.cancelDelete(this.serviceModelId);
     this.isResume = !this.isResume;
@@ -174,9 +197,14 @@
       instanceFields.subscriberName = this.store.getState().service.subscribers.find(sub => sub.id === instanceFields.globalSubscriberId).name;
       instanceFields.owningEntityName = this.extractOwningEntityNameAccordingtoId(instanceFields.owningEntityId);
     }
-    return _.omit(instanceFields,'optionalGroupMembersMap');
+    return _.omit(instanceFields,['optionalGroupMembersMap', 'upgradedVFMSonsCounter', 'isUpgraded', 'latestAvailableVersion']);
   }
 
+  private getAction(): string {
+    if(!_.isNil(this.store.getState().service.serviceInstance[this.serviceModelId].action))
+      return this.store.getState().service.serviceInstance[this.serviceModelId].action.split('_').pop();
+    return;
+  }
 
   public deployService(): void {
       let instanceFields = this.extractServiceFields();
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.ts
index 7df2f3a..1b71d90 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-header/drawing-board-header.service.ts
@@ -36,6 +36,15 @@
     }
   }
 
+  upgradeService(serviceModelId: string, isUpgraded: boolean ) {
+    if(isUpgraded){
+      this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.Upgrade));
+    }
+    else{
+      this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.None));
+    }
+  }
+
   showAuditInfo(serviceModelId) : void {
     let instance: ServiceInstance = this.store.getState().service.serviceInstance[serviceModelId];
     let model =  new ServiceModel(this.store.getState().service.serviceHierarchy[serviceModelId]);
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.component.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.component.ts
index 6be5036..0e2d8e2 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.component.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.component.ts
@@ -28,6 +28,7 @@
 import {ComponentInfoModel} from "../component-info/component-info-model";
 import {ObjectToModelTreeService} from "../objectsToTree/objectToModelTree/objectToModelTree.service";
 import {DrawingBoardModes} from "../drawing-board.modes";
+import {ServiceInstanceActions} from "../../../shared/models/serviceInstanceActions";
 
 @Component({
   selector: 'drawing-board-tree',
@@ -203,6 +204,24 @@
     return false;
   }
 
+
+
+  isUpgraded(node: ITreeNode): boolean {
+    return this.isLabeledAsAction(node, "Upgrade");
+  }
+
+  isDeleted(node: ITreeNode): boolean {
+    return this.isLabeledAsAction(node, "Delete");
+  }
+
+  private isLabeledAsAction(node: ITreeNode, action) {
+    let nodeAction = node.data.action.split('_').pop();
+    if (!_.isNil(nodeAction)) {
+      return nodeAction === action;
+    }
+    return false;
+  }
+
   public selectNode(node: ITreeNode): void {
     node.expand();
     this._sharedTreeService.setSelectedVNF(node);
@@ -220,6 +239,13 @@
     this.tree.treeModel.getNodeById(id).parent.expand();
   }
 
+  getcontextMenuOptionLabel(contextMenuOption: TreeNodeContextMenuModel): string{
+    let optionLabel = contextMenuOption.label;
+    if(contextMenuOption.label === ServiceInstanceActions.Upgrade) {
+      return optionLabel.concat(" to V" + this._store.getState().service.serviceInstance[this.serviceModelId].latestAvailableVersion);
+    }
+    return optionLabel;
+  }
 }
 
 
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.html b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.html
index e1d88a6..8db53e8 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.html
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.html
@@ -78,12 +78,12 @@
               <div [attr.data-tests-id]="contextMenuOption.dataTestId">
                 <div style="float: left;margin-top: 3px;">
                   <svg-icon
-                    [ngClass]="contextMenuOption.iconClass"
                     class="icon-edit"
+                    [ngClass]="contextMenuOption.iconClass"
                     [size]="'small'"
                     [name]="contextMenuOption.iconClass">
                 </svg-icon></div>
-                <div style="padding-left: 25px;">{{contextMenuOption.label}}</div>
+                <div style="padding-left: 25px;">{{getcontextMenuOptionLabel(contextMenuOption)}}</div>
               </div>
             </ng-template>
           </context-menu>
@@ -100,16 +100,17 @@
                 [size]="'medium'"
                 [name]="'alert-triangle-o'">
               </svg-icon>
-            </span>
+          </span>
           <span *ngIf="drawingBoardTreeService.isVFModuleMissingData(node, serviceModelId)" class="icon-alert"
                 tooltip="{{ missingDataTooltip }}" tooltipPlacement="left"
                 [attr.data-tests-id]="'node-'+node.data.modelId +'-' +node.data.modelName+'-alert-icon'"></span>
         </div>
 
         <div class="action-status">
-          <span class="action-status-type delete" [attr.data-tests-id]="'delete-status-type'" [ngStyle]="{ 'opacity': node.data.action.split('_').pop() !== 'Delete' ? '0' : '1'}">Delete</span>
+          <span
+            [ngClass]="isUpgraded(node)?'action-status-type upgrade':'action-status-type delete'"
+            [attr.data-tests-id]="isUpgraded(node)?'action-status-type':'delete-status-type'" [ngStyle]="{ 'opacity': isUpgraded(node) || isDeleted(node) ? '1' : '0'}">{{isUpgraded(node)?"Upgrade":"Delete"}}</span>
         </div>
-
       </div>
     </ng-template>
   </tree-root>
@@ -117,3 +118,4 @@
 
 
 
+
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.scss b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.scss
index e08e69e..b774e03 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.scss
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.scss
@@ -341,15 +341,21 @@
                   line-height: 42px;
                   width: 95px;
                   min-width: 95px;
-                  .action-status-type.delete {
+                  .action-status-type {
                     background: transparent;
                     font-family: OpenSans-SemiBold;
                     font-size: 12px;
-                    color: red;
                     border-radius: 50px;
                     border: 1px solid gray;
-                    padding: 5px 20px;
+                    padding: 5px 17px;
+                    &.delete {
+                      color: red;
+                    }
+                    &.upgrade{
+                      color: #009FDB;
+                    }
                   }
+
                 }
 
                 .model-info.rightBorder {
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.spec.ts
index b804342..e5979f7 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.spec.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.spec.ts
@@ -1,8 +1,5 @@
-import {TestBed, getTestBed} from '@angular/core/testing';
-import {
-  HttpClientTestingModule,
-  HttpTestingController
-} from '@angular/common/http/testing';
+import {getTestBed, TestBed} from '@angular/core/testing';
+import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
 import {NgRedux} from "@angular-redux/store";
 import {DrawingBoardTreeService, TreeNodeContextMenuModel} from "./drawing-board-tree.service";
 import {ITreeNode} from "angular-tree-component/dist/defs/api";
@@ -74,10 +71,12 @@
       new TreeNodeContextMenuModel('addGroupMember', 'context-menu-addGroupMember', 'Add group members', 'plus'),
       new TreeNodeContextMenuModel('delete', 'context-menu-delete', 'Delete', 'trash-o'),
       new TreeNodeContextMenuModel('remove', 'context-menu-remove', 'Remove', 'trash-o'),
+      new TreeNodeContextMenuModel('upgrade', 'context-menu-upgrade', 'Upgrade', 'upgrade'),
       new TreeNodeContextMenuModel('undoDelete', 'context-menu-undoDelete', 'Undo Delete', 'undo-delete'),
+      new TreeNodeContextMenuModel('undoUpgrade', 'context-menu-undoUpgrade', 'Undo Upgrade', 'undo-delete'),
       new TreeNodeContextMenuModel('changeAssociations', 'context-menu-changeAssociations', 'Change Associations', 'edit-file-o')
     ];
-    expect(options.length).toEqual(8);
+    expect(options.length).toEqual(10);
     expect(options).toEqual(expected);
   });
 
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.ts
index acf6224..28b6e51 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board-tree/drawing-board-tree.service.ts
@@ -42,7 +42,9 @@
       new TreeNodeContextMenuModel('addGroupMember', 'context-menu-addGroupMember', 'Add group members', 'plus'),
       new TreeNodeContextMenuModel('delete', 'context-menu-delete', 'Delete', 'trash-o'),
       new TreeNodeContextMenuModel('remove', 'context-menu-remove', 'Remove', 'trash-o'),
+      new TreeNodeContextMenuModel('upgrade', 'context-menu-upgrade', 'Upgrade', 'upgrade'),
       new TreeNodeContextMenuModel('undoDelete', 'context-menu-undoDelete', 'Undo Delete', 'undo-delete'),
+      new TreeNodeContextMenuModel('undoUpgrade', 'context-menu-undoUpgrade', 'Undo Upgrade', 'undo-delete'),
       new TreeNodeContextMenuModel('changeAssociations', 'context-menu-changeAssociations', 'Change Associations', 'edit-file-o')
     ];
   }
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.ts
index bfe1d00..47a6dcb 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.ts
@@ -23,10 +23,12 @@
   deleteActionVfModuleInstance,
   removeVfModuleInstance,
   undoDeleteVfModuleInstance,
-  updateVFModulePosition
+  undoUgradeVFModule,
+  updateVFModulePosition,
+  upgradeVFModule
 } from "../../../../../shared/storeUtil/utils/vfModule/vfModule.actions";
 import {ComponentInfoService} from "../../../component-info/component-info.service";
-import {ComponentInfoModel, ComponentInfoType} from "../../../component-info/component-info-model";
+import {ComponentInfoType} from "../../../component-info/component-info-model";
 import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component";
 
 export class VFModuleModelInfo implements ILevelNodeInfo {
@@ -353,10 +355,32 @@
         },
         visible: (node) => this._sharedTreeService.shouldShowUndoDelete(node),
         enable: (node, serviceModelId) => this._sharedTreeService.shouldShowUndoDelete(node) && this._sharedTreeService.shouldShowDelete(node.parent) && !this._sharedTreeService.isServiceOnDeleteMode(serviceModelId)
-      }
+      },
+      upgrade : {
+        method : (node, serviceModelId) => {
+          this._sharedTreeService.upgradeBottomUp(node, serviceModelId);
+          this._store.dispatch(upgradeVFModule(node.data.modelName,  node.parent.data.vnfStoreKey, serviceModelId, node.data.dynamicModelName));
+        },
+        visible: (node,serviceModelId) => {
+          return this._sharedTreeService.shouldShowUpgrade(node, serviceModelId);
+        },
+        enable:  (node, serviceModelId) => {
+          return this._sharedTreeService.shouldShowUpgrade(node, serviceModelId);
+        }
+      },
+      undoUpgrade: {
+        method: (node, serviceModelId) => {
+          this._sharedTreeService.undoUpgradeBottomUp(node, serviceModelId);
+          this._store.dispatch(undoUgradeVFModule(node.data.modelName,  node.parent.data.vnfStoreKey, serviceModelId, node.data.dynamicModelName));
+        },
+        visible: (node) => {
+          return this._sharedTreeService.shouldShowUndoUpgrade(node);
+        },
+        enable: (node) => {
+          return this._sharedTreeService.shouldShowUndoUpgrade(node);
+        }
+      },
     };
-
-
   }
 
   updatePosition(that , node, instanceId, parentStoreKey): void {
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.ts
index 2bdeda0..ebcba16 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vnf/vnf.model.info.ts
@@ -29,7 +29,9 @@
 import {
   deleteActionVnfInstance,
   undoDeleteActionVnfInstance,
-  updateVnfPosition
+  undoUpgradeVnf,
+  updateVnfPosition,
+  upgradeVnf
 } from "../../../../../shared/storeUtil/utils/vnf/vnf.actions";
 import * as _ from 'lodash';
 import {IModalConfig} from "onap-ui-angular/dist/modals/models/modal-config";
@@ -278,7 +280,21 @@
         },
         visible: (node) => this._sharedTreeService.shouldShowUndoDelete(node),
         enable: (node, serviceModelId) => this._sharedTreeService.shouldShowUndoDelete(node) && !this._sharedTreeService.isServiceOnDeleteMode(serviceModelId)
-      }
+      },
+      upgrade: {
+        method: (node, serviceModelId) => {
+          this._store.dispatch(upgradeVnf(node.data.vnfStoreKey, serviceModelId));
+        },
+        visible: () => false,
+        enable: () => false
+      },
+      undoUpgrade: {
+        method: (node, serviceModelId) => {
+          this._store.dispatch(undoUpgradeVnf(node.data.vnfStoreKey, serviceModelId));
+        },
+        visible: () => false,
+        enable: () => false
+      },
     }
   }
 
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.ts
index 9cd928e..f303434 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vrf/vrfModal/networkStep/network.step.service.ts
@@ -8,7 +8,9 @@
 } from "../../../../../../../shared/storeUtil/utils/global/global.actions";
 import {ElementsTableService} from "../../../../../../../shared/components/searchMembersModal/members-table/elements-table.service";
 import {
-  ICriteria, ISearchField, ITableContent,
+  ICriteria,
+  ISearchField,
+  ITableContent,
   ModalInformation
 } from "../../../../../../../shared/components/searchMembersModal/members-table/element-table-row.model";
 import {Observable, of} from "rxjs";
@@ -76,7 +78,7 @@
 
   getNetworks = (serviceInstance): Observable<any[]> => {
     let cloudRegion = serviceInstance.lcpCloudRegionId;
-    let tenantId = serviceInstance.tenantName;
+    let tenantId = serviceInstance.tenantId;
     return this._aaiService.retrieveActiveNetwork(cloudRegion, tenantId).map((networks: NetworkModalRow[]) => {
       this.generateRolesOptions(networks);
       return this.sortElementsResultByField(networks, this.uniqObjectField);
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.spec.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.spec.ts
index cad23ff..89e20a2 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.spec.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.spec.ts
@@ -50,13 +50,27 @@
   }
 }
 
-class MockVnfModelInfo<T> {
-  getModel() {
-    return {}
-  }
-}
 
 
+
+function getNodeWithData(menuAction:string){
+  const nodeData = {
+    menuActions: {}
+  };
+  nodeData['menuActions'][menuAction] =  {
+    method: (node, serviceModelId) => {}
+  }
+  const node = {
+    parent: {
+      data: nodeData,
+      parent: {
+        data: nodeData
+      }
+    }
+  };
+  return node
+}
+
 describe('Shared Tree Service', () => {
   let injector;
   let service: SharedTreeService;
@@ -110,6 +124,25 @@
     expect(service).toBeDefined();
   });
 
+  test('SharedTreeService upgradeBottomUp should call redux actions', () => {
+    const serviceModelId = "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd";
+    const node = getNodeWithData("upgrade")
+    spyOn(node.parent.data.menuActions['upgrade'], 'method');
+    service.upgradeBottomUp(node, serviceModelId);
+    expect(node.parent.data.menuActions['upgrade'].method).toBeCalledWith(node.parent, serviceModelId);
+    expect(node.parent.data.menuActions['upgrade'].method).toBeCalledTimes(2);
+
+  });
+
+  test('SharedTreeService undoUpgradeBottomUp should call redux actions', () => {
+    const serviceModelId = "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd";
+    const node = getNodeWithData("undoUpgrade")
+    spyOn(node.parent.data.menuActions['undoUpgrade'], 'method');
+    service.undoUpgradeBottomUp(node, serviceModelId);
+    expect(node.parent.data.menuActions['undoUpgrade'].method).toBeCalledWith(node.parent, serviceModelId);
+    expect(node.parent.data.menuActions['undoUpgrade'].method).toBeCalledTimes(2);
+  });
+
   test('shouldShowDeleteInstanceWithChildrenModal should open modal if child exist with action create', () => {
     jest.spyOn(MessageBoxService.openModal, 'next');
     let foo = () => {
@@ -128,7 +161,9 @@
   test('openAuditInfoModal should open modal for failed instance', () => {
     jest.spyOn(AuditInfoModalComponent.openInstanceAuditInfoModal, 'next');
 
-    let modelInfoServiceMock: ILevelNodeInfo = new VnfModelInfo(null, null, null, null, null, null, null, null, null, null,null);
+    let modelInfoServiceMock: ILevelNodeInfo = new VnfModelInfo(null, null,
+      null, null, null, null,
+      null, null, null, null,null);
     const modelMock = {"a": "a"};
     const instanceMock = {"instance": "instance", "trackById": "123456789"};
     const instanceTypeMock = "instanceTypeMock";
@@ -1331,128 +1366,8 @@
             "isPermitted": true,
             "cloudOwner": "irma-aic"
           }, {
-            "id": "229bcdc6eaeb4ca59d55221141d01f8e",
-            "name": "AIN Web Tool-15-D-STTest2",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "1178612d2b394be4834ad77f567c0af2",
-            "name": "AIN Web Tool-15-D-SSPtestcustome",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "19c5ade915eb461e8af52fb2fd8cd1f2",
-            "name": "AIN Web Tool-15-D-UncheckedEcopm",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "de007636e25249238447264a988a927b",
-            "name": "AIN Web Tool-15-D-dfsdf",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "62f29b3613634ca6a3065cbe0e020c44",
-            "name": "AIN/SMS-16-D-Multiservices1",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "649289e30d3244e0b48098114d63c2aa",
-            "name": "AIN Web Tool-15-D-SSPST66",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "3f21eeea6c2c486bba31dab816c05a32",
-            "name": "AIN Web Tool-15-D-ASSPST47",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "f60ce21d3ee6427586cff0d22b03b773",
-            "name": "CESAR-100-D-sspjg67246",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "8774659e425f479895ae091bb5d46560",
-            "name": "CESAR-100-D-sspjg68359",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "624eb554b0d147c19ff8885341760481",
-            "name": "AINWebTool-15-D-iftach",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "214f55f5fc414c678059c383b03e4962",
-            "name": "CESAR-100-D-sspjg612401",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "c90666c291664841bb98e4d981ff1db5",
-            "name": "CESAR-100-D-sspjg621340",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "ce5b6bc5c7b348e1bf4b91ac9a174278",
-            "name": "sspjg621351cloned",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "b386b768a3f24c8e953abbe0b3488c02",
-            "name": "AINWebTool-15-D-eteancomp",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "dc6c4dbfd225474e9deaadd34968646c",
-            "name": "AINWebTool-15-T-SPFET",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "02cb5030e9914aa4be120bd9ed1e19eb",
-            "name": "AINWebTool-15-X-eeweww",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "f2f3830e4c984d45bcd00e1a04158a79",
-            "name": "CESAR-100-D-spjg61909",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "05b91bd5137f4929878edd965755c06d",
-            "name": "CESAR-100-D-sspjg621512cloned",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "7002fbe8482d4a989ddf445b1ce336e0",
-            "name": "AINWebTool-15-X-vdr",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "4008522be43741dcb1f5422022a2aa0b",
-            "name": "AINWebTool-15-D-ssasa",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "f44e2e96a1b6476abfda2fa407b00169",
-            "name": "AINWebTool-15-D-PFNPT",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "b69a52bec8a84669a37a1e8b72708be7",
-            "name": "AINWebTool-15-X-vdre",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "fac7d9fd56154caeb9332202dcf2969f",
-            "name": "AINWebTool-15-X-NONPODECOMP",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "2d34d8396e194eb49969fd61ffbff961",
-            "name": "DN5242-Nov16-T5",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "cb42a77ff45b48a8b8deb83bb64acc74",
-            "name": "ro-T11",
+            "id": "d0a3e3f2964542259d155a81c41aadc3",
+            "name": "test-hvf6-09",
             "isPermitted": true,
             "cloudOwner": "irma-aic"
           }, {
@@ -1461,16 +1376,6 @@
             "isPermitted": true,
             "cloudOwner": "irma-aic"
           }, {
-            "id": "4914ab0ab3a743e58f0eefdacc1dde77",
-            "name": "DN5242-Nov21-T1",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
-            "id": "d0a3e3f2964542259d155a81c41aadc3",
-            "name": "test-hvf6-09",
-            "isPermitted": true,
-            "cloudOwner": "irma-aic"
-          }, {
             "id": "cbb99fe4ada84631b7baf046b6fd2044",
             "name": "DN5242-Nov16-T3",
             "isPermitted": true,
@@ -1567,199 +1472,28 @@
           "isPermitted": false
         }, {"id": "7", "name": "vVM", "isPermitted": false}, {"id": "4", "name": "vVoiceMail", "isPermitted": false}]
       },
-      "aicZones": [{"id": "ATL53", "name": "AAIATLTE-ATL53"}, {"id": "ABC15", "name": "AAITESAN-ABC15"}, {
-        "id": "TES36",
-        "name": "ABCEETES-TES36"
-      }, {"id": "ATL54", "name": "AICFTAAI-ATL54"}, {"id": "ATL43", "name": "AICLOCID-ATL43"}, {
-        "id": "AMD15",
-        "name": "AMDFAA01-AMD15"
-      }, {"id": "AMF11", "name": "AMDOCS01-AMF11"}, {"id": "RCT1", "name": "AMSTERNL-RCT1"}, {
-        "id": "AMS1",
-        "name": "AMSTNLBW-AMS1"
-      }, {"id": "HJH1", "name": "AOEEQQQD-HJH1"}, {"id": "HJE1", "name": "AOEEWWWD-HJE1"}, {
-        "id": "MCS1",
-        "name": "ASACMAMS-MCS1"
-      }, {"id": "AUG1", "name": "ASDFGHJK-AUG1"}, {"id": "LUC1", "name": "ATLDFGYC-LUC1"}, {
-        "id": "ATL1",
-        "name": "ATLNGAMA-ATL1"
-      }, {"id": "ATL2", "name": "ATLNGANW-ATL2"}, {"id": "HPO1", "name": "ATLNGAUP-HPO1"}, {
-        "id": "ANI1",
-        "name": "ATLNGTRE-ANI1"
-      }, {"id": "ATL44", "name": "ATLSANAB-ATL44"}, {"id": "ATL56", "name": "ATLSANAC-ATL56"}, {
-        "id": "ABC11",
-        "name": "ATLSANAI-ABC11"
-      }, {"id": "ATL34", "name": "ATLSANAI-ATL34"}, {"id": "ATL63", "name": "ATLSANEW-ATL63"}, {
-        "id": "ABC12",
-        "name": "ATLSECIA-ABC12"
-      }, {"id": "AMD18", "name": "AUDIMA01-AMD18"}, {"id": "AVT1", "name": "AVTRFLHD-AVT1"}, {
-        "id": "KIT1",
-        "name": "BHYJFGLN-KIT1"
-      }, {"id": "BHY17", "name": "BHYTFRF3-BHY17"}, {"id": "RTW5", "name": "BHYTFRY4-RTW5"}, {
-        "id": "RTZ4",
-        "name": "BHYTFRZ6-RTZ4"
-      }, {"id": "RTD2", "name": "BHYTFRk4-RTD2"}, {"id": "BNA1", "name": "BNARAGBK-BNA1"}, {
-        "id": "VEL1",
-        "name": "BNMLKUIK-VEL1"
-      }, {"id": "BOT1", "name": "BOTHWAKY-BOT1"}, {"id": "CAL33", "name": "CALIFORN-CAL33"}, {
-        "id": "ATL84",
-        "name": "CANTTCOC-ATL84"
-      }, {"id": "HSD1", "name": "CHASKCDS-HSD1"}, {"id": "CHI1", "name": "CHILLIWE-CHI1"}, {
-        "id": "XCP12",
-        "name": "CHKGH123-XCP12"
-      }, {"id": "JNL1", "name": "CJALSDAC-JNL1"}, {"id": "KJN1", "name": "CKALDKSA-KJN1"}, {
-        "id": "CLG1",
-        "name": "CLGRABAD-CLG1"
-      }, {"id": "CKL1", "name": "CLKSKCKK-CKL1"}, {"id": "ATL66", "name": "CLLIAAII-ATL66"}, {
-        "id": "CQK1",
-        "name": "CQKSCAKK-CQK1"
-      }, {"id": "CWY1", "name": "CWYMOWBS-CWY1"}, {"id": "DKJ1", "name": "DKJSJDKA-DKJ1"}, {
-        "id": "DSF45",
-        "name": "DSFBG123-DSF45"
-      }, {"id": "DSL12", "name": "DSLFK242-DSL12"}, {"id": "FDE55", "name": "FDERT555-FDE55"}, {
-        "id": "VEN2",
-        "name": "FGHJUHIL-VEN2"
-      }, {"id": "ATL64", "name": "FORLOAAJ-ATL64"}, {"id": "GNV1", "name": "GNVLSCTL-GNV1"}, {
-        "id": "SAN22",
-        "name": "GNVLSCTL-SAN22"
-      }, {"id": "KAP1", "name": "HIOUYTRQ-KAP1"}, {"id": "LIS1", "name": "HOSTPROF-LIS1"}, {
-        "id": "HRG1",
-        "name": "HRGHRGGS-HRG1"
-      }, {"id": "HST25", "name": "HSTNTX01-HST25"}, {"id": "STN27", "name": "HSTNTX01-STN27"}, {
-        "id": "HST70",
-        "name": "HSTNTX70-HST70"
-      }, {"id": "KOR1", "name": "HYFLNBVT-KOR1"}, {"id": "RAD10", "name": "INDIPUNE-RAD10"}, {
-        "id": "REL1",
-        "name": "INGERFGT-REL1"
-      }, {"id": "JAD1", "name": "JADECLLI-JAD1"}, {"id": "HKA1", "name": "JAKHLASS-HKA1"}, {
-        "id": "JCS1",
-        "name": "JCSJSCJS-JCS1"
-      }, {"id": "JCV1", "name": "JCVLFLBW-JCV1"}, {"id": "KGM2", "name": "KGMTNC20-KGM2"}, {
-        "id": "KJF12",
-        "name": "KJFDH123-KJF12"
-      }, {"id": "JGS1", "name": "KSJKKKKK-JGS1"}, {"id": "LAG1", "name": "LARGIZON-LAG1"}, {
-        "id": "LAG1a",
-        "name": "LARGIZON-LAG1a"
-      }, {"id": "LAG45", "name": "LARGIZON-LAG1a"}, {"id": "LAG1b", "name": "LARGIZON-LAG1b"}, {
-        "id": "WAN1",
-        "name": "LEIWANGW-WAN1"
-      }, {"id": "DSA1", "name": "LKJHGFDS-DSA1"}, {"id": "LON1", "name": "LONEENCO-LON1"}, {
-        "id": "SITE",
-        "name": "LONEENCO-SITE"
-      }, {"id": "ZXL1", "name": "LWLWCANN-ZXL1"}, {"id": "hvf20", "name": "MDTWNJ21-hvf20"}, {
-        "id": "hvf32",
-        "name": "MDTWNJ21-hvf32"
-      }, {"id": "AMD13", "name": "MEMATLAN-AMD13"}, {"id": "MIC54", "name": "MICHIGAN-MIC54"}, {
-        "id": "MAR1",
-        "name": "MNBVCXZM-MAR1"
-      }, {"id": "NCA1", "name": "NCANCANN-NCA1"}, {"id": "NFT1", "name": "NFTJSSSS-NFT1"}, {
-        "id": "GAR1",
-        "name": "NGFVSJKO-GAR1"
-      }, {"id": "NYC1", "name": "NYCMNY54-NYC1"}, {"id": "OKC1", "name": "OKCBOK55-OKC1"}, {
-        "id": "OLG1",
-        "name": "OLHOLHOL-OLG1"
-      }, {"id": "OLK1", "name": "OLKOLKLS-OLK1"}, {"id": "NIR1", "name": "ORFLMANA-NIR1"}, {
-        "id": "JAN1",
-        "name": "ORFLMATT-JAN1"
-      }, {"id": "ORL1", "name": "ORLDFLMA-ORL1"}, {"id": "PAR1", "name": "PARSFRCG-PAR1"}, {
-        "id": "PBL1",
-        "name": "PBLAPBAI-PBL1"
-      }, {"id": "mac10", "name": "PKGTESTF-mac10"}, {"id": "mac20", "name": "PKGTESTF-mac20"}, {
-        "id": "TIR2",
-        "name": "PLKINHYI-TIR2"
-      }, {"id": "IBB1", "name": "PLMKOIJU-IBB1"}, {"id": "COM1", "name": "PLMKOPIU-COM1"}, {
-        "id": "POI1",
-        "name": "PLMNJKIU-POI1"
-      }, {"id": "PLT1", "name": "PLTNCA60-PLT1"}, {"id": "POI22", "name": "POIUY123-POI22"}, {
-        "id": "DCC1",
-        "name": "POIUYTGH-DCC1"
-      }, {"id": "DCC1a", "name": "POIUYTGH-DCC1a"}, {"id": "DCC1b", "name": "POIUYTGH-DCC1b"}, {
-        "id": "DCC2",
-        "name": "POIUYTGH-DCC2"
-      }, {"id": "DCC3", "name": "POIUYTGH-DCC3"}, {"id": "IAA1", "name": "QAZXSWED-IAA1"}, {
-        "id": "QWE1",
-        "name": "QWECLLI1-QWE1"
-      }, {"id": "NUM1", "name": "QWERTYUI-NUM1"}, {"id": "RAD1", "name": "RADICAL1-RAD1"}, {
-        "id": "RJN1",
-        "name": "RJNRBZAW-RJN1"
-      }, {"id": "SAA13", "name": "SAIT1AA9-SAA13"}, {"id": "SAA14", "name": "SAIT1AA9-SAA14"}, {
-        "id": "SDD81",
-        "name": "SAIT1DD6-SDD81"
-      }, {"id": "SDD82", "name": "SAIT1DD9-SDD82"}, {"id": "SAA11", "name": "SAIT9AA2-SAA11"}, {
-        "id": "SAA80",
-        "name": "SAIT9AA3-SAA80"
-      }, {"id": "SAA12", "name": "SAIT9AF8-SAA12"}, {"id": "SCC80", "name": "SAIT9CC3-SCC80"}, {
-        "id": "ATL75",
-        "name": "SANAAIRE-ATL75"
-      }, {"id": "ICC1", "name": "SANJITAT-ICC1"}, {"id": "SCK1", "name": "SCKSCKSK-SCK1"}, {
-        "id": "EHH78",
-        "name": "SDCSHHH5-EHH78"
-      }, {"id": "SAA78", "name": "SDCTAAA1-SAA78"}, {"id": "SAX78", "name": "SDCTAXG1-SAX78"}, {
-        "id": "SBX78",
-        "name": "SDCTBXG1-SBX78"
-      }, {"id": "SEE78", "name": "SDCTEEE4-SEE78"}, {"id": "SGG78", "name": "SDCTGGG1-SGG78"}, {
-        "id": "SXB78",
-        "name": "SDCTGXB1-SXB78"
-      }, {"id": "SJJ78", "name": "SDCTJJJ1-SJJ78"}, {"id": "SKK78", "name": "SDCTKKK1-SKK78"}, {
-        "id": "SLF78",
-        "name": "SDCTLFN1-SLF78"
-      }, {"id": "SLL78", "name": "SDCTLLL1-SLL78"}, {"id": "MAD11", "name": "SDFQWGKL-MAD11"}, {
-        "id": "HGD1",
-        "name": "SDFQWHGD-HGD1"
-      }, {"id": "SBB78", "name": "SDIT1BBB-SBB78"}, {"id": "SDG78", "name": "SDIT1BDG-SDG78"}, {
-        "id": "SBU78",
-        "name": "SDIT1BUB-SBU78"
-      }, {"id": "SHH78", "name": "SDIT1HHH-SHH78"}, {"id": "SJU78", "name": "SDIT1JUB-SJU78"}, {
-        "id": "SNA1",
-        "name": "SNANTXCA-SNA1"
-      }, {"id": "SAM1", "name": "SNDGCA64-SAN1"}, {"id": "SNG1", "name": "SNGPSIAU-SNG1"}, {
-        "id": "SSA56",
-        "name": "SSIT2AA7-SSA56"
-      }, {"id": "STG1", "name": "STTGGE62-STG1"}, {"id": "STT1", "name": "STTLWA02-STT1"}, {
-        "id": "SYD1",
-        "name": "SYDNAUBV-SYD1"
-      }, {"id": "ATL99", "name": "TEESTAAI-ATL43"}, {"id": "ATL98", "name": "TEESTAAI-ATL43"}, {
-        "id": "ATL76",
-        "name": "TELEPAAI-ATL76"
-      }, {"id": "ABC14", "name": "TESAAISA-ABC14"}, {"id": "TAT33", "name": "TESAAISA-TAT33"}, {
-        "id": "TAT34",
-        "name": "TESAAISB-TAT34"
-      }, {"id": "TAT37", "name": "TESAAISD-TAT37"}, {"id": "ATL62", "name": "TESSASCH-ATL62"}, {
-        "id": "TLP1",
-        "name": "TLPNXM18-TLP1"
-      }, {"id": "SAN13", "name": "TOKYJPFA-SAN13"}, {"id": "TOK1", "name": "TOKYJPFA-TOK1"}, {
-        "id": "TOL1",
-        "name": "TOLDOH21-TOL1"
-      }, {"id": "TOR1", "name": "TOROONXN-TOR1"}, {"id": "TOY1", "name": "TORYONNZ-TOY1"}, {
-        "id": "ATL35",
-        "name": "TTESSAAI-ATL35"
-      }, {"id": "TUF1", "name": "TUFCLLI1-TUF1"}, {"id": "SAI1", "name": "UBEKQLPD-SAI1"}, {
-        "id": "UUU4",
-        "name": "UUUAAAUU-UUU4"
-      }, {"id": "YYY1", "name": "UUUAIAAI-YYY1"}, {"id": "BAN1", "name": "VSDKYUTP-BAN1"}, {
-        "id": "WAS1",
-        "name": "WASHDCSW-WAS1"
-      }, {"id": "APP1", "name": "WBHGTYUI-APP1"}, {"id": "SUL2", "name": "WERTYUJK-SUL2"}, {
-        "id": "DEF2",
-        "name": "WSBHGTYL-DEF2"
-      }, {"id": "DHA12", "name": "WSXEDECF-DHA12"}, {"id": "MNT11", "name": "WSXEFBTH-MNT11"}, {
-        "id": "RAJ1",
-        "name": "YGBIJNLQ-RAJ1"
-      }, {"id": "JAG1", "name": "YUDFJULP-JAG1"}, {"id": "ZEN1", "name": "ZENCLLI1-ZEN1"}, {
-        "id": "ZOG1",
-        "name": "ZOGASTRO-ZOG1"
-      }, {"id": "SDE1", "name": "ZXCVBNMA-SDE1"}, {"id": "SIP1", "name": "ZXCVBNMK-SIP1"}, {
-        "id": "JUL1",
-        "name": "ZXCVBNMM-JUL1"
-      }, {"id": "ERT1", "name": "ertclli1-ERT1"}, {"id": "IOP1", "name": "iopclli1-IOP1"}, {
-        "id": "OPA1",
-        "name": "opaclli1-OPA1"
-      }, {"id": "RAI1", "name": "poiuytre-RAI1"}, {"id": "PUR1", "name": "purelyde-PUR1"}, {
-        "id": "RTY1",
-        "name": "rtyclli1-RTY1"
-      }, {"id": "SDF1", "name": "sdfclli1-SDF1"}, {"id": "SSW56", "name": "ss8126GT-SSW56"}, {
-        "id": "UIO1",
-        "name": "uioclli1-UIO1"
-      }],
+      "aicZones": [
+        {
+          "id": "NFT1",
+          "name": "NFTJSSSS-NFT1"
+        },
+        {
+          "id": "JAG1",
+          "name": "YUDFJULP-JAG1"
+        },
+        {
+          "id": "YYY1",
+          "name": "UUUAIAAI-YYY1"
+        },
+        {
+          "id": "AVT1",
+          "name": "AVTRFLHD-AVT1"
+        },
+        {
+          "id": "ATL34",
+          "name": "ATLSANAI-ATL34"
+        }
+      ],
       "categoryParameters": {
         "owningEntityList": [{
           "id": "aaa1",
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts
index 7df03fd..c56cc49 100644
--- a/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts
+++ b/vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/shared.tree.service.ts
@@ -7,10 +7,12 @@
 import * as _ from "lodash";
 import {DrawingBoardModes} from "../drawing-board.modes";
 import {AuditInfoModalComponent} from "../../../shared/components/auditInfoModal/auditInfoModal.component";
-import {VnfModelInfo} from "./models/vnf/vnf.model.info";
 import {ILevelNodeInfo} from "./models/basic.model.info";
 import {ComponentInfoModel, ComponentInfoType} from "../component-info/component-info-model";
 import {ModelInformationItem} from "../../../shared/components/model-information/model-information.component";
+import {undoUpgradeService, upgradeService} from "../../../shared/storeUtil/utils/service/service.actions";
+import {VNFMethods} from "../../../shared/storeUtil/utils/vnf/vnf.actions";
+import {FeatureFlagsService, Features} from "../../../shared/services/featureFlag/feature-flags.service";
 
 @Injectable()
 export class SharedTreeService {
@@ -106,16 +108,7 @@
    * should return true if can delete
    **********************************************/
   shouldShowDelete(node): boolean {
-    const mode = this._store.getState().global.drawingBoardStatus;
-    if (!_.isNil(node) && !_.isNil(node.data) && !_.isNil(node.data.action) && !_.isNil(node.data.menuActions['delete'])) {
-      if (mode !== DrawingBoardModes.EDIT || node.data.action === ServiceInstanceActions.Create) {
-        return false;
-      } else if (node.data.action === ServiceInstanceActions.None) {
-        return true
-      }
-      return false;
-    }
-    return false;
+    return this.shouldShowButtonGeneric(node, "delete")
   }
 
   /**********************************************
@@ -146,6 +139,78 @@
     return false;
   }
   /**********************************************
+   * enabled only on edit/design
+   * enabled only if there's a newer version for VNF-M
+   **********************************************/
+  upgradeBottomUp(node,serviceModelId: string): void {
+    this.iterateOverTreeBranchAndRunAction(node, serviceModelId, VNFMethods.UPGRADE);
+    this._store.dispatch(upgradeService(serviceModelId));
+  }
+
+  private iterateOverTreeBranchAndRunAction(node, serviceModelId: string, actionMethod) {
+    while (_.has(node.parent, 'data') && _.has(node.parent.data, 'menuActions')
+    && !_.isNil(node.parent.data.menuActions[actionMethod])) {
+      node = node.parent;
+      node.data.menuActions[actionMethod]['method'](node, serviceModelId);
+    }
+  }
+
+  /****************************************************
+   * should return true if customer can upgrade a VFM *
+   ****************************************************/
+  shouldShowUpgrade(node, serviceModelId): boolean {
+    if (FeatureFlagsService.getFlagState(Features.FLAG_FLASH_REPLACE_VF_MODULE, this._store) &&
+      this.isThereAnUpdatedLatestVersion(serviceModelId)) {
+      return this.shouldShowButtonGeneric(node, VNFMethods.UPGRADE);
+    }
+    else {
+      return false
+    }
+  }
+
+  private isThereAnUpdatedLatestVersion(serviceModelId) : boolean{
+    let serviceInstance = this._store.getState().service.serviceInstance[serviceModelId];
+    return !_.isNil(serviceInstance.latestAvailableVersion) && (Number(serviceInstance.modelInfo.modelVersion) < serviceInstance.latestAvailableVersion);
+  }
+
+  private shouldShowButtonGeneric(node, method) {
+    const mode = this._store.getState().global.drawingBoardStatus;
+    if (!_.isNil(node) && !_.isNil(node.data) && !_.isNil(node.data.action) && !_.isNil(node.data.menuActions[method])) {
+      if (mode !== DrawingBoardModes.EDIT || node.data.action === ServiceInstanceActions.Create) {
+        return false;
+      }
+      else if (node.data.action === ServiceInstanceActions.None) {
+        return true
+      }
+    }
+    return false;
+  }
+
+  /**********************************************
+   * return boolean according to
+   * current defined action of VFModule node
+   **********************************************/
+  shouldShowUndoUpgrade(node): boolean {
+    const mode = this._store.getState().global.drawingBoardStatus;
+    if (mode === DrawingBoardModes.EDIT && !_.isNil(node.data.action) && !_.isNil(node.data.menuActions[VNFMethods.UNDO_UPGRADE])) {
+      if (node.data.action === ServiceInstanceActions.Upgrade) {
+        return false;
+      } else if (node.data.action.split('_').pop() === ServiceInstanceActions.Upgrade) {
+        return true
+      }
+      return false;
+    }
+    return false;
+  }
+  /**********************************************
+   * enabled only on edit/design
+   * enabled only if there's a newer version for VNF-M
+   **********************************************/
+  undoUpgradeBottomUp(node,serviceModelId: string): void {
+    this.iterateOverTreeBranchAndRunAction(node, serviceModelId, VNFMethods.UNDO_UPGRADE);
+    this._store.dispatch(undoUpgradeService(serviceModelId));
+  }
+  /**********************************************
    * should return true if can duplicate by mode
    **********************************************/
   shouldShowDuplicate(node): boolean {
