diff --git a/src/app/utilities/ns-update/NsUpdateComponent.html b/src/app/utilities/ns-update/NsUpdateComponent.html
index e3058d6..2c98599 100644
--- a/src/app/utilities/ns-update/NsUpdateComponent.html
+++ b/src/app/utilities/ns-update/NsUpdateComponent.html
@@ -32,7 +32,7 @@
                 <label for="updateType"> {{'UPDATETYPE' | translate}} *</label>
             </div>
             <div class="col-sm-6">
-                <ng-select formControlName="updateType" [clearable]="false" placeholder="{{'SELECT' | translate}}"
+                <ng-select formControlName="updateType" [clearable]="false" placeholder="{{'SELECT' | translate}} {{'UPDATETYPE' | translate}}"
                     [items]="updateTypeList" bindLabel="title" bindValue="value" (change)="terminateVNF($event.value)"
                     [ngClass]="{ 'is-invalid': submitted && f.updateType.errors }"></ng-select>
             </div>
@@ -51,12 +51,12 @@
         </div>
         <div class="form-group row" *ngIf="!vnfdIdShow">
             <div class="col-sm-6">
-                <label for="vnfdId"> {{'VNFDID' | translate}} *</label>
+                <label for="vnfdId"> {{'VNFDNAME' | translate}} *</label>
             </div>
             <div class="col-sm-6">
-                <input autocomplete="off" class="form-control" placeholder="{{'VNFDID' | translate}}" type="text"
-                    formControlName="vnfdId" id="computeHost"
-                    [ngClass]="{ 'is-invalid': submitted && f.vnfdId.errors }">
+                <ng-select formControlName="vnfdId" [clearable]="false" placeholder="{{'SELECT' | translate}} {{'VNFDNAME' | translate}}"
+                    [items]="selectedVnf" bindLabel="VNFD" bindValue="VNFID"
+                    [ngClass]="{ 'is-invalid': submitted && f.vnfdId.errors }"></ng-select>
             </div>
         </div>
     </div>
diff --git a/src/app/utilities/ns-update/NsUpdateComponent.ts b/src/app/utilities/ns-update/NsUpdateComponent.ts
index 80ddbb4..80773e2 100644
--- a/src/app/utilities/ns-update/NsUpdateComponent.ts
+++ b/src/app/utilities/ns-update/NsUpdateComponent.ts
@@ -68,6 +68,8 @@
     public vnfdIdShow: boolean = false;
     /** Contains MemberVNFIndex values @public */
     public memberVnfIndex: {}[] = [];
+    /** Contains MemberVNFIndex content @public */
+    public selectedVnf: {}[];
     /** Array holds VNFR Data filtered with nsr ID @public */
     public nsIdFilteredData: {}[] = [];
     /** Contains vnfdId value @public */
@@ -188,6 +190,7 @@
             vnfdData[memberIndex] === this.memberIndexValue);
         const vnfId: string = 'VNFID';
         const selectedvnfId: string = 'VNFD';
+        this.selectedVnf = memberIndexFilteredData;
         for (const data of memberIndexFilteredData) {
             this.vnfID = data[vnfId];
             this.selectedvnfId = data[selectedvnfId];
@@ -243,7 +246,8 @@
                 if (result.message === CONFIGCONSTANT.done) {
                     this.onSubmit();
                 }
-            }).catch();
+            }).catch((): void => { //empty
+             });
         }
         this.isLoadingResults = false;
     }
@@ -274,14 +278,16 @@
                 }
                 if (this.version === this.vnfversion) {
                     const modalRef: NgbModalRef = this.modalService.open(WarningComponent, { backdrop: 'static' });
-                    modalRef.componentInstance.heading = this.translateService.instant('UPDATEPOLICIES');
-                    modalRef.componentInstance.confirmationMessage = this.translateService.instant('UPDATEPOLICIESCONTENT');
-                    modalRef.componentInstance.submitMessage = this.translateService.instant('UPDATEPOLICIES');
+                    modalRef.componentInstance.heading = this.translateService.instant('UPDATENS');
+                    modalRef.componentInstance.confirmationMessage = this.translateService.instant('GENERICCONTENT');
+                    modalRef.componentInstance.submitMessage = this.translateService.instant('UPDATENS');
                     modalRef.result.then((result: MODALCLOSERESPONSEDATA): void => {
                         if (result.message === CONFIGCONSTANT.done) {
                             this.onSubmit();
                         }
-                    }).catch();
+                    }).catch((): void => { //empty
+                     }
+                    );
                 } else {
                     const modalRef: NgbModalRef = this.modalService.open(WarningComponent, { backdrop: 'static' });
                     modalRef.componentInstance.heading = this.translateService.instant('REDEPLOY');
@@ -291,7 +297,8 @@
                         if (result.message === CONFIGCONSTANT.done) {
                             this.onSubmit();
                         }
-                    }).catch();
+                    }).catch((): void => { //empty
+                     });
                 }
             }, (error: ERRORDATA): void => {
                 this.restService.handleError(error, 'get');
