diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html
index 8746569..6a73d9e 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html
@@ -427,8 +427,9 @@
                 </div>
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
-                <button type="button" class="btn btn-primary" (click)="submitAttributes()">Submit Attributes</button>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
+                <button type="button" class="btn btn-primary" data-dismiss="modal" (click)="submitAttributes()">Submit
+                    Attributes</button>
             </div>
         </div>
     </div>
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.component.ts
index 0f6e38c..cc7de5f 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/designer.component.ts
@@ -25,35 +25,35 @@
 
 import dagre from 'dagre';
 import graphlib from 'graphlib';
-import {Component, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';
+import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';
 import * as joint from 'jointjs';
 import './jointjs/elements/palette.function.element';
 import './jointjs/elements/action.element';
 import './jointjs/elements/board.function.element';
-import {DesignerStore} from './designer.store';
-import {ActionElementTypeName} from 'src/app/common/constants/app-constants';
-import {GraphUtil} from './graph.util';
-import {GraphGenerator} from './graph.generator.util';
-import {FunctionsStore} from './functions.store';
-import {Subject} from 'rxjs';
-import {distinctUntilChanged, takeUntil} from 'rxjs/operators';
-import {BluePrintDetailModel} from '../model/BluePrint.detail.model';
-import {ActivatedRoute, Router} from '@angular/router';
-import {DesignerService} from './designer.service';
-import {FilesContent, FolderNodeElement} from '../package-creation/mapping-models/metadata/MetaDataTab.model';
-import {PackageCreationModes} from '../package-creation/creationModes/PackageCreationModes';
-import {PackageCreationBuilder} from '../package-creation/creationModes/PackageCreationBuilder';
-import {PackageCreationStore} from '../package-creation/package-creation.store';
-import {PackageCreationService} from '../package-creation/package-creation.service';
-import {PackageCreationUtils} from '../package-creation/package-creation.utils';
+import { DesignerStore } from './designer.store';
+import { ActionElementTypeName } from 'src/app/common/constants/app-constants';
+import { GraphUtil } from './graph.util';
+import { GraphGenerator } from './graph.generator.util';
+import { FunctionsStore } from './functions.store';
+import { Subject } from 'rxjs';
+import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
+import { BluePrintDetailModel } from '../model/BluePrint.detail.model';
+import { ActivatedRoute, Router } from '@angular/router';
+import { DesignerService } from './designer.service';
+import { FilesContent, FolderNodeElement } from '../package-creation/mapping-models/metadata/MetaDataTab.model';
+import { PackageCreationModes } from '../package-creation/creationModes/PackageCreationModes';
+import { PackageCreationBuilder } from '../package-creation/creationModes/PackageCreationBuilder';
+import { PackageCreationStore } from '../package-creation/package-creation.store';
+import { PackageCreationService } from '../package-creation/package-creation.service';
+import { PackageCreationUtils } from '../package-creation/package-creation.utils';
 import * as JSZip from 'jszip';
-import {saveAs} from 'file-saver';
-import {PackageCreationExtractionService} from '../package-creation/package-creation-extraction.service';
-import {CBAPackage} from '../package-creation/mapping-models/CBAPacakge.model';
-import {TopologyTemplate} from './model/designer.topologyTemplate.model';
-import {ToastrService} from 'ngx-toastr';
-import {DesignerDashboardState} from './model/designer.dashboard.state';
-import {NgxUiLoaderService} from 'ngx-ui-loader';
+import { saveAs } from 'file-saver';
+import { PackageCreationExtractionService } from '../package-creation/package-creation-extraction.service';
+import { CBAPackage } from '../package-creation/mapping-models/CBAPacakge.model';
+import { TopologyTemplate } from './model/designer.topologyTemplate.model';
+import { ToastrService } from 'ngx-toastr';
+import { DesignerDashboardState } from './model/designer.dashboard.state';
+import { NgxUiLoaderService } from 'ngx-ui-loader';
 
 @Component({
     selector: 'app-designer',
@@ -77,7 +77,7 @@
     paletteGraph: joint.dia.Graph;
     palettePaper: joint.dia.Paper;
     ngUnsubscribe = new Subject();
-    opt = {tx: 100, ty: 100};
+    opt = { tx: 100, ty: 100 };
     filesData: any = [];
     folder: FolderNodeElement = new FolderNodeElement();
     zipFile: JSZip = new JSZip();
@@ -127,7 +127,7 @@
 
     publishBluePrint() {
         this.create();
-        this.zipFile.generateAsync({type: 'blob'})
+        this.zipFile.generateAsync({ type: 'blob' })
             .then(blob => {
                 const formData = new FormData();
                 formData.append('file', blob);
@@ -173,7 +173,7 @@
                     this.packageCreationService.downloadPackage(this.viewedPackage.artifactName + '/'
                         + this.viewedPackage.artifactVersion)
                         .subscribe(response => {
-                            const blob = new Blob([response], {type: 'application/octet-stream'});
+                            const blob = new Blob([response], { type: 'application/octet-stream' });
                             this.packageCreationExtractionService.extractBlobToStore(blob);
                         });
                 }
@@ -236,7 +236,7 @@
                         setLinkVertices: false,
                         marginX: 10,
                         marginY: 10,
-                        clusterPadding: {top: 100, left: 30, right: 10, bottom: 100},
+                        clusterPadding: { top: 100, left: 30, right: 10, bottom: 100 },
                         rankDir: 'TB'
                     });
                     this.actions = [];
@@ -474,11 +474,10 @@
 
     enrichBluePrint() {
         this.ngxService.start();
+        console.log('start enrich ------------');
         this.packageCreationStore.addTopologyTemplate(this.cbaPackage.templateTopology);
         this.formTreeData();
         this.enrichPackage();
-        this.designerStore.clear();
-        this.packageCreationStore.clear();
     }
 
     private formTreeData() {
@@ -493,14 +492,18 @@
 
     private enrichPackage() {
         this.create();
-        this.zipFile.generateAsync({type: 'blob'})
+        this.zipFile.generateAsync({ type: 'blob' })
             .then(blob => {
                 this.packageCreationService.enrichAndDeployPackage(blob).subscribe(response => {
                     // this.packageCreationService.enrichPackage(blob).subscribe(response => {
+                    response = JSON.parse(response);
+                    console.log(response);
                     console.log('success');
-                    const blobInfo = new Blob([response], {type: 'application/octet-stream'});
-                    this.packageCreationStore.clear();
-                    this.packageCreationExtractionService.extractBlobToStore(blobInfo);
+                    const id = response['blueprintModel']['id'];
+                    this.router.navigate(['/packages/designer/' + id]);
+                    // const blobInfo = new Blob([response], { type: 'application/octet-stream' });
+                    // this.packageCreationStore.clear();
+                    // this.packageCreationExtractionService.extractBlobToStore(blobInfo);
                     this.toastService.success('Enriched & Deployed successfully ');
                 }, err => {
                     console.log(err);
@@ -528,22 +531,22 @@
 
     saveBluePrintToDataBase() {
         this.create();
-        this.zipFile.generateAsync({type: 'blob'})
+        this.zipFile.generateAsync({ type: 'blob' })
             .then(blob => {
-                    this.packageCreationService.savePackage(blob).subscribe(
-                        bluePrintDetailModels => {
-                            this.toastService.success('Package is successfully updated ');
-                            const id = bluePrintDetailModels.toString().split('id')[1].split(':')[1].split('"')[1];
-                            this.router.navigate(['/packages/designer/' + id]);
-                            console.log('success');
-                        }, error => {
-                            this.toastService.error('Error occured when editing ' + error.message);
-                            console.log('Error -' + error.message);
-                        }, () => {
-                            this.ngxService.stop();
-                        });
-                }, err => {
-                },
+                this.packageCreationService.savePackage(blob).subscribe(
+                    bluePrintDetailModels => {
+                        this.toastService.info('success updating the package');
+                        const id = bluePrintDetailModels.toString().split('id')[1].split(':')[1].split('"')[1];
+                        this.router.navigate(['/packages/designer/' + id]);
+                        console.log('success');
+                    }, error => {
+                        this.toastService.error('error happened when editing ' + error.message);
+                        console.log('Error -' + error.message);
+                    }, () => {
+                        this.ngxService.stop();
+                    });
+            }, err => {
+            },
                 () => {
                     this.ngxService.stop();
                 });
@@ -566,12 +569,17 @@
         // console.log(this.designerState.template.workflows[this.currentActionName]
         // ['steps'][customFunctionName]['target']);
         this.designerStore.setCurrentFunction(this.designerState.template.workflows[this.currentActionName]
-            ['steps'][customFunctionName]['target']);
+        ['steps'][customFunctionName]['target']);
     }
 
     getTarget(stepname) {
-        return this.designerState.template.workflows[this.currentActionName]
+        try {
+            //  console.log(this.currentActionName + " -- " + stepname)
+            return this.designerState.template.workflows[this.currentActionName]
             ['steps'][stepname]['target'];
+        } catch (e) {
+            // console.log(e);
+        }
     }
 
     downloadPackage() {
@@ -579,16 +587,16 @@
         this.ngxService.start();
         this.packageCreationService.downloadPackage(this.viewedPackage.artifactName + '/'
             + this.viewedPackage.artifactVersion).subscribe(response => {
-            const blob = new Blob([response], {type: 'application/octet-stream'});
-            saveAs(blob, this.viewedPackage.artifactName + '-' + this.viewedPackage.artifactVersion + '-CBA.zip');
+                const blob = new Blob([response], { type: 'application/octet-stream' });
+                saveAs(blob, this.viewedPackage.artifactName + '-' + this.viewedPackage.artifactVersion + '-CBA.zip');
 
-        }, err => {
-            this.toastService.error('Package ' + this.viewedPackage.artifactName + 'has error when downloading' +
-                err.message);
-            this.ngxService.stop();
-        }, () => {
-            this.toastService.success('Package ' + this.viewedPackage.artifactName + 'has been downloaded successfully');
-            this.ngxService.stop();
-        });
+            }, err => {
+                this.toastService.error('package ' + this.viewedPackage.artifactName + 'has error when downloading' +
+                    err.message);
+                this.ngxService.stop();
+            }, () => {
+                this.toastService.success('package ' + this.viewedPackage.artifactName + 'downloaded successfully');
+                this.ngxService.stop();
+            });
     }
 }
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.css b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.css
index 10ed56b..1159d8f 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.css
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.css
@@ -1,3 +1,3 @@
 .createAttributeTabs .active {
-    background: #eaeaea;
+    background: #C3CDDB;
 }
\ No newline at end of file
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.html
index ea17f88..ded7e5f 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.html
@@ -73,9 +73,10 @@
                                                 Template</label>
                                         </div>
                                         <br />
-                                        <button type="button" data-toggle="modal" data-target="#templateModal"
-                                            class="btn btn-select-template m-auto"><i class="icon-add-circle"
-                                                type="button" aria-hidden="true"></i> Select Template</button>
+                                        <button (click)="init()" type="button" data-toggle="modal"
+                                            data-target="#templateModal" class="btn btn-select-template m-auto"><i
+                                                class="icon-add-circle" type="button" aria-hidden="true"></i> Select
+                                            Template</button>
                                     </div>
 
                                     <div class="attribute-wrap"
@@ -235,9 +236,9 @@
 
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-secondary" (click)="cancel()" data-dismiss="modal">Close</button>
-                <button type="button" class="btn btn-primary" data-dismiss="modal" (click)="addTemplates()">Add
-                    Template</button>
+                <button type="button" class="btn btn-secondary" (click)="cancel()" data-dismiss="modal">Cancel</button>
+                <button type="button" class="btn btn-primary" data-dismiss="modal"
+                    (click)="addTemplates()">Save</button>
             </div>
         </div>
     </div>
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.ts
index d36b16f..f46004b 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/functions-attribute/functions-attribute.component.ts
@@ -99,7 +99,7 @@
 
     onInitMapping() {
         // selectedTemplates , templateAndMappingMap
-        this.selectedTemplates = new Map<string, TemplateAndMapping>();
+        // this.selectedTemplates = new Map<string, TemplateAndMapping>();
         try {
             const functionMap = this.designerState.template.node_templates[this.functionName].artifacts;
             console.log(this.templateAndMappingMap);
@@ -117,6 +117,10 @@
         } catch (e) { }
     }
 
+    init() {
+        this.selectedTemplates = new Map(this.finalTemplates);
+    }
+
     toNodeProcess(nodeTemplate, functionName) {
         console.log(nodeTemplate);
         this.currentFuncion['instance-name'] = functionName;
@@ -156,7 +160,7 @@
     }
 
     addTemplates() {
-        this.finalTemplates = this.selectedTemplates;
+        this.finalTemplates = new Map(this.selectedTemplates);
     }
     cancel() {
         this.selectedTemplates = new Map<string, TemplateAndMapping>();
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.service.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.service.ts
index 2625dc8..1e0e36a 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.service.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.service.ts
@@ -64,7 +64,7 @@
     }
 
     private enrichandpublish(body: any | null, options?: any): Observable<any> {
-        return this.api.post(BlueprintURLs.enrichandpublish, body, {responseType: 'blob'});
+        return this.api.post(BlueprintURLs.enrichandpublish, body, {responseType: 'text'});
     }
 
     private deployBluePrint(body: any | null, options?: any): Observable<any> {
