diff --git a/src/app/utilities/compose-packages/ComposePackages.html b/src/app/utilities/compose-packages/ComposePackages.html
index 007b0ab..be8081e 100644
--- a/src/app/utilities/compose-packages/ComposePackages.html
+++ b/src/app/utilities/compose-packages/ComposePackages.html
@@ -36,9 +36,12 @@
       <label class="col-sm-12 col-form-label mandatory-label"
         [ngClass]="{'text-danger': packagesForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' |
         translate}}</label>
-      <label class="col-sm-6 col-form-label" *ngIf="!template && !oka">{{'PACKAGE' | translate}} {{'NAME' | translate}}*</label>
-      <label class="col-sm-6 col-form-label" *ngIf="!template && params.page === 'oka-packages'">{{'PACKAGE' | translate}} {{'NAME' | translate}}*</label>
-      <label class="col-sm-6 col-form-label" *ngIf="!template && params.page === 'oka-packages-edit'">{{'PACKAGE' | translate}} {{'NAME' | translate}}</label>
+      <label class="col-sm-6 col-form-label" *ngIf="!template && !oka">{{'PACKAGE' | translate}} {{'NAME' |
+        translate}}*</label>
+      <label class="col-sm-6 col-form-label" *ngIf="!template && params.page === 'oka-packages'">{{'PACKAGE' |
+        translate}} {{'NAME' | translate}}*</label>
+      <label class="col-sm-6 col-form-label" *ngIf="!template && params.page === 'oka-packages-edit'">{{'PACKAGE' |
+        translate}} {{'NAME' | translate}}</label>
       <label class="col-sm-6 col-form-label" *ngIf="template">{{'NAME' | translate}}*</label>
       <div class="col-sm-6">
         <input type="text" class="form-control" placeholder="{{'NAME' | translate}}" formControlName="name" id="name"
@@ -81,7 +84,7 @@
       <label class="col-sm-6 col-form-label">{{'CONFIG' | translate}}*</label>
       <div class="col-sm-6">
         <textarea rows="10" cols="50" class="form-control" placeholder="{{'YAMLCONFIG' | translate}}"
-          formControlName="config" id="config"></textarea>
+          formControlName="config" id="config" [ngClass]="{ 'is-invalid': submitted && f.config.errors }"></textarea>
         <div class="fileupload-text mt-1 mb-1">{{'FILEUPLOADLABEL' | translate}}</div>
         <div class="custom-file">
           <input type="file" #fileInputConfig class="fileupload custom-file-input"
@@ -91,7 +94,8 @@
     </div>
     <div class="form-group row mb-3" *ngIf="oka">
       <label class="col-sm-6 col-form-label" *ngIf="params.page === 'oka-packages'">{{'PACKAGE' | translate}}*</label>
-      <label class="col-sm-6 col-form-label" *ngIf="params.page === 'oka-packages-edit'">{{'PACKAGE' | translate}}</label>
+      <label class="col-sm-6 col-form-label" *ngIf="params.page === 'oka-packages-edit'">{{'PACKAGE' |
+        translate}}</label>
       <div class="col-sm-6">
         <label for="fileInput" class="custom-file-upload" *ngIf="this.params.page === 'oka-packages-edit'">
           <input type="file" #fileInput class="fileupload custom-file-input" formControlName="package"
diff --git a/src/app/utilities/compose-packages/ComposePackages.ts b/src/app/utilities/compose-packages/ComposePackages.ts
index a8114d0..d294f7f 100644
--- a/src/app/utilities/compose-packages/ComposePackages.ts
+++ b/src/app/utilities/compose-packages/ComposePackages.ts
@@ -30,7 +30,6 @@
 import { environment } from 'environment';
 import * as jsyaml from 'js-yaml';
 import { NSConfigData } from 'NSCONFIGTEMPLATEMODEL';
-import { NSDDetails } from 'NSDModel';
 import * as pako from 'pako';
 import { RestService } from 'RestService';
 import { SharedService, isNullOrUndefined } from 'SharedService';
@@ -204,6 +203,7 @@
       this.getNsdPackageDetails();
       this.getFormControl('profile_type').disable();
       this.getFormControl('description').disable();
+      this.getFormControl('package').disable();
     } else if (this.params.page === 'ns-config-template-edit') {
       this.template = true;
       this.oka = false;
@@ -211,6 +211,7 @@
       this.getFormControl('profile_type').disable();
       this.getFormControl('nsdId').disable();
       this.getFormControl('description').disable();
+      this.getFormControl('package').disable();
     } else if (this.params.page === 'oka-packages') {
       this.oka = true;
       this.template = false;
@@ -241,7 +242,7 @@
     this.packagesForm = this.formBuilder.group({
       name: ['', [Validators.required]],
       nsdId: [null, [Validators.required]],
-      config: [null],
+      config: [null, [Validators.required]],
       profile_type: [null],
       description: ['', [Validators.required]],
       package: ['']
@@ -269,7 +270,7 @@
 
   /** Get NSD Package details @public */
   public getNsdPackageDetails(): void {
-    this.restService.getResource(environment.OKAPACKAGES_URL)
+    this.restService.getResource(environment.NSDESCRIPTORSCONTENT_URL)
       .subscribe((nsdPackageData: []): void => {
         nsdPackageData.forEach((nsData: VNFD): void => {
           const names: {} = {
@@ -336,6 +337,12 @@
     };
     this.addNullValueForInvalidFiles();
     this.sharedService.cleanForm(this.packagesForm);
+    if (this.params.page === 'ns-config-template-edit' || this.params.page === 'ns-config-template') {
+      if (this.packagesForm.value.config.trim() === '' || isNullOrUndefined(this.packagesForm.value.config)) {
+        this.packagesForm.controls.config.setErrors({ configIsEmpty: true });
+        this.packagesForm.get('config').setValue(this.packagesForm.get('config').value.trim());
+      }
+    }
     if (!this.packagesForm.invalid) {
       this.isLoadingResults = true;
       if (this.params.page === 'ns-package' || this.params.page === 'vnf-package') {
@@ -443,16 +450,12 @@
       url: urlHeader,
       httpOptions: { headers: this.headers }
     };
-    if (isNullOrUndefined(this.packagesForm.value.config) || this.packagesForm.value.config === '') {
-      delete this.packagesForm.value.config;
+    const validJSON: boolean = this.sharedService.checkJson(this.packagesForm.value.config);
+    if (validJSON) {
+      this.packagesForm.value.config = JSON.parse(this.packagesForm.value.config);
     } else {
-      const validJSON: boolean = this.sharedService.checkJson(this.packagesForm.value.config);
-      if (validJSON) {
-        this.packagesForm.value.config = JSON.parse(this.packagesForm.value.config);
-      } else {
-        const getConfigJson: string = jsyaml.load(this.packagesForm.value.config, { json: true });
-        this.packagesForm.value.config = getConfigJson;
-      }
+      const getConfigJson: string = jsyaml.load(this.packagesForm.value.config, { json: true });
+      this.packagesForm.value.config = getConfigJson;
     }
     this.restService.putResource(apiURLHeader, (this.packagesForm.value)).subscribe((result: {}): void => {
       this.activeModal.close(this.modalData);
