WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-
-ECOMP is a trademark and service mark of AT&T Intellectual Property.
 ============LICENSE_END============================================
 */
+
 import * as XLSX from 'xlsx';
 import * as _ from 'underscore';
 import { ActivatedRoute, Router } from '@angular/router';
 import { Component, OnInit, ViewChild } from '@angular/core';
-import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
 import { BuildDesignComponent } from '../build-artifacts.component';
 import { HttpUtilService } from '../../../shared/services/httpUtil/http-util.service';
 import { Location } from '@angular/common';
 import { MappingEditorService } from '../../..//shared/services/mapping-editor.service';
 import { ModalComponent } from '../../../shared/modal/modal.component';
+import { NgProgress } from 'ngx-progressbar';
+import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
 import { NotificationService } from '../../../shared/services/notification.service';
 import { NotificationsService } from 'angular2-notifications';
 import { ParamShareService } from '../../..//shared/services/paramShare.service';
 import { environment } from '../../../../environments/environment';
 import { saveAs } from 'file-saver';
-import { NgProgress } from 'ngx-progressbar';
-
-
 declare var $: any;
 type AOA = Array<Array<any>>;
 
         this.remUploadedDataArray = [];
         this.firstArrayElement = [];
         this.uploadFileName = '';
-        // this.tempAllData = [];
-        // console.log('temp all data===' + JSON.stringify(this.tempAllData));
     }
 
     numberValidation(event: any) {
         }
     }
 
-    
     addVnfcData(vmNumber: number) {
         var newObj = {
             'vnfc-instance': this.referenceDataObject.vm[vmNumber].vnfc.length + 1,
     }
 
     //to remove the VM's created by the user
-    removeFeature(vmNumber: any, index: any) {
-        this.referenceDataObject.vm.splice(vmNumber, 1);
+    removeFeature(vmNumber: any, index: any,templateId) {
+        if(this.referenceDataObject.action == "Configure"){
+            this.referenceDataObject.vm.splice(vmNumber, 1);
+            this.referenceDataObject.vm.forEach((obj,arrIndex)=>{
+                if(arrIndex>=vmNumber){
+                    obj["vm-instance"] = obj["vm-instance"]-1
+                }
+            })
+            console.log(this.referenceDataObject.vm)
+        } else{
+            let data = this.referenceDataObject.vm.filter(obj=>{
+                return obj['template-id'] == templateId;
+            })
+            this.referenceDataObject.vm.splice(data[index]['vm-instance'], 1);
+            this.referenceDataObject.vm.forEach((obj,arrIndex)=>{
+                
+                    obj["vm-instance"] = arrIndex+1
+            })
+        }
+        
     }
 
     //add new VM's to the configure
             } else {
                 arr.push({ 'vm-instance': (i + 1), vnfc: [Object.assign({}, this.Sample)] });
             }
-
         }
         //this.referenceDataObject.vm.splice(arrlength, 0, ...arr);
         this.referenceDataObject.vm = this.referenceDataObject.vm.concat(arr); //splice(arrlength, 0, ...arr);
     }
 
     //Reference object to create reference data
-    prepareReferenceObject() {
-        // // console.log("this temp all data before=="+ JSON.stringify(this.tempAllData))
-
-        this.referenceDataObject['artifact-list'] = [];
-        let scopeName = '';
-        //if only vnf is there
-        if (this.referenceDataObject.scope['vnfc-type'] == '' || this.referenceDataObject.scope['vnfc-type'] == null || this.referenceDataObject.scope['vnfc-type'] == 'null') {
-            scopeName = this.referenceDataObject.scope['vnf-type'];
-            this.referenceDataObject.scope['vnfc-type'] = '';
-            this.referenceDataObject['action-level'] = 'vnf';
-            this.referenceDataObject['scopeType'] = 'vnf-type';
-        }
-        //if VNFC is entered set action level & Scope type to VNFC for configure and configure modify, and default the values to vnf and vnf type for all other actions  
-        else {
-            scopeName = this.referenceDataObject.scope['vnfc-type'];
-            if (this.referenceDataObject.action == 'Configure' || this.referenceDataObject.action == 'ConfigModify') {
-                this.referenceDataObject['action-level'] = 'vnfc';
-                this.referenceDataObject['scopeType'] = 'vnfc-type';
-            } else {
-                this.referenceDataObject['action-level'] = 'vnf';
-                this.referenceDataObject['scopeType'] = 'vnf-type';
-            }
-        }
-        //replacing / with _ and removing spaces in the scopeName
-        if (scopeName) {
-            scopeName = scopeName.replace(/ /g, '').replace(new RegExp('/', 'g'), '_').replace(/ /g, '');
-        }
-        //marking the extension based on the device-protocol selected by the user 
-        let extension = 'json';
-        if (this.referenceDataObject['device-protocol'] == 'ANSIBLE' || this.referenceDataObject['device-protocol'] == 'CHEF' || this.referenceDataObject['device-protocol'] == 'CLI') {
-            extension = 'json';
-        } else if (this.referenceDataObject['device-protocol'] == 'NETCONF-XML' || this.referenceDataObject['device-protocol'] == 'REST') {
-            extension = 'xml';
-        }
-        //preparing the artifact list array file names along with extension
-        let config_template_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V.' + extension;
-        let pd_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V.yaml';
-        let reference_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V.json';
+    prepareReferenceObject(isSaving?:any){
+        let scopeName = this. resetParamsOnVnfcType(); 
+        let extension =  this.decideExtension();
+        this.prepareArtifactList(scopeName,extension);
 
-        let configTemplate = {
-            'artifact-name': 'template_' + config_template_fileName,
-            'artifact-type': 'config_template'
-        };
-
-        let pdTemplate = {
-            'artifact-name': 'pd_' + pd_fileName,
-            'artifact-type': 'parameter_definitions'
-        };
-        if (this.referenceDataObject.action != 'ConfigScaleOut') {
-
-            this.referenceDataObject['artifact-list'].push(configTemplate,
-                pdTemplate
-            );
-
-        } else {
-            let identifiers = this.referenceDataObject['template-id-list'];
-            if (identifiers) {
-                for (var x = 0; x < identifiers.length; x++) {
-                    pd_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V_' + identifiers[x] + '.yaml';
-                    config_template_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V_' + identifiers[x] + '.' + extension;
-
-                    configTemplate = {
-                        'artifact-name': 'template_' + config_template_fileName,
-                        'artifact-type': 'config_template'
-                    };
-                    pdTemplate = {
-                        'artifact-name': 'pd_' + pd_fileName,
-                        'artifact-type': 'parameter_definitions'
-                    };
-                    this.referenceDataObject['artifact-list'].push(configTemplate,
-                        pdTemplate
-                    );
-                }
-            }
-
-        }
-
-        if (this.referenceDataObject.scope['vnfc-type'] === '') {
-            this.referenceDataObject.scope['vnfc-type'] = '';
-        }
         if (this.referenceDataObject.action === 'OpenStack Actions') {
             this.referenceDataObject['template'] = 'N';
             this.referenceDataObject['artifact-list'] = [];
         }
+        //ditaching the object from the form and processing pfurther
         let newObj = $.extend(true, {}, this.referenceDataObject);
         let action = this.referenceDataObject.action;
-        let configureObject = (newObj.action == 'Configure');
-        let ConfigScaleOut = (newObj.action == 'ConfigScaleOut');
-        //delete VM's if selected action is not configure.
-        if (!ConfigScaleOut && !configureObject && this.tempAllData.length != 0) {
-            //  delete newObj.vm
-
-            if (ConfigScaleOut) {
-                // 
-            } else {
-                newObj.vm = [];
-            }
-            //this.tempAllData.push(newObj);
-        } else {
-            if (ConfigScaleOut) {
-
-
-                // //add template identifier
-                // for(let x=0;x<newObj.vm.length;x++){
-                //     let vmObj= newObj.vm[x]
-                //     vmObj['template-id'] = this.templateIdentifier
-                // }
-            } else {
-                delete newObj['template-id-list'];
-            }
-        }
-        //remove artifact list if template is N
-        if (this.referenceDataObject.template == 'N') {
-        }
-        let actionObjIndex = this.tempAllData.findIndex(obj => {
-            return obj['action'] == action;
-        });
-        if (newObj.action != 'HealthCheck') {
-            delete newObj['url'];
-        }
-        if (actionObjIndex > -1) {
-            this.tempAllData[actionObjIndex] = newObj;
-            this.mappingEditorService.saveLatestAction(this.tempAllData[actionObjIndex]);
-            this.mappingEditorService.saveLatestIdentifier(this.templateIdentifier);
-        } else {
-            if (newObj.action != '') {
-                this.tempAllData.push(newObj);
-                this.mappingEditorService.saveLatestAction(newObj);
-                this.mappingEditorService.saveLatestIdentifier(this.templateIdentifier);
-            }
-        }
-        //reset currentform vms based on action
-        if (this.currentAction == "ConfigScaleOut") {
-            //this.referenceDataObject.vm = []
-
-            let ConfigScaleOutIndex = this.tempAllData.findIndex(obj => {
-                return obj['action'] == this.currentAction;
-            });
-            if (ConfigScaleOutIndex > -1) {
-                this.referenceDataObject.vm = this.tempAllData[ConfigScaleOutIndex].vm
-            } else {
-                this.referenceDataObject.vm = []
-            }
-        }
-        //Creating all action block to allow mulitple actions at once
-        let allAction = {
-            action: 'AllAction',
-            'action-level': 'vnf',
-            scope: newObj.scope,
-            'artifact-list': [{
-                'artifact-name': 'reference_AllAction' + '_' + scopeName + '_' + '0.0.1V.json',
-                'artifact-type': 'reference_template'
-            }]
-        };
-        let allActionIndex = this.tempAllData.findIndex(obj => {
-            return obj['action'] == 'AllAction';
-        });
-        if (allActionIndex > -1) {
-            this.tempAllData[allActionIndex] = allAction;
-        } else {
-            this.tempAllData.push(allAction);
-        }
-        // console.log('This uploaded array===' + JSON.stringify(this.uploadedDataArray));
-        if (this.uploadedDataArray && this.uploadedDataArray != undefined && this.uploadedDataArray.length != 0) {
-            /*for (var i = 0; i < this.uploadedDataArray.length; i++) {
-                var actionData = this.uploadedDataArray[i][0];
-               // // console.log("Action data=="+ actionData);
-                for (var j = 0; j < this.tempAllData.length; j++) {
-                    //// console.log("Actions from temp all data=="+ this.tempAllData[j].action)
-                    //// console.log("Matched=="+ (actionData === this.tempAllData[j].action))
-                    if (actionData === this.tempAllData[j].action) {
-                        this.tempAllData.splice(j,1);
-                        
-                    }
-                }
-            }*/
-            if (this.tempAllData && this.tempAllData != undefined) {
-                for (var i = 0; i < this.tempAllData.length; i++) {
-                    // alert(this.checkIfelementExistsInArray(this.tempAllData[i].action,this.actions))
-                    var result = false;
-
-                    if (this.tempAllData[i].action === 'AllAction') {
-                        result = true;
-                    }
-                    else {
-                        result = this.checkIfelementExistsInArray(this.tempAllData[i].action, this.actions);
-                    }
-                    if (!result) {
-                        // console.log('Removing VM action==' + this.tempAllData[i].action);
-                        this.tempAllData.splice(i, 1);
-                        i = i - 1;
-                    }
-
-                }
-            }
-            this.addVmCapabilitiesData();
-        }
-        // // console.log("this temp all data after=="+ JSON.stringify(this.tempAllData))
-        //// console.log("temp all data from save to appc=="+JSON.stringify(this.tempAllData))
+        //preparing Obj for save/download
+        newObj =   this.deleteVmsforNonActions(newObj,action)
+        this.pushOrReplaceTempData(newObj,action);
+        this. addAllActionObj(newObj,scopeName);
+        this.resetTempData()
+        //saving data to service
         this.mappingEditorService.getReferenceList().push(JSON.parse(JSON.stringify(this.referenceDataObject)));
         this.buildDesignComponent.updateAccessUpdatePages(this.referenceDataObject.action, this.mappingEditorService.getReferenceList());
         this.mappingEditorService.changeNav(this.tempAllData);
+        //on action change or template identifier change reset the form by restting values of Reference data object
+        this.resetVmsForScaleout(this.currentAction)
         return { totlaRefDtaa: this.tempAllData, scopeName: scopeName };
     }
 
           // // console.log("This template data after==" + JSON.stringify(this.tempAllData))
           /* wire up file reader */
         const target: DataTransfer = <DataTransfer>(evt.target);
-
         //// console.log("filename========" + evt.target.files[0].name)
         this.uploadFileName = evt.target.files[0].name;
         var fileExtension = this.uploadFileName.substr(this.uploadFileName.lastIndexOf('.') + 1);
         for (var i = 0; i < this.uploadedDataArray.length; i++) {
             var vnfcFuncCodeArray = [];
             var data = this.uploadedDataArray[i];
-            // // console.log("Data is "+ JSON.stringify(data))
-            //// console.log("Data length: "+ data.length)
             for (var j = 1; j < data.length; j++) {
                 // // console.log("Data " +j +" is "+ JSON.stringify(data[j]))
                 if (data[j] != undefined) {
         saveAs(blob, fileName);
     }
 
-    saveToAppc(valid, form) {
+    saveToAppc(valid, form,event) {
         if (this.referenceDataObject.action === '') {
             this.nService.error('Error', 'Select a valid Action');
             return;
             form._submitted = true;
             if (valid) {
 
-                let referenceObject = this.prepareReferenceObject();
-                // console.log('##########');
-
-                // console.log(referenceObject);
+                let referenceObject = this.prepareReferenceObject(true);
                 this.validateTempAllData();
                 let theJSON = JSON.stringify(this.tempAllData, null, '\t');
                 let fileName = 'reference_AllAction_' + referenceObject.scopeName + '_' + '0.0.1V.json';
         } else if (data == 'OpenStack Actions') {
             this.deviceProtocols = ['', 'OpenStack'];
         } else if (data == 'ConfigScaleOut') {
-            this.deviceProtocols = ['', 'CHEF', 'ANSIBLE', 'NETCONF'];
+            this.deviceProtocols = ['', 'CHEF', 'ANSIBLE', 'NETCONF-XML','RESTCONF'];
         }
         else {
             this.deviceProtocols = ['', 'ANSIBLE', 'CHEF', 'NETCONF-XML', 'RESTCONF', 'CLI'];
                 }
             });
         } else {
+            this.actionChanged = true;
             this.oldAction = this.referenceDataObject.action + '';
             this.populateExistinAction(data);
+            this.resetVmsForScaleout(data);
+            this.toggleIdentifier(data)
         }
 
-
         if (data == 'ConfigScaleOut') {
             this.groupAnotationType = ['', 'first-vnfc-name', 'fixed-value', 'relative-value', 'existing-group-name'];
         }
 
-        this.toggleIdentifier(data)
-
         if (data == 'OpenStack Actions') {
             this.buildDesignComponent.tabs = [
                 {
             this.nonConfigureAction = true;
         }
     }
-
-    clearCache() {
+    // For the issue with multiple template changes
+    // idChange(data, content, userForm) {
+    //     if (data == null) {
+    //     return;
+    //     }
+    //     if ((userForm.valid) && this.oldAction != '' && this.oldAction != undefined) {
+    //     let referenceObject = this.prepareReferenceObject();
+    //     this.actionChanged = true;
+    //     if(this.templateIdentifier)
+    //     {
+    //     this.modalService.open(content).result.then(res => {
+    //     if (res == 'yes') {
+    //     this.validateTempAllData();
+    //     let theJSON = JSON.stringify(this.tempAllData, null, '\t');
+    //     let fileName = 'reference_AllAction_' + referenceObject.scopeName + '_' + '0.0.1V.json';
+    //     this.uploadArtifact(JSON.stringify({ reference_data: this.tempAllData }), this.tempAllData[this.tempAllData.length - 1], fileName);
+    //     var templateData = JSON.stringify(this.appData.template.templateData);
+    //     var nameValueData = JSON.stringify(this.appData.template.nameValueData);
+    //     var pdData = JSON.stringify(this.appData.pd);
+    //     if (templateData != '{}' && templateData != null && templateData != undefined) this.saveTemp();
+    //     if (nameValueData != '{}' && nameValueData != null && nameValueData != undefined) this.saveNameValue();
+    //     if (pdData != '{}' && pdData != null && pdData != undefined) this.savePd();
+    //     this.clearTemplateCache();
+    //     this.clearPdCache();
+    //     }
+    //     else{
+    //     this.clearTemplateCache();
+    //     this.clearPdCache();
+    //     }
+    //     });
+    //     }
+    //     }
+    //     }
+
+    clearCache() 
+    {
         // get the value and save the userid and persist it. 
         this.mappingEditorService.setTemplateMappingDataFromStore(undefined);
         localStorage['paramsContent'] = '{}';
         };
     }
 
+    // needed for the the clearing template cache.
+    //{
+    //     // get the value and save the userid and persist it.
+    //     this.clearTemplateCache();
+    //     this.clearPdCache();
+    //     this.appData = { reference: {}, template: { templateData: {}, nameValueData: {} }, pd: {} };
+    //     this.downloadData = {
+    //     reference: {},
+    //     template: { templateData: {}, nameValueData: {}, templateFileName: '', nameValueFileName: '' },
+    //     pd: { pdData: '', pdFileName: '' }
+    //     };
+    //     }
+        
+    //     clearTemplateCache()
+    //     {
+    //     this.mappingEditorService.setTemplateMappingDataFromStore(undefined);
+    //     localStorage['paramsContent'] = '{}';
+    //     }
+    //     clearPdCache()
+    //     {
+    //     this.mappingEditorService.setParamContent(undefined);
+    //     this.paramShareService.setSessionParamData(undefined);
+    //     }
+
     saveTemp() {
         this
             .httpUtils
         if(!(this.referenceDataObject['template-id-list'].indexOf(this.templateId.trim())>-1)){
             this.referenceDataObject['template-id-list'].push(this.templateId.trim());
         }
-        
-        // this.referenceDataObject['template-id-list'] = this.identifierDrpValues
-        //this.identifierDrp = ""
     }
 
     resetVms() {
     }
 
     dataModified() {
-        this.referenceDataObject.vm = this.referenceDataObject.vm;
+      //  this.referenceDataObject.vm = this.referenceDataObject.vm;
     }
 
     resetGroupNotation() {
             this.disableGrpNotationValue = false
         }
     }
-}
\ No newline at end of file
+
+    resetVmsForScaleout(action){
+         //reset currentform vms based on action
+         if (action == "ConfigScaleOut") {
+            let ConfigScaleOutIndex = this.tempAllData.findIndex(obj => {
+                return obj['action'] ==action
+            });
+            if (ConfigScaleOutIndex > -1) {
+                this.referenceDataObject.vm = this.tempAllData[ConfigScaleOutIndex].vm
+            } else {
+               if(this.actionChanged ){
+               this.referenceDataObject.vm = []
+               }
+              //  
+            }
+        }
+    }
+
+     resetParamsOnVnfcType(){
+    let scopeName = '';
+        //if only vnf is there
+        if (this.referenceDataObject.scope['vnfc-type'] == '' || this.referenceDataObject.scope['vnfc-type'] == null || this.referenceDataObject.scope['vnfc-type'] == 'null') {
+            scopeName = this.referenceDataObject.scope['vnf-type'];
+            this.referenceDataObject.scope['vnfc-type'] = '';
+            this.referenceDataObject['action-level'] = 'vnf';
+            this.referenceDataObject['scopeType'] = 'vnf-type';
+        }
+        //if VNFC is entered set action level & Scope type to VNFC for configure and configure modify, and default the values to vnf and vnf type for all other actions  
+        else {
+            scopeName = this.referenceDataObject.scope['vnfc-type'];
+            if (this.referenceDataObject.action == 'Configure' || this.referenceDataObject.action == 'ConfigModify') {
+                this.referenceDataObject['action-level'] = 'vnfc';
+                this.referenceDataObject['scopeType'] = 'vnfc-type';
+            } else {
+                this.referenceDataObject['action-level'] = 'vnf';
+                this.referenceDataObject['scopeType'] = 'vnf-type';
+            }
+        }
+          //replacing / with _ and removing spaces in the scopeName
+         if (scopeName) {
+            scopeName = scopeName.replace(/ /g, '').replace(new RegExp('/', 'g'), '_').replace(/ /g, '');
+        }
+        return scopeName
+     }
+    decideExtension(){
+        //marking the extension based on the device-protocol selected by the user 
+        let extension = 'json';
+        if (this.referenceDataObject['device-protocol'] == 'ANSIBLE' || this.referenceDataObject['device-protocol'] == 'CHEF' || this.referenceDataObject['device-protocol'] == 'CLI') {
+            extension = 'json';
+        } else if (this.referenceDataObject['device-protocol'] == 'NETCONF-XML' || this.referenceDataObject['device-protocol'] == 'REST') {
+            extension = 'xml';
+        }
+        return extension
+    }
+    prepareArtifactList(scopeName,extension){
+    this.referenceDataObject['artifact-list'] = [];
+
+ //preparing the artifact list array file names along with extension
+        let config_template_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V.' + extension;
+        let pd_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V.yaml';
+        let reference_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V.json';
+
+        let configTemplate = {
+            'artifact-name': 'template_' + config_template_fileName,
+            'artifact-type': 'config_template'
+        };
+
+        let pdTemplate = {
+            'artifact-name': 'pd_' + pd_fileName,
+            'artifact-type': 'parameter_definitions'
+        };
+        if (this.referenceDataObject.action != 'ConfigScaleOut') {
+
+            this.referenceDataObject['artifact-list'].push(configTemplate,
+                pdTemplate
+            );
+
+        } else {
+            let identifiers = this.referenceDataObject['template-id-list'];
+            if (identifiers) {
+                for (var x = 0; x < identifiers.length; x++) {
+                    //for replacing spaces and "/" with "_"
+                    identifiers[x]=identifiers[x].replace(/ /g, '').replace(new RegExp('/', 'g'), '_').replace(/ /g, '');
+                    pd_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V_' + identifiers[x] + '.yaml';
+                    config_template_fileName = this.referenceDataObject.action + '_' + scopeName + '_' + '0.0.1V_' + identifiers[x] + '.' + extension;
+
+                    configTemplate = {
+                        'artifact-name': 'template_' + config_template_fileName,
+                        'artifact-type': 'config_template'
+                    };
+                    pdTemplate = {
+                        'artifact-name': 'pd_' + pd_fileName,
+                        'artifact-type': 'parameter_definitions'
+                    };
+                    this.referenceDataObject['artifact-list'].push(configTemplate,
+                        pdTemplate
+                    );
+                }
+            }
+
+        }
+    }
+    deleteVmsforNonActions(newObj,action){
+ let configureObject = (action == 'Configure');
+        let ConfigScaleOut = (action == 'ConfigScaleOut');
+        //delete VM's if selected action is not configure.
+        if (!ConfigScaleOut && !configureObject && this.tempAllData.length != 0) {
+            //  delete newObj.vm
+
+            if (ConfigScaleOut) {
+                // 
+            } else {
+                newObj.vm = [];
+            }
+            //this.tempAllData.push(newObj);
+        } else {
+            if (ConfigScaleOut) {
+            } else {
+                delete newObj['template-id-list'];
+            }
+        }
+        return newObj
+    }
+    pushOrReplaceTempData(newObj,action){
+
+        let actionObjIndex = this.tempAllData.findIndex(obj => {
+            return obj['action'] == action;
+        });
+        if (newObj.action != 'HealthCheck') {
+            delete newObj['url'];
+        }
+        
+        if (actionObjIndex > -1) {
+            this.tempAllData[actionObjIndex] = newObj;
+            this.mappingEditorService.saveLatestAction(this.tempAllData[actionObjIndex]);
+            this.mappingEditorService.saveLatestIdentifier(this.templateIdentifier);
+        } else {
+            if (newObj.action != '') {
+                this.tempAllData.push(newObj);
+                this.mappingEditorService.saveLatestAction(newObj);
+                this.mappingEditorService.saveLatestIdentifier(this.templateIdentifier);
+            }
+        }
+        
+    }
+
+    addAllActionObj(newObj,scopeName){
+        
+        //Creating all action block to allow mulitple actions at once
+        let allAction = {
+            action: 'AllAction',
+            'action-level': 'vnf',
+            scope: newObj.scope,
+            'artifact-list': [{
+                'artifact-name': 'reference_AllAction' + '_' + scopeName + '_' + '0.0.1V.json',
+                'artifact-type': 'reference_template'
+            }]
+        };
+        let allActionIndex = this.tempAllData.findIndex(obj => {
+            return obj['action'] == 'AllAction';
+        });
+        if (allActionIndex > -1) {
+            this.tempAllData[allActionIndex] = allAction;
+        } else {
+            this.tempAllData.push(allAction);
+        }
+    }
+
+    resetTempData(){
+ if (this.uploadedDataArray && this.uploadedDataArray != undefined && this.uploadedDataArray.length != 0) {
+           
+            if (this.tempAllData && this.tempAllData != undefined) {
+                for (var i = 0; i < this.tempAllData.length; i++) {
+                    // alert(this.checkIfelementExistsInArray(this.tempAllData[i].action,this.actions))
+                    var result = false;
+
+                    if (this.tempAllData[i].action === 'AllAction') {
+                        result = true;
+                    }
+                    else {
+                        result = this.checkIfelementExistsInArray(this.tempAllData[i].action, this.actions);
+                    }
+                    if (!result) {
+                        // console.log('Removing VM action==' + this.tempAllData[i].action);
+                        this.tempAllData.splice(i, 1);
+                        i = i - 1;
+                    }
+
+                }
+            }
+            this.addVmCapabilitiesData();
+        }
+    }
+}