diff --git a/components/datalake-handler/admin/src/src/app/app.module.ts b/components/datalake-handler/admin/src/src/app/app.module.ts
index eb7db26..53b4e06 100644
--- a/components/datalake-handler/admin/src/src/app/app.module.ts
+++ b/components/datalake-handler/admin/src/src/app/app.module.ts
@@ -107,6 +107,7 @@
 import { TopicModalComponent } from "./views/topics/topic-list/topic-modal/topic-modal.component";
 import { KafkaModalComponent } from "./views/kafka/kafka-list/kafka-modal/kafka-modal.component";
 import { DbModalComponent } from "./views/database/database-list/db-modal/db-modal.component";
+import { ToolModalComponent } from "./views/tools/tool-modal/tool-modal.component";
 
 @NgModule({
   declarations: [
@@ -155,7 +156,8 @@
     IconComponent,
     TopicModalComponent,
     KafkaModalComponent,
-    DbModalComponent
+    DbModalComponent,
+    ToolModalComponent
   ],
   imports: [
     BrowserModule,
@@ -201,7 +203,8 @@
     ModalToolsComponent,
     TopicModalComponent,
     KafkaModalComponent,
-    DbModalComponent
+    DbModalComponent,
+    ToolModalComponent
   ]
 })
 export class AppModule {}
diff --git a/components/datalake-handler/admin/src/src/app/core/services/rest-api.service.ts b/components/datalake-handler/admin/src/src/app/core/services/rest-api.service.ts
index 97421e4..ec5e2dc 100644
--- a/components/datalake-handler/admin/src/src/app/core/services/rest-api.service.ts
+++ b/components/datalake-handler/admin/src/src/app/core/services/rest-api.service.ts
@@ -142,7 +142,7 @@
   }
 
   /*
-    Database
+    Database and tools
   */
   public getAllDbs(): Observable<Db[]> {
     return this.http
@@ -150,6 +150,12 @@
       .pipe(retry(1), catchError(this.handleError));
   }
 
+  public getAllTools(): Observable<Db[]> {
+    return this.http
+      .get<Db[]>(prefix + "dbs/list?isDb=false")
+      .pipe(retry(1), catchError(this.handleError));
+  }
+
   public getDbTypes(): Observable<DbType[]> {
     return this.http
       .get<DbType[]>(prefix + "dbs/dbtypes")
diff --git a/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.css b/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.css
new file mode 100644
index 0000000..0b713d5
--- /dev/null
+++ b/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.css
@@ -0,0 +1,25 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : DataLake
+* ================================================================================
+* Copyright 2019 - 2020 QCT
+*=================================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* 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=========================================================
+*/
+
+/*
+ * For every Angular component you write, you may define not only an HTML template,
+ * but also the CSS styles that go with that template, specifying any selectors,
+ * rules, and media queries that you need.
+*/
diff --git a/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.html b/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.html
new file mode 100644
index 0000000..81e3b58
--- /dev/null
+++ b/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.html
@@ -0,0 +1,107 @@
+<!--
+============LICENSE_START=======================================================
+ONAP : DataLake
+================================================================================
+Copyright 2019 - 2020 QCT
+=================================================================================
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+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=========================================================
+-->
+
+<div class="container p-4">
+
+  <div class="form-group">
+    <div class="row">
+      <div class="col-md-6">
+        <label class="dl-emphasis1">{{ 'STATUS' | translate }}</label>
+      </div>
+      <div class="col-md-6">
+
+      </div>
+    </div>
+    <div class="row">
+      <div class="col-md-6">
+        <label class="dl-switch">
+          <input id="switch" type="checkbox" [(ngModel)]="this.data.enabled" />
+          <span class="dl-slider round"></span>
+        </label>
+      </div>
+      <div class="col-md-6">
+
+      </div>
+    </div>
+  </div>
+
+  <div class="form-group">
+    <div class="row">
+      <div class="col-md-6">
+        <label class="dl-emphasis1">{{ "NAME" | translate }}</label>
+      </div>
+      <div class="col-md-6">
+        <label class="dl-emphasis1">{{ 'TOOL_TYPE' | translate }}</label>
+      </div>
+    </div>
+    <div class="row">
+      <div class="col-md-6">
+        <input [(ngModel)]="this.data.name" class="form-control dl-input-text" type="text" />
+      </div>
+      <div class="col-md-3">
+        <select [(ngModel)]="this.data.dbTypeId" class="custom-select dl-input-text">
+          <option *ngFor="let item of dbTypes" [value]="item.id" [selected]="item.id==this.data.dbTypeId">
+            {{ item.name }}
+          </option>
+        </select>
+      </div>
+    </div>
+  </div>
+
+  <div class="form-group">
+    <div class="row">
+      <div class="col-md-6">
+        <label class="dl-emphasis1">{{ 'HOST' | translate }}</label>
+      </div>
+      <div class="col-md-6">
+        <label class="dl-emphasis1">{{ 'Port' | translate }}</label>
+      </div>
+    </div>
+    <div class="row">
+      <div class="col-md-6">
+        <input [(ngModel)]="this.data.host" class="form-control dl-input-text" type="text" />
+      </div>
+      <div class="col-md-3">
+        <input [(ngModel)]="this.data.port" class="form-control dl-input-text" type="text"
+          (input)="this.adminService.onKeyPressNumber($event)" />
+      </div>
+    </div>
+  </div>
+
+  <div class="form-group">
+    <div class="row">
+      <div class="col-md-6">
+        <label class="dl-emphasis1">{{ 'Username' | translate }}</label>
+      </div>
+      <div class="col-md-6">
+        <label class="dl-emphasis1">{{ 'Password' | translate }}</label>
+      </div>
+    </div>
+    <div class="row">
+      <div class="col-md-6">
+        <input [(ngModel)]="this.data.login" class="form-control dl-input-text" type="text" />
+      </div>
+      <div class="col-md-6">
+        <input [(ngModel)]="this.data.pass" class="form-control dl-input-text" type="text" />
+      </div>
+    </div>
+  </div>
+
+</div>
diff --git a/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.spec.ts b/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.spec.ts
new file mode 100644
index 0000000..2f22cd6
--- /dev/null
+++ b/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.spec.ts
@@ -0,0 +1,44 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : DataLake
+ * ================================================================================
+ * Copyright 2019 - 2020 QCT
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * 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=========================================================
+ */
+
+import { async, ComponentFixture, TestBed } from "@angular/core/testing";
+
+import { ToolModalComponent } from "./tool-modal.component";
+
+describe("ToolModalComponent", () => {
+  let component: ToolModalComponent;
+  let fixture: ComponentFixture<ToolModalComponent>;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ToolModalComponent]
+    }).compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(ToolModalComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it("should create", () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.ts b/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.ts
new file mode 100644
index 0000000..038d746
--- /dev/null
+++ b/components/datalake-handler/admin/src/src/app/views/tools/tool-modal/tool-modal.component.ts
@@ -0,0 +1,74 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : DataLake
+ * ================================================================================
+ * Copyright 2019 - 2020 QCT
+ *=================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * 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=========================================================
+ */
+
+/**
+ *
+ * @author Ekko Chang
+ *
+ */
+
+import { Component, OnInit, Input, ViewChild } from "@angular/core";
+import { NgxSpinnerService } from "ngx-spinner";
+import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap";
+import { RestApiService } from "src/app/core/services/rest-api.service";
+import { AdminService } from "src/app/core/services/admin.service";
+import { Db, DbType } from "src/app/core/models/db.model";
+import { from, forkJoin } from "rxjs";
+import { mergeMap, map } from "rxjs/operators";
+
+@Component({
+  selector: "app-tool-modal",
+  templateUrl: "./tool-modal.component.html",
+  styleUrls: ["./tool-modal.component.css"]
+})
+export class ToolModalComponent implements OnInit {
+  @Input() data: Db;
+  @Input() mode: string;
+
+  dbTypes: Array<DbType> = [];
+
+  constructor(
+    public activeModal: NgbActiveModal,
+    public adminService: AdminService,
+    private restApiService: RestApiService,
+    private spinner: NgxSpinnerService
+  ) {}
+
+  ngOnInit() {
+    // this.spinner.show();
+
+    // get database types
+    const get_dbTypes = this.restApiService.getDbTypes().pipe(
+      mergeMap(dbTypes => from(dbTypes)),
+      map(dbType => {
+        if (dbType.tool) this.dbTypes.push(dbType);
+      })
+    );
+
+    forkJoin(get_dbTypes).subscribe(data => {
+      if (this.mode === "new") {
+        // default value
+        if (this.dbTypes.length > 0) {
+          this.data.dbTypeId = this.dbTypes[0].id;
+        }
+      }
+    });
+  }
+}
diff --git a/components/datalake-handler/admin/src/src/app/views/tools/tools.component.html b/components/datalake-handler/admin/src/src/app/views/tools/tools.component.html
index c55fa46..434846c 100644
--- a/components/datalake-handler/admin/src/src/app/views/tools/tools.component.html
+++ b/components/datalake-handler/admin/src/src/app/views/tools/tools.component.html
@@ -1,5 +1,5 @@
 <!--
-    Copyright (C) 2019 CMCC, Inc. and others. All rights reserved.
+    Copyright (C) 2019 - 2020 CMCC, Inc. and others. All rights reserved.
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@
     Home > Tools
   </div>
   <div class="col-md-12">
-    <div class="topic-list-panel">
+    <div class="table-panel">
       <div class="row">
         <div class="col-md-12">
           <div class="d-flex justify-content-end p-2">
@@ -27,32 +27,24 @@
             <div class="p-1">
               <div class="input-group">
                 <input #searchText type="text" class="form-control dl-input-text-search" placeholder="Search..."
-                       (keyup)="this.updateFilter($event.target.value)" />
-                <div class="input-group-append">
-                  <button type="button" class="btn dl-btn-dark">
-                    <i class="fa fa-search"></i>
-                  </button>
-                </div>
+                  (keyup)="this.updateFilter($event.target.value)" />
               </div>
             </div>
-
             <!-- button -->
             <div class="p-1">
-              <app-button [text]="'plus'" [style]="'inlineicon'" [color]="'dark'" (click)="openModalDemo()"></app-button>
+              <app-button [text]="'plus'" [style]="'inlineicon'" [color]="'dark'" (click)="openModal('new')">
+              </app-button>
             </div>
           </div>
         </div>
       </div>
+
       <!-- datatable -->
       <div class="row">
         <div class="col-md-12">
-          <app-table [data]="toolsList" [columns]="toolsColumns" (btnTableAction)="dataAction($event)">
-          </app-table>
+          <app-table [data]="tools" [columns]="columns" (btnTableAction)="btnTableAction($event)"></app-table>
         </div>
       </div>
     </div>
   </div>
 </div>
-
-
-
diff --git a/components/datalake-handler/admin/src/src/app/views/tools/tools.component.ts b/components/datalake-handler/admin/src/src/app/views/tools/tools.component.ts
index 65de6ad..a7fe301 100644
--- a/components/datalake-handler/admin/src/src/app/views/tools/tools.component.ts
+++ b/components/datalake-handler/admin/src/src/app/views/tools/tools.component.ts
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2019 CMCC, Inc. and others. All rights reserved.
+    Copyright (C) 2019 - 2020 CMCC, Inc. and others. All rights reserved.
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -18,31 +18,35 @@
  *
  * @author Chunmeng Guo
  *
+ * @constructor Ekko Chang
  */
 
-import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
-import {AdminService} from "src/app/core/services/admin.service";
-import {Db} from "src/app/core/models/db.model";
-import {RestApiService} from "src/app/core/services/rest-api.service";
-import {AlertComponent} from "src/app/shared/components/alert/alert.component";
-import {ToastrNotificationService} from "src/app/shared/components/toastr-notification/toastr-notification.service";
-import {NgbModal} from "@ng-bootstrap/ng-bootstrap";
-import {ToolAddModalComponent} from "src/app/views/tools/tool-add-modal/tool-add-modal.component";
-import {ModalToolsComponent} from "src/app/views/tools/modal-tools/modal-tools.component";
+import { Component, ElementRef, OnInit, ViewChild } from "@angular/core";
+import { AdminService } from "src/app/core/services/admin.service";
+import { Db } from "src/app/core/models/db.model";
+import { RestApiService } from "src/app/core/services/rest-api.service";
+
+// Modal
+import { AlertComponent } from "src/app/shared/components/alert/alert.component";
+import { ModalComponent } from "src/app/shared/modules/modal/modal.component";
+import { ModalContentData } from "src/app/shared/modules/modal/modal.data";
+import { ToolModalComponent } from "src/app/views/tools/tool-modal/tool-modal.component";
+import { ToastrNotificationService } from "src/app/shared/components/toastr-notification/toastr-notification.service";
+import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
+
+import { NgxSpinnerService } from "ngx-spinner";
+import { map, mergeMap } from "rxjs/operators";
+import { forkJoin, from } from "rxjs";
 
 @Component({
-  selector: 'app-tools',
-  templateUrl: './tools.component.html',
-  styleUrls: ['./tools.component.css']
+  selector: "app-tools",
+  templateUrl: "./tools.component.html",
+  styleUrls: ["./tools.component.css"]
 })
 export class ToolsComponent implements OnInit {
-
-  toolsColumns: Array<any> = [];
-  toolsList: Array<any> = [];
-  dbs: Db[] = [];
-  toolNew: Db;
-  loading: Boolean = true;
-  flag: Boolean = false;
+  columns: Array<any> = [];
+  tools: Array<any> = [];
+  t_temp: Array<any> = []; // cache for tools
 
   @ViewChild("searchText") searchText: ElementRef;
 
@@ -50,132 +54,186 @@
     private adminService: AdminService,
     private notificationService: ToastrNotificationService,
     private modalService: NgbModal,
-    private dbApiService: RestApiService
+    private restApiService: RestApiService,
+    private spinner: NgxSpinnerService
   ) {
     this.adminService.setTitle("SIDEBAR.DASHBOARDLIST");
-    this.initData().then(data => { });
+    // this.initData().then(data => {});
   }
 
   ngOnInit() {
-    this.toolsColumns = [
+    this.spinner.show();
+
+    let t_tools: Array<Db> = [];
+
+    const get_tools = this.restApiService.getAllTools().pipe(
+      mergeMap(tools => from(tools)),
+      map(tool => {
+        t_tools.push(tool);
+      })
+    );
+
+    forkJoin(get_tools).subscribe(data => {
+      this.columns = this.initColumn();
+      this.tools = t_tools;
+      this.t_temp = [...this.tools];
+      this.updateFilter(this.searchText.nativeElement.value);
+      setTimeout(() => {
+        this.spinner.hide();
+      }, 500);
+    });
+  }
+
+  initColumn() {
+    let t_columns: Array<any> = [];
+
+    t_columns = [
       {
-        name: "STATUS",
-        width: "50",
-        dataIndex: "enabled"
+        headerName: "STATUS",
+        width: "15",
+        sortable: true,
+        dataIndex: "enabled",
+        icon: "status"
       },
       {
-        name: "NAME",
-        width: "220",
+        headerName: "NAME",
+        width: "420",
+        sortable: true,
         dataIndex: "name"
       },
       {
-        name: "DB_TYPE",
-        width: "220",
+        headerName: "Type",
+        width: "50",
+        sortable: true,
         dataIndex: "dbTypeId"
       },
       {
-        name: "",
-        width: "5",
-        dataIndex: "",
-        icon: "trash"
+        headerName: "Host",
+        width: "100",
+        sortable: true,
+        dataIndex: "host"
       },
       {
-        name: "",
-        width: "5",
-        dataIndex: "",
-        icon: "cog"
+        width: "2",
+        iconButton: "cog",
+        action: "edit"
+      },
+      {
+        width: "2",
+        iconButton: "trash",
+        action: "delete"
       }
     ];
+
+    return t_columns;
   }
 
-  async initData() {
-    this.toolsList = await this.dbApiService.getDbEncryptList(this.flag).toPromise();
-  }
-
-  updateFilter(searchValue) {
+  updateFilter(searchValue: string) {
     const val = searchValue.toLowerCase();
+
     // filter our data
-    const temps = this.toolsList.filter(function (d) {
-      return d.name.toLowerCase().indexOf(val) != -1 || !val;
+    const temp = this.t_temp.filter(t => {
+      return t.name.toLowerCase().indexOf(val) !== -1 || !val;
     });
+
     // update the rows
-    this.toolsList = temps;
+    this.tools = temp;
   }
 
-  openModalDemo() {
-    this.modalService.open(ToolAddModalComponent, {
-      windowClass: "dl-md-modal dbs",
-      size: "sm",
-      centered: true
-    });
-  }
+  btnTableAction(passValueArr: Array<any>) {
+    let action = passValueArr[0];
+    let id = passValueArr[1];
 
-  dataAction($event) {
-    if($event[0] == "trash"){
-      console.log($event, "tools delete");
-      this.deleteToolModel($event[1]);
-    }else {
-      console.log($event, "tools update");
-      this.updateToolModel($event[1]);
+    switch (action) {
+      case "edit":
+        this.openModal("edit", id);
+        break;
+      case "delete":
+        const modalRef = this.modalService.open(AlertComponent, {
+          size: "sm",
+          centered: true,
+          backdrop: "static"
+        });
+        modalRef.componentInstance.message = "ARE_YOU_SURE_DELETE";
+        modalRef.componentInstance.passEntry.subscribe(recevicedEntry => {
+          this.restApiService.deleteDb(id).subscribe(
+            res => {
+              this.ngOnInit();
+              setTimeout(() => {
+                this.notificationService.success("SUCCESSFULLY_DELETED");
+              }, 500);
+            },
+            err => {
+              this.notificationService.error(err);
+            }
+          );
+          modalRef.close();
+        });
+        break;
     }
   }
 
-  deleteToolModel(id: number) {
-
-    const modalRef = this.modalService.open(AlertComponent, {
-      size: "sm",
-      centered: true
-    });
-    modalRef.componentInstance.message = "ARE_YOU_SURE_DELETE";
-    modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
-      // Delete tool
-      this.dbApiService.deleteDb(id).subscribe(
-        res => {
-          if (JSON.stringify(res).length <= 2) {
-            this.toolsList = [...this.toolsList];
-            this.notificationService.success("SUCCESSFULLY_DELETED");
-            this.initData();
-          } else {
-            this.notificationService.error("FAILED_DELETED");
-          }
-          modalRef.close();
-        },
-        err => {
-          this.notificationService.error(err);
-          modalRef.close();
-        }
-      );
-    });
-  }
-
-  updateToolModel(id: number) {
-    const modalRef = this.modalService.open(ModalToolsComponent, {
+  openModal(mode: string = "", id: number | string) {
+    const modalRef = this.modalService.open(ModalComponent, {
       size: "lg",
-      centered: true
+      centered: true,
+      backdrop: "static"
     });
-    const index = this.toolsList.findIndex(t => t.id === id);
-    modalRef.componentInstance.editTool = this.toolsList[index];
-    modalRef.componentInstance.passEntry.subscribe(receivedEntry => {
-      this.toolNew = receivedEntry;
-      this.dbApiService
-        .updateDb(this.toolNew)
-        .subscribe(
-          res => {
-            if (res.statusCode == 200) {
-              this.toolsList[index] = this.toolNew;
-              this.toolsList = [...this.toolsList];
-              this.notificationService.success("SUCCESSFULLY_UPDATED");
-              this.initData();
-            } else {
-              this.notificationService.error("FAILED_UPDATED");
+
+    switch (mode) {
+      case "new":
+        let newTool: Db = new Db();
+        let componentNew = new ModalContentData(ToolModalComponent, newTool);
+
+        modalRef.componentInstance.title = "NEW_TOOL";
+        modalRef.componentInstance.notice = "";
+        modalRef.componentInstance.mode = "new";
+        modalRef.componentInstance.component = componentNew;
+
+        modalRef.componentInstance.passEntry.subscribe((data: Db) => {
+          newTool = Object.assign({}, data);
+          console.log(newTool.dbTypeId);
+          console.log(newTool);
+          this.restApiService.addDb(newTool).subscribe(
+            res => {
+              this.ngOnInit();
+              setTimeout(() => {
+                this.notificationService.success("SUCCESSFULLY_CREARED");
+              }, 500);
+            },
+            err => {
+              this.notificationService.error(err);
             }
-            modalRef.close();
-          },
-          err => {
-            this.notificationService.error(err);
-            modalRef.close();
-          }
-        );
-    });
+          );
+          modalRef.close();
+        });
+        break;
+      case "edit":
+        let index: number = this.tools.findIndex(db => db.id === id);
+        let editTool: Db = this.tools[index];
+        let componentEdit = new ModalContentData(ToolModalComponent, editTool);
+
+        modalRef.componentInstance.title = editTool.name;
+        modalRef.componentInstance.notice = "";
+        modalRef.componentInstance.mode = "edit";
+        modalRef.componentInstance.component = componentEdit;
+
+        modalRef.componentInstance.passEntry.subscribe((data: Db) => {
+          editTool = Object.assign({}, data);
+          this.restApiService.updateDb(editTool).subscribe(
+            res => {
+              this.ngOnInit();
+              setTimeout(() => {
+                this.notificationService.success("SUCCESSFULLY_UPDATED");
+              }, 500);
+            },
+            err => {
+              this.notificationService.error(err);
+            }
+          );
+          modalRef.close();
+        });
+        break;
+    }
   }
 }
diff --git a/components/datalake-handler/admin/src/src/assets/i18n/en-us.json b/components/datalake-handler/admin/src/src/assets/i18n/en-us.json
index b5e7d28..3f4959b 100644
--- a/components/datalake-handler/admin/src/src/assets/i18n/en-us.json
+++ b/components/datalake-handler/admin/src/src/assets/i18n/en-us.json
@@ -77,6 +77,7 @@
   "EDIT_KAFKA": "Edit Kafka",
   "NEW_DB": "New Database",
   "DB_TYPE": "Db Type",
+  "TOOL_TYPE": "Tool Type",
   "NEW_DRUID": "New Druid",
   "NEW_ELASTICSEARCH": "New Elasticsearch",
   "NEW_COUCHBASE": "New Couchbase",
diff --git a/components/datalake-handler/admin/src/src/styles.css b/components/datalake-handler/admin/src/src/styles.css
index 64cc8ea..958bb66 100644
--- a/components/datalake-handler/admin/src/src/styles.css
+++ b/components/datalake-handler/admin/src/src/styles.css
@@ -135,6 +135,12 @@
 /*
   bootstrap table theme
 */
+.table-panel {
+  background: #FFFFFF;
+  box-shadow: 3px 3px 11px 0 #D2D3D5;
+  border-radius: 20px;
+}
+
 .ngx-datatable.bootstrap {
   border-bottom-left-radius: 20px;
   border-bottom-right-radius: 20px;
