Corrected artifact name for multiple template ids

Made changes in param name value component ts for setting correct
artifact name while saving and retrieving artifacts, in case of multiple
template ids.

Issue-ID: APPC-812
Change-Id: I973f7b763f4c2204425fceb77cdae33944ba3c8d
Signed-off-by: sj108s <sj108s@us.att.com>
diff --git a/src/app/CDTProperties.json b/src/app/CDTProperties.json
deleted file mode 100644
index 2c63c08..0000000
--- a/src/app/CDTProperties.json
+++ /dev/null
@@ -1,2 +0,0 @@
-{
-}
diff --git a/src/app/about-us/aboutus.component.html b/src/app/about-us/aboutus.component.html
index 1d8134b..3c2fb52 100644
--- a/src/app/about-us/aboutus.component.html
+++ b/src/app/about-us/aboutus.component.html
@@ -17,7 +17,6 @@
 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============================================
 -->
 
@@ -28,8 +27,7 @@
                 <div class="card-header" style="font-size: 20px">CONTACT DETAILS</div>
                 <div class="mdl-card__title">
                     <div class="text-center">
-                        Contact us @: <a href="#">APPC
-                        DEVELOPMENT TEAM </a>
+                        Contact us @:<a href="mailto:{{contactUsMail.CONTACT_US_EMAIL}}?Subject={{contactUsMail.CONTACT_US_SUBJECT}}">APPC DEVELOPMENT TEAM</a>
                     </div>
                 </div>
             </div>&emsp;&emsp;&emsp;&emsp;
@@ -39,29 +37,28 @@
                     <table>
                         <thead></thead>
                         <tbody>
-                        <tr>
-                            <td>
-                                <div class="android-title mdl-layout-title">Current Release :</div>
-                            </td>
-                            <td>
-                                <div class="android-title mdl-layout-title">{{releaseName}}</div>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>
-                                <div class="android-title mdl-layout-title">Current Version :</div>
-                            </td>
-                            <td>
-                                <div class="android-title mdl-layout-title">{{versionNo}}</div>
-                            </td>
-                        </tr>
+                            <tr>
+                                <td>
+                                    <div class="android-title mdl-layout-title">Current Release :</div>
+                                </td>
+                                <td>
+                                    <div class="android-title mdl-layout-title">{{releaseName}}</div>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>
+                                    <div class="android-title mdl-layout-title">Current Version :</div>
+                                </td>
+                                <td>
+                                    <div class="android-title mdl-layout-title">{{versionNo}}</div>
+                                </td>
+                            </tr>
                         </tbody>
                     </table>
                 </div>
                 <div class="text-right">
                     <div class="mdl-dialog__content">
-                        <a class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary"
-                           (click)="open(content)" (click)="versionLogFile()">VIEW CHANGE LOG</a>
+                        <a class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" (click)="open(content)" (click)="versionLogFile()">VIEW CHANGE LOG</a>
                     </div>
                 </div>
 
@@ -84,7 +81,7 @@
                 <html>
 
                 <body>
-                <textarea class="textarea">{{this.data}}</textarea>
+                    <textarea class="textarea">{{this.data}}</textarea>
                 </body>
 
                 </html>
diff --git a/src/app/about-us/aboutus.component.spec.ts b/src/app/about-us/aboutus.component.spec.ts
index 175f8d1..9f71c8f 100644
--- a/src/app/about-us/aboutus.component.spec.ts
+++ b/src/app/about-us/aboutus.component.spec.ts
@@ -17,9 +17,9 @@
 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 { async, ComponentFixture, TestBed, inject, tick, fakeAsync } from '@angular/core/testing';
 import { Http, HttpModule, ConnectionBackend, BaseRequestOptions, Response, ResponseOptions } from '@angular/http';
 import { MockBackend } from '@angular/http/testing';
@@ -55,9 +55,7 @@
             { provide: MockBackend, useClass: MockBackend },
             { provide: BaseRequestOptions, useClass: BaseRequestOptions },
             {provide: Http, useValue: http}]
-            
-        })
-            .compileComponents();
+        }).compileComponents();
     }));
 
     beforeEach(() => {
@@ -70,26 +68,15 @@
         expect(component).toBeTruthy();
     });
 
-    it('test', inject([Http], (http: Http) => {
-        let spy = spyOn(http, 'get').and.returnValue(Observable.of('some value'))
-
-        component.versionLogFile();
-
-        expect(http).toBeTruthy();
-        expect(spy).toHaveBeenCalled()
-
-    }));
-    
     it('should open modal', inject([NgbModule],(ngbModule: NgbModule) => {
-       let content = 'test';
-       component.open(content);
+        let content = 'test';
+        component.open(content);
     }));
 
     it('should download log file', () => {
         var blob = new Blob(['test'], {
             type: 'text/plain;charset=utf-8'
         });
-
         component.downloadLogFile();
     });
 });
diff --git a/src/app/about-us/aboutus.component.ts b/src/app/about-us/aboutus.component.ts
index 1c237e8..de983c7 100644
--- a/src/app/about-us/aboutus.component.ts
+++ b/src/app/about-us/aboutus.component.ts
@@ -16,8 +16,6 @@
 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============================================
 */
 
@@ -36,7 +34,7 @@
 
     public releaseName: any;
     public versionNo: any;
-
+    public contactUsMail: any;
     public data: any;
     closeResult: string;
 
@@ -46,6 +44,7 @@
     ngOnInit() {
         this.versionNo = require('./appVersion.json').versionNo;
         this.releaseName = require('./appVersion.json').releaseName;
+        this.contactUsMail = require('../cdt.application.properties.json').CONTACT_US;
     }
 
     versionLogFile() {
diff --git a/src/app/cdt.application.properties.json b/src/app/cdt.application.properties.json
new file mode 100644
index 0000000..07f40bb
--- /dev/null
+++ b/src/app/cdt.application.properties.json
@@ -0,0 +1,8 @@
+{
+    "CONTACT_US": {
+            "CONTACT_US_EMAIL": "cdtSupportTeam@yourCompany.com",
+            "CONTACT_US_SUBJECT": "1710CDTContactus"
+    },
+    "username" : "appc123@appc.onap.org",
+    "password" : "test"
+}
diff --git a/src/app/home/home/home.component.html b/src/app/home/home/home.component.html
index dd06f29..78189e5 100644
--- a/src/app/home/home/home.component.html
+++ b/src/app/home/home/home.component.html
@@ -20,10 +20,10 @@
 ============LICENSE_END============================================  -->
 <div class="android-more-section">
 
-    <div class="android-section-title mdl-typography--display-1-color-contrast">WELCOME TO APPC SELF SERVICE CONTROLLER DESIGN TOOL
+    <div class="android-section-title mdl-typography--display-1-color-contrast">WELCOME TO CONTROLLER DESIGN TOOL
     </div>
     <div class="mdl-card__title">
-        <h4 class="mdl-card__title-text">The Application Configuration (AppC) Configuration Design Tool allows technology owners to create artifacts for Configuration and Life Cycle Management functions that are required to manage the lifecycle of Virtual Network Functions (VNFs).<br>            Select My VNFS to enter credentials and view existing designs or create new ones.
+        <h4 class="mdl-card__title-text">The Controller Design Tool allows technology owners to create artifacts for Configuration and Life Cycle Management functions that are required to manage the lifecycle of Virtual Network Functions (VNFs).<br>            Select My VNFS to enter credentials and view existing designs or create new ones.
         </h4>
 
     </div>
diff --git a/src/app/shared/services/httpUtil/http-util.service.ts b/src/app/shared/services/httpUtil/http-util.service.ts
index 35c5047..33b3c9e 100644
--- a/src/app/shared/services/httpUtil/http-util.service.ts
+++ b/src/app/shared/services/httpUtil/http-util.service.ts
@@ -16,8 +16,6 @@
 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 { observable } from 'rxjs/symbol/observable';
@@ -30,13 +28,14 @@
 export class HttpUtilService {
     headers: Headers;
     options: RequestOptions
-    constructor (private http: Http) {
+    private username = require('../../../cdt.application.properties.json').username;
+    private password = require('../../../cdt.application.properties.json').password;
+    constructor(private http: Http) {
         this.headers = new Headers({ 'Content-Type': 'application/json' }); // ... Set content type to JSON
         // this.options = new RequestOptions({headers: this.headers}); //
     }
 
     get(req) {
-
         return this
             .http
             .get(req.url, this.options)
@@ -44,10 +43,8 @@
     }
 
     post(req) {
-
-        this.headers.append('Authorization', 'Basic ' + btoa('m97292@appc.att.com:enc:Ai8KDxN7EANwATsV'));
+        this.headers.append('Authorization', 'Basic ' + btoa(this.username + ':' + this.password));
         this.options = new RequestOptions({ headers: this.headers });
-
         return this
             .http
             .post(req.url, req.data, this.options)
diff --git a/src/app/test/test.component.html b/src/app/test/test.component.html
index c2eb22e..5e65435 100644
--- a/src/app/test/test.component.html
+++ b/src/app/test/test.component.html
@@ -114,9 +114,7 @@
     <div style="padding-left:60%;padding-bottom:0.5cm">
         <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button" [disabled]="!enableDownload" (click)="download()">Download Raw Request/Response
         </button>
-        <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" type="button" [disabled]="!enableAbort" (click)="abortTest()">Abort Test
-        </button>
-
+        <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" type="button" [disabled]="!enableAbort" (click)="abortTest()">Abandon Test</button>    
     </div>
 </div>
 <br>
@@ -135,7 +133,7 @@
                 <span style="margin-left: 18.5%"><b>POLL TEST STATUS RESPONSE</b></span>
             </div>
 
-            <div style="margin-left: 18.5%;height:100px;width:60%;border:solid 2px grey;overflow:scroll;overflow-x:hidden;overflow-y:hidden;">
+            <div style="margin-left: 18.5%;height:130px;width:60%;border:solid 2px grey;overflow:scroll;overflow-x:hidden;overflow-y:hidden;">
 
                 <div *ngIf="showStatusResponseDiv">
                     <div *ngIf="enableCounterDiv"><b>Poll test no {{pollCounter}}</b></div>
diff --git a/src/app/test/test.component.ts b/src/app/test/test.component.ts
index 2fd8525..dd8871e 100644
--- a/src/app/test/test.component.ts
+++ b/src/app/test/test.component.ts
@@ -148,7 +148,7 @@
         this.enableTestButton = true;
         this.enablePollButton = true;
         if (this.subscribe && this.subscribe != undefined) this.subscribe.unsubscribe();
-
+        this.nService.info("Information","Test has been abandoned and polling stopped");
     }
 
 
diff --git a/src/app/vnfs/build-artifacts/build-artifacts.component.html b/src/app/vnfs/build-artifacts/build-artifacts.component.html
index e0b2e05..feb5be8 100644
--- a/src/app/vnfs/build-artifacts/build-artifacts.component.html
+++ b/src/app/vnfs/build-artifacts/build-artifacts.component.html
@@ -17,17 +17,16 @@
 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============================================
 -->
 
 <div class="container">
     <div class="row">
         <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
-            <ul class="nav nav-tabs custom-heade-nav" style="    margin-bottom: 12px;">
-                <li [ngClass]="{'active-tab':((router.url.indexOf('/'+item.url))>-1 || router.url.indexOf(item.url)>-1 )}"
-                    *ngFor="let item of tabs">
-                    <a [routerLink]="[item.url]" [type]="item.type" class="nav-link">{{item.name}}</a>
+            <ul class="nav nav-tabs custom-heade-nav" style="margin-bottom: 12px;">
+                <li [ngClass]="{'active-tab':((router.url.indexOf('/'+item.url))>-1 || router.url.indexOf(item.url)>-1 )}" *ngFor="let item of tabs">
+                    <a *ngIf="this.refDataRequiredFiels == true" [routerLink]="[item.url]" [type]="item.type" class="nav-link">{{item.name}}</a>
+                    <a *ngIf="this.refDataRequiredFiels == false" [type]="item.type" class="nav-link">{{item.name}}</a>
                 </li>
             </ul>
         </div>
diff --git a/src/app/vnfs/build-artifacts/build-artifacts.component.spec.ts b/src/app/vnfs/build-artifacts/build-artifacts.component.spec.ts
index 508ca8c..16d7029 100644
--- a/src/app/vnfs/build-artifacts/build-artifacts.component.spec.ts
+++ b/src/app/vnfs/build-artifacts/build-artifacts.component.spec.ts
@@ -17,7 +17,6 @@
 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============================================
 */
 
@@ -94,4 +93,12 @@
     it('should create', () => {
         expect(component).toBeTruthy();
     });
+
+    it('Should validate getRefData method', () => {
+        let refData = {"action": "Configure", "vnf-type": "test 1", "device-protocol": "ANSIBLE"};
+        component.refDataRequiredFiels = false;
+        component.getRefData(refData);
+        expect(component.refDataRequiredFiels).toBeTruthy();
+    });
+
 });
diff --git a/src/app/vnfs/build-artifacts/build-artifacts.component.ts b/src/app/vnfs/build-artifacts/build-artifacts.component.ts
index 7641aa5..265fd77 100644
--- a/src/app/vnfs/build-artifacts/build-artifacts.component.ts
+++ b/src/app/vnfs/build-artifacts/build-artifacts.component.ts
@@ -17,7 +17,6 @@
 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============================================
 */
 
@@ -29,8 +28,9 @@
 export class BuildDesignComponent implements OnInit {
     tabs: Array<Object> = [];
     private allowOtherUpdates: boolean = true;
+    public refDataRequiredFiels: boolean = false;
 
-    constructor (private router: Router) {
+    constructor(private router: Router) {
     }
 
     ngOnInit() {
@@ -79,4 +79,14 @@
             return false;
         }
     }
+
+    public getRefData(referenceList) {
+        if (referenceList.action !== '' && referenceList['vnf-type'] !== '' && referenceList['device-protocol'] !== '') {
+            this.refDataRequiredFiels = true;
+        }
+        else {
+            this.refDataRequiredFiels = false;
+        }
+    }
+
 }
diff --git a/src/app/vnfs/build-artifacts/parameter-definitions/parameter.component.ts b/src/app/vnfs/build-artifacts/parameter-definitions/parameter.component.ts
index effd854..e7e60c3 100644
--- a/src/app/vnfs/build-artifacts/parameter-definitions/parameter.component.ts
+++ b/src/app/vnfs/build-artifacts/parameter-definitions/parameter.component.ts
@@ -17,7 +17,6 @@
 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============================================
 */
 
@@ -190,7 +189,7 @@
     identifier: any;
     private selectedActionReference: any;
 
-    constructor (private httpService: HttpUtilService,
+    constructor(private httpService: HttpUtilService,
         private parameterDefinitionService: ParameterDefinitionService,
         private paramShareService: ParamShareService,
         private mappingEditorService: MappingEditorService,
@@ -212,7 +211,19 @@
             for (let i = 0; i < this.selectedActionReference['artifact-list'].length; i++) {
                 let artifactList = this.selectedActionReference['artifact-list'];
                 if (artifactList[i]['artifact-type'] === 'parameter_definitions') {
-                    this.artifact_fileName = artifactList[i]['artifact-name'];
+                    var artifactName = artifactList[i]['artifact-name'];
+                    var artifactNameWithoutExtension = '';
+                    if (artifactName) artifactNameWithoutExtension = artifactName.substring(0, artifactName.lastIndexOf("."))
+                    var identifier = artifactNameWithoutExtension.split("_");
+                    var id = '';
+                    if (identifier) id = identifier[identifier.length - 1];
+                    if (this.mappingEditorService.identifier) {
+                        if (id === this.mappingEditorService.identifier) this.artifact_fileName = artifactName;
+
+                    }
+                    else {
+                        this.artifact_fileName = artifactName;
+                    }
                 }
             }
             this.parameterDefinitionService.setValues(this.vnfType, this.vnfcType, this.protocol, this.action, this.artifact_fileName);
diff --git a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.html b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.html
index 302fd60..5aeb7ff 100644
--- a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.html
+++ b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.html
@@ -16,11 +16,13 @@
 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.
+
 ============LICENSE_END============================================
 -->
 
 <simple-notifications [options]="options"></simple-notifications>
-<ng-progress [positionUsing]="'marginLeft'" [minimum]="0.15" [maximum]="1" [speed]="200" [showSpinner]="false" [direction]="'leftToRightIncreased'" [color]="'#6ab344'" [trickleSpeed]="250" [thick]="true" [ease]="'linear'"></ng-progress>
+<ng-progress [positionUsing]="'marginLeft'" [minimum]="0.15" [maximum]="1" [speed]="200" [showSpinner]="false" [direction]="'leftToRightIncreased'"
+    [color]="'#6ab344'" [trickleSpeed]="250" [thick]="true" [ease]="'linear'"></ng-progress>
 <form class="" novalidate #userForm="ngForm" (ngSubmit)="save(userForm.value,userForm.valid)">
     <div class="card">
 
@@ -28,7 +30,8 @@
             <div class="row" style="padding: 15px 25px">
                 <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12">
                     <label>Action*</label>
-                    <select class="form-control" required id="cmbAction" [(ngModel)]="referenceDataObject.action" (ngModelChange)="updateSessionValues($event,'action');actionChange($event,content,userForm);" #action="ngModel" name="action">
+                    <select class="form-control" required id="cmbAction" [(ngModel)]="referenceDataObject.action" (ngModelChange)="updateSessionValues($event,'action');actionChange($event,content,userForm);"
+                        #action="ngModel" name="action">
                         <option [value]="actionType"
                                 [ngClass]="{'selectedAction':selectedActions.indexOf(actionType)>-1}"
                                 [selected]="referenceDataObject.action===actionType"
@@ -39,16 +42,20 @@
                 </div>
                 <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12">
                     <label>VNF Type* </label>
-                    <input type="text" readonly class="form-control" id="txtVnfType" required [(ngModel)]="referenceDataObject['scope']['vnf-type']" (ngModelChange)="updateSessionValues($event,'vnfType')" #vnftype="ngModel" name="vnftype">
+                    <input type="text" readonly class="form-control" id="txtVnfType" required [(ngModel)]="referenceDataObject['scope']['vnf-type']"
+                        (ngModelChange)="updateSessionValues($event,'vnfType')" #vnftype="ngModel" name="vnftype">
                     <span class="error-message" [hidden]="vnfParams?.vnfType || vnftype.valid || (vnftype.pristine && !userForm.submitted)">Required Field</span>
                 </div>
                 <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12">
                     <label>VNFC Type</label>
-                    <input type="text" class="form-control" readonly id="txtVnfcType" [(ngModel)]="referenceDataObject.scope['vnfc-type']" (blur)="setVnfcType($event.target.value)" (ngModelChange)="updateSessionValues($event,'vnfcType')" #vnfcType="ngModel" name="vnfcType">
+                    <input type="text" class="form-control" readonly id="txtVnfcType" [(ngModel)]="referenceDataObject.scope['vnfc-type']" (blur)="setVnfcType($event.target.value)"
+                        (ngModelChange)="updateSessionValues($event,'vnfcType')" #vnfcType="ngModel" name="vnfcType">
                 </div>
                 <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12">
                     <label>Device Protocol*</label>
-                    <select class="form-control" required id="txtDeviceProtocol" [(ngModel)]="referenceDataObject['device-protocol']" #deviceProtocol="ngModel" name="deviceProtocol">
+                    <select class="form-control" required id="txtDeviceProtocol" [(ngModel)]="referenceDataObject['device-protocol']" (ngModelChange)="deviceProtocolChange()"
+                        #deviceProtocol="ngModel" name="deviceProtocol">
+
                         <option [value]="device" [selected]="referenceDataObject.deviceProtocol===device"
                                 *ngFor="let device of deviceProtocols">{{device}}
                         </option>
@@ -57,7 +64,8 @@
                 </div>
                 <div class="col-lg-3 col-sm-6 col-md-3 col-xs-12" *ngIf="isConfigScaleOut">
                     <label>Template Identifier</label>
-                    <select class="form-control" required id="tempIdentifier" (ngModelChange)="dataModified()" [(ngModel)]="templateIdentifier" #deviceProtocol="ngModel" name="templateIdentifier">
+                    <select class="form-control" required id="tempIdentifier" (ngModelChange)="dataModified();idChange($event,content,userForm)"
+                        [(ngModel)]="templateIdentifier" #deviceProtocol="ngModel" name="templateIdentifier">
                         <option [value]="val" *ngFor="let val of referenceDataObject['template-id-list']">{{val}}
                         </option>
                     </select>
@@ -74,16 +82,20 @@
             <div class="col-12" *ngIf="!(referenceDataObject.action === 'OpenStack Actions')">
                 <div class="input-group">
                     <input id="inputFile" class="file" #myInput type='file' (change)="fileChange($event)">
-                    <input [(ngModel)]="fileName" type="text" class="input-lg" disabled placeholder="Upload Reference File from PC" name="browse" style="width:80%">
-                    <button (click)="browseOption($event)" class="browse mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary input-lg" type="button">Upload Reference File
+                    <input [(ngModel)]="fileName" type="text" class="input-lg" disabled placeholder="Upload Reference File from PC" name="browse"
+                        style="width:80%">
+                    <button (click)="browseOption($event)" class="browse mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary input-lg"
+                        type="button">Upload Reference File
                     </button>
                 </div>
             </div>
             <div class="col-12" *ngIf="referenceDataObject.action === 'OpenStack Actions'">
                 <div class="input-group">
                     <input id="excelInputFile" #myInput1 class="file" type="file" (change)="upload($event)">
-                    <input [(ngModel)]="uploadFileName" type="text" class="input-lg" disabled placeholder="Upload VM Capabilities File" name="uploadFileName" style="width:80%">
-                    <button (click)="excelBrowseOption($event)" class="browse mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary input-lg" type="button">Upload VM Capabilities File
+                    <input [(ngModel)]="uploadFileName" type="text" class="input-lg" disabled placeholder="Upload VM Capabilities File" name="uploadFileName"
+                        style="width:80%">
+                    <button (click)="excelBrowseOption($event)" class="browse mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary input-lg"
+                        type="button">Upload VM Capabilities File
                     </button>
                 </div>
             </div>
@@ -98,7 +110,8 @@
                         <div class="text-right col-6">
                             <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="submit">Download All To PC
                             </button>&emsp;&emsp;
-                            <button id="saveToAppc" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button" (click)="saveToAppc(userForm.valid, userForm)">Save All to APPC
+                            <button id="saveToAppc" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button"
+                                (click)="saveToAppc(userForm.valid, userForm)">Save All to APPC
                             </button>&emsp;&emsp;
                         </div>
                     </div>
@@ -126,7 +139,8 @@
                                     <input type="text" class="form-control" id="txtIpaddress" [(ngModel)]="referenceDataObject['url']" name="contextUrl">
                                 </div>
                             </div>
-                            <div class="card-block" *ngIf="(referenceDataObject.action =='ConfigScaleOut' || referenceDataObject.action =='Configure'|| referenceDataObject.action ==''  || referenceDataObject.action ==undefined)" style="border-top: 5px solid #6ab344;border-top-right-radius: 7px;border-top-left-radius: 7px;">
+                            <div class="card-block" *ngIf="(referenceDataObject.action =='ConfigScaleOut' || referenceDataObject.action =='Configure'|| referenceDataObject.action ==''  || referenceDataObject.action ==undefined)"
+                                style="border-top: 5px solid #6ab344;border-top-right-radius: 7px;border-top-left-radius: 7px;">
                                 <div class="col-12">
                                     <h5 style="margin-top: 0.5rem;font-family: Roboto"> VNFC Information
                                         <span class="pull-right">
@@ -139,12 +153,13 @@
                             </div>
                             <div class="row" *ngIf="(( referenceDataObject.action =='ConfigScaleOut' ||referenceDataObject.action =='Configure'|| referenceDataObject.action =='' || referenceDataObject.action ==undefined ) && isCollapsedContent) ">
                                 <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12">
-                                    <label style="font-size:12px;">VNFC Type*</label>
+                                    <label style="font-size:12px;">VNFC Type</label>
                                     <input type="text" class="form-control" id="txtVnfcTypeInColl" [(ngModel)]="Sample['vnfc-type']" #vnfcType="ngModel" name="samplevnfcType">
                                 </div>
                                 <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12">
-                                    <label style="font-size:12px">VNFC Function Code*</label>
-                                    <input type="text" class="form-control" id="txtVnfcFunctionCode" [(ngModel)]="Sample['vnfc-function-code']" #vnfcFunctionCode="ngModel" name="samplevnfcFunctionCode">
+                                    <label style="font-size:12px">VNFC Function Code</label>
+                                    <input type="text" class="form-control" id="txtVnfcFunctionCode" [(ngModel)]="Sample['vnfc-function-code']" #vnfcFunctionCode="ngModel"
+                                        name="samplevnfcFunctionCode">
                                 </div>
                                 <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12">
                                     <label style="font-size:12px;">IPAddress V4 OAM VIP</label>
@@ -161,33 +176,39 @@
                                 </div>
                                 <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12">
                                     <label style="font-size:12px;">Group Notation Value</label>
-                                    <input type="text" class="form-control" [readonly]="disableGrpNotationValue" id="txtGroupValue" [(ngModel)]="Sample['group-notation-value']" name="sampleGroupValue">
+                                    <input type="text" class="form-control" [readonly]="disableGrpNotationValue" id="txtGroupValue" [(ngModel)]="Sample['group-notation-value']"
+                                        name="sampleGroupValue">
                                 </div>
                                 <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12">
-                                    <button type="button" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent clear-btn" (click)="clearVnfcData()">Clear VNFC Info
+                                    <button type="button" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent clear-btn"
+                                        (click)="clearVnfcData()">Clear VNFC Info
                                     </button>
                                 </div>
                             </div>
                             <hr>
-                            <div *ngIf="(referenceDataObject.action =='ConfigScaleOut' || referenceDataObject.action =='Configure'|| referenceDataObject.action =='' )" class="row">
+                            <div *ngIf="(referenceDataObject.action =='ConfigScaleOut' || referenceDataObject.action =='Configure'|| referenceDataObject.action =='' )"
+                                class="row">
                                 <div class="col-lg-2 col-md-2 hdden-sm-down">
                                     <label style="margin-top: 17px;" class="headlinesInBold"> Number Of VM(s): </label>
                                 </div>
                                 <div class="col-lg-5 col-md-5 col-sm-6 col-xs-6">
                                     <div class="form-group">
-                                        <input type="text" placeholder="Number of VM(s)" class="form-control" id="txtVmnumber22" [(ngModel)]="refernceScopeObj.from" (ngModelChange)="numberValidation($event)" name="txtNumber23">
+                                        <input type="text" placeholder="Number of VM(s)" class="form-control" id="txtVmnumber22" [(ngModel)]="refernceScopeObj.from"
+                                            (ngModelChange)="numberValidation($event)" name="txtNumber23">
                                     </div>
                                 </div>
                                 <div class="col-lg-5 col-md-5 col-sm-6 col-xs-6 text-right">
                                     <div class="form-group">
-                                        <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button" [disabled]="!refernceScopeObj.from || !numberOfVmTest" (click)="addVms()">Add VM Information
+                                        <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" type="button" [disabled]="!refernceScopeObj.from || !numberOfVmTest"
+                                            (click)="addVms()">Add VM Information
                                         </button>
                                     </div>
                                 </div>
                             </div>
                             <div *ngIf="referenceDataObject.vm?.length>0">
                                 <div class="row" *ngFor="let noOfvm of referenceDataObject.vm | vmFiltering:referenceDataObject?.action:templateIdentifier; let j=index">
-                                    <div *ngIf="((referenceDataObject.action =='ConfigScaleOut' || referenceDataObject.action =='Configure'|| referenceDataObject.action =='' || referenceDataObject.action ==undefined ))" class="col-12">
+                                    <div *ngIf="((referenceDataObject.action =='ConfigScaleOut' || referenceDataObject.action =='Configure'|| referenceDataObject.action =='' || referenceDataObject.action ==undefined ))"
+                                        class="col-12">
                                         <div class="row" *ngFor="let item of noOfvm.vnfc; let i=index">
                                             <div class="col-md-12" *ngIf="i==0">
                                                 <h5 class="headlinesInBold">VM Number: {{j+1}}</h5>
@@ -198,12 +219,14 @@
                                             </div>
                                             <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12">
                                                 <label style="font-size:12px;">VNFC Type*</label>
-                                                <input type="text" class="form-control" id="txtVnfcTypeInColl" required [(ngModel)]="item['vnfc-type']" #vnfcType="ngModel" name="vnfcType{{j}}">
+                                                <input type="text" class="form-control" id="txtVnfcTypeInColl" required [(ngModel)]="item['vnfc-type']" #vnfcType="ngModel"
+                                                    name="vnfcType{{j}}">
                                                 <span class="error-message" [hidden]="vnfcType.valid || (vnfcType.pristine && !userForm.submitted)">Required Field</span>
                                             </div>
                                             <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12">
                                                 <label style="font-size:12px;">VNFC Function Code*</label>
-                                                <input type="text" class="form-control" id="txtVnfcFunctionCode" required [(ngModel)]="item['vnfc-function-code']" #vnfcFunctionCode="ngModel" name="vnfcFunctionCode{{j}}">
+                                                <input type="text" class="form-control" id="txtVnfcFunctionCode" required [(ngModel)]="item['vnfc-function-code']" #vnfcFunctionCode="ngModel"
+                                                    name="vnfcFunctionCode{{j}}">
                                                 <span class="error-message" [hidden]="vnfcFunctionCode.valid || (vnfcFunctionCode.pristine && !userForm.submitted)">Required Field</span>
                                             </div>
                                             <div class="col-lg-2 col-sm-6 col-md-2 col-xs-12">
@@ -228,7 +251,8 @@
                                             </div>
                                             <div class="col-lg-12 col-sm-12 col-md-12 col-xs-12">
                                                 <div class="removevnfcClass" *ngIf="refernceScopeObj.sourceType !='vnfcType'">
-                                                    <a role="button" style="color: white" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" (click)="removeFeature(j,i,templateIdentifier)">Remove Vm</a>
+                                                    <a role="button" style="color: white" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent"
+                                                        (click)="removeFeature(j,i,templateIdentifier)">Remove Vm</a>
                                                 </div>
                                                 <div>
                                                     <a *ngIf="(referenceDataObject.vm[j].vnfc.length-1) == i " [hidden]="true" role="button" (click)="addVnfcData(j)">Add VNFC
@@ -313,8 +337,10 @@
             </div>
             <div class="modal-footer">
                 <div>
-                    <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" data-dismiss="modal" (click)="addToIdentDrp()">Add</button>
-                    <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" (click)="templateId=''" data-dismiss="modal">cancel</button>
+                    <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent" data-dismiss="modal"
+                        (click)="addToIdentDrp()">Add</button>
+                    <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--primary" (click)="templateId=''"
+                        data-dismiss="modal">cancel</button>
                 </div>
             </div>
         </div>
diff --git a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.spec.ts b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.spec.ts
index 1570e9c..72f56a7 100644
--- a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.spec.ts
+++ b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.spec.ts
@@ -22,82 +22,104 @@
 */
 /* tslint:disable:no-unused-variable */
 
-import {ComponentFixture, TestBed, async, inject} from '@angular/core/testing';
-import {Http, Response, ResponseOptions, XHRBackend} from '@angular/http';
-import {BuildDesignComponent} from '../build-artifacts.component';
-import {DialogService} from 'ng2-bootstrap-modal';
-import {FormsModule} from '@angular/forms';
-import {HttpModule} from '@angular/http';
-import {HttpUtilService} from '../../../shared/services/httpUtil/http-util.service';
-import {MappingEditorService} from '../../..//shared/services/mapping-editor.service';
-import {NO_ERRORS_SCHEMA} from '@angular/core';
-import {NgModule} from '@angular/core';
-import {NgProgress} from 'ngx-progressbar';
-import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
-import {NotificationService} from '../../../shared/services/notification.service';
-import {Observable} from 'rxjs/Observable';
-import {ParamShareService} from '../../..//shared/services/paramShare.service';
-import {ReferenceDataformComponent} from './reference-dataform.component';
-import {RouterTestingModule} from '@angular/router/testing';
-import {SharedModule} from '../../../shared/shared.module';
-import {environment} from '../../../../environments/environment';
+import { ComponentFixture, TestBed, async, inject } from '@angular/core/testing';
+import { Http, Response, ResponseOptions, XHRBackend } from '@angular/http';
+
+import { BuildDesignComponent } from '../build-artifacts.component';
+import { DialogService } from 'ng2-bootstrap-modal';
+import { FormsModule } from '@angular/forms';
+import { HttpModule } from '@angular/http';
+import { HttpUtilService } from '../../../shared/services/httpUtil/http-util.service';
+import { MappingEditorService } from '../../..//shared/services/mapping-editor.service';
+import { NO_ERRORS_SCHEMA } from '@angular/core';
+import { NgModule } from '@angular/core';
+import { NgProgress } from 'ngx-progressbar';
+import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
+import { NotificationService } from '../../../shared/services/notification.service';
+import { Observable } from 'rxjs/Observable';
+import { ParamShareService } from '../../..//shared/services/paramShare.service';
+import { ReferenceDataformComponent } from './reference-dataform.component';
+import { RouterTestingModule } from '@angular/router/testing';
+import { SharedModule } from '../../../shared/shared.module';
+import { environment } from '../../../../environments/environment';
 
 describe('ReferenceDataformComponent', () => {
-    let component : ReferenceDataformComponent;
-    let fixture : ComponentFixture < ReferenceDataformComponent >;
-    let service : MockMappingService;
+    let component: ReferenceDataformComponent;
+    let fixture: ComponentFixture<ReferenceDataformComponent>;
+    let service: MockMappingService;
 
-    let httpMock : HttpUtilService
+    let httpMock: HttpUtilService
     //mockingthe data for mappingEditorService
 
     class HttpMock {
         post(req) {
-        if(req.url==""){
-        
-        return Observable.of({
-        output: {
-        data: {block:'{"artifactInfo": [ {"artifact-content": "{"reference_data": [{ "action": "Configure","scopeType":"tetsScope"}] }" } ]}'},
-        status:{code:"400",message:"success"}
+
+            return Observable.of(
+
+
+                {
+                    "output": { "data": { "block": "{\"userID\":null,\"designInfo\":null,\"statusInfo\":null,\"artifactInfo\":[{\"artifact-content\":\" {\\\"reference_data\\\":[{\\\"action\\\":\\\"Configure\\\",\\\"action-level\\\":\\\"vnf\\\",\\\"scope\\\":{\\\"vnf-type\\\":\\\"Btesting123\\\",\\\"vnfc-type\\\":\\\"\\\"},\\\"template\\\":\\\"Y\\\",\\\"vm\\\":[],\\\"device-protocol\\\":\\\"ANSIBLE\\\",\\\"user-name\\\":\\\"root\\\",\\\"port-number\\\":\\\"830\\\",\\\"artifact-list\\\":[{\\\"artifact-name\\\":\\\"template_Configure_Btesting123_0.0.1V.json\\\",\\\"artifact-type\\\":\\\"config_template\\\"},{\\\"artifact-name\\\":\\\"pd_Configure_Btesting123_0.0.1V.yaml\\\",\\\"artifact-type\\\":\\\"parameter_definitions\\\"}],\\\"scopeType\\\":\\\"vnf-type\\\"},{\\\"action\\\":\\\"AllAction\\\",\\\"action-level\\\":\\\"vnf\\\",\\\"scope\\\":{\\\"vnf-type\\\":\\\"Btesting123\\\",\\\"vnfc-type\\\":\\\"\\\"},\\\"artifact-list\\\":[{\\\"artifact-name\\\":\\\"reference_AllAction_Btesting123_0.0.1V.json\\\",\\\"artifact-type\\\":\\\"reference_template\\\"}]},{\\\"action\\\":\\\"ConfigScaleOut\\\",\\\"action-level\\\":\\\"vnf\\\",\\\"scope\\\":{\\\"vnf-type\\\":\\\"Btesting123\\\",\\\"vnfc-type\\\":\\\"\\\"},\\\"template\\\":\\\"Y\\\",\\\"vm\\\":[{\\\"template-id\\\":\\\"id1\\\",\\\"vm-instance\\\":1,\\\"vnfc\\\":[{\\\"vnfc-instance\\\":\\\"1\\\",\\\"vnfc-function-code\\\":\\\"12313\\\",\\\"ipaddress-v4-oam-vip\\\":\\\"Y\\\",\\\"group-notation-type\\\":\\\"first-vnfc-name\\\",\\\"group-notation-value\\\":\\\"pair\\\",\\\"vnfc-type\\\":\\\"vDBE-V\\\"}]},{\\\"template-id\\\":\\\"id1\\\",\\\"vm-instance\\\":2,\\\"vnfc\\\":[{\\\"vnfc-instance\\\":\\\"1\\\",\\\"vnfc-function-code\\\":\\\"12313\\\",\\\"ipaddress-v4-oam-vip\\\":\\\"Y\\\",\\\"group-notation-type\\\":\\\"first-vnfc-name\\\",\\\"group-notation-value\\\":\\\"pair\\\",\\\"vnfc-type\\\":\\\"vDBE-V\\\"}]},{\\\"template-id\\\":\\\"id1\\\",\\\"vm-instance\\\":3,\\\"vnfc\\\":[{\\\"vnfc-instance\\\":\\\"1\\\",\\\"vnfc-function-code\\\":\\\"12313\\\",\\\"ipaddress-v4-oam-vip\\\":\\\"Y\\\",\\\"group-notation-type\\\":\\\"first-vnfc-name\\\",\\\"group-notation-value\\\":\\\"pair\\\",\\\"vnfc-type\\\":\\\"vDBE-V\\\"}]}],\\\"device-protocol\\\":\\\"CHEF\\\",\\\"user-name\\\":\\\"root\\\",\\\"port-number\\\":\\\"830\\\",\\\"artifact-list\\\":[{\\\"artifact-name\\\":\\\"template_ConfigScaleOut_Btesting123_0.0.1V_id1.json\\\",\\\"artifact-type\\\":\\\"config_template\\\"},{\\\"artifact-name\\\":\\\"pd_ConfigScaleOut_Btesting123_0.0.1V_id1.yaml\\\",\\\"artifact-type\\\":\\\"parameter_definitions\\\"}],\\\"scopeType\\\":\\\"vnf-type\\\",\\\"template-id-list\\\":[\\\"id1\\\"]}]}\"}]}", "requestId": "563507520187" }, "status": { "code": "400", "message": "success" } },
+
+                    "status": { code: "400", message: "success" }
+                }
+
+
+            )
         }
-        })
-        } }
+    }
+    class MockMappingService {
+        public latestAction; // = {"action":"Configure"}
+        appDataObject = {
+            reference: {},
+            template: {
+                templateData: {},
+                nameValueData: {}
+            },
+            pd: {}
+        };
+        downloadDataObject = {
+            reference: {},
+            template: {
+                templateData: {},
+                nameValueData: {},
+                templateFileName: '',
+                nameValueFileName: ''
+            },
+            pd: {
+                pdData: '',
+                pdFileName: ''
+            }
         }
-        class MockMappingService {
-            public latestAction; // = {"action":"Configure"}
-            appDataObject= { reference: {}, template: { templateData: {}, nameValueData: {} }, pd: {} };
-            downloadDataObject={reference: {},
-            template: { templateData: {}, nameValueData: {}, templateFileName: '', nameValueFileName: '' },
-            pd: { pdData: '', pdFileName: '' }}
-            referenceNameObjects = [
+        referenceNameObjects = [
             {
-            action: "Configure"
+                action: "Configure"
             }, {
-            action: "StartApplication"
+                action: "StartApplication"
             }
-            ]
-            
-            setTemplateMappingDataFromStore(data){
+        ]
+
+        setTemplateMappingDataFromStore(data) {
             return "test"
-            }
-            getReferenceList() {
+        }
+        getReferenceList() {
             return ["test data"]
-            }
-            changeNav() {
+        }
+        changeNav() {
             return "test data"
-            }
-            setParamContent(data){
+        }
+        setParamContent(data) {
             return "test"
-            }
-            setSessionParamData(data){
+        }
+        setSessionParamData(data) {
             return "test"
-            }
-            
-            saveLatestAction() {}
-            saveLatestIdentifier() {}
-            changeNavDownloadData() {}
-            changeNavAppData() {}
-            }
-    class MockreferenceDataObject {}
+        }
+
+        saveLatestAction() { }
+        saveLatestIdentifier() { }
+        changeNavDownloadData() { }
+        changeNavAppData() { }
+    }
+    class MockreferenceDataObject { }
     beforeEach(async(() => {
         TestBed.configureTestingModule({
             declarations: [ReferenceDataformComponent],
@@ -123,14 +145,14 @@
         }).compileComponents();
     }));
     beforeEach(() => {
-        
+
         fixture = TestBed.createComponent(ReferenceDataformComponent);
         component = fixture.componentInstance;
         //  component = new ReferenceDataformComponent(service)
         fixture.detectChanges();
         service = TestBed.get(MappingEditorService)
         httpMock = TestBed.get(HttpUtilService)
-        sessionStorage.setItem('vnfParams',JSON.stringify({vnfType:"test",vnfcType:"testVnfcType"}));
+        sessionStorage.setItem('vnfParams', JSON.stringify({ vnfType: "test", vnfcType: "testVnfcType" }));
         // component = new ReferenceDataformComponent(service)
     });
     it('should create reference component', () => {
@@ -145,13 +167,17 @@
         expect(component.tempAllData.length).toBe(2)
     })
 
-    it("should set app data from service", ()=>{
+    it("should set app data from service", () => {
         component.ngOnInit()
-        expect(component.appData).not.toBe(undefined)
+        expect(component.appData)
+            .not
+            .toBe(undefined)
     })
-    it("should set download from service", ()=>{
+    it("should set download from service", () => {
         component.ngOnInit()
-        expect(component.downloadData).not.toBe(undefined)
+        expect(component.downloadData)
+            .not
+            .toBe(undefined)
     })
     it('Should reset form', () => {
         component.resetForm()
@@ -473,7 +499,7 @@
 
     it("should remove feature from the reference object ", () => {
         component.referenceDataObject = {
-            action: '',
+            action: 'Configure',
             'action-level': 'vnf',
             scope: {
                 'vnf-type': '',
@@ -503,11 +529,61 @@
             'artifact-list': []
         };
 
-        component.removeFeature(0, 0)
+        component.removeFeature(0, 0, 0)
 
         expect(component.referenceDataObject.vm.length).toBe(1)
     })
 
+    it("remove templateIds vm if action is confiogscaleout", () => {
+        component.referenceDataObject = {
+            action: 'ConfigScaleOut',
+            'action-level': 'vnf',
+            scope: {
+                'vnf-type': '',
+                'vnfc-type': ''
+            },
+            'template': 'Y',
+            "vm": [
+                {
+                    "template-id": "klmklj",
+                    "vm-instance": 1,
+                    "vnfc": [
+                        {
+                            "vnfc-instance": "1",
+                            "vnfc-function-code": "klkl",
+                            "ipaddress-v4-oam-vip": "",
+                            "group-notation-type": "",
+                            "group-notation-value": "",
+                            "vnfc-type": "nnk"
+                        }
+                    ]
+                }, {
+                    "template-id": "test 12",
+                    "vm-instance": 2,
+                    "vnfc": [
+                        {
+                            "vnfc-instance": "1",
+                            "vnfc-function-code": "klkl",
+                            "ipaddress-v4-oam-vip": "",
+                            "group-notation-type": "",
+                            "group-notation-value": "",
+                            "vnfc-type": "nnk"
+                        }
+                    ]
+                }
+            ],
+            'device-protocol': '',
+            'user-name': '',
+            'port-number': '',
+            'artifact-list': []
+        };
+
+        component.removeFeature(0, 0, 'test 12')
+
+        expect(component.referenceDataObject.vm.length).toBe(2)
+
+    })
+
     it("should add capabilities", () => {
         component.uploadedDataArray = [
             ['y', 'n']
@@ -544,7 +620,7 @@
         expect(component.referenceDataObject['action-level']).toBe("vnf")
     })
 
-     it("should add capabilities", () => {
+    it("should add capabilities", () => {
         service.latestAction = {
             action: 'OpenStack Actions',
             'action-level': 'vnf',
@@ -560,7 +636,7 @@
             'artifact-list': []
         }
 
-        component.referenceDataObject.action="OpenStack Actions"
+        component.referenceDataObject.action = "OpenStack Actions"
         service.referenceNameObjects = [
             {
                 action: "Configure"
@@ -664,177 +740,236 @@
     })
 
     it('Should call get artifact', () => {
-        sessionStorage.setItem('updateParams', JSON.stringify({vnf: 123, userID: 'testUser'}))
+        sessionStorage.setItem('updateParams', JSON.stringify({ vnf: 123, userID: 'testUser' }))
         component.getArtifact()
-        expect(component.tempAllData.length).toBe(2)
+        expect(component.tempAllData.length).toBe(3)
     })
 
     it('Save file - should not process if action is null ', () => {
-        component.referenceDataObject.action =""
-       let fileSaved =  component.save({},true)
-        expect(fileSaved).toBe(undefined)
-    })
-  it('Save file - should not process if device protocol is null ', () => {
-        component.referenceDataObject['device-protocol'] =""
-       let fileSaved =  component.save({},true)
+        component.referenceDataObject.action = ""
+        let fileSaved = component.save({}, true)
         expect(fileSaved).toBe(undefined)
     })
     it('Save file - should not process if device protocol is null ', () => {
-        component.referenceDataObject.action ="Configure"
-        component.referenceDataObject['device-protocol'] ="test"
-       let fileSaved =  component.save({},true)
+        component.referenceDataObject.action = "Configure"
+        component.referenceDataObject['device-protocol'] = ''
+        let fileSaved = component.save({}, true)
+        expect(fileSaved).toBe(undefined)
+    })
+    it('Save file - should not process if device protocol is null ', () => {
+        component.referenceDataObject.action = "Configure"
+        component.referenceDataObject['device-protocol'] = "test"
+        component.downloadData.template.templateData = { "test": "test" }
+        component.downloadData.template.nameValueData = { "test": "test" }
+        component.downloadData.pd.pdData = "test"
+        let fileSaved = component.save({}, true)
         //expect(fileSaved).toBe(undefined)
     })
 
-     it('Save to appc file - should not process if action is null ', () => {
-        component.referenceDataObject.action =""
-       let fileSaved =  component.saveToAppc(true,{})
+    it('Save to appc file - should not process if action is null ', () => {
+        component.referenceDataObject.action = ""
+        let fileSaved = component.saveToAppc(true, {}, onclick)
         expect(fileSaved).toBe(undefined)
     })
-  it('Save to app cfile - should not process if device protocol is null ', () => {
-        component.referenceDataObject['device-protocol'] =""
-       let fileSaved =  component.saveToAppc(true,{})
+    it('Save to app cfile - should not process if device protocol is null ', () => {
+        component.referenceDataObject['device-protocol'] = ""
+        component.referenceDataObject.action = "Configure"
+        let fileSaved = component.saveToAppc(true, {}, onclick)
         expect(fileSaved).toBe(undefined)
     })
     it('Save to appc file - should not process if device protocol is null ', () => {
-        component.referenceDataObject.action ="Configure"
-        component.referenceDataObject['device-protocol'] ="test"
-       let fileSaved =  component.saveToAppc(true,{})
-        //expect(fileSaved).toBe(undefined)
+        component.referenceDataObject.action = "Configure"
+        component.referenceDataObject['device-protocol'] = "test"
+        component.appData.template.templateData = { "test": "test" }
+        component.appData.template.nameValueData = { "test": "test" }
+        component.appData.pd = { "test": "test" }
+        component.actionChanged = true
+        component.currentAction = "COnfigure"
+        let fileSaved = component.saveToAppc(true, {}, onclick)
     })
-
-    //   it('uploadfile  ', () => {
-
-    //  let    files = { 0: {name:'foo.XLS', size: 500001} };
-    //     var mockEVet = {
-    //         target:{files:files}
-    //     }
-    //   component.upload(mockEVet)
-    //     //expect(fileSaved).toBe(undefined)
-    // })
-
-    it('downloadTemplate() of reference dataform',()=>{
-        component.downloadTemplate()
-        
+    it('downloadTemplate() of reference dataform', () => {
+        expect(component.downloadTemplate());
     })
-    it('downloadNameValue() of reference dataform',()=>{
+    it('downloadNameValue() of reference dataform', () => {
         component.downloadNameValue()
     })
-    
-    it('downloadPd() of reference dataform',()=>{
+    it('downloadPd() of reference dataform', () => {
         component.downloadPd()
     })
-    it('validateTempAllData() of reference dataform',()=>{
+    it('validateTempAllData() of reference dataform', () => {
         component.validateTempAllData()
     })
-    it('retriveFromAppc() of reference dataform',()=>{
-        sessionStorage.setItem('updateParams', JSON.stringify({vnf: 123, userID: 'testUser'}))
+    it('retriveFromAppc() of reference dataform', () => {
+        sessionStorage.setItem('updateParams', JSON.stringify({ vnf: 123, userID: 'testUser' }))
         component.retriveFromAppc()
         expect(component.noCacheData).toBeFalsy()
     })
-    it('retriveFromAppc() of reference dataform for false',()=>{
-        
+    it('retriveFromAppc() of reference dataform for false', () => {
+        sessionStorage.setItem('updateParams', 'undefined')
         component.retriveFromAppc()
-        expect(component.noCacheData).toBeFalsy()
+        expect(component.noCacheData).toBeTruthy()
     })
-    it(' cloneMessage(servermessage) of reference dataform',()=>{
-        let servermessage = {test:"test"}
+    it(' cloneMessage(servermessage) of reference dataform', () => {
+        let servermessage = {
+            test: "test"
+        }
         component.cloneMessage(servermessage)
     })
 
-    it('resetGroupNotation() of reference dataform for false case',()=>{
+    it('resetGroupNotation() of reference dataform for false case', () => {
         component.resetGroupNotation()
         expect(component.disableGrpNotationValue).toBeFalsy()
     })
-    it('resetGroupNotation() of reference dataform for true case',()=>{
-        component.Sample['group-notation-type'] == "existing-group-name"
+    it('resetGroupNotation() of reference dataform for true case', () => {
+        component.Sample['group-notation-type'] = "existing-group-name"
         component.resetGroupNotation()
         expect(component.disableGrpNotationValue).toBeTruthy()
     })
-    it('resetVms() of reference dataform',()=>{
+    it('resetVms() of reference dataform', () => {
         component.resetVms()
-        expect(component.referenceDataObject.vm).toBe([])
+        expect(component.referenceDataObject.vm).toBeNull
     })
-    it('dataModified() of reference dataform',()=>{
-        component.dataModified()
-        expect(component.referenceDataObject.vm).toBe(this.referenceDataObject.vm)
-    })
-
     it('Clear cache ', () => {
         component.clearCache()
         expect(component.downloadData.reference['name']).toBe(undefined);
-         //expect(fileSaved).toBe(undefined)
-     })
- 
-     it('sholud reset group notification ', () => {
-         component.Sample['group-notation-type'] = "existing-group-name"
+    })
+    it('sholud reset group notification ', () => {
+        component.Sample['group-notation-type'] = "existing-group-name"
         component.resetGroupNotation()
         expect(component.disableGrpNotationValue).toBe(true);
-         //expect(fileSaved).toBe(undefined)
-     })
-      it('sholud reset group notification if value does not match ', () => {
-         component.Sample['group-notation-type'] = "123"
+    })
+    it('sholud reset group notification if value does not match ', () => {
+        component.Sample['group-notation-type'] = "123"
         component.resetGroupNotation()
         expect(component.disableGrpNotationValue).toBe(false);
-         //expect(fileSaved).toBe(undefined)
-     })
-      it('add identity group', () => {
-         component.referenceDataObject['template-id-list'] = undefined
-         component.templateId="test"
+    })
+    it('add identity group', () => {
+        component.referenceDataObject['template-id-list'] = undefined
+        component.templateId = "test"
         component.addToIdentDrp()
         expect(component.referenceDataObject['template-id-list'].length).toBe(1);
-         //expect(fileSaved).toBe(undefined)
-     })
- 
-      it('add identity group', () => {
-         
+    })
+
+    it('add identity group', () => {
+
         component.resetVms()
         expect(component.referenceDataObject.vm.length).toBe(0);
-         //expect(fileSaved).toBe(undefined)
-     })
-     it('data modified', () => {
-         
+    })
+    it('data modified', () => {
+
         component.dataModified()
- 
-        component.referenceDataObject.vm =[1,2]
+        component.referenceDataObject.vm = [1, 2]
         expect(component.referenceDataObject.vm.length).toBe(2);
-         //expect(fileSaved).toBe(undefined)
+    })
+
+    it("should set values on action change ConfigScaleOut", () => {
+        component.actionChange("ConfigScaleOut", "", {})
+
+        expect(component.groupAnotationType.length).toBe(5)
+    })
+    it("shpukd return false if its very first action", () => {
+        component.actionChange(null, "", "")
+
+        expect(component.disableGrpNotationValue).toBe(false)
+    })
+    it("sholud check no configuration actions", () => {
+        component.tempAllData = [
+            {
+                action: "Configure",
+                scope: {
+                    'vnf-type': "testVnf"
+                }
+            }
+        ]
+        component.actionChange("Configure", "", "")
+
+        expect(component.nonConfigureAction).toBe(false)
+    })
+
+    it("should set values on action change when action is HealthCheck ", () => {
+        component.populateExistinAction("HealthCheck")
+
+        expect(component.deviceProtocols.length).toBe(4)
+
+    })
+    it("should set values on action change when action is UpgradeBackout", () => {
+        component.populateExistinAction("UpgradeBackout")
+
+        expect(component.deviceProtocols.length).toBe(3)
+
+    })
+    it("should set values on action change when action is OpenStack Actions", () => {
+        component.populateExistinAction("OpenStack Actions")
+
+        expect(component.deviceProtocols.length).toBe(2)
+
+    })
+    it("should set values on action change when action is Configure", () => {
+        component.tempAllData = [
+            {
+                action: "Configure",
+                scope: {
+                    'vnf-type': "testVnf"
+                }
+            }
+        ]
+        component.populateExistinAction("Configure")
+        expect(component.referenceDataObject.scope['vnf-type']).toBe('testVnf')
+
+    })
+    it("shoukd clear vnf data ", () => {
+        component.clearVnfcData()
+        expect(component.Sample['vnfc-instance']).toBe('1')
+    })
+    it("shoudl showUpload", () => {
+        component.uploadTypes = [
+            {
+                value: 'Reference Data',
+                display: 'Sample Json Param File'
+            },
+            {
+                value: 'Mapping Data',
+                display: 'Sample Json Param File'
+            }
+        ]
+        component.showUpload()
+
+        expect(component.selectedUploadType).toBe('Reference Data')
+    })
+    it("set vm instance", () => {
+
+        component.referenceDataObject.vm = [
+            {
+                'vm-instance': 1
+            }
+        ]
+        component.setVmInstance(0)
+        expect(component.referenceDataObject.vm[0]['vm-instance']).toBe(1)
+
+    })
+    it("set vnfc type", () => {
+        component.setVnfcType("test")
+        expect(component.Sample['vnfc-type']).toBe("test")
+    })
+    it("getChange", () => {
+        component.getChange("vnfType")
+        expect(component.referenceDataObject.scope['vnfc-type']).toBe("")
      })
- 
-     it("should set values on action change ConfigScaleOut",()=>{
-         component.actionChange("ConfigScaleOut","",{})
- 
-         expect(component.groupAnotationType.length).toBe(5)
-     })
- 
-     it("should set values on action change when action is HealthCheck ",()=>{
-         component.populateExistinAction("HealthCheck")
- 
-         expect(component.deviceProtocols.length).toBe(4)
- 
- 
-     })
-     it("should set values on action change when action is UpgradeBackout",()=>{
-         component.populateExistinAction("UpgradeBackout")
- 
-         expect(component.deviceProtocols.length).toBe(3)
- 
- 
-     })
-     it("should set values on action change when action is OpenStack Actions",()=>{
-         component.populateExistinAction("OpenStack Actions")
- 
-         expect(component.deviceProtocols.length).toBe(2)
- 
- 
-     })
-     it("should set values on action change when action is Configure",()=>{
- 
-         component.tempAllData=[{action:"Configure",scope:{'vnf-type':"testVnf"}}]
-         component.populateExistinAction("Configure")
- 
-         expect(component.referenceDataObject.scope['vnf-type']).toBe('testVnf')
- 
- 
-     })
+    it("idChange", () => {
+        component.idChange(null, "", { valid: true })
+        component.oldAction = "Configure"
+        expect(component.actionChanged).toBeFalsy()
+    })
+    it("idChange", () => {
+        component.oldAction = "Configure"
+        component.idChange("test", "", { valid: true })
+        expect(component.actionChanged).toBeTruthy()
+    })
+    it('Should test deviceProtocolChange method', () => {
+        let spy = spyOn(BuildDesignComponent.prototype, 'getRefData');
+        let refData = { "action": "Configure", "vnf-type": "test 1", "device-protocol": "ANSIBLE" };
+        component.deviceProtocolChange();
+        expect(spy).toHaveBeenCalled()
+    });
+
 });
diff --git a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.ts b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.ts
index fa3be63..f7d501b 100644
--- a/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.ts
+++ b/src/app/vnfs/build-artifacts/reference-dataform/reference-dataform.component.ts
@@ -16,6 +16,7 @@
 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.
+
 ============LICENSE_END============================================
 */
 
@@ -331,26 +332,26 @@
     }
 
     //to remove the VM's created by the user
-    removeFeature(vmNumber: any, index: any,templateId) {
-        if(this.referenceDataObject.action == "Configure"){
+    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
+            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=>{
+        } 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
+            this.referenceDataObject.vm.forEach((obj, arrIndex) => {
+
+                obj["vm-instance"] = arrIndex + 1
             })
         }
-        
+
     }
 
     //add new VM's to the configure
@@ -372,10 +373,10 @@
     }
 
     //Reference object to create reference data
-    prepareReferenceObject(isSaving?:any){
-        let scopeName = this. resetParamsOnVnfcType(); 
-        let extension =  this.decideExtension();
-        this.prepareArtifactList(scopeName,extension);
+    prepareReferenceObject(isSaving?: any) {
+        let scopeName = this.resetParamsOnVnfcType();
+        let extension = this.decideExtension();
+        this.prepareArtifactList(scopeName, extension);
 
         if (this.referenceDataObject.action === 'OpenStack Actions') {
             this.referenceDataObject['template'] = 'N';
@@ -385,9 +386,9 @@
         let newObj = $.extend(true, {}, this.referenceDataObject);
         let action = this.referenceDataObject.action;
         //preparing Obj for save/download
-        newObj =   this.deleteVmsforNonActions(newObj,action)
-        this.pushOrReplaceTempData(newObj,action);
-        this. addAllActionObj(newObj,scopeName);
+        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)));
@@ -414,35 +415,8 @@
     }
 
     upload(evt: any) {
-        /*  // console.log("This uploaded array==" + JSON.stringify(this.uploadedDataArray))
-          // // console.log("This template data before==" + JSON.stringify(this.tempAllData))
-          if (this.uploadedDataArray && this.uploadedDataArray != undefined && this.uploadedDataArray.length!=0) {
-              /*  for (var i = 0; i < this.uploadedDataArray.length; i++) {
-                    var action = this.uploadedDataArray[i][0];
-                    for (var j = 0; j < this.tempAllData.length; j++) {
-                        if (action === this.tempAllData[j].action) {
-                            this.tempAllData.splice(j);
-                            // console.log("This template data===" + this.tempAllData[j]);
-                        }
-                    }
-                }
-               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 = this.checkIfelementExistsInArray(this.tempAllData[i].action, this.actions);
-                      if (this.tempAllData[i].action === "AllAction") result = true;
-                      if (!result) {
-                          // console.log("Removing VM action==" + this.tempAllData[i].action)
-                          this.tempAllData.splice(i, 1);
-                      }
-     
-                  }
-              }
-          }
-          // // console.log("This template data after==" + JSON.stringify(this.tempAllData))
-          /* wire up file reader */
+        /* 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);
         if (target.files.length != 1) {
@@ -453,19 +427,10 @@
             reader.onload = (e: any) => {
                 /* read workbook */
                 const bstr = e.target.result;
-                //      // console.log("print 1---" + bstr);
                 const wb = XLSX.read(bstr, { type: 'binary' });
-                //    // console.log("print 2---" + JSON.stringify(wb));
-                /* grab first sheet */
                 const wsname = wb.SheetNames[0];
-                //  // console.log("Name:---" + wsname);
                 const ws = wb.Sheets[wsname];
-
-                /* save data */
-
                 let arrData = (<AOA>(XLSX.utils.sheet_to_json(ws, { header: 1 })));
-                //// console.log("row======" + (XLSX.utils.sheet_to_json(ws, { header: 1 })).toString())
-                // // console.log("Array data---" + JSON.stringify(arrData));
                 this.uploadedDataArray = arrData;
                 this.firstArrayElement = arrData[0];
                 var remUploadedDataArray = arrData;
@@ -481,7 +446,6 @@
                 }
             };
             reader.readAsBinaryString(target.files[0]);
-            // console.log('TARGET files---' + JSON.stringify(evt.target));
         }
         else {
             this.nService.error('Error', 'Incorrect VM capabilities file uploaded');
@@ -585,7 +549,7 @@
         saveAs(blob, fileName);
     }
 
-    saveToAppc(valid, form,event) {
+    saveToAppc(valid, form, event) {
         if (this.referenceDataObject.action === '') {
             this.nService.error('Error', 'Select a valid Action');
             return;
@@ -611,7 +575,9 @@
                 if (nameValueData != '{}' && nameValueData != null && nameValueData != undefined) this.saveNameValue();
                 if (pdData != '{}' && pdData != null && pdData != undefined) this.savePd();
                 if (this.actionChanged) {
-                    this.referenceDataObject.action = this.currentAction;
+                    if (this.currentAction) {
+                        this.referenceDataObject.action = this.currentAction;
+                    }
                     this.populateExistinAction(this.referenceDataObject.action);
                     this.actionChanged = false;
                 }
@@ -839,7 +805,7 @@
         } else if (data == 'OpenStack Actions') {
             this.deviceProtocols = ['', 'OpenStack'];
         } else if (data == 'ConfigScaleOut') {
-            this.deviceProtocols = ['', 'CHEF', 'ANSIBLE', 'NETCONF-XML','RESTCONF'];
+            this.deviceProtocols = ['', 'CHEF', 'ANSIBLE', 'NETCONF-XML', 'RESTCONF'];
         }
         else {
             this.deviceProtocols = ['', 'ANSIBLE', 'CHEF', 'NETCONF-XML', 'RESTCONF', 'CLI'];
@@ -925,48 +891,53 @@
         } else {
             this.nonConfigureAction = true;
         }
-    }
-    // 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();
-    //     }
-    //     });
-    //     }
-    //     }
-    //     }
+        this.buildDesignComponent.getRefData(this.referenceDataObject);
 
-    clearCache() 
+    }
+
+    deviceProtocolChange() {
+        this.buildDesignComponent.getRefData(this.referenceDataObject)
+    }
+
+    // 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()
+    //needed for the the clearing template cache.
     {
-        // get the value and save the userid and persist it. 
-        this.mappingEditorService.setTemplateMappingDataFromStore(undefined);
-        localStorage['paramsContent'] = '{}';
-        this.mappingEditorService.setParamContent(undefined);
-        this.paramShareService.setSessionParamData(undefined);
+        // get the value and save the userid and persist it.
+        this.clearTemplateCache();
+        this.clearPdCache();
         this.appData = { reference: {}, template: { templateData: {}, nameValueData: {} }, pd: {} };
         this.downloadData = {
             reference: {},
@@ -975,54 +946,38 @@
         };
     }
 
-    // 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);
-    //     }
+    clearTemplateCache() {
+        this.mappingEditorService.setTemplateMappingDataFromStore(undefined);
+        localStorage['paramsContent'] = '{}';
+    }
+    clearPdCache() {
+        this.mappingEditorService.setParamContent(undefined);
+        this.paramShareService.setSessionParamData(undefined);
+    }
 
     saveTemp() {
         this
             .httpUtils
             .post(
-                { url: environment.getDesigns, data: this.appData.template.templateData })
+            { url: environment.getDesigns, data: this.appData.template.templateData })
             .subscribe(resp => {
                 if (resp.output.status.code === '400' && resp.output.status.message === 'success') {
                     this.nService.success('Status', 'Successfully uploaded the Template Data');
                 }
                 if (resp.output.status.code === '401') {
                     this.nService.warn('Status', 'Error in saving the Template to Appc');
-
                 }
             },
-                (err) => this.nService.error('Status', 'Error Connecting to the APPC Network'));
+            (err) => this.nService.error('Status', 'Error Connecting to the APPC Network'));
     }
 
     saveNameValue() {
         this
             .httpUtils
             .post(
-                {
-                    url: environment.getDesigns, data: this.appData.template.nameValueData
-                })
+            {
+                url: environment.getDesigns, data: this.appData.template.nameValueData
+            })
             .subscribe(resp => {
                 if (resp.output.status.code === '400' && resp.output.status.message === 'success') {
                     this.nService.success('Status', 'Successfully uploaded the Name Value Pairs');
@@ -1031,19 +986,19 @@
                     this.nService.warn('Status', 'Error in saving the Name value pairs to Appc');
                 }
             },
-                error => {
-                    this.nService.error('Status', 'Error Connecting to the APPC Network');
-                    return false;
-                });
+            error => {
+                this.nService.error('Status', 'Error Connecting to the APPC Network');
+                return false;
+            });
     }
 
     savePd() {
         this
             .httpUtils
             .post(
-                {
-                    url: environment.getDesigns, data: this.appData.pd
-                })
+            {
+                url: environment.getDesigns, data: this.appData.pd
+            })
             .subscribe(resp => {
                 if (resp.output.status.code === '400' && resp.output.status.message === 'success') {
                     this.nService.success('Status', 'Successfully uploaded PD file');
@@ -1052,10 +1007,10 @@
                     this.nService.warn('Status', 'Error in saving the PD to Appc');
                 }
             },
-                error => {
-                    this.nService.error('Status', 'Error Connecting to the APPC Network');
-                    return false;
-                });
+            error => {
+                this.nService.error('Status', 'Error Connecting to the APPC Network');
+                return false;
+            });
     }
 
     openModel(toShow: any, message: any, title: any) {
@@ -1080,7 +1035,7 @@
         if (!(this.referenceDataObject['template-id-list'])) {
             this.referenceDataObject['template-id-list'] = [];
         }
-        if(!(this.referenceDataObject['template-id-list'].indexOf(this.templateId.trim())>-1)){
+        if (!(this.referenceDataObject['template-id-list'].indexOf(this.templateId.trim()) > -1)) {
             this.referenceDataObject['template-id-list'].push(this.templateId.trim());
         }
     }
@@ -1090,7 +1045,7 @@
     }
 
     dataModified() {
-      //  this.referenceDataObject.vm = this.referenceDataObject.vm;
+        //  this.referenceDataObject.vm = this.referenceDataObject.vm;
     }
 
     resetGroupNotation() {
@@ -1103,25 +1058,25 @@
         }
     }
 
-    resetVmsForScaleout(action){
-         //reset currentform vms based on action
-         if (action == "ConfigScaleOut") {
+    resetVmsForScaleout(action) {
+        //reset currentform vms based on action
+        if (action == "ConfigScaleOut") {
             let ConfigScaleOutIndex = this.tempAllData.findIndex(obj => {
-                return obj['action'] ==action
+                return obj['action'] == action
             });
             if (ConfigScaleOutIndex > -1) {
                 this.referenceDataObject.vm = this.tempAllData[ConfigScaleOutIndex].vm
             } else {
-               if(this.actionChanged ){
-               this.referenceDataObject.vm = []
-               }
-              //  
+                if (this.actionChanged) {
+                    this.referenceDataObject.vm = []
+                }
+                //  
             }
         }
     }
 
-     resetParamsOnVnfcType(){
-    let scopeName = '';
+    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'];
@@ -1140,13 +1095,13 @@
                 this.referenceDataObject['scopeType'] = 'vnf-type';
             }
         }
-          //replacing / with _ and removing spaces in the scopeName
-         if (scopeName) {
+        //replacing / with _ and removing spaces in the scopeName
+        if (scopeName) {
             scopeName = scopeName.replace(/ /g, '').replace(new RegExp('/', 'g'), '_').replace(/ /g, '');
         }
         return scopeName
-     }
-    decideExtension(){
+    }
+    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') {
@@ -1156,10 +1111,10 @@
         }
         return extension
     }
-    prepareArtifactList(scopeName,extension){
-    this.referenceDataObject['artifact-list'] = [];
+    prepareArtifactList(scopeName, extension) {
+        this.referenceDataObject['artifact-list'] = [];
 
- //preparing the artifact list array file names along with extension
+        //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';
@@ -1184,7 +1139,7 @@
             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, '');
+                    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;
 
@@ -1204,8 +1159,8 @@
 
         }
     }
-    deleteVmsforNonActions(newObj,action){
- let configureObject = (action == 'Configure');
+    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) {
@@ -1225,7 +1180,7 @@
         }
         return newObj
     }
-    pushOrReplaceTempData(newObj,action){
+    pushOrReplaceTempData(newObj, action) {
 
         let actionObjIndex = this.tempAllData.findIndex(obj => {
             return obj['action'] == action;
@@ -1233,7 +1188,7 @@
         if (newObj.action != 'HealthCheck') {
             delete newObj['url'];
         }
-        
+
         if (actionObjIndex > -1) {
             this.tempAllData[actionObjIndex] = newObj;
             this.mappingEditorService.saveLatestAction(this.tempAllData[actionObjIndex]);
@@ -1245,11 +1200,11 @@
                 this.mappingEditorService.saveLatestIdentifier(this.templateIdentifier);
             }
         }
-        
+
     }
 
-    addAllActionObj(newObj,scopeName){
-        
+    addAllActionObj(newObj, scopeName) {
+
         //Creating all action block to allow mulitple actions at once
         let allAction = {
             action: 'AllAction',
@@ -1270,9 +1225,9 @@
         }
     }
 
-    resetTempData(){
- if (this.uploadedDataArray && this.uploadedDataArray != undefined && this.uploadedDataArray.length != 0) {
-           
+    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))
@@ -1295,4 +1250,4 @@
             this.addVmCapabilitiesData();
         }
     }
-}
+}
\ No newline at end of file
diff --git a/src/app/vnfs/build-artifacts/template-holder/param-name-value/param-name-value.component.spec.ts b/src/app/vnfs/build-artifacts/template-holder/param-name-value/param-name-value.component.spec.ts
index c9a7c4d..0ec9d9f 100644
--- a/src/app/vnfs/build-artifacts/template-holder/param-name-value/param-name-value.component.spec.ts
+++ b/src/app/vnfs/build-artifacts/template-holder/param-name-value/param-name-value.component.spec.ts
@@ -223,6 +223,7 @@
         component.vnfType = "testVnf";
         component.userId = "abc";
         component.item.action = "Configure";
+        mappingEditorService.identifier="id1";
         component.retrieveNameValueFromAppc();
         expect(localStorage["localStorage['paramsContent']"]).not.toBe(null);
 
diff --git a/src/app/vnfs/build-artifacts/template-holder/param-name-value/param-name-value.component.ts b/src/app/vnfs/build-artifacts/template-holder/param-name-value/param-name-value.component.ts
index a3c5a8e..b098ab7 100644
--- a/src/app/vnfs/build-artifacts/template-holder/param-name-value/param-name-value.component.ts
+++ b/src/app/vnfs/build-artifacts/template-holder/param-name-value/param-name-value.component.ts
@@ -51,7 +51,7 @@
     enableMappingSave: boolean = false;
     aceText: string = '';
     fileName: string = '';
-    actionType: any='';
+    actionType: any = '';
     modal: any;
     configMappingEditorContent: any;
     fileType: any = '';
@@ -69,8 +69,8 @@
     enableDownload: boolean = false;
     showMappingDownloadDiv: boolean = false;
     mapppingDownloadType: any;
-    action: any='';
-    artifactName: any='';
+    action: any = '';
+    artifactName: any = '';
     enableMerge: boolean = false;
     apiToken = localStorage['apiToken'];
     userId = localStorage['userId'];
@@ -98,13 +98,13 @@
     @ContentChildren(Tab) tabs: QueryList<Tab>;
     public subscription: any;
     public item: any = {};
-    vnfType: any='';
-    vnfcType: any='';
-    protocol: any='';
+    vnfType: any = '';
+    vnfcType: any = '';
+    protocol: any = '';
     refObj: any;
     public paramsContent = localStorage['paramsContent'];
 
-    constructor (private buildDesignComponent: BuildDesignComponent, private paramShareService: ParamShareService, private router: Router, private httpUtil: HttpUtilService, private dialogService: DialogService, private activeRoutes: ActivatedRoute, private mappingEditorService: MappingEditorService, private notificationService: NotificationService, private nService: NotificationsService, private ngProgress: NgProgress) {
+    constructor(private buildDesignComponent: BuildDesignComponent, private paramShareService: ParamShareService, private router: Router, private httpUtil: HttpUtilService, private dialogService: DialogService, private activeRoutes: ActivatedRoute, private mappingEditorService: MappingEditorService, private notificationService: NotificationService, private nService: NotificationsService, private ngProgress: NgProgress) {
         this.artifactRequest.action = '';
         this.artifactRequest.version = '';
         this.artifactRequest.paramKeysContent = '';
@@ -155,7 +155,7 @@
         this.activeRoutes.url.subscribe(UrlSegment => {
             this.actionType = UrlSegment[0].path;
         });
-      
+
         if (this.actionType === 'myTemplates') {
             this.mappingEditorService.fromScreen = 'MappingScreen';
         }
@@ -171,7 +171,7 @@
     }
 
     //========================== End of browseOption() Method============================================
-  
+
     ngOnDestroy() {
         this.prepareFileName();
     }
@@ -201,8 +201,8 @@
     }
 
     //========================== End of ngAfterViewInit() Method============================================
-   
-  
+
+
     public fileParamChange(input) {
         if (input.files && input.files[0]) {
             this.enableMappingSave = true;
@@ -264,7 +264,7 @@
     }
 
     //========================== End of onParamChanges() Method============================================
-   
+
     updateFileName(action: any, scopeName: any, versionNo: any) {
         let fileName = 'param_' + action + '_' + scopeName + '_' + versionNo + 'V.json';
         this.downloadedFileName = fileName;
@@ -272,19 +272,29 @@
     }
 
     //========================== End of updateFileName() Method============================================
+    updateFileNameForConfigScaleOut(action: any, scopeName: any, versionNo: any, id: any) {
+        let fileName = 'param_' + action + '_' + scopeName + '_' + versionNo + 'V_' + id + '.json';
+        this.downloadedFileName = fileName;
+        return fileName;
+    }
+    //========================== End of updateFileNameForConfigScaleOut() Method============================================
     prepareFileName(): any {
         let fileNameObject: any = this.mappingEditorService.latestAction;
         return fileNameObject;
     }
 
     //========================== End of prepareFileName() Method============================================
-  
+
     retrieveNameValueFromAppc() {
         let refObj = this.refObj;
         if (refObj && refObj != undefined) {
             this.enableMerge = true;
             var scopeName = this.scopeName.replace(/ /g, '').replace(new RegExp('/', "g"), '_').replace(/ /g, '');
-            let fileName = this.updateFileName(this.item.action, scopeName, this.versionNo);
+            let fileName = '';
+            let id = this.mappingEditorService.identifier;
+            if (id) fileName = this.updateFileNameForConfigScaleOut(this.item.action, scopeName, this.versionNo, id);
+            else fileName = this.updateFileName(this.item.action, scopeName, this.versionNo);
+
             let payload = '{"userID": "' + this.userId + '", "action": "' + this.item.action + '", "vnf-type" : "' + this.vnfType + '", "artifact-type":"APPC-CONFIG", "artifact-name":"' + fileName + '"}';
             let input = {
                 'input': {
@@ -337,7 +347,7 @@
     }
 
     //========================== End of retrieveNameValueFromAppc() Method============================================
-   
+
     formatNameValuePairs(namevaluePairs: string) {
         var string = namevaluePairs.substring(1, namevaluePairs.length - 1);
         var stringArr = string.split(',');
@@ -431,7 +441,7 @@
                                     'ruleTypeValues': arr2item.ruleTypeValues
                                 };
                                 pdDataArrayForSession.splice(i, 1, json);
-                               
+
                             }
 
                         });
diff --git a/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.html b/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.html
index 02b5a02..52a2734 100644
--- a/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.html
+++ b/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.html
@@ -41,7 +41,8 @@
                         <label>Protocol</label><input class="form-control" type="text" disabled value="{{protocol}}" />
                     </div>
                     <div *ngIf="(action === 'ConfigScaleOut')" class="col-lg-3 col-sm-6 col-md-3 col-xs-12">
-                        <label>Template Identifier</label><input class="form-control" type="text" disabled value="{{identifier}}" />
+                        <label>Template Identifier</label><input class="form-control" type="text" [(ngModel)]="identifier" disabled />
+
                     </div>
                 </div>
             </div>
diff --git a/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.spec.ts b/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.spec.ts
index da422c3..8ad635b 100644
--- a/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.spec.ts
+++ b/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.spec.ts
@@ -17,7 +17,6 @@
 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============================================
 */
 
@@ -218,6 +217,7 @@
 
     component.userId = "sj108s";
     component.apiToken = "87264736473";
+    mappingEditorService.identifier = "id1";
     component.prepareAppData();
     var paramData = { "input": ({ "design-request": ({ "request-id": '87264736473', "action": 'uploadArtifact', "payload": '{"userID":"sj108s","vnf-type":"testVnf","action":"Configure","artifact-name":"param_Configure_testVnf_0.0.1V.json","artifact-type":"APPC-CONFIG","artifact-version":"0.0.1","artifact-contents":"[{\"sync_auto-pop_name1\":\"10.0.1.34\",\"sync_auto-pop_address1\":\"\",\"node0_tacplus_server_name2\":\"192.34.45.5\"}]"}' }) }) };
     var templateData = { input: ({ "design-request": ({ "request-id": '87264736473', "action": 'uploadArtifact', "payload": '{"userID":"sj108s","vnf-type":"testVnf","action":"Configure","artifact-name":"template_Configure_test_0.0.1V.json","artifact-type":"APPC-CONFIG","artifact-version":"0.0.1","artifact-contents":"<configuration xmlns=\"http://xml.juniper.net/xnm/1.1/xnm\" \n    xmlns:a=\"http://xml.juniper.net/junos/15.1X49/junos\" >\n<version>15.1X49-D50.3</version>\n            <groups>\n                <name>node0</name>\n                <system>\n                   <tacplus-server>\n                        <name>${sync_auto-pop_name1}</name>\n                        <source-address>${sync_auto-pop_address1}</source-address>\n              </tacplus-server>\n                    <tacplus-server>\n                        <name>${node0_tacplus_server_name2}</name>\n          <source-address>${sync_auto-pop_address1}</source-address>\n                    </tacplus-server>\n                </system>         \n   </groups>\n    </configuration>"}' }) }) };
@@ -375,54 +375,54 @@
   // fileChange method
   it('Should validatte fileChange method if file type is xml', async(() => {
     let reader = new FileReader();
-    let file = new File(["testing"], "foo.xml", {type: "text/xml"});
-    let input = {files: [file]};
+    let file = new File(["testing"], "foo.xml", { type: "text/xml" });
+    let input = { files: [file] };
     component.refObj = true;
 
     component.fileChange(input);
 
-    component.readFile(input.files[0], reader,(res) => {
+    component.readFile(input.files[0], reader, (res) => {
       expect(component.selectedUploadType).toEqual('Generated Template');
       expect(component.configMappingEditorContent).toEqual(res);
       expect(component.artifactRequest.templateContent).toEqual(res);
-    });    
+    });
   }));
 
   it('Should validatte fileChange method if file type is json', async(() => {
     let reader = new FileReader();
-    let file = new File(["testing"], "foo.json", {type: "text/json"});
-    let input = {files: [file]};
+    let file = new File(["testing"], "foo.json", { type: "text/json" });
+    let input = { files: [file] };
     component.refObj = true;
 
     component.fileChange(input);
 
-    component.readFile(input.files[0], reader,(res) => {
+    component.readFile(input.files[0], reader, (res) => {
       expect(component.selectedUploadType).toEqual('Generated Template');
       expect(component.configMappingEditorContent).toEqual(res);
       expect(component.artifactRequest.templateContent).toEqual(res);
-    });    
+    });
   }));
 
   it('Should validatte fileChange method if file type is none ', async(() => {
     let reader = new FileReader();
-    let file = new File(["testing"], "foo", {type: ""});
-    let input = {files: [file]};
+    let file = new File(["testing"], "foo", { type: "" });
+    let input = { files: [file] };
     component.refObj = true;
 
     component.fileChange(input);
 
-    component.readFile(input.files[0], reader,(res) => {
+    component.readFile(input.files[0], reader, (res) => {
       expect(typeof sessionStorage.getItem('fileType')).toEqual('string')
       expect(component.selectedUploadType).toEqual('Generated Template');
       expect(component.configMappingEditorContent).toEqual(res);
       expect(component.artifactRequest.templateContent).toEqual(res);
-    });    
+    });
   }));
 
   it('Should validate if files is false', () => {
     let spy = spyOn(NotificationsService.prototype, 'error');
     let reader = new FileReader();
-    let input = {files: []};
+    let input = { files: [] };
     component.refObj = true;
 
     component.fileChange(input);
@@ -433,7 +433,7 @@
   it('Should validate if refObj is undefined', () => {
     let spy = spyOn(NotificationsService.prototype, 'error');
     let reader = new FileReader();
-    let input = {files: []};
+    let input = { files: [] };
     component.refObj = undefined;
 
     component.fileChange(input);
@@ -443,4 +443,14 @@
 
   // End fileChange method
 
+  it('should give the correct template artifact name when multiple template identifiers are provided from reference page', inject([MappingEditorService], (mappingEditorService: MappingEditorService) => {
+    fixture = TestBed.createComponent(GoldenConfigurationComponent);
+    component = fixture.componentInstance;
+    mappingEditorService.identifier = "id1";
+    mappingEditorService.latestAction = { "action": "ConfigScaleOut", "action-level": "vnf", "scope": { "vnf-type": "test", "vnfc-type": "" }, "template": "Y", "vm": [], "device-protocol": "CHEF", "user-name": "", "port-number": "", "artifact-list": [{ "artifact-name": "template_ConfigScaleOut_test_0.0.1V_id1.json", "artifact-type": "config_template" }, { "artifact-name": "pd_ConfigScaleOut_test_0.0.1V_id1.yaml", "artifact-type": "parameter_definitions" }, { "artifact-name": "template_ConfigScaleOut_test_0.0.1V_id2.json", "artifact-type": "config_template" }, { "artifact-name": "pd_ConfigScaleOut_test_0.0.1V_id2.yaml", "artifact-type": "parameter_definitions" }], "template-id-list": ["id1", "id2"], "scopeType": "vnf-type" };
+    component.ngAfterViewInit();
+    expect(component.artifactName).toBe("template_ConfigScaleOut_test_0.0.1V_id1.json");
+  }));
+
+
 });
diff --git a/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.ts b/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.ts
index 750b979..3868485 100644
--- a/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.ts
+++ b/src/app/vnfs/build-artifacts/template-holder/template-configuration/template-configuration.component.ts
@@ -129,9 +129,9 @@
   enableValidateTemplate: boolean = false;;
   public selectedUploadType: string = this.uploadTypes[0].value;
   identifier: any;
-  public tempRetrievalResponse:any;
-  public mergeStatus:boolean=false;
-  
+  public tempRetrievalResponse: any;
+  public mergeStatus: boolean = false;
+
   //======================================Start of ngOnInit() Method============================================
   ngOnInit() {
     var refObj = this.refObj = this.prepareFileName();
@@ -186,7 +186,19 @@
       for (let i = 0; i < this.refNameObj['artifact-list'].length; i++) {
         let artifactList = this.refNameObj['artifact-list'];
         if (artifactList[i]['artifact-type'] === 'config_template') {
-          this.artifactName = artifactList[i]['artifact-name'];
+          var artifactName = artifactList[i]['artifact-name'];
+          var artifactNameWithoutExtension = '';
+          if (artifactName) artifactNameWithoutExtension = artifactName.substring(0, artifactName.lastIndexOf("."))
+          var identifier = artifactNameWithoutExtension.split("_");
+          var id = '';
+          if (identifier) id = identifier[identifier.length - 1];
+          if (this.mappingEditorService.identifier) {
+            if (id === this.mappingEditorService.identifier) this.artifactName = artifactName;
+          }
+          else {
+            this.artifactName = artifactName;
+          }
+
         }
       }
     }
@@ -255,7 +267,7 @@
       if (this.fileType === '') {
         sessionStorage.setItem('fileType', '');
       }
-     }
+    }
   }
   //========================== End of saveTemplate() Method============================================
   retrieveTemplateFromAppc() {
@@ -281,7 +293,7 @@
       }).subscribe(resp => {
         if (resp.output.status.code === '400' && resp.output.status.message === "success") {
           this.nService.success("Success", "Template retrieved successfully from APPC");
-          this.tempRetrievalResponse=resp;
+          this.tempRetrievalResponse = resp;
           let result = JSON.parse(resp.output.data.block).artifactInfo[0];
           result = result['artifact-content'];
           if ('Generated Template' === this.selectedUploadType) {
@@ -303,7 +315,7 @@
         }
         this.ngProgress.done();
       },
-      error => this.nService.error("Error", "Error in connecting to APPC Server"));
+        error => this.nService.error("Error", "Error in connecting to APPC Server"));
       setTimeout(() => {
         this.ngProgress.done();
       }, 3500);
@@ -324,7 +336,11 @@
         this.showTemplateVersionDiv = true;
         let action = this.item.action;
         var scopeName = this.scopeName.replace(/ /g, '').replace(new RegExp('/', "g"), '_').replace(/ /g, '');
-        let fileName = this.updateParamFileName(refObj.action, scopeName, this.templateVersionNo);
+        var fileName = '';
+        let id = this.mappingEditorService.identifier;
+        if (id) fileName = this.updateFileNameForConfigScaleOut(this.item.action, scopeName, this.templateVersionNo, id);
+        else fileName = this.updateParamFileName(this.item.action, scopeName, this.templateVersionNo);
+
         let vnfType = this.vnfType;
         let Json = [paramsKeyValueFromEditor];
         let slashedPayload = this.appendSlashes(JSON.stringify(Json));
@@ -349,7 +365,7 @@
               }
             }
           }
-         this.appDataObject.template.nameValueData = data;
+        this.appDataObject.template.nameValueData = data;
       }
       if (this.configMappingEditorContent) {
         let actualContent = this.configMappingEditorContent;
@@ -412,7 +428,7 @@
     let refObj = this.refObj;
     if (refObj) {
       let paramsKeyValueFromEditor: JSON;
-     try {
+      try {
         paramsKeyValueFromEditor = JSON.parse(localStorage["paramsContent"]);
       }
       catch (error) {
@@ -425,7 +441,10 @@
       this.showTemplateVersionDiv = true;
       let fileName: any;
       var scopeName = this.scopeName.replace(/ /g, '').replace(new RegExp('/', "g"), '_').replace(/ /g, '');
-      fileName = this.updateParamFileName(refObj.action, scopeName, this.templateVersionNo);
+      let id = this.mappingEditorService.identifier;
+      if (id) fileName = this.updateFileNameForConfigScaleOut(this.item.action, scopeName, this.templateVersionNo, id);
+      else fileName = this.updateParamFileName(this.item.action, scopeName, this.templateVersionNo);
+
       this.downloadDataObject.template.nameValueData = theJSON;
       this.downloadDataObject.template.nameValueFileName = fileName;
     }
@@ -441,13 +460,19 @@
     return fileName;
   }
   //========================== End of updateParamFileName() Method============================================
+  updateFileNameForConfigScaleOut(action: any, scopeName: any, versionNo: any, id: any) {
+    let fileName = 'param_' + action + '_' + scopeName + '_' + versionNo + 'V_' + id + '.json';
+    this.downloadedParamFileName = fileName;
+    return fileName;
+  }
+  //========================== End of updateFileNameForConfigScaleOut() Method============================================
   public onDownloadTemplate(artifact: string) {
     let actualContent = this.configMappingEditorContent;
     var textToSaveAsBlob: any;
     var config_template_fileName: any
     let refObj = this.refObj;
     let versionandFileType: string;
-   if (artifact == 'Template' && this.artifactRequest && this.configMappingEditorContent && refObj) {
+    if (artifact == 'Template' && this.artifactRequest && this.configMappingEditorContent && refObj) {
       this.showTemplateVersionDiv = true;
       if (this.fileType === "text/xml") {
         textToSaveAsBlob = new Blob([this.configMappingEditorContent], {
@@ -523,7 +548,7 @@
           this.saveTemplate();
 
         });
-        }
+      }
       else {
         this.nService.error("Error", "Failed to read file");
       }
@@ -582,11 +607,11 @@
     var templateData = this.mappingEditorService.paramData; //template data array
     var pdData = this.paramShareService.getSessionParamData(); //PD data array
     var paramsContent = localStorage["paramsContent"];
-    
+
     if (paramsContent && paramsContent != undefined) {
       try {
         var paramTabData = JSON.parse(paramsContent);
-       }
+      }
       catch (error) {
         console.log("error is : " + error)
       }
@@ -693,7 +718,7 @@
               "ruleTypeValues": arr2item.ruleTypeValues
             };
             resultArr.splice(i, 1, json)
-            }
+          }
 
         });
 
@@ -723,7 +748,7 @@
   public handleAnnotation(modal) {
 
     this.selectedWord = this.templateeditor.getEditor().session.getTextRange(this.templateeditor.getEditor().selectionRange);
-    if(this.selectedWord && this.selectedWord!=undefined) modal.open();
+    if (this.selectedWord && this.selectedWord != undefined) modal.open();
   }
   //========================== End of handleAnnotations() Method============================================ 
   public submitNameValues() {
@@ -732,14 +757,14 @@
 
       if (this.selectedWord) {
         if (this.selectedWord.startsWith('${(')) {
-          var replaceWord: any =this.replaceWord = this.selectedWord.substring(3, this.selectedWord.indexOf(')=(')) + this.tempName;
+          var replaceWord: any = this.replaceWord = this.selectedWord.substring(3, this.selectedWord.indexOf(')=(')) + this.tempName;
           this.templateeditor.getEditor().session.replace(this.templateeditor.getEditor().session.selection.getRange(), replaceWord);
-          
+
         } else {
           let mappingKey = this.mappingEditorService.getKeysForValues(this.selectedWord);
-          var replaceWord: any = this.replaceWord='${(' + this.selectedWord + ')=(' + this.tempName + ')}';
+          var replaceWord: any = this.replaceWord = '${(' + this.selectedWord + ')=(' + this.tempName + ')}';
           this.templateeditor.getEditor().session.replace(this.templateeditor.getEditor().session.selection.getRange(), replaceWord);
-          
+
         }
       }
       this.mappingEditorService.refreshEditor();
diff --git a/src/environments/environment.dev3.ts b/src/environments/environment.dev3.ts
index 8167549..cff9cb2 100644
--- a/src/environments/environment.dev3.ts
+++ b/src/environments/environment.dev3.ts
@@ -17,7 +17,6 @@
 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============================================
 */
 
@@ -27,7 +26,7 @@
 // The list of which env maps to which file can be found in `.angular-cli.json`.
 export const environment = {
     production: false,
-    getDesigns: 'https://' + window.location.hostname + ':8443/restconf/operations/design-services:dbservice',
-    validateTemplate: 'https://' + window.location.hostname + ':8443/restconf/operations/design-services:validator',
-    testConfigure: 'https://' + window.location.hostname + ':8443/restconf/operations/appc-provider-lcm:configure'
+    getDesigns: 'https://' + window.location.hostname + ':8282/restconf/operations/design-services:dbservice',
+    validateTemplate: 'https://' + window.location.hostname + ':8282/restconf/operations/design-services:validator',
+    testConfigure: 'https://' + window.location.hostname + ':8282/restconf/operations/appc-provider-lcm:configure'
 };
diff --git a/src/environments/environment.dev4.ts b/src/environments/environment.dev4.ts
index 8167549..cff9cb2 100644
--- a/src/environments/environment.dev4.ts
+++ b/src/environments/environment.dev4.ts
@@ -17,7 +17,6 @@
 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============================================
 */
 
@@ -27,7 +26,7 @@
 // The list of which env maps to which file can be found in `.angular-cli.json`.
 export const environment = {
     production: false,
-    getDesigns: 'https://' + window.location.hostname + ':8443/restconf/operations/design-services:dbservice',
-    validateTemplate: 'https://' + window.location.hostname + ':8443/restconf/operations/design-services:validator',
-    testConfigure: 'https://' + window.location.hostname + ':8443/restconf/operations/appc-provider-lcm:configure'
+    getDesigns: 'https://' + window.location.hostname + ':8282/restconf/operations/design-services:dbservice',
+    validateTemplate: 'https://' + window.location.hostname + ':8282/restconf/operations/design-services:validator',
+    testConfigure: 'https://' + window.location.hostname + ':8282/restconf/operations/appc-provider-lcm:configure'
 };
diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts
index 472f51b..98fa798 100644
--- a/src/environments/environment.prod.ts
+++ b/src/environments/environment.prod.ts
@@ -17,7 +17,6 @@
 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============================================
 */
 
@@ -27,7 +26,7 @@
 // The list of which env maps to which file can be found in `.angular-cli.json`.
 export const environment = {
     production: true,
-    getDesigns: 'https://' + window.location.hostname + ':8443/restconf/operations/design-services:dbservice',
-    validateTemplate: 'https://' + window.location.hostname + ':8443/restconf/operations/design-services:validator',
-    testConfigure: 'https://' + window.location.hostname + ':8443/restconf/operations/appc-provider-lcm:configure'
+    getDesigns: 'https://' + window.location.hostname + ':8282/restconf/operations/design-services:dbservice',
+    validateTemplate: 'https://' + window.location.hostname + ':8282/restconf/operations/design-services:validator',
+    testConfigure: 'https://' + window.location.hostname + ':8282/restconf/operations/appc-provider-lcm:configure'
 };
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index 0804645..3a2f695 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -17,7 +17,6 @@
 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============================================
 */
 
@@ -30,10 +29,10 @@
     production: false,
     //Environment for PROD
 
-    getDesigns: 'https://' + window.location.hostname + ':8443/restconf/operations/design-services:dbservice',
-    validateTemplate: 'https://' + window.location.hostname + ':8443/restconf/operations/design-services:validator',
-    testVnf: 'https://' + window.location.hostname + ':8443/restconf/operations/appc-provider-lcm:',
-    checkTestStatus: 'https://' + window.location.hostname + ':8443/restconf/operations/appc-provider-lcm:action-status'
+    getDesigns: 'https://' + window.location.hostname + ':8282/restconf/operations/design-services:dbservice',
+    validateTemplate: 'https://' + window.location.hostname + ':8282/restconf/operations/design-services:validator',
+    testVnf: 'https://' + window.location.hostname + ':8282/restconf/operations/appc-provider-lcm:',
+    checkTestStatus: 'https://' + window.location.hostname + ':8282/restconf/operations/appc-provider-lcm:action-status'
 
 
-};
+};
\ No newline at end of file
diff --git a/src/index.html b/src/index.html
index 8c4ffe3..b1ce671 100644
--- a/src/index.html
+++ b/src/index.html
@@ -25,7 +25,7 @@
 
 <head>
     <meta charset="utf-8">
-    <title>APPC Self Service Controller Design Tool</title>
+    <title>Controller Design Tool</title>
     <base href="./index.html">