},
       undoDelete: {
         method: (node, serviceModelId) => {
-          this._store.dispatch(undoDeleteVfModuleInstance(node.data.dynamicModelName, node.parent.data.vnfStoreKey, serviceModelId));
+          this._store.dispatch(undoDeleteVfModuleInstance(node.data.dynamicModelName, node.parent.data.vnfStoreKey, serviceModelId, node.data.modelName));
           this._store.dispatch(deleteVFModuleField(node.data.modelName,  node.parent.data.vnfStoreKey, node.data.servicedId ,node.data.dynamicModelName, 'retainAssignments'));
         },
         visible: (node) => this._sharedTreeService.shouldShowUndoDelete(node),
 
   dynamicModelName: string;
   vnfStoreKey : string;
   serviceId?: string;
+  vfModuleModelName: string;
 }
 
 export const removeVfModuleInstance: ActionCreator<DeleteVfModuleInstanceAction> = (modelName, serviceModelId, vfName, vnfStoreKey, dynamicModelName) => ({
   vfModuleModelName
 });
 
-export const undoDeleteVfModuleInstance: ActionCreator<UndoDeleteActionVfModuleInstanceAction> = (dynamicModelName, vnfStoreKey, serviceId) => ({
+export const undoDeleteVfModuleInstance: ActionCreator<UndoDeleteActionVfModuleInstanceAction> = (dynamicModelName, vnfStoreKey, serviceId, vfModuleModelName) => ({
   type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
   dynamicModelName: dynamicModelName,
   vnfStoreKey : vnfStoreKey,
-  serviceId: serviceId
+  serviceId: serviceId,
+  vfModuleModelName
 });
 
 export const updateVFModulePosition: ActionCreator<UpdateVFModluePosition> = (node, instanceId, vnfStoreKey) => ({
 
 });
 
   each([
-    ['for the first vfModule', 'dynamicModelName1', true],
-    ['for the second vfModule', 'dynamicModelName2', true],
+    ['for the first vfModule', 'dynamicModelName1'],
+    ['for the second vfModule', 'dynamicModelName2'],
   ]).
-test('#DELETE_ACTION_VF_MODULE_INSTANCE %s', (description, dynamicModelName: string, isMissingData: boolean) => {
+test('#DELETE_ACTION_VF_MODULE_INSTANCE %s', (description, dynamicModelName: string) => {
     let vfModule = vfModuleReducer(<any>getReduxState(), getDeleteActionVfModule(dynamicModelName))
       .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName'][dynamicModelName];
 
 
 });
 
-test('#UNDO_DELETE_ACTION_VF_MODULE_INSTANCE', () => {
-  let vfModule = vfModuleReducer(<any>{
-      serviceHierarchy: {
-        'serviceModelId': {}
-      },
-      serviceInstance: {
-        'serviceModelId': {
-          vnfs: {
-            'vnfStoreKey': {
-              vfModules: {
-                'modelName': {
-                  'dynamicModelName1': {
-                    isMissingData: true,
-                    action: 'None_Delete'
-                  },
-                  'dynamicModelName2': {},
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    <UndoDeleteActionVfModuleInstanceAction>{
-      type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
-      dynamicModelName: 'dynamicModelName1',
-      vnfStoreKey: 'vnfStoreKey',
-      serviceId: 'serviceModelId'
-    }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
+  each([
+    ['for the first vfModule', 'dynamicModelName1', true],
+    ['for the second vfModule', 'dynamicModelName2', true],
+  ]).
+test('#UNDO_DELETE_ACTION_VF_MODULE_INSTANCE %s', (description, dynamicModelName: string) => {
+  let vfModule = vfModuleReducer(<any>getDeleteRedux(), getUndoDeleteActionVfModule(dynamicModelName))
+    .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName'][dynamicModelName];
 
   expect(vfModule).toBeDefined();
   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
     vfModuleModelName: 'vfModuleModelName',
   }
 }
+
+function getUndoDeleteActionVfModule(dynamicModelName?: string) {
+  return  <UndoDeleteActionVfModuleInstanceAction>{
+    type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
+    dynamicModelName: dynamicModelName,
+    vnfStoreKey: 'vnfStoreKey',
+    serviceId: 'serviceModelId',
+    vfModuleModelName: 'vfModuleModelName',
+  }
+}
+
+function getDeleteRedux() {
+  return {
+    serviceHierarchy: {
+      'serviceModelId': {}
+    },
+    serviceInstance: {
+      'serviceModelId': {
+        vnfs: {
+          'vnfStoreKey': {
+            vfModules: {
+              'vfModuleModelName': {
+                'dynamicModelName1': {
+                  isMissingData: true,
+                  action: 'None_Delete'
+                },
+                'dynamicModelName2': {
+                  isMissingData: true,
+                  action: 'None_Delete'
+                },
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
 });
 
       return Object.assign({}, state);
     }
     case VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE : {
-      let deleteAction = (<DeleteActionVfModuleInstanceAction>action);
+      const deleteAction = (<DeleteActionVfModuleInstanceAction>action);
       let newState = _.cloneDeep(state);
       let vfModule = newState.serviceInstance[deleteAction.serviceId].vnfs[deleteAction.vnfStoreKey]
         .vfModules[deleteAction.vfModuleModelName][deleteAction.dynamicModelName];
       newState.serviceInstance[deleteAction.serviceId].vnfs[deleteAction.vnfStoreKey]
         .vfModules[deleteAction.vfModuleModelName][deleteAction.dynamicModelName].action = (oldAction + '_Delete') as ServiceInstanceActions;
       setLcpCloudRegionIdAndTenantIdFromVnf(newState, deleteAction.serviceId, deleteAction.vnfStoreKey, deleteAction.vfModuleModelName, deleteAction.dynamicModelName);
-      updateIsMissingDataOnDeleteVFModule(newState, (<UndoDeleteActionVfModuleInstanceAction>action).serviceId, (<UndoDeleteActionVfModuleInstanceAction>action).vnfStoreKey, deleteAction.vfModuleModelName);
+      updateIsMissingDataOnDeleteVFModule(newState, deleteAction.serviceId, deleteAction.vnfStoreKey, deleteAction.vfModuleModelName);
 
       return newState;
     }
     case VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE : {
+      const undoDeleteAction = (<UndoDeleteActionVfModuleInstanceAction>action);
       let newState = _.cloneDeep(state);
-      let vfModules = newState.serviceInstance[(<DeleteActionVfModuleInstanceAction>action).serviceId].vnfs[(<DeleteActionVfModuleInstanceAction>action).vnfStoreKey].vfModules;
-
-      for(let key in vfModules){
-        let firstKey = Object.keys(vfModules[key])[0];
-        if(firstKey === (<UndoDeleteActionVfModuleInstanceAction>action).dynamicModelName){
-          let oldAction = newState.serviceInstance[(<UndoDeleteActionVfModuleInstanceAction>action).serviceId].vnfs[(<UndoDeleteActionVfModuleInstanceAction>action).vnfStoreKey].vfModules[key][firstKey].action;
-          newState.serviceInstance[(<UndoDeleteActionVfModuleInstanceAction>action).serviceId].vnfs[(<UndoDeleteActionVfModuleInstanceAction>action).vnfStoreKey].vfModules[key][firstKey].action = (oldAction.split('_')[0]) as ServiceInstanceActions;
-          updateIsMissingDataOnDeleteVFModule(newState, (<UndoDeleteActionVfModuleInstanceAction>action).serviceId, (<UndoDeleteActionVfModuleInstanceAction>action).vnfStoreKey, key);
-          return newState;
-        }
-      }
+      let vfModule = newState.serviceInstance[undoDeleteAction.serviceId].vnfs[undoDeleteAction.vnfStoreKey]
+        .vfModules[undoDeleteAction.vfModuleModelName][undoDeleteAction.dynamicModelName];
+
+          let oldAction = vfModule.action;
+          newState.serviceInstance[undoDeleteAction.serviceId].vnfs[undoDeleteAction.vnfStoreKey]
+            .vfModules[undoDeleteAction.vfModuleModelName][undoDeleteAction.dynamicModelName].action = (oldAction.split('_')[0]) as ServiceInstanceActions;
+          updateIsMissingDataOnDeleteVFModule(newState, undoDeleteAction.serviceId, undoDeleteAction.vnfStoreKey, undoDeleteAction.vfModuleModelName);
       return newState;
     }