You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by kb...@apache.org on 2020/02/21 06:25:26 UTC

[atlas] branch branch-2.0 updated (f02df9a -> 7205386)

This is an automated email from the ASF dual-hosted git repository.

kbhatt pushed a change to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git.


    from f02df9a  ATLAS-3622: added authorization for add/remove of labels, update of namespace attributes
     new 72e7e73  ATLAS-3607 : UI: changes to create namespace type definitions and define namespace attributes
     new 1624e3f  ATLAS-3593 : UI: Issue with 'Sub-classification' checkbox filter in Classification Details page
     new 7205386  ATLAS-3607 : namespace attributes build fix

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../js/views/search/SearchResultLayoutView.js      |   2 +-
 dashboardv3/public/css/scss/common.scss            |   1 +
 dashboardv3/public/css/scss/form.scss              |   9 +
 dashboardv3/public/css/scss/glossary.scss          |   4 +
 dashboardv3/public/css/scss/namespace.scss         | 155 ++++++
 dashboardv3/public/css/scss/override.scss          |  42 ++
 dashboardv3/public/css/scss/stats.scss             |   7 +
 dashboardv3/public/css/scss/style.scss             |   1 +
 dashboardv3/public/css/scss/table.scss             |  55 +-
 dashboardv3/public/css/scss/tag.scss               |   4 +
 dashboardv3/public/css/scss/theme.scss             |  61 ++-
 dashboardv3/public/js/main.js                      |  26 +-
 dashboardv3/public/js/models/VEntity.js            |  12 +
 dashboardv3/public/js/router/Router.js             | 187 +++----
 .../AdministratorLayoutView_tmpl.html              |  33 +-
 .../PurgeAuditTableLayoutView_tmpl.html            | 120 +++++
 .../audit/CreateAuditTableLayoutView_tmpl.html     |  14 +-
 dashboardv3/public/js/templates/common/Modal.html  |   2 +-
 .../CreateNameSpaceLayoutView_tmpl.html}           |  29 +-
 .../name_space/EnumCreateUpdateItemView_tmpl.html  |  39 ++
 .../NameSpaceAttrTableLayoutView_tmpl.html         |  47 ++
 .../NameSpaceAttributeItemView_tmpl.html           |  89 ++++
 .../NameSpaceContainerLayoutView_tmpl.html}        |   4 +-
 .../name_space/NameSpaceDetailLayoutView_tmpl.html |  10 +-
 .../name_space/NameSpaceTableLayoutView_tmpl.html  |  47 ++
 .../search/SearchFilterBrowseLayoutView_tmpl.html  |  12 +-
 .../search/tree/GlossaryTreeLayoutView_tmpl.html   |  16 +-
 ...tmpl.html => NameSpaceTreeLayoutView_tmpl.html} |  24 +-
 dashboardv3/public/js/templates/site/Header.html   |  18 +-
 dashboardv3/public/js/utils/Helper.js              |  80 +++
 dashboardv3/public/js/utils/Overrides.js           |  90 ++++
 dashboardv3/public/js/utils/UrlLinks.js            |  22 +-
 dashboardv3/public/js/utils/Utils.js               |   6 +
 .../views/administrator/AdministratorLayoutView.js | 105 ++++
 .../administrator/PurgeAuditTableLayoutView.js     | 518 ++++++++++++++++++
 .../public/js/views/audit/AuditTableLayoutView.js  |  40 +-
 .../js/views/audit/CreateAuditTableLayoutView.js   |   2 +-
 .../views/name_space/CreateNameSpaceLayoutView.js  | 591 +++++++++++++++++++++
 .../views/name_space/EnumCreateUpdateItemView.js   | 256 +++++++++
 .../name_space/NameSpaceAttrTableLayoutView.js     | 232 ++++++++
 .../views/name_space/NameSpaceAttributeItemView.js | 266 ++++++++++
 .../name_space/NameSpaceContainerLayoutView.js     | 117 ++++
 .../views/name_space/NameSpaceDetailLayoutView.js  | 110 ++++
 .../views/name_space/NameSpaceTableLayoutView.js   | 419 +++++++++++++++
 .../views/search/SearchFilterBrowseLayoutView.js   |  19 +-
 .../js/views/search/SearchResultLayoutView.js      |   2 +-
 .../search/tree/CustomFilterTreeLayoutView.js      |  14 +-
 .../js/views/search/tree/EntityTreeLayoutView.js   |  16 +-
 .../js/views/search/tree/GlossaryTreeLayoutView.js |  15 +-
 .../views/search/tree/NameSpaceTreeLayoutView.js   | 384 +++++++++++++
 50 files changed, 4108 insertions(+), 266 deletions(-)
 create mode 100644 dashboardv3/public/css/scss/namespace.scss
 copy dashboardv2/public/js/templates/search/save/SaveSearchView_tmpl.html => dashboardv3/public/js/templates/administrator/AdministratorLayoutView_tmpl.html (51%)
 create mode 100644 dashboardv3/public/js/templates/administrator/PurgeAuditTableLayoutView_tmpl.html
 copy dashboardv3/public/js/templates/{tag/CreateTagLayoutView_tmpl.html => name_space/CreateNameSpaceLayoutView_tmpl.html} (68%)
 create mode 100644 dashboardv3/public/js/templates/name_space/EnumCreateUpdateItemView_tmpl.html
 create mode 100644 dashboardv3/public/js/templates/name_space/NameSpaceAttrTableLayoutView_tmpl.html
 create mode 100644 dashboardv3/public/js/templates/name_space/NameSpaceAttributeItemView_tmpl.html
 copy dashboardv3/public/js/templates/{audit/ReplicationAuditTableLayoutView_tmpl.html => name_space/NameSpaceContainerLayoutView_tmpl.html} (84%)
 copy dashboardv2/public/js/templates/search/SearchQuery_tmpl.html => dashboardv3/public/js/templates/name_space/NameSpaceDetailLayoutView_tmpl.html (69%)
 create mode 100644 dashboardv3/public/js/templates/name_space/NameSpaceTableLayoutView_tmpl.html
 copy dashboardv3/public/js/templates/search/tree/{ClassificationTreeLayoutView_tmpl.html => NameSpaceTreeLayoutView_tmpl.html} (63%)
 create mode 100644 dashboardv3/public/js/views/administrator/AdministratorLayoutView.js
 create mode 100644 dashboardv3/public/js/views/administrator/PurgeAuditTableLayoutView.js
 create mode 100644 dashboardv3/public/js/views/name_space/CreateNameSpaceLayoutView.js
 create mode 100644 dashboardv3/public/js/views/name_space/EnumCreateUpdateItemView.js
 create mode 100644 dashboardv3/public/js/views/name_space/NameSpaceAttrTableLayoutView.js
 create mode 100644 dashboardv3/public/js/views/name_space/NameSpaceAttributeItemView.js
 create mode 100644 dashboardv3/public/js/views/name_space/NameSpaceContainerLayoutView.js
 create mode 100644 dashboardv3/public/js/views/name_space/NameSpaceDetailLayoutView.js
 create mode 100644 dashboardv3/public/js/views/name_space/NameSpaceTableLayoutView.js
 create mode 100644 dashboardv3/public/js/views/search/tree/NameSpaceTreeLayoutView.js


[atlas] 03/03: ATLAS-3607 : namespace attributes build fix

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbhatt pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git

commit 72053862fa73c08c4020b945c97611ccc9dee96d
Author: kevalbhatt <kb...@apache.org>
AuthorDate: Tue Feb 18 11:07:34 2020 +0530

    ATLAS-3607 : namespace attributes build fix
    
    (cherry picked from commit 47ccfaf7cf2301f65ff1bcf1121bb0b232bc9692)
---
 dashboardv3/public/js/utils/Helper.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dashboardv3/public/js/utils/Helper.js b/dashboardv3/public/js/utils/Helper.js
index ccfde66..74716f1 100644
--- a/dashboardv3/public/js/utils/Helper.js
+++ b/dashboardv3/public/js/utils/Helper.js
@@ -148,7 +148,7 @@ define(['require',
 
                 this.$searchContainer = $search;
                 this.$search = $search.find('input');
-                let $selection = MultipleSelection.prototype.render.call(this);
+                var $selection = MultipleSelection.prototype.render.call(this);
                 this._transferTabIndex();
                 return $selection;
             };


[atlas] 02/03: ATLAS-3593 : UI: Issue with 'Sub-classification' checkbox filter in Classification Details page

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbhatt pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git

commit 1624e3fc1517196f8f121a6232a487cfc53d9661
Author: kevalbhatt <kb...@apache.org>
AuthorDate: Fri Feb 14 17:42:17 2020 +0530

    ATLAS-3593 : UI: Issue with 'Sub-classification' checkbox filter in Classification Details page
    
    (cherry picked from commit 9b89a3fda36af8b78146cc4dd914c7985739e10b)
---
 dashboardv2/public/js/views/search/SearchResultLayoutView.js | 2 +-
 dashboardv3/public/js/views/search/SearchResultLayoutView.js | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
index a94a0f7..2bd829b 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -631,7 +631,7 @@ define(['require',
                     nameCheck = 0,
                     columnToShow = null,
                     col = {};
-                this.value = Utils.getUrlState.getQueryParams();
+                this.value = Utils.getUrlState.getQueryParams() || this.value;
                 if (this.value && this.value.searchType === "basic" && this.searchTableColumns && (this.searchTableColumns[this.value.type] !== undefined)) {
                     columnToShow = this.searchTableColumns[this.value.type] == null ? [] : this.searchTableColumns[this.value.type];
                 }
diff --git a/dashboardv3/public/js/views/search/SearchResultLayoutView.js b/dashboardv3/public/js/views/search/SearchResultLayoutView.js
index f11d903..01083ff 100644
--- a/dashboardv3/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv3/public/js/views/search/SearchResultLayoutView.js
@@ -642,7 +642,7 @@ define(['require',
                     nameCheck = 0,
                     columnToShow = null,
                     col = {};
-                this.value = Utils.getUrlState.getQueryParams();
+                this.value = Utils.getUrlState.getQueryParams() || this.value;
                 if (this.value && this.value.searchType === "basic" && this.searchTableColumns && (this.searchTableColumns[this.value.type] !== undefined)) {
                     columnToShow = this.searchTableColumns[this.value.type] == null ? [] : this.searchTableColumns[this.value.type];
                 }


[atlas] 01/03: ATLAS-3607 : UI: changes to create namespace type definitions and define namespace attributes

Posted by kb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kbhatt pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git

commit 72e7e73d2fbcbeddbb8228bb7a56c58366324679
Author: kevalbhatt <kb...@apache.org>
AuthorDate: Mon Feb 3 21:13:52 2020 +0530

    ATLAS-3607 : UI: changes to create namespace type definitions and define namespace attributes
    
    (cherry picked from commit bcb9ea240614299280d8051b6b43a9927dcbb2de)
---
 dashboardv3/public/css/scss/common.scss            |   1 +
 dashboardv3/public/css/scss/form.scss              |   9 +
 dashboardv3/public/css/scss/glossary.scss          |   4 +
 dashboardv3/public/css/scss/namespace.scss         | 155 ++++++
 dashboardv3/public/css/scss/override.scss          |  42 ++
 dashboardv3/public/css/scss/stats.scss             |   7 +
 dashboardv3/public/css/scss/style.scss             |   1 +
 dashboardv3/public/css/scss/table.scss             |  55 +-
 dashboardv3/public/css/scss/tag.scss               |   4 +
 dashboardv3/public/css/scss/theme.scss             |  61 ++-
 dashboardv3/public/js/main.js                      |  26 +-
 dashboardv3/public/js/models/VEntity.js            |  12 +
 dashboardv3/public/js/router/Router.js             | 187 +++----
 .../AdministratorLayoutView_tmpl.html              |  40 ++
 .../PurgeAuditTableLayoutView_tmpl.html            | 120 +++++
 .../audit/CreateAuditTableLayoutView_tmpl.html     |  14 +-
 dashboardv3/public/js/templates/common/Modal.html  |   2 +-
 .../name_space/CreateNameSpaceLayoutView_tmpl.html |  53 ++
 .../name_space/EnumCreateUpdateItemView_tmpl.html  |  39 ++
 .../NameSpaceAttrTableLayoutView_tmpl.html         |  47 ++
 .../NameSpaceAttributeItemView_tmpl.html           |  89 ++++
 .../NameSpaceContainerLayoutView_tmpl.html         |  20 +
 .../name_space/NameSpaceDetailLayoutView_tmpl.html |  29 +
 .../name_space/NameSpaceTableLayoutView_tmpl.html  |  47 ++
 .../search/SearchFilterBrowseLayoutView_tmpl.html  |  12 +-
 .../search/tree/GlossaryTreeLayoutView_tmpl.html   |  16 +-
 .../search/tree/NameSpaceTreeLayoutView_tmpl.html  |  45 ++
 dashboardv3/public/js/templates/site/Header.html   |  18 +-
 dashboardv3/public/js/utils/Helper.js              |  80 +++
 dashboardv3/public/js/utils/Overrides.js           |  90 ++++
 dashboardv3/public/js/utils/UrlLinks.js            |  22 +-
 dashboardv3/public/js/utils/Utils.js               |   6 +
 .../views/administrator/AdministratorLayoutView.js | 105 ++++
 .../administrator/PurgeAuditTableLayoutView.js     | 518 ++++++++++++++++++
 .../public/js/views/audit/AuditTableLayoutView.js  |  40 +-
 .../js/views/audit/CreateAuditTableLayoutView.js   |   2 +-
 .../views/name_space/CreateNameSpaceLayoutView.js  | 591 +++++++++++++++++++++
 .../views/name_space/EnumCreateUpdateItemView.js   | 256 +++++++++
 .../name_space/NameSpaceAttrTableLayoutView.js     | 232 ++++++++
 .../views/name_space/NameSpaceAttributeItemView.js | 266 ++++++++++
 .../name_space/NameSpaceContainerLayoutView.js     | 117 ++++
 .../views/name_space/NameSpaceDetailLayoutView.js  | 110 ++++
 .../views/name_space/NameSpaceTableLayoutView.js   | 419 +++++++++++++++
 .../views/search/SearchFilterBrowseLayoutView.js   |  19 +-
 .../search/tree/CustomFilterTreeLayoutView.js      |  14 +-
 .../js/views/search/tree/EntityTreeLayoutView.js   |  16 +-
 .../js/views/search/tree/GlossaryTreeLayoutView.js |  15 +-
 .../views/search/tree/NameSpaceTreeLayoutView.js   | 384 +++++++++++++
 48 files changed, 4238 insertions(+), 219 deletions(-)

diff --git a/dashboardv3/public/css/scss/common.scss b/dashboardv3/public/css/scss/common.scss
index 53eedcc..aa20b70 100644
--- a/dashboardv3/public/css/scss/common.scss
+++ b/dashboardv3/public/css/scss/common.scss
@@ -254,6 +254,7 @@ pre {
             text-align: center;
             width: 17%;
             margin-left: 1%;
+            margin-bottom: 10px;
         }
     }
 }
diff --git a/dashboardv3/public/css/scss/form.scss b/dashboardv3/public/css/scss/form.scss
index 729e5d7..38c9c45 100644
--- a/dashboardv3/public/css/scss/form.scss
+++ b/dashboardv3/public/css/scss/form.scss
@@ -30,6 +30,7 @@
         @extend .control-label-sm;
         padding-right: 10px;
     }
+
 }
 
 .form-group {
@@ -245,6 +246,10 @@ button:focus {
         padding: 2px 6px;
     }
 
+    &.btn-xs {
+        padding: 0px 5px;
+    }
+
     &.btn-md {
         padding: 6px 10px;
     }
@@ -305,6 +310,10 @@ button:focus {
         padding: 2px 6px;
     }
 
+    &.btn-xs {
+        padding: 0px 5px;
+    }
+
     &.btn-md {
         padding: 5px 10px;
     }
diff --git a/dashboardv3/public/css/scss/glossary.scss b/dashboardv3/public/css/scss/glossary.scss
index bc1c596..9f044e9 100644
--- a/dashboardv3/public/css/scss/glossary.scss
+++ b/dashboardv3/public/css/scss/glossary.scss
@@ -36,6 +36,10 @@
         background: $color_jungle_green_approx !important;
     }
 
+    .jstree-custom-filter {
+        background: #beebff !important;
+    }
+
     .jstree-hovered {
         background: $color_star_dust_approx;
     }
diff --git a/dashboardv3/public/css/scss/namespace.scss b/dashboardv3/public/css/scss/namespace.scss
new file mode 100644
index 0000000..c74c697
--- /dev/null
+++ b/dashboardv3/public/css/scss/namespace.scss
@@ -0,0 +1,155 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you 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.
+
+
+/* namespace */
+.namespace-tree-parent {
+    padding: 0px;
+
+    >li:first-child {
+        font-weight: 600;
+    }
+
+    .namespace-tree-child {
+        padding-left: 20px;
+        margin-top: 10px;
+    }
+}
+
+.namespace-options.dropdown {
+    .dropdown-menu {
+        min-width: 100px;
+
+        .dropdown-item {
+            display: block;
+            width: 100%;
+            padding: .25rem 1.5rem;
+            clear: both;
+            font-weight: 400;
+            color: $color_jungle_green_approx;
+            text-align: inherit;
+            white-space: nowrap;
+            background-color: transparent;
+            border: 0;
+        }
+    }
+}
+
+.namespace-options.dropdown.open {
+    .btn-action {
+        background-color: $color_jungle_green_approx;
+        border: 1px solid $color_jungle_green_approx;
+        color: #fff !important;
+    }
+}
+
+.namespace-details {
+
+    .expandable .attr-details {
+        max-height: 300px;
+        overflow: auto;
+        margin-left: 100px;
+        width: calc(100% - 100px);
+    }
+}
+
+.tab-pane {
+    .namespace-attr-page {
+        position: absolute;
+        top: 0px;
+        left: 0px;
+        padding: 20px;
+        background-color: $white;
+        width: 100%;
+        height: inherit;
+    }
+}
+
+.namespace-attr-page {
+    .form-horizontal {
+        padding: 10px 22px;
+        // border: 1px solid #DEDEDE;
+
+        .control-label-sm {
+            padding-top: 3px;
+        }
+
+        .control-label-sm-pl {
+            @extend .control-label-sm;
+            padding-left: 10px;
+        }
+
+        .control-label-sm-pr {
+            @extend .control-label-sm;
+            padding-right: 10px;
+        }
+
+        .namespace-attr {
+            border: 1px solid #DEDEDE;
+            padding: 10px 20px
+        }
+    }
+}
+
+.namespace-attr-fontLoader {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    display: none;
+}
+
+.namespace-attr-tableOverlay {
+    position: absolute;
+    width: 100%;
+    height: 100%;
+    background: #808080;
+    z-index: 99;
+    display: none;
+    opacity: 0.2;
+}
+
+.name-space-details {
+    .backgrid {
+        td.expandable-content {
+            width: 100%;
+            max-width: none;
+            background: #f8f8f8;
+
+            div {
+
+                table {
+                    width: 100%;
+                }
+            }
+        }
+
+        tbody>tr:last-child>td {
+            border-bottom: none;
+        }
+    }
+}
+
+.namespace-attr-page {
+    .modal-footer {
+        text-align: center;
+    }
+}
+
+.remove-from-list {
+    .select2-results__option[aria-selected=true] {
+        display: none;
+    }
+}
\ No newline at end of file
diff --git a/dashboardv3/public/css/scss/override.scss b/dashboardv3/public/css/scss/override.scss
index ab4d601..62c129f 100644
--- a/dashboardv3/public/css/scss/override.scss
+++ b/dashboardv3/public/css/scss/override.scss
@@ -76,6 +76,17 @@
     }
 }
 
+.modal-full-screen {
+    width: 80%;
+    height: 80vh;
+
+    .modal-content {
+        height: inherit;
+        width: 100%;
+    }
+
+}
+
 .switch.pull-left {
     margin-right: 8px;
 }
@@ -238,6 +249,13 @@
     overflow-x: hidden;
 }
 
+.purge-details {
+    .tab-pane.active {
+        min-height: 400px;
+    }
+
+}
+
 .advancedInfo {
     margin-left: 5px;
     cursor: pointer;
@@ -356,6 +374,10 @@ div.columnmanager-visibilitycontrol {
 }
 
 div.columnmanager-dropdown-container {
+    .columnmanager-dropdown-item {
+        padding: 2px 13px;
+    }
+
     &.open {
         overflow: auto;
         width: auto;
@@ -452,4 +474,24 @@ div.columnmanager-dropdown-container {
 
 .query-builder .error-container {
     cursor: pointer;
+}
+
+.renderable {
+    .glyphicon {
+        color: $color_jungle_green_approx;
+        font-size: large;
+        font-weight: bold;
+    }
+}
+
+.backgrid-internal-table {
+
+    th,
+    td {
+        display: table-cell;
+    }
+}
+
+.table-hover>tbody>tr:hover {
+    background-color: #fafafa;
 }
\ No newline at end of file
diff --git a/dashboardv3/public/css/scss/stats.scss b/dashboardv3/public/css/scss/stats.scss
index f089ede..896d5bb 100644
--- a/dashboardv3/public/css/scss/stats.scss
+++ b/dashboardv3/public/css/scss/stats.scss
@@ -62,6 +62,7 @@
     .panel {
         &.panel-default {
             padding: 5px;
+            margin: 5px;
         }
 
         .panel-body {
@@ -81,6 +82,12 @@
 
     .table {
         &.stat-table {
+            width: 100%;
+
+            td {
+                display: table-cell;
+            }
+
             &.notification-table {
                 &.table-striped>tbody>tr:nth-of-type(odd) {
                     background-color: $color_white_lilac_approx;
diff --git a/dashboardv3/public/css/scss/style.scss b/dashboardv3/public/css/scss/style.scss
index 48bafc9..fd84b25 100644
--- a/dashboardv3/public/css/scss/style.scss
+++ b/dashboardv3/public/css/scss/style.scss
@@ -34,6 +34,7 @@
 @import "profile-table.scss";
 @import "glossary.scss";
 @import "wizard.scss";
+@import "namespace.scss";
 @import "stats.scss";
 @import "override.scss";
 @import "leftsidebar.scss"
\ No newline at end of file
diff --git a/dashboardv3/public/css/scss/table.scss b/dashboardv3/public/css/scss/table.scss
index 73c998d..5f49be2 100644
--- a/dashboardv3/public/css/scss/table.scss
+++ b/dashboardv3/public/css/scss/table.scss
@@ -55,7 +55,7 @@ tr.empty {
     .entity-detail-table-toggle {
         position: absolute;
         right: 0;
-        top: 18px;
+        top: 7px;
     }
 
     table {
@@ -183,26 +183,36 @@ tr.empty {
         }
     }
 
-    >thead>tr>th {
-        border-width: thin;
-        border-color: $color_jungle_green_approx;
-        border-bottom-style: solid;
-        box-shadow: none;
-        padding: 12px 15px !important;
-        background-color: transparent;
-        text-align: left;
-        font-weight: 800;
-        border-top: 0;
-        font-size: 14px;
-        letter-spacing: 0.25px;
-        color: rgba(52, 52, 52, 1);
+    >thead>tr {
+        background: #eeeeee;
+
+        &>th {
+            border-width: thin;
+            // border-color: $color_jungle_green_approx;
+            border-bottom-style: solid;
+            box-shadow: none;
+            padding: 6px 15px !important;
+            background-color: transparent;
+            text-align: left;
+            font-weight: 800;
+            border-top: 0;
+            font-size: 14px;
+            letter-spacing: 0.25px;
+            color: #6a6a6a;
+        }
+
+        >td {
+            border-color: $color_gallery_approx;
+            color: #333333;
+            font-weight: 100;
+            padding: 9px 15px;
+        }
     }
 
     >tbody>tr>td {
-        border-color: $color_gallery_approx;
-        color: #333333;
-        font-weight: 100;
-        padding: 9px 15px;
+        &.select-row-cell {
+            text-align: center;
+        }
     }
 }
 
@@ -240,4 +250,13 @@ td {
             float: left;
         }
     }
+}
+
+.auditStatusContainer {
+    display: flex;
+    justify-content: center;
+}
+
+.auditStatusContainer>div {
+    flex-grow: 1;
 }
\ No newline at end of file
diff --git a/dashboardv3/public/css/scss/tag.scss b/dashboardv3/public/css/scss/tag.scss
index 1d6fb00..5a023e6 100644
--- a/dashboardv3/public/css/scss/tag.scss
+++ b/dashboardv3/public/css/scss/tag.scss
@@ -205,4 +205,8 @@
 .addtag-propagte-box {
     border: 1px solid #ddd;
     border-radius: 7px;
+}
+
+.entityTypeSelector {
+    margin: 10px 0px;
 }
\ No newline at end of file
diff --git a/dashboardv3/public/css/scss/theme.scss b/dashboardv3/public/css/scss/theme.scss
index 7c10a0d..56e998c 100644
--- a/dashboardv3/public/css/scss/theme.scss
+++ b/dashboardv3/public/css/scss/theme.scss
@@ -158,6 +158,14 @@ header.atlas-header {
             position: relative;
             transition: width 0.3s !important;
 
+            .admin-icon {
+                background-color: $color_ironside_gray_approx;
+                width: 24px;
+                height: 20px;
+                -webkit-mask: url(../img/support.svg) no-repeat center;
+                mask: url(../img/support.svg) no-repeat center;
+            }
+
             .search-box {
                 width: 50%;
                 margin: 0 auto;
@@ -172,7 +180,8 @@ header.atlas-header {
                 left: auto;
             }
 
-            &>li>a {
+            &>li>a,
+                {
                 color: $color_ironside_gray_approx;
 
                 &:hover {
@@ -188,19 +197,23 @@ header.atlas-header {
         td {
             >a {
                 display: inline-block;
-                color: $color_ironside_gray_approx;
+                color: $color_ironside_gray_approx !important;
                 padding: 13px 14px;
                 border-bottom: 2px solid transparent;
             }
 
             >a,
             >table {
-                padding: 15px 14px;
+                padding: 14px 14px;
 
                 &:hover {
                     border-bottom: 2px solid $color_jungle_green_approx;
                     padding: 14px 14px;
-                    color: $color_jungle_green_approx;
+                    color: $color_jungle_green_approx !important;
+
+                    .admin-icon {
+                        background-color: $color_jungle_green_approx;
+                    }
 
                     a {
                         color: $color_jungle_green_approx;
@@ -776,4 +789,44 @@ td.searchTableName:hover {
         z-index: 1;
         left: calc(50% - 8px);
     }
+}
+
+.dropdown-menu.multi-level {
+    .dropdown-submenu {
+        position: relative;
+
+        &>a:after {
+            display: none;
+            content: " ";
+            width: 0;
+            height: 0;
+            border-color: transparent;
+            border-style: solid;
+            border-width: 5px 5px 5px 0px;
+            border-right-color: #ccc;
+            position: absolute;
+            left: 8px;
+            top: calc(50% - 5px);
+        }
+
+        &>a:hover:after {
+            display: block;
+        }
+
+        &>.dropdown-menu {
+            top: 0;
+            left: -100%;
+            width: 100%;
+            margin-top: -6px;
+            margin-left: -1px;
+            -webkit-border-radius: 0 6px 6px 6px;
+            -moz-border-radius: 0 6px 6px;
+            border-radius: 0 6px 6px 6px;
+        }
+
+        &:hover>.dropdown-menu {
+            display: block;
+        }
+
+    }
 }
\ No newline at end of file
diff --git a/dashboardv3/public/js/main.js b/dashboardv3/public/js/main.js
index 1001eb1..9bf190f 100644
--- a/dashboardv3/public/js/main.js
+++ b/dashboardv3/public/js/main.js
@@ -202,25 +202,35 @@ require(['App',
     'select2'
 ], function(App, Router, Helper, CommonViewFunction, Globals, UrlLinks, VEntityList, VTagList, Enums) {
     var that = this;
-    this.asyncFetchCounter = 6 + (Enums.addOnEntities.length + 1);
+    this.asyncFetchCounter = 7 + (Enums.addOnEntities.length + 1);
+    // entity
     this.entityDefCollection = new VEntityList();
     this.entityDefCollection.url = UrlLinks.entitiesDefApiUrl();
+    // typeHeaders
     this.typeHeaders = new VTagList();
     this.typeHeaders.url = UrlLinks.typesApiUrl();
+    // enum
     this.enumDefCollection = new VTagList();
     this.enumDefCollection.url = UrlLinks.enumDefApiUrl();
     this.enumDefCollection.modelAttrName = "enumDefs";
+    // classfication
     this.classificationDefCollection = new VTagList();
+    // metric
     this.metricCollection = new VTagList();
     this.metricCollection.url = UrlLinks.metricsApiUrl();
     this.metricCollection.modelAttrName = "data";
+    // nameSpace
+    this.nameSpaceCollection = new VEntityList();
+    this.nameSpaceCollection.url = UrlLinks.nameSpaceApiUrl();
+    this.nameSpaceCollection.modelAttrName = "namespaceDefs";
 
     App.appRouter = new Router({
         entityDefCollection: this.entityDefCollection,
         typeHeaders: this.typeHeaders,
         enumDefCollection: this.enumDefCollection,
         classificationDefCollection: this.classificationDefCollection,
-        metricCollection: this.metricCollection
+        metricCollection: this.metricCollection,
+        nameSpaceCollection: this.nameSpaceCollection
     });
 
     var startApp = function() {
@@ -310,6 +320,18 @@ require(['App',
         }
     });
 
+    this.nameSpaceCollection.fetch({
+        skipDefaultError: true,
+        complete: function() {
+            that.nameSpaceCollection.fullCollection.comparator = function(model) {
+                return model.get('name').toLowerCase();
+            };
+            that.nameSpaceCollection.fullCollection.sort({ silent: true });
+            --that.asyncFetchCounter;
+            startApp();
+        }
+    });
+
     Enums.addOnEntities.forEach(function(addOnEntity) {
         CommonViewFunction.fetchRootEntityAttributes({
             url: UrlLinks.rootEntityDefUrl(addOnEntity),
diff --git a/dashboardv3/public/js/models/VEntity.js b/dashboardv3/public/js/models/VEntity.js
index b798a6b..84a185f 100644
--- a/dashboardv3/public/js/models/VEntity.js
+++ b/dashboardv3/public/js/models/VEntity.js
@@ -95,6 +95,18 @@ define(['require',
                 dataType: 'json'
             }, options);
             return this.constructor.nonCrudOperation.call(this, url, "POST", options);
+        },
+        saveNameSpaceAttribute: function(options) {
+            var url = UrlLinks.nameSpaceUpdateUrl();
+            options = _.extend({
+                contentType: 'application/json',
+                dataType: 'json'
+            }, options);
+            return this.constructor.nonCrudOperation.call(this, url, 'PUT', options);
+        },
+        deleteNameSpace: function(options) {
+            var url = UrlLinks.nameSpaceUpdateUrl(options.typeName);
+            return this.constructor.nonCrudOperation.call(this, url, 'DELETE', options);
         }
     }, {});
     return VEntity;
diff --git a/dashboardv3/public/js/router/Router.js b/dashboardv3/public/js/router/Router.js
index 0388ebd..02a8fb0 100644
--- a/dashboardv3/public/js/router/Router.js
+++ b/dashboardv3/public/js/router/Router.js
@@ -47,13 +47,16 @@ define([
             "!/glossary/:id": "renderGlossaryLayoutView",
             // Details
             "!/detailPage/:id": "detailPage",
+            //Audit table
+            '!/administrator': 'administrator',
+            '!/administrator/namespace/:id': 'nameSpaceDetailPage',
             // Default
             "*actions": "defaultAction"
         },
         initialize: function(options) {
             _.extend(
                 this,
-                _.pick(options, "entityDefCollection", "typeHeaders", "enumDefCollection", "classificationDefCollection", "metricCollection")
+                _.pick(options, "entityDefCollection", "typeHeaders", "enumDefCollection", "classificationDefCollection", "metricCollection", "nameSpaceCollection")
             );
             this.showRegions();
             this.bindFooterEvent();
@@ -72,7 +75,8 @@ define([
                 enumDefCollection: this.enumDefCollection,
                 classificationDefCollection: this.classificationDefCollection,
                 glossaryCollection: this.glossaryCollection,
-                metricCollection: this.metricCollection
+                metricCollection: this.metricCollection,
+                nameSpaceCollection: this.nameSpaceCollection
             };
             this.sharedObj = {
                 searchTableColumns: {},
@@ -277,6 +281,16 @@ define([
                         updateTabState: true
                     });
                 }
+                if (Utils.getUrlState.getQueryUrl().lastValue !== "search" && Utils.getUrlState.isAdministratorTab() === false) {
+                    paramObj = _.omit(paramObj, ["tabActive", "ns", "nsa"]);
+                    Utils.setUrl({
+                        url: "#!/search/searchResult",
+                        urlParams: paramObj,
+                        mergeBrowserUrl: false,
+                        trigger: false,
+                        updateTabState: true
+                    });
+                }
                 if (paramObj) {
                     if (!paramObj.type) {
                         if (paramObj.entityFilters) {
@@ -365,38 +379,6 @@ define([
                 });
             });
         },
-        renderSearchResult: function() {
-            var that = this;
-            require(["views/site/Header", "views/search/SearchDetailLayoutView"], function(Header, SearchDetailLayoutView) {
-                var paramObj = Utils.getUrlState.getQueryParams();
-                var isinitialView = true,
-                    isTypeTagNotExists = false,
-                    tempParam = _.extend({}, paramObj);
-                that.renderViewIfNotExists(that.getHeaderOptions(Header));
-                if (paramObj) {
-                    isinitialView =
-                        (
-                            paramObj.type ||
-                            (paramObj.dslChecked == "true" ? "" : paramObj.tag || paramObj.term) ||
-                            (paramObj.query ? paramObj.query.trim() : "")
-                        ).length === 0;
-                }
-                App.rContent.show(
-                    new SearchDetailLayoutView(
-                        _.extend({
-                                value: paramObj,
-                                searchVent: that.searchVent,
-                                categoryEvent: that.categoryEvent,
-                                initialView: isinitialView,
-                                isTypeTagNotExists: paramObj.type != tempParam.type || tempParam.tag != paramObj.tag
-                            },
-                            that.preFetchedCollectionLists,
-                            that.sharedObj
-                        )
-                    )
-                );
-            });
-        },
         detailPage: function(id) {
             var that = this;
             if (id) {
@@ -416,7 +398,10 @@ define([
                         },
                         render: function() {
                             return new SideNavLayoutView(
-                                _.extend({ searchVent: that.searchVent, categoryEvent: that.categoryEvent }, that.preFetchedCollectionLists, that.sharedObj)
+                                _.extend({
+                                    searchVent: that.searchVent,
+                                    categoryEvent: that.categoryEvent
+                                }, that.preFetchedCollectionLists, that.sharedObj)
                             );
                         }
                     });
@@ -438,73 +423,6 @@ define([
                 });
             }
         },
-        tagAttributePageLoad: function(tagName) {
-            var that = this;
-            require(["views/site/Header", "views/tag/TagDetailLayoutView", "views/site/SideNavLayoutView"], function(Header, TagDetailLayoutView, SideNavLayoutView) {
-                var paramObj = Utils.getUrlState.getQueryParams(),
-                    url = Utils.getUrlState.getQueryUrl().queyParams[0];
-                that.renderViewIfNotExists(that.getHeaderOptions(Header));
-                // that.renderViewIfNotExists({
-                //     view: App.rSideNav,
-                //     manualRender: function() {
-                //         if (paramObj && paramObj.dlttag) {
-                //             Utils.setUrl({
-                //                 url: url,
-                //                 trigger: false,
-                //                 updateTabState: true
-                //             });
-                //         }
-                //         this.view.currentView.RTagLayoutView.currentView.manualRender(_.extend({}, paramObj, { 'tagName': tagName }));
-                //         this.view.currentView.selectTab();
-                //     },
-                //     render: function() {
-                //         if (paramObj && paramObj.dlttag) {
-                //             Utils.setUrl({
-                //                 url: url,
-                //                 trigger: false,
-                //                 updateTabState: true
-                //             });
-                //         }
-                //         return new SideNavLayoutView(
-                //             _.extend({
-                //                 'tag': tagName,
-                //                 'value': paramObj
-                //             }, that.preFetchedCollectionLists, that.sharedObj)
-                //         );
-                //     }
-                // });
-
-                that.renderViewIfNotExists({
-                    view: App.rSideNav,
-                    manualRender: function() {
-                        this.view.currentView.selectTab();
-                    },
-                    render: function() {
-                        return new SideNavLayoutView(
-                            _.extend({ searchVent: that.searchVent, categoryEvent: that.categoryEvent }, that.preFetchedCollectionLists, that.sharedObj)
-                        );
-                    }
-                });
-                if (tagName) {
-                    // updating paramObj to check for new queryparam.
-                    paramObj = Utils.getUrlState.getQueryParams();
-                    if (paramObj && paramObj.dlttag) {
-                        return false;
-                    }
-                    App.rContent.show(
-                        new TagDetailLayoutView(
-                            _.extend({
-                                    tag: tagName,
-                                    value: paramObj
-                                },
-                                that.preFetchedCollectionLists,
-                                that.sharedObj
-                            )
-                        )
-                    );
-                }
-            });
-        },
         glossaryDetailPage: function(id) {
             var that = this;
             if (id) {
@@ -542,25 +460,6 @@ define([
             require(["views/site/Header", "views/search/SearchDetailLayoutView", "views/site/SideNavLayoutView"], function(Header, SearchDetailLayoutView, SideNavLayoutView) {
                 var paramObj = Utils.getUrlState.getQueryParams();
                 that.renderViewIfNotExists(that.getHeaderOptions(Header));
-                // that.renderViewIfNotExists({
-                //     view: App.rSideNav,
-                //     manualRender: function() {
-                //         this.view.currentView.selectTab();
-                //         if (Utils.getUrlState.isTagTab()) {
-                //             this.view.currentView.RTagLayoutView.currentView.manualRender();
-                //         } else if (Utils.getUrlState.isGlossaryTab()) {
-                //             this.view.currentView.RGlossaryLayoutView.currentView.manualRender(_.extend({ "isTrigger": true }, { "value": paramObj }));
-                //         }
-                //     },
-                //     render: function() {
-                //         return new SideNavLayoutView(
-                //             _.extend({
-                //                 'searchVent': that.searchVent
-                //             }, that.preFetchedCollectionLists, that.sharedObj)
-                //         )
-                //     }
-                // });
-
                 that.renderViewIfNotExists({
                     view: App.rSideNav,
                     manualRender: function() {
@@ -593,6 +492,52 @@ define([
                 }
             });
         },
+        administrator: function() {
+            var that = this;
+            require(["views/site/Header", "views/site/SideNavLayoutView", 'views/administrator/AdministratorLayoutView'], function(Header, SideNavLayoutView, AdministratorLayoutView) {
+                var value = Utils.getUrlState.getQueryParams(),
+                    paramObj = _.extend({ value: value, namespaceID: null }, that.preFetchedCollectionLists);
+                that.renderViewIfNotExists(that.getHeaderOptions(Header));
+                that.renderViewIfNotExists({
+                    view: App.rSideNav,
+                    manualRender: function() {
+                        this.view.currentView.manualRender(paramObj);
+                    },
+                    render: function() {
+                        return new SideNavLayoutView(
+                            _.extend({ searchVent: that.searchVent, categoryEvent: that.categoryEvent }, that.preFetchedCollectionLists, that.sharedObj)
+                        );
+                    }
+                });
+                App.rContent.show(new AdministratorLayoutView(paramObj));
+            });
+        },
+        nameSpaceDetailPage: function(namespaceGuid) {
+            var that = this;
+            require(["views/site/Header", "views/site/SideNavLayoutView", "views/name_space/NameSpaceContainerLayoutView", ], function(Header, SideNavLayoutView, NameSpaceContainerLayoutView) {
+                var paramObj = Utils.getUrlState.getQueryParams();
+                that.renderViewIfNotExists(that.getHeaderOptions(Header));
+                var options = _.extend({
+                        namespaceID: namespaceGuid,
+                        value: paramObj,
+                        searchVent: that.searchVent,
+                        categoryEvent: that.categoryEvent
+                    },
+                    that.preFetchedCollectionLists,
+                    that.sharedObj
+                )
+                that.renderViewIfNotExists({
+                    view: App.rSideNav,
+                    manualRender: function() {
+                        this.view.currentView.manualRender(options);
+                    },
+                    render: function() {
+                        return new SideNavLayoutView(options);
+                    }
+                });
+                App.rContent.show(new NameSpaceContainerLayoutView(options));
+            });
+        },
         defaultAction: function(actions) {
             // We have no matching route, lets just log what the URL was
             Utils.setUrl({
diff --git a/dashboardv3/public/js/templates/administrator/AdministratorLayoutView_tmpl.html b/dashboardv3/public/js/templates/administrator/AdministratorLayoutView_tmpl.html
new file mode 100644
index 0000000..ddc55f3
--- /dev/null
+++ b/dashboardv3/public/js/templates/administrator/AdministratorLayoutView_tmpl.html
@@ -0,0 +1,40 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="clearfix">
+    <!--  <div class="fontLoader">
+        <i class="fa fa-refresh fa-spin-custom"></i>
+    </div> -->
+    <div class="col-sm-12 default-tab">
+        <ul class="nav nav-tabs" data-id="tab-list">
+            <li role="namespace" class="tab active"><a href="#tab-namespace" aria-controls="tab-namespace" role="tab" data-toggle="tab">Namespaces</a></li>
+            <li role="enum"><a href="#tab-enum" aria-controls="tab-enum" role="tab" data-toggle="tab">Enumerations</a></li>
+        </ul>
+    </div>
+</div>
+<div>
+    <div class="tab-content purge-details">
+        <div id="tab-namespace" role="namespace" class="tab-pane active animated fadeIn">
+            <div id="r_namespaceTableLayoutView">
+            </div>
+        </div>
+        <div id="tab-enum" role="enum" class="tab-pane animated fadeIn">
+            <div id="r_enumTableLayoutView">
+            </div>
+        </div>
+    </div>
+</div>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/administrator/PurgeAuditTableLayoutView_tmpl.html b/dashboardv3/public/js/templates/administrator/PurgeAuditTableLayoutView_tmpl.html
new file mode 100644
index 0000000..ee394a9
--- /dev/null
+++ b/dashboardv3/public/js/templates/administrator/PurgeAuditTableLayoutView_tmpl.html
@@ -0,0 +1,120 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="page-title clearfix">
+    <!--  <div class="fontLoader">
+        <i class="fa fa-refresh fa-spin-custom"></i>
+    </div> -->
+    <div class="row">
+        <div class="col-sm-12 default-tab">
+            <ul class="nav nav-tabs" data-id="tab-list">
+                <li role="purgeaudit" class="tab active"><a href="#tab-audit" aria-controls="tab-audit" role="tab" data-toggle="tab">Audits</a></li>
+                <li role="namespace"><a href="#tab-namespace" aria-controls="tab-namespace" role="tab" data-toggle="tab">Namespace</a></li>
+            </ul>
+        </div>
+    </div>
+</div>
+<div>
+    <div class="tab-content purge-details">
+        <div id="tab-audit" role="purgeaudit" class="tab-pane active animated fadeIn">
+            <div id="r_auditTableLayoutView">
+                <div class="fontLoader-relative">
+                    <i class="fa fa-refresh fa-spin-custom"></i>
+                </div>
+                <div class="position-relative">
+                    <div class="tableOverlay"></div>
+                    <!-- Not for table Loader its only for initial loading -->
+                    <div class="fontLoader">
+                        <i class="fa fa-refresh fa-spin-custom"></i>
+                    </div>
+                    <div class="attributeResultContainer form-group ">
+                        <button class="btn-action btn-sm  attribute-filter-text" data-id='purgeAttrFilter'> <i class="fa fa-angle-right"></i> Filters</button>
+                        <div class="attribute-filter-container hide">
+                            <div class="panel panel-default expand_collapse_panel-icon" data-id="purgeRegion">
+                                <div class="panel-heading" data-toggle="collapse" href="#collapsePurge" aria-expanded="true">
+                                    <h4 class="panel-title">
+                                        <a>Purge</a>
+                                    </h4>
+                                    <div class="btn-group pull-right">
+                                        <button type="button" title="Collapse"><i class="ec-icon fa"></i></button>
+                                    </div>
+                                </div>
+                                <div id="collapsePurge" class="panel-collapse collapse in">
+                                    <div class="panel-body">
+                                        <div id='r_attributeQueryBuilderPurge' class='attribute-querybuilder'>
+                                            <div class='fontLoader'><i class='fa fa-refresh fa-spin-custom'></i></div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class='attribute-result-footer'>
+                                <div type="ok" class="btn btn-atlas ok search" data-id='attrApply'>Apply</div>
+                                <div type="ok" class="btn btn-atlas ok" data-id='attrClose'>Close</div>
+                            </div>
+                        </div>
+                        <div class="pull-right">
+                            <select class="pull-right form-controlrow-margin-bottom" data-id="purgeType"></select>
+                        </div>
+                    </div>
+                    <div class='attr-filter-overlay hide'></div>
+                    <div class="auditTable" style="display: none">
+                        <div id="r_purgeAuditTableLayoutView"></div>
+                        <div>
+                            <span class="labelShowRecord pull-left" data-id="pageRecordText"></span>
+                        </div>
+                        <div class="pagination-box">
+                            <div class="backgrid-paginator pull-right">
+                                <ul>
+                                    <li>
+                                        <button type="button" data-id="previousAuditData" title="Previous" disabled=true>
+                                            <i class="fa fa-angle-left" aria-hidden="true"></i>
+                                        </button>
+                                    </li>
+                                    <li class="active">
+                                        <a href="javascript:void(0)" data-id="activePage"></a>
+                                    </li>
+                                    <li>
+                                        <button type="button" data-id="nextAuditData" title="Next">
+                                            <i class="fa fa-angle-right" aria-hidden="true"></i>
+                                        </button>
+                                    </li>
+                                </ul>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="no-data" data-id="showDefault">
+                <div class="position-relative thick-border">
+                    <div style="padding-top: 20px; " class="table-responsive tableBorder">
+                        <table class="table table-hover backgrid table-quickMenu">
+                            <tbody>
+                                <tr class="empty">
+                                    <td colspan="16"><span>No Records found!</span></td>
+                                </tr>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div id="tab-namespace" role="namespace" class="tab-pane animated fadeIn">
+            <div id="r_namespaceTableLayoutView">
+            </div>
+        </div>
+    </div>
+</div>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html b/dashboardv3/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
index 1934339..1ff67d3 100644
--- a/dashboardv3/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
+++ b/dashboardv3/public/js/templates/audit/CreateAuditTableLayoutView_tmpl.html
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 -->
-<h4 style="word-break: break-word;">Name: <span data-id="name"></span></h4>
-<div class="panel-group server-stats-container statsContainer " id="accordion">
-    <div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="detailsAttribute">
+<h4 class="entity-name" style="word-break: break-word;">Name: <span data-id="name"></span></h4>
+<div class="panel-group server-stats-container auditStatusContainer clearfix" id="accordion">
+    <div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="detailsAttribute">
         <div class="panel-heading" data-toggle="collapse" href="#detailAttributeTableCollapse" aria-expanded="true">
             <h4 class="panel-title">
                 <a>Properties </a>
@@ -37,7 +37,7 @@
             </div>
         </div>
     </div>
-    <div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="attributeDetails">
+    <div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="attributeDetails">
         <div class="panel-heading" data-toggle="collapse" href="#attributeTableCollapse" aria-expanded="true">
             <h4 class="panel-title">
                 <a data-id="panel-attr-heading">Technical properties </a>
@@ -58,7 +58,7 @@
             </div>
         </div>
     </div>
-    <div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="relationShipAttributeDetails">
+    <div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="relationShipAttributeDetails">
         <div class="panel-heading" data-toggle="collapse" href="#relationShipAttributeTableCollapse" aria-expanded="true">
             <h4 class="panel-title">
                 <a>Relationship properties </a>
@@ -79,7 +79,7 @@
             </div>
         </div>
     </div>
-    <div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="customAttributeDetails">
+    <div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="customAttributeDetails">
         <div class="panel-heading" data-toggle="collapse" href="#customAttributeCollapse" aria-expanded="true">
             <h4 class="panel-title">
                 <a>User-defined properties </a>
@@ -100,7 +100,7 @@
             </div>
         </div>
     </div>
-    <div class="panel panel-default custom-panel expand_collapse_panel-icon hide" data-id="labelsDetails">
+    <div class="panel panel-default custom-panel expand_collapse_panel-icon hide col-sm-5" data-id="labelsDetails">
         <div class="panel-heading" data-toggle="collapse" href="#labelsTableCollapse" aria-expanded="true">
             <h4 class="panel-title">
                 <a>Labels</a>
diff --git a/dashboardv3/public/js/templates/common/Modal.html b/dashboardv3/public/js/templates/common/Modal.html
index cf409ef..6be0d4d 100644
--- a/dashboardv3/public/js/templates/common/Modal.html
+++ b/dashboardv3/public/js/templates/common/Modal.html
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
 -->
-<div class="modal-dialog {{mainClass}} " style="width:{{width}}" role="document">
+<div class="modal-dialog {{mainClass}}{{modal-full-screen}}" style="width:{{width}}" role="document">
     <div class="modal-content">
         {{#if title}}
         <div class="modal-header">
diff --git a/dashboardv3/public/js/templates/name_space/CreateNameSpaceLayoutView_tmpl.html b/dashboardv3/public/js/templates/name_space/CreateNameSpaceLayoutView_tmpl.html
new file mode 100644
index 0000000..acf3b23
--- /dev/null
+++ b/dashboardv3/public/js/templates/name_space/CreateNameSpaceLayoutView_tmpl.html
@@ -0,0 +1,53 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="fontLoader">
+    <i class="fa fa-refresh fa-spin-custom"></i>
+</div>
+<form name="tagDefinitionform" class="hide form-horizontal" data-id="createTagForm" style="width: 70%;margin: 0 auto;">
+    {{#if fromTable}}
+    <div class="form-group">
+        <label class="control-label col-sm-2 {{#if create}}required{{/if}}" for="name">Name</label>
+        {{#if create}}
+        <div class="col-sm-10">
+            <input class="form-control namespace-name" data-id="tagName" placeholder="Name(required)" autofocus />
+        </div>
+        {{else}}
+        <span class="ellipsis-with-margin control-label text-left col-sm-10" data-id="title"></span> {{/if}}
+    </div>
+    <div class="form-group">
+        <label class="control-label col-sm-2" for="description">Description</label>
+        <div class="col-sm-10">
+            <input class="form-control" data-id="description" value="{{description}}" placeholder="Description" />
+        </div>
+    </div>
+    {{/if}}
+    <div class="form-group">
+        <!-- <h4 class="col-sm-6">Attributes</h4> -->
+        {{#if isEditAttr}}
+        <div class="col-sm-12 no-padding-left">
+            <button title="Add Namespace attribute" type="button" class="btn btn-action btn-sm pull-left" data-id="attributeData"><i class="fa fa-plus"></i> Add Namespace attribute</button>
+        </div>
+        {{/if}}
+    </div>
+    <div data-id="addAttributeDiv">
+    </div>
+    </div>
+</form>
+<div class="modal-footer " data-id="modalFooter">
+    <button type="button" class="btn btn-action cancel" data-id="namespaceAttrPageCancle">Cancel</button>
+    <button type="button" class="btn btn-atlas ok" data-id="namespaceAttrPageOk">Ok</button>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/name_space/EnumCreateUpdateItemView_tmpl.html b/dashboardv3/public/js/templates/name_space/EnumCreateUpdateItemView_tmpl.html
new file mode 100644
index 0000000..be0ab81
--- /dev/null
+++ b/dashboardv3/public/js/templates/name_space/EnumCreateUpdateItemView_tmpl.html
@@ -0,0 +1,39 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="form-horizontal form-group clearfix enum-attr">
+    <div class="form-group" data-id="enumTypeSelectorContainer">
+        <label class="control-label col-sm-3 required" for="enumType">Enum Name</label>
+        <div class="col-sm-8">
+            <select class="form-control enumTypeSelector" data-id="enumSelector">
+            </select>
+        </div>
+    </div>
+    <div class="form-group " data-id="enumValueSelectorContainer">
+        <label class="control-label col-sm-3 required" for="enumVal">Enum Value</label>
+        <div class="col-sm-8">
+            <select class="form-control enumValueSelector" data-id="valueSelector" multiple="multiple">
+            </select>
+        </div>
+    </div>
+    <div class="form-group " data-id="enumFooter">
+        <label class="control-label col-sm-3" for="enumVal"></label>
+        <div class="col-sm-8">
+            <button type="button" data-id="enumCancleBtn" class="btn btn-action cancel">Cancel</button>
+            <button type="button" data-id="enumOkBtn" class="btn btn-atlas ok">Update</button>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/name_space/NameSpaceAttrTableLayoutView_tmpl.html b/dashboardv3/public/js/templates/name_space/NameSpaceAttrTableLayoutView_tmpl.html
new file mode 100644
index 0000000..c36195c
--- /dev/null
+++ b/dashboardv3/public/js/templates/name_space/NameSpaceAttrTableLayoutView_tmpl.html
@@ -0,0 +1,47 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="namespace-attr-page" data-id="namespaceAttrPage">
+    <div class="namespace-attr-tableOverlay"></div>
+    <div class=" modal-header" data-id="namespaceAttrPageHeader">
+        <h4 class="modal-title" data-id="namespaceAttrPageTitle"></h4>
+    </div>
+    <div id="r_modal">
+    </div>
+    <div class="namespace-attr-fontLoader">
+        <i class="fa fa-refresh fa-spin-custom"></i>
+    </div>
+    <!--     <div class="modal-footer " data-id="modalFooter">
+        <button type="button" class="btn btn-action cancel" data-id="namespaceAttrPageCancle">Cancel</button>
+        <button type="button" class="btn btn-atlas ok" data-id="namespaceAttrPageOk">Ok</button>
+    </div> -->
+</div>
+<div class="namespace-details" data-id="namespaceDetailPage">
+    <div class="position-relative">
+        <div class="pull-right inline-content-fr no-padding-left">
+            <div class="inline" data-id="colManager"></div>
+            <div class="inline">
+                <button type="button" data-id="addAttribute" title="Create Namespace" class="btn btn-action btn-sm pull-right btn-loader" style="margin-bottom: 10px;" data-action="createNamespace">
+                    <i class='fa fa-plus'></i> Attributes
+                </button></div>
+        </div>
+        <div class="tableOverlay"></div>
+        <div class='attr-filter-overlay hide'></div>
+        <div class="auditTable name-space-details">
+            <div id="r_nameSpaceAttrTableLayoutView"></div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/name_space/NameSpaceAttributeItemView_tmpl.html b/dashboardv3/public/js/templates/name_space/NameSpaceAttributeItemView_tmpl.html
new file mode 100644
index 0000000..2afc3df
--- /dev/null
+++ b/dashboardv3/public/js/templates/name_space/NameSpaceAttributeItemView_tmpl.html
@@ -0,0 +1,89 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="form-group clearfix namespace-attr">
+    <div class="form-group">
+        <div class="col-sm-12 attributePlusData " align="right">
+            <button type="button" class="btn btn-danger btn-sm closeInput" data-id="close"><i class="fa fa-times"></i></button>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-sm-3 required" for="name">Name</label>
+        <div class="col-sm-8">
+            <input class="form-control attributeInput" data-id="attributeInput" placeholder="Attribute name">
+            </input>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-sm-3 required" for="type">Type</label>
+        <div class="col-sm-8">
+            <select class="form-control dataTypeSelector" data-id="dataTypeSelector">
+                <option selected="selected">string</option>
+                <option>boolean</option>
+                <option>byte</option>
+                <option>short</option>
+                <option>int</option>
+                <option>float</option>
+                <option>double</option>
+                <option>long</option>
+                <option>date</option>
+                <option>enumeration</option>
+            </select>
+        </div>
+    </div>
+    <!-- <div class="form-group" data-id="multiValueSelect">
+        <label class="control-label col-sm-3" for="multiValSelect">Enable Multivalues</label>
+        <div class="col-sm-8">
+            <input type="checkbox" class="form-check-input multi-value-select" data-id="multiValueSelectStatus">
+        </div>
+    </div> -->
+    <div class="form-group enumtype-container" data-id="enumTypeSelectorContainer">
+        <div class="">
+            <label class="control-label col-sm-3 required" for="enumType">Enum Name</label>
+            <div class="col-sm-5">
+                <select class="form-control enumTypeSelector" data-id="enumTypeSelector" multiple="false">
+                </select>
+            </div>
+            <div class="col-sm-3">
+                <button type="button" class="btn btn-action btn-sm" data-id="createNewEnum" data-action="" title="Create/Update Enum"> <i class="fa fa-pencil"></i> Enum</button>
+            </div>
+        </div>
+    </div>
+    <div class="form-group enumvalue-container" data-id="enumValueSelectorContainer">
+        <div class="">
+            <label class="control-label col-sm-3 required" for="enumVal">Enum Value</label>
+            <div class="col-sm-8">
+                <select class="form-control enumValueSelector" data-id="enumValueSelector" multiple="true">
+                </select>
+            </div>
+        </div>
+    </div>
+    <div class="form-group" data-id="stringLengthContainer">
+        <div class="stringlength-container">
+            <label class="control-label col-sm-3 required" for="name">Max length</label>
+            <div class="col-sm-8">
+                <input type="number" class="form-control stringLengthVal" data-id="stringLength" placeholder="Maximum length">
+            </div>
+        </div>
+    </div>
+    <div class="form-group entity-namespace-selector">
+        <label class="control-label col-sm-3" for="name">Applicable Types</label>
+        <div class="col-sm-8">
+            <select class="form-control entityTypeSelector" data-id="entityTypeSelector" multiple="multiple">
+            </select>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/name_space/NameSpaceContainerLayoutView_tmpl.html b/dashboardv3/public/js/templates/name_space/NameSpaceContainerLayoutView_tmpl.html
new file mode 100644
index 0000000..7aaed9a
--- /dev/null
+++ b/dashboardv3/public/js/templates/name_space/NameSpaceContainerLayoutView_tmpl.html
@@ -0,0 +1,20 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div>
+    <div id="r_nameSpaceDetailContainer" class="sidebar-fixed-filter"></div>
+    <div id="r_nameSpaceAttrContainer" class="col-sm-12"></div>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/name_space/NameSpaceDetailLayoutView_tmpl.html b/dashboardv3/public/js/templates/name_space/NameSpaceDetailLayoutView_tmpl.html
new file mode 100644
index 0000000..84ab494
--- /dev/null
+++ b/dashboardv3/public/js/templates/name_space/NameSpaceDetailLayoutView_tmpl.html
@@ -0,0 +1,29 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="page-title clearfix">
+    <div class="fontLoader">
+        <i class="fa fa-refresh fa-spin-custom"></i>
+    </div>
+    <div class="back-button" title="Back to search page" style="top:15px">
+        <i class="fa fa-angle-left" data-id="backButton"></i>
+    </div>
+    <div class="tagDetail clearfix form-horizontal col-sm-12">
+        <h1 class="title"><span data-id="title"></span></h1>
+        <p class="form-group col-sm-12" data-id="description"></p>
+    </div>
+</div>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/name_space/NameSpaceTableLayoutView_tmpl.html b/dashboardv3/public/js/templates/name_space/NameSpaceTableLayoutView_tmpl.html
new file mode 100644
index 0000000..c30d90d
--- /dev/null
+++ b/dashboardv3/public/js/templates/name_space/NameSpaceTableLayoutView_tmpl.html
@@ -0,0 +1,47 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="namespace-attr-page" data-id="namespaceAttrPage">
+    <div class="namespace-attr-tableOverlay"></div>
+    <div class=" modal-header" data-id="namespaceAttrPageHeader">
+        <h4 class="modal-title" data-id="namespaceAttrPageTitle"></h4>
+    </div>
+    <div id="r_modal">
+    </div>
+    <div class="namespace-attr-fontLoader">
+        <i class="fa fa-refresh fa-spin-custom"></i>
+    </div>
+<!--     <div class="modal-footer " data-id="modalFooter">
+        <button type="button" class="btn btn-action cancel" data-id="namespaceAttrPageCancle">Cancel</button>
+        <button type="button" class="btn btn-atlas ok" data-id="namespaceAttrPageOk">Ok</button>
+    </div> -->
+</div>
+<div class="namespace-details" data-id="namespaceDetailPage">
+    <div class="position-relative">
+        <div class="pull-right inline-content-fr no-padding-left">
+            <div class="inline" data-id="colManager"></div>
+            <div class="inline">
+                <button type="button" data-id="createNameSpace" title="Create Namespace" class="btn btn-action btn-sm pull-right btn-loader" style="margin-bottom: 10px;" data-action="createNamespace">
+                    <i class='fa fa-plus'></i> Create Namespace
+                </button></div>
+        </div>
+        <div class="tableOverlay"></div>
+        <div class='attr-filter-overlay hide'></div>
+        <div class="auditTable name-space-details">
+            <div id="r_nameSpaceTableLayoutView"></div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/search/SearchFilterBrowseLayoutView_tmpl.html b/dashboardv3/public/js/templates/search/SearchFilterBrowseLayoutView_tmpl.html
index a9690bd..dc0f4c5 100644
--- a/dashboardv3/public/js/templates/search/SearchFilterBrowseLayoutView_tmpl.html
+++ b/dashboardv3/public/js/templates/search/SearchFilterBrowseLayoutView_tmpl.html
@@ -39,19 +39,13 @@
                         <div data-id="r_classificationTreeRender"></div>
                     </div>
                     <div class="col-sm-12">
+                        <div data-id="r_nameSpaceTreeRender"></div>
+                    </div>
+                    <div class="col-sm-12">
                         <div data-id="r_glossaryTreeRender"></div>
                     </div>
                     <div class="col-sm-12">
                         <div data-id="r_customFilterTreeRender"></div>
-                        <!-- <div class="panel panel-default expand_collapse_panel-icon right-icons">
-                            <div class="panel-heading dash-button-icon" data-toggle="collapse" aria-expanded="false" href="#c_saveSearch">
-                                <i class="ec-icon fa"></i>
-                                <h4 class="panel-title">Custom Filters</h4>
-                            </div>
-                            <div id="c_saveSearch" class="panel-collapse collapse">
-                                <div class="basicSaveSearch" data-id="r_saveSearchBasic"></div>
-                            </div>
-                        </div> -->
                     </div>
                 </div>
             </div>
diff --git a/dashboardv3/public/js/templates/search/tree/GlossaryTreeLayoutView_tmpl.html b/dashboardv3/public/js/templates/search/tree/GlossaryTreeLayoutView_tmpl.html
index ebf6f2e..83da9c5 100644
--- a/dashboardv3/public/js/templates/search/tree/GlossaryTreeLayoutView_tmpl.html
+++ b/dashboardv3/public/js/templates/search/tree/GlossaryTreeLayoutView_tmpl.html
@@ -20,29 +20,21 @@
         <h4 class="panel-title">Glossaries</h4>
         <div class="btn-group pull-right">
             <button type="button" class="typeRefresh" data-id="refreshTree" data-type="term" title="Refresh"><i class="fa fa-refresh"></i></button>
-            <!-- <ul class="dropdown-menu right-align tree-menu">
-                <li data-id="createGlossary"><i class="fa fa-plus"></i> <a>Create Glossary</a></li>
-            </ul> -->
             <button type="button" class="typeRefresh" data-id="showGlossaryType" title="Show Category">
                 <i class="fa fa-toggle-on switch-button"></i>
             </button>
-            <!--  <button title="Create Glossary" type="button" data-id="createGlossary">
+            <button title="Create Glossary" type="button" data-id="createGlossary">
                 <i class="fa fa-plus"></i>
-            </button> -->
-            <!--  <button data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button" data-id="termMenu"><i class="fa fa-ellipsis-v"></i></button> -->
-            <button type="button" class="typeRefresh dropdown">
+            </button>
+            <!--  <button type="button" class="typeRefresh dropdown">
                 <div class=" btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                     <i class="fa fa-ellipsis-v"></i>
                 </div>
                 <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
-                    <!-- <li data-id="showGlossaryType" data-type="term"> <i class="fa fa-toggle-on switch-button"></i><span>Show Category</span>
-                    </li> -->
-                    <!-- <li data-id="refreshTree" data-type="term"><i class="fa fa-refresh"></i><span>Refresh</span>
-                    </li> -->
                     <li data-id="createGlossary" data-type="term"> <i class="fa fa-plus"></i><span>Create Glossary</span>
                     </li>
                 </ul>
-            </button>
+            </button> -->
         </div>
     </div>
     <div id="c_term" class="panel-collapse collapse jstree-with-action in">
diff --git a/dashboardv3/public/js/templates/search/tree/NameSpaceTreeLayoutView_tmpl.html b/dashboardv3/public/js/templates/search/tree/NameSpaceTreeLayoutView_tmpl.html
new file mode 100644
index 0000000..52eca04
--- /dev/null
+++ b/dashboardv3/public/js/templates/search/tree/NameSpaceTreeLayoutView_tmpl.html
@@ -0,0 +1,45 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+-->
+<div class="panel panel-default expand_collapse_panel-icon right-icons">
+    <div class="panel-heading dash-button-icon clearfix" data-toggle="collapse" aria-expanded="true" href="#c_namespace">
+        <i class="ec-icon fa"></i>
+        <h4 class="panel-title">Namespaces</h4>
+        <div class="btn-group pull-right">
+            <button type="button" class="typeRefresh drop-down-menu-view" data-id="refreshTree" data-type="classification" title="Refresh">
+                <i class="fa fa-refresh"></i>
+            </button>
+            <button type="button" class="typeRefresh drop-down-menu-view" data-id="createNameSpace" data-type="classification" title="Open Namespaces">
+                <i class="fa fa-external-link"></i>
+            </button>
+            <!--    <button type="button" class="typeRefresh dropdown">
+                <div class=" btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                    <i class="fa fa-ellipsis-v"></i>
+                </div>
+                <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
+                    <li data-id="groupOrFlatTreeView" data-type="classification"> <i class="fa fa-list-ul"></i><span>Show flat tree</span>
+                    </li>
+                    <li data-id="createNameSpace" data-type="classification"> <i class="fa fa-plus"></i><span>Create Namespace</span>
+                    </li>
+            </button> -->
+            </ul>
+            </button>
+        </div>
+    </div>
+    <div id="c_namespace" class="panel-collapse collapse jstree-with-action in">
+        <div data-id="nameSpaceSearchTree"></div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/dashboardv3/public/js/templates/site/Header.html b/dashboardv3/public/js/templates/site/Header.html
index bb531da..8448964 100644
--- a/dashboardv3/public/js/templates/site/Header.html
+++ b/dashboardv3/public/js/templates/site/Header.html
@@ -29,8 +29,6 @@
                 <div class="btn-group pull-right header-menu">
                     <table class="header-menu">
                         <tr>
-                            <!-- <td><a class="show-classification" href="javascript:void(0);" title="Clasification"><i class="fa fa-tag"></i></a></td>
-                            <td><a class="show-glossary" href="javascript:void(0);" title="Glossary"><i class="fa fa-folder"></i></a></td> -->
                             <td><a class="show-stat" href="javascript:void(0);" title="Statistics"><i class="fa fa-bar-chart"></i></a></td>
                             <td class="user-dropdown">
                                 <table data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@@ -43,13 +41,17 @@
                                         </td>
                                     </tr>
                                 </table>
-                                <ul class="dropdown-menu right-align">
-                                    <li class="aboutAtlas"><a href="javascript:void(0)">About</a></li>
-                                    <li class="aboutAtlas"><a target="_blank" href="http://atlas.apache.org/">Help</a></li>
-                                    <li role="separator" class="divider"></li>
-                                    <li>
-                                        <a data-id="signOut" href="javascript:void(0)"><i class="fa fa-sign-out"></i>Logout</a>
+                                <ul class="dropdown-menu pull-right multi-level" role="menu" aria-labelledby="dropdownMenu">
+                                    <li><a href="#!/administrator" data-id="purgeSearch">Administration</a></li>
+                                    <li class="dropdown-submenu">
+                                        <a tabindex="-1" href="javascript:void(0)"> Help </span></a>
+                                        <ul class="dropdown-menu">
+                                            <li><a target="_blank" href="http://atlas.apache.org/">Documentation</a></li>
+                                            <li class="aboutAtlas"><a href="javascript:void(0)">About</a></li>
+                                        </ul>
                                     </li>
+                                    <li class="divider"></li>
+                                    <li><a data-id="signOut" href="javascript:void(0)"><i class="fa fa-sign-out"></i>Logout</a></li>
                                 </ul>
                             </td>
                         </tr>
diff --git a/dashboardv3/public/js/utils/Helper.js b/dashboardv3/public/js/utils/Helper.js
index f18cdc4..ccfde66 100644
--- a/dashboardv3/public/js/utils/Helper.js
+++ b/dashboardv3/public/js/utils/Helper.js
@@ -112,10 +112,90 @@ define(['require',
     $("body").on('click', '.dropdown-menu.dropdown-changetitle li a', function() {
         $(this).parents('li').find(".btn:first-child").html($(this).text() + ' <span class="caret"></span>');
     });
+    $("body").on('click', '.dropdown-menu.multi-level .dropdown-submenu>a', function(e) {
+        e.stopPropagation();
+        e.preventDefault();
+    });
     $("body").on('click', '.btn', function() {
         $(this).blur();
     });
 
+    $.fn.select2.amd.define("TagHideDeleteButtonAdapter", [
+            "select2/utils",
+            "select2/selection/multiple",
+            "select2/selection/placeholder",
+            "select2/selection/eventRelay",
+            "select2/selection/search",
+        ],
+        function(Utils, MultipleSelection, Placeholder, EventRelay, SelectionSearch) {
+
+            // Decorates MultipleSelection with Placeholder
+
+            var adapter = Utils.Decorate(MultipleSelection, Placeholder);
+            adapter = Utils.Decorate(adapter, SelectionSearch);
+            adapter = Utils.Decorate(adapter, EventRelay);
+
+            adapter.prototype.render = function() {
+                // Use selection-box from SingleSelection adapter
+                // This implementation overrides the default implementation
+                var $search = $(
+                    '<li class="select2-search select2-search--inline">' +
+                    '<input class="select2-search__field" type="search" tabindex="-1"' +
+                    ' autocomplete="off" autocorrect="off" autocapitalize="none"' +
+                    ' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
+                    '</li>'
+                );
+
+                this.$searchContainer = $search;
+                this.$search = $search.find('input');
+                let $selection = MultipleSelection.prototype.render.call(this);
+                this._transferTabIndex();
+                return $selection;
+            };
+
+            adapter.prototype.update = function(data) {
+                // copy and modify SingleSelection adapter
+                var that = this;
+                this.clear();
+                if (data.length === 0) {
+                    this.$selection.find('.select2-selection__rendered')
+                        .append(this.$searchContainer);
+                    this.$search.attr('placeholder', this.options.get("placeholder"));
+                    return;
+                }
+                this.$search.attr('placeholder', '');
+                var $rendered = this.$selection.find('.select2-selection__rendered'),
+                    $selectionContainer = [];
+                if (data.length > 0) {
+                    _.each(data, function(obj) {
+                        var $container = $('<li class="select2-selection__choice"></li>'),
+                            formatted = that.display(obj, $rendered),
+                            $remove = $('<span class="select2-selection__choice__remove" role="presentation">&times;</span>'),
+                            allowRemoveAttr = $(obj.element).data("allowremove"),
+                            allowRemove = obj.allowRemove === undefined ? allowRemoveAttr : obj.allowRemove;
+                        if (allowRemove === undefined || allowRemove !== false) {
+                            $container.append($remove);
+                        }
+                        $container.data("data", obj);
+                        $container.append(formatted);
+                        $selectionContainer.push($container);
+                    });
+                    Utils.appendMany($rendered, $selectionContainer);
+                }
+
+
+                var searchHadFocus = this.$search[0] == document.activeElement;
+                this.$search.attr('placeholder', '');
+                this.$selection.find('.select2-selection__rendered')
+                    .append(this.$searchContainer);
+                this.resizeSearch();
+                if (searchHadFocus) {
+                    this.$search.focus();
+                }
+            };
+            return adapter;
+        });
+
     $.fn.select2.amd.define("ServiceTypeFilterDropdownAdapter", [
             "select2/utils",
             "select2/dropdown",
diff --git a/dashboardv3/public/js/utils/Overrides.js b/dashboardv3/public/js/utils/Overrides.js
index 7e493d6..42d047e 100644
--- a/dashboardv3/public/js/utils/Overrides.js
+++ b/dashboardv3/public/js/utils/Overrides.js
@@ -95,6 +95,7 @@ define(['require', 'utils/Utils', 'marionette', 'backgrid', 'asBreadcrumbs', 'jq
                     });
                 }
                 if (modelValue.get('width')) that.$el.find('.' + modelValue.get('name')).css('min-width', modelValue.get('width') + 'px');
+                if (modelValue.get('fixWidth')) that.$el.find('.' + modelValue.get('name')).css('width', modelValue.get('fixWidth') + 'px');
                 if (modelValue.get('toolTip')) that.$el.find('.' + modelValue.get('name')).attr('title', modelValue.get('toolTip'));
             });
             return this;
@@ -161,6 +162,95 @@ define(['require', 'utils/Utils', 'marionette', 'backgrid', 'asBreadcrumbs', 'jq
 
         return this;
     };
+    /*
+          backgrid-expandable-cell
+          https://github.com/cime/backgrid-expandable-cell
+
+          Copyright (c) 2014 Andrej Cimperšek
+          Licensed under the MIT @license.
+        */
+    Backgrid.ExpandableCell = Backgrid.Cell.extend({
+        accordion: true,
+        toggle: '<i style="cursor: pointer;" class="glyphicon toggle pull-left"></i>',
+        toggleClass: 'toggle',
+        toggleExpandedClass: 'fa fa-angle-down',
+        toggleCollapsedClass: 'fa fa-angle-right',
+        trClass: 'expandable',
+        tdClass: 'expandable-content',
+        events: {
+            'click': 'setToggle'
+        },
+        initialize: function(options) {
+            if (options.accordion) {
+                this.accordion = options.accordion;
+            }
+
+            this.column = options.column;
+            if (!(this.column instanceof Backgrid.Column)) {
+                this.column = new Backgrid.Column(this.column);
+            }
+
+            var column = this.column,
+                model = this.model,
+                $el = this.$el;
+
+            if (Backgrid.callByNeed(column.renderable(), column, model)) $el.addClass("renderable");
+        },
+
+        render: function() {
+            /* follow along with the original render really... */
+            this.$el.empty();
+
+            this.$toggleEl = $(this.toggle).addClass(this.toggleClass).addClass(this.toggleCollapsedClass);
+
+            this.$el.append(this.$toggleEl);
+
+            this.delegateEvents();
+
+            return this;
+        },
+
+        setToggle: function() {
+            var detailsRow = this.$el.data('details');
+            var toggle = this.$toggleEl;
+
+            /* if there's details data already stored, then we'll remove it */
+            if (detailsRow) {
+                $(detailsRow).remove();
+                this.$el.data('details', null);
+                toggle.removeClass(this.toggleExpandedClass).addClass(this.toggleCollapsedClass);
+            } else {
+                if (this.accordion) {
+                    var table = this.$el.closest('table');
+                    $('.' + this.toggleClass, table).filter('.' + this.toggleExpandedClass).click();
+                }
+
+                var renderableColumns = this.$el.closest('table').find('th.renderable').length;
+                var isRenderable = false;
+                var cellClass = this.tdClass;
+
+                if (Backgrid.callByNeed(this.column.renderable(), this.column, this.model)) {
+                    isRenderable = true;
+                    cellClass += ' renderable';
+                }
+
+                /* build a jquery object for the new row... */
+                detailsRow = $('<tr class="' + this.trClass + '"></td><td class="' + cellClass + '" colspan="' + (renderableColumns - 1) + '"></td></tr>');
+
+                /* Inject new row */
+                this.$el.closest('tr').after(detailsRow);
+
+                /* Call expand function */
+                this.column.get('expand')(detailsRow.find('td.' + this.tdClass), this.model);
+
+                this.$el.data('details', detailsRow);
+
+                toggle.removeClass(this.toggleCollapsedClass).addClass(this.toggleExpandedClass);
+            }
+
+            return this;
+        }
+    });
 
     // Backgrid patch
     Backgrid.Header.prototype.initialize = BackgridHeaderInitializeMethod;
diff --git a/dashboardv3/public/js/utils/UrlLinks.js b/dashboardv3/public/js/utils/UrlLinks.js
index 6c67e8c..6a09d31 100644
--- a/dashboardv3/public/js/utils/UrlLinks.js
+++ b/dashboardv3/public/js/utils/UrlLinks.js
@@ -226,8 +226,28 @@ define(['require', 'utils/Enums', 'utils/Utils', 'underscore'], function(require
         },
         sessionApiUrl: function() {
             return this.baseUrl + '/admin/session';
+        },
+        purgeApiUrl: function() {
+            return this.baseUrl + '/admin/audit';
+        },
+        nameSpaceApiUrl: function() {
+            return this.typedefsUrl().defs + '?type=namespace';
+        },
+        nameSpaceGuidApiUrl: function(guid) {
+            var lineageUrl = this.baseUrlV2 + '/types/namespacedef/guid';
+            if (guid) {
+                return lineageUrl + '/' + guid;
+            } else {
+                return lineageUrl
+            }
+        },
+        nameSpaceUpdateUrl: function(name) {
+            if (name) {
+                return this.typedefsUrl().def + '/name/' + name;
+            } else {
+                return this.typedefsUrl().defs + '?type=namespace';
+            }
         }
-
     });
 
     return UrlLinks;
diff --git a/dashboardv3/public/js/utils/Utils.js b/dashboardv3/public/js/utils/Utils.js
index e336e41..7aab725 100644
--- a/dashboardv3/public/js/utils/Utils.js
+++ b/dashboardv3/public/js/utils/Utils.js
@@ -382,6 +382,12 @@ define(['require', 'utils/Globals', 'pnotify', 'utils/Messages', 'utils/Enums',
                 matchString: "search"
             });
         },
+        isAdministratorTab: function(url) {
+            return this.checkTabUrl({
+                url: url,
+                matchString: "administrator"
+            });
+        },
         isCustomFilterTab: function(url) {
             return this.checkTabUrl({
                 url: url,
diff --git a/dashboardv3/public/js/views/administrator/AdministratorLayoutView.js b/dashboardv3/public/js/views/administrator/AdministratorLayoutView.js
new file mode 100644
index 0000000..722059f
--- /dev/null
+++ b/dashboardv3/public/js/views/administrator/AdministratorLayoutView.js
@@ -0,0 +1,105 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+define(['require',
+    'backbone',
+    'hbs!tmpl/administrator/AdministratorLayoutView_tmpl',
+    'collection/VEntityList',
+    'models/VSearch',
+    'utils/Utils',
+    'utils/Enums',
+    'utils/UrlLinks',
+    'utils/CommonViewFunction'
+], function(require, Backbone, AdministratorLayoutView_tmpl, VEntityList, VSearch, Utils, Enums, UrlLinks, CommonViewFunction) {
+    'use strict';
+
+    var AdministratorLayoutView = Backbone.Marionette.LayoutView.extend(
+        /** @lends AuditTableLayoutView */
+        {
+            _viewName: 'AdministratorLayoutView',
+
+            template: AdministratorLayoutView_tmpl,
+
+            /** Layout sub regions */
+            regions: {
+                RNamespaceTableLayoutView: "#r_namespaceTableLayoutView",
+                REnumTableLayoutView: '#r_enumTableLayoutView'
+            },
+
+            /** ui selector cache */
+            ui: {
+                tablist: '[data-id="tab-list"] li'
+            },
+            /** ui events hash */
+            events: function() {
+                var events = {};
+                events["click " + this.ui.tablist] = function(e) {
+                    var tabValue = $(e.currentTarget).attr('role');
+                    Utils.setUrl({
+                        url: Utils.getUrlState.getQueryUrl().queyParams[0],
+                        urlParams: { tabActive: tabValue || 'properties' },
+                        mergeBrowserUrl: false,
+                        trigger: false,
+                        updateTabState: true
+                    });
+
+                };
+
+                return events;
+            },
+            /**
+             * intialize a new AuditTableLayoutView Layout
+             * @constructs
+             */
+            initialize: function(options) {
+                _.extend(this, _.pick(options, 'value', 'guid', 'entity', 'entityName', 'attributeDefs', 'nameSpaceCollection', 'enumDefCollection'));
+
+            },
+            onShow: function() {
+                if (this.value && this.value.tabActive) {
+                    this.$('.nav.nav-tabs').find('[role="' + this.value.tabActive + '"]').addClass('active').siblings().removeClass('active');
+                    this.$('.tab-content').find('[role="' + this.value.tabActive + '"]').addClass('active').siblings().removeClass('active');
+                    $("html, body").animate({ scrollTop: (this.$('.tab-content').offset().top + 1200) }, 1000);
+                }
+            },
+            bindEvents: function() {
+                this.renderEnumLayoutView();
+            },
+            onRender: function() {
+                this.renderNameSpaceLayoutView();
+                this.bindEvents();
+            },
+            renderNameSpaceLayoutView: function(obj) {
+                var that = this;
+                require(['views/name_space/NameSpaceTableLayoutView'], function(NameSpaceTableLayoutView) {
+                    that.RNamespaceTableLayoutView.show(new NameSpaceTableLayoutView({ nameSpaceCollection: that.nameSpaceCollection }));
+                });
+            },
+            renderEnumLayoutView: function(obj) {
+                var that = this;
+                require(["views/name_space/EnumCreateUpdateItemView"], function(EnumCreateUpdateItemView) {
+                    var view = new EnumCreateUpdateItemView({
+                        enumDefCollection: that.enumDefCollection,
+                        nameSpaceCollection: that.nameSpaceCollection
+                    });
+                    that.REnumTableLayoutView.show(view);
+                });
+            }
+        });
+    return AdministratorLayoutView;
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/administrator/PurgeAuditTableLayoutView.js b/dashboardv3/public/js/views/administrator/PurgeAuditTableLayoutView.js
new file mode 100644
index 0000000..6b5b4d3
--- /dev/null
+++ b/dashboardv3/public/js/views/administrator/PurgeAuditTableLayoutView.js
@@ -0,0 +1,518 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+define(['require',
+    'backbone',
+    'hbs!tmpl/audit/PurgeAuditTableLayoutView_tmpl',
+    'collection/VEntityList',
+    'models/VSearch',
+    'utils/Utils',
+    'utils/Enums',
+    'utils/UrlLinks',
+    'utils/CommonViewFunction'
+], function(require, Backbone, PurgeAuditTableLayoutView_tmpl, VEntityList, VSearch, Utils, Enums, UrlLinks, CommonViewFunction) {
+    'use strict';
+
+    var PurgeAuditTableLayoutView = Backbone.Marionette.LayoutView.extend(
+        /** @lends AuditTableLayoutView */
+        {
+            _viewName: 'PurgeAuditTableLayoutView',
+
+            template: PurgeAuditTableLayoutView_tmpl,
+
+            /** Layout sub regions */
+            regions: {
+                RAuditTableLayoutView: "#r_purgeAuditTableLayoutView",
+                RQueryBuilderPurge: "#r_attributeQueryBuilderPurge",
+                RNamespaceTableLayoutView: "#r_namespaceTableLayoutView"
+            },
+
+            /** ui selector cache */
+            ui: {
+                auditCreate: "[data-id='auditCreate']",
+                previousAuditData: "[data-id='previousAuditData']",
+                nextAuditData: "[data-id='nextAuditData']",
+                pageRecordText: "[data-id='pageRecordText']",
+                activePage: "[data-id='activePage']",
+                purgeEntityClick: "[data-id='purgeEntity']",
+                purgeType: "[data-id='purgeType']",
+                attrFilter: "[data-id='purgeAttrFilter']",
+                purgeRegion: "[data-id='purgeRegion']",
+                attrApply: "[data-id='attrApply']",
+                showDefault: "[data-id='showDefault']",
+                attrClose: "[data-id='attrClose']",
+                tablist: '[data-id="tab-list"] li'
+            },
+            /** ui events hash */
+            events: function() {
+                var events = {},
+                    that = this;
+                events["click " + this.ui.purgeEntityClick] = "onClickPurgeEntity";
+                events["change " + this.ui.purgeType] = "onClickPurgeType";
+                events["click " + this.ui.nextAuditData] = "onClickNextAuditData";
+                events["click " + this.ui.previousAuditData] = "onClickPreviousAuditData";
+                events["click " + this.ui.attrFilter] = function(e) {
+                    // this.$('.fa-chevron-right').toggleClass('fa-chevron-down');
+                    this.$('.fa-angle-right').toggleClass('fa-angle-down');
+                    this.$('.attributeResultContainer').addClass("overlay");
+                    this.$('.attribute-filter-container, .attr-filter-overlay').toggleClass('hide');
+                    // this.$('.attribute-filter-container').toggleClass('attribute-filter-container')
+                    this.onClickAttrFilter();
+                };
+                events["click " + this.ui.attrClose] = function(e) {
+                    that.closeAttributeModel();
+                };
+                events["click " + this.ui.attrApply] = function(e) {
+                    that.okAttrFilterButton(e);
+                };
+                events["click " + this.ui.tablist] = function(e) {
+                    var tabValue = $(e.currentTarget).attr('role');
+                    Utils.setUrl({
+                        url: Utils.getUrlState.getQueryUrl().queyParams[0],
+                        urlParams: { tabActive: tabValue || 'properties' },
+                        mergeBrowserUrl: false,
+                        trigger: false,
+                        updateTabState: true
+                    });
+
+                };
+                return events;
+            },
+            /**
+             * intialize a new AuditTableLayoutView Layout
+             * @constructs
+             */
+            initialize: function(options) {
+                _.extend(this, _.pick(options, 'value', 'guid', 'entity', 'entityName', 'attributeDefs', 'nameSpaceCollection'));
+                this.entityCollection = new VEntityList();
+                this.limit = 26;
+                this.entityCollection.url = UrlLinks.purgeApiUrl();
+                this.entityCollection.modelAttrName = "events";
+                this.entityModel = new this.entityCollection.model();
+                this.pervOld = [];
+                this.onlyPurge = true;
+                this.commonTableOptions = {
+                    collection: this.entityCollection,
+                    includeFilter: false,
+                    includePagination: false,
+                    includePageSize: false,
+                    includeAtlasTableSorting: true,
+                    includeFooterRecords: false,
+                    gridOpts: {
+                        className: "table table-hover backgrid table-quickMenu",
+                        emptyText: 'No records found!'
+                    },
+                    filterOpts: {},
+                    paginatorOpts: {}
+                };
+                this.currPage = 1;
+                this.isFilters = null;
+                this.purgeAttrFilters = [{
+                    "id": "startTime",
+                    "label": "startTime (date)",
+                    "operators": [
+                        "=",
+                        "!=",
+                        ">",
+                        "<",
+                        ">=",
+                        "<="
+                    ],
+                    "optgroup": "Select Purge Attribute",
+                    "plugin": "daterangepicker",
+                    "plugin_config": {
+                        "locale": {
+                            "format": "MM/DD/YYYY h:mm A"
+                        },
+                        "showDropdowns": true,
+                        "singleDatePicker": true,
+                        "timePicker": true
+                    },
+                    "type": "date"
+                }, {
+                    "id": "endTime",
+                    "label": "endTime (date)",
+                    "operators": [
+                        "=",
+                        "!=",
+                        ">",
+                        "<",
+                        ">=",
+                        "<="
+                    ],
+                    "optgroup": "Select Purge Attribute",
+                    "plugin": "daterangepicker",
+                    "plugin_config": {
+                        "locale": {
+                            "format": "MM/DD/YYYY h:mm A"
+                        },
+                        "showDropdowns": true,
+                        "singleDatePicker": true,
+                        "timePicker": true
+                    },
+                    "type": "date"
+                }]
+            },
+            onRender: function() {
+                var str = '<option>All</option><option>Purge</option>';
+                this.ui.purgeType.html(str);
+                this.ui.purgeType.select2({});
+                this.bindEvents();
+                this.ui.purgeRegion.hide();
+                this.getPurgeParam();
+                this.entityCollection.comparator = function(model) {
+                    return -model.get('timestamp');
+                }
+            },
+            onShow: function() {
+                if (this.value && this.value.tabActive) {
+                    this.$('.nav.nav-tabs').find('[role="' + this.value.tabActive + '"]').addClass('active').siblings().removeClass('active');
+                    this.$('.tab-content').find('[role="' + this.value.tabActive + '"]').addClass('active').siblings().removeClass('active');
+                    $("html, body").animate({ scrollTop: (this.$('.tab-content').offset().top + 1200) }, 1000);
+                }
+            },
+            bindEvents: function() {
+                this.renderNameSpaceLayoutView();
+            },
+
+            renderNameSpaceLayoutView: function(obj) {
+                var that = this;
+                require(['views/name_space/AllNameSpaceTableLayoutView'], function(AllNameSpaceTableLayoutView) {
+                    that.RNamespaceTableLayoutView.show(new AllNameSpaceTableLayoutView({ nameSpaceCollection: that.nameSpaceCollection }));
+                });
+            },
+            getToOffset: function() {
+                return ((this.limit - 1) * this.currPage);
+            },
+            getFromOffset: function(toOffset) {
+                // +2 because of toOffset is alrady in minus and limit is +1;
+                return ((toOffset - this.limit) + 2);
+            },
+            renderOffset: function(options) {
+                var entityLength;
+                if (options.nextClick) {
+                    options.previous.removeAttr("disabled");
+                    if (this.entityCollection.length != 0) {
+                        this.currPage++;
+
+                    }
+                } else if (options.previousClick) {
+                    options.next.removeAttr("disabled");
+                    if (this.currPage > 1 && this.entityCollection.models.length) {
+                        this.currPage--;
+                    }
+                }
+                if (this.entityCollection.models.length === this.limit) {
+                    // Because we have 1 extra record.
+                    entityLength = this.entityCollection.models.length - 1;
+                } else {
+                    entityLength = this.entityCollection.models.length
+                }
+                this.ui.activePage.attr('title', "Page " + this.currPage);
+                this.ui.activePage.text(this.currPage);
+                var toOffset = this.getToOffset();
+                this.ui.pageRecordText.html("Showing  <u>" + entityLength + " records</u> From " + this.getFromOffset(toOffset) + " - " + toOffset);
+            },
+            getPurgeParam: function() {
+                var that = this;
+                that.fetchCollection({
+                    next: that.ui.nextAuditData,
+                    nextClick: false,
+                    previous: that.ui.previousAuditData,
+                    isPurge: that.onlyPurge
+                });
+            },
+            closeAttributeModel: function() {
+                var that = this;
+                that.$('.attributeResultContainer').removeClass("overlay");
+                that.$('.fa-angle-right').toggleClass('fa-angle-down');
+                that.$('.attribute-filter-container, .attr-filter-overlay').toggleClass('hide');
+            },
+            getAttributes: function() {
+                var purgeAttributes = [{
+                    "attributeName": "operation",
+                    "operator": "like",
+                    "attributeValue": "PURGE"
+                }];
+                if (!this.onlyPurge) {
+                    purgeAttributes.push({
+                        "attributeName": "userName",
+                        "operator": "like",
+                        "attributeValue": "admin"
+                    })
+                }
+                if (this.isFilters) {
+                    _.each(this.isFilters, function(purgeFilter) {
+                        purgeAttributes.push({
+                            "attributeName": purgeFilter.id,
+                            "operator": purgeFilter.operator,
+                            "attributeValue": Date.parse(purgeFilter.value).toString(),
+                        })
+                    })
+                    this.isFilters = null;
+                }
+                return purgeAttributes;
+            },
+
+            renderQueryBuilder: function(obj, rQueryBuilder) {
+                var that = this;
+                require(['views/search/QueryBuilderView'], function(QueryBuilderView) {
+                    rQueryBuilder.show(new QueryBuilderView(obj));
+                });
+            },
+            onClickAttrFilter: function() {
+                var that = this;
+                this.ui.purgeRegion.show();
+                require(['views/search/QueryBuilderView'], function(QueryBuilderView) {
+                    that.RQueryBuilderPurge.show(new QueryBuilderView({ purgeAttrFilters: that.purgeAttrFilters }));
+                });
+
+            },
+            okAttrFilterButton: function(options) {
+                var that = this,
+                    isFilterValidate = true,
+                    queryBuilderRef = that.RQueryBuilderPurge.currentView.ui.builder;
+                if (queryBuilderRef.data("queryBuilder")) {
+                    var queryBuilder = queryBuilderRef.queryBuilder("getRules");
+                    queryBuilder ? that.isFilters = queryBuilder.rules : isFilterValidate = false;
+                }
+                if (isFilterValidate) {
+                    that.closeAttributeModel();
+                    that.getPurgeParam();
+                }
+            },
+            fetchCollection: function(options) {
+                var that = this,
+                    purgeParam = {
+                        condition: "AND",
+                        criterion: that.getAttributes()
+                    };
+                this.$('.fontLoader').show();
+                this.$('.tableOverlay').show();
+                if (that.entityCollection.models.length > 1) {
+                    if (options.nextClick) {
+                        this.pervOld.push(that.entityCollection.first().get('eventKey'));
+                    }
+                }
+                var apiObj = {
+                    skipDefaultError: true,
+                    sort: false,
+                    success: function(dataOrCollection, response) {
+                        if (!(that.ui.pageRecordText instanceof jQuery)) {
+                            return;
+                        }
+                        that.entityCollection.fullCollection.reset(dataOrCollection);
+                        if (that.entityCollection.models.length < that.limit) {
+                            options.previous.attr('disabled', true);
+                            options.next.attr('disabled', true);
+                        }
+                        that.renderOffset(options);
+                        that.entityCollection.sort();
+                        if (that.entityCollection.models.length) {
+                            if (that.entityCollection && (that.entityCollection.models.length < that.limit && that.currPage == 1) && that.next == that.entityCollection.last().get('eventKey')) {
+                                options.next.attr('disabled', true);
+                                options.previous.removeAttr("disabled");
+                            } else {
+                                that.next = that.entityCollection.last().get('eventKey');
+                                if (that.pervOld.length === 0) {
+                                    options.previous.attr('disabled', true);
+                                }
+                            }
+                        }
+                        that.renderTableLayoutView();
+                        that.$('.fontLoader').hide();
+                        that.$('.tableOverlay').hide();
+                        that.$('.auditTable').show(); // Only for first time table show because we never hide after first render.
+                    },
+                    silent: true,
+                    reset: true
+                }
+                $.extend(that.entityCollection.queryParams, { limit: 25, offset: 0, auditFilters: purgeParam });
+                $.extend(apiObj, { contentType: 'application/json', dataType: 'json', data: JSON.stringify(that.entityCollection.queryParams) })
+                this.entityCollection.constructor.nonCrudOperation.call(this, UrlLinks.purgeApiUrl(), "POST", apiObj);
+            },
+            renderTableLayoutView: function() {
+                var that = this;
+
+                this.ui.showDefault.hide();
+                require(['utils/TableLayout'], function(TableLayout) {
+                    var cols = new Backgrid.Columns(that.getAuditTableColumns());
+                    that.RAuditTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
+                        columns: cols
+                    })));
+                    if (!(that.entityCollection.models.length < that.limit)) {
+                        that.RAuditTableLayoutView.$el.find('table tr').last().hide();
+                    }
+                });
+            },
+            getAuditTableColumns: function() {
+                var that = this;
+                return this.entityCollection.constructor.getTableCols({
+                    result: {
+                        label: "",
+                        cell: "html",
+                        editable: false,
+                        sortable: false,
+                        cell: Backgrid.ExpandableCell,
+                        fixWidth: "20",
+                        accordion: false,
+                        expand: function(el, model) {
+                            var purgeValues = '';
+                            if (model.attributes.params) {
+                                var guids = model.attributes.result.replace('[', '').replace(']', '').split(',');
+                                _.each(guids, function(purgeGuid) {
+                                    // purgeGuid.trim();
+                                    purgeValues += '<a class="blue-link" data-id="purgeEntity" >' + purgeGuid.trim() + '</a></br>';
+                                })
+                            } else {
+                                purgeValues = '';
+                            }
+                            var purgeText = '<div class="row"><div class="col-sm-2">Purge Entities: </div><div class="col-sm-10">' + purgeValues + '</div></div>';
+                            /* set expanded row's content */
+                            $(el).append($('<div>').html(purgeText));
+
+                        }
+                    },
+                    userName: {
+                        label: "Users",
+                        cell: "html",
+                        editable: false,
+                        sortable: function(e, attr, order) {
+                            return function(left, right) {
+
+                                // no-op
+                                if (order == null) return 0;
+
+                                var l = left.get(attr),
+                                    r = right.get(attr),
+                                    t;
+
+                                // if descending order, swap left and right
+                                if (order === 1) t = l, l = r, r = t;
+
+                                // compare as usual
+                                if (l === r) return 0;
+                                else if (l < r) return -1;
+                                return 1;
+                            }
+                        }
+                    },
+                    operation: {
+                        label: "Operation",
+                        cell: "String",
+                        editable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                if (rawValue === "PURGE" && model.attributes.params) {
+                                    var purgeLength = model.attributes.result.replace('[', '').replace(']', '').split(',').length;
+                                    return purgeLength === 1 ? purgeLength + " entity purged." : purgeLength + " entities purged.";
+                                } else {
+                                    return "No entity purged.";
+                                }
+
+                            }
+                        })
+                    },
+                    clientId: {
+                        label: "Client ID",
+                        cell: "String",
+                        editable: false
+                    },
+                    startTime: {
+                        label: "Start Time",
+                        cell: "html",
+                        editable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                return new Date(rawValue);
+                            }
+                        })
+                    },
+                    endTime: {
+                        label: "End Time",
+                        cell: "html",
+                        editable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                return new Date(rawValue);
+                            }
+                        })
+                    }
+                }, this.entityCollection);
+
+            },
+            onClickPurgeType: function(e, value) {
+                this.onlyPurge = e.currentTarget.value === "Purge" ? true : false;
+                this.getPurgeParam();
+            },
+            onClickPurgeEntity: function(e) {
+                var that = this;
+                require([
+                    'modules/Modal', 'views/audit/AuditTableLayoutView', 'views/audit/CreateAuditTableLayoutView',
+                ], function(Modal, AuditTableLayoutView, CreateAuditTableLayoutView) {
+                    var obj = {
+                            guid: $(e.target).text(),
+                        },
+                        modal = new Modal({
+                            title: "Purged Entity Details : " + obj.guid,
+                            content: new AuditTableLayoutView(obj),
+                            mainClass: "modal-full-screen",
+                            okCloses: true,
+                            showFooter: false,
+                        }).open();
+
+                    modal.on('closeModal', function() {
+                        $('.modal').css({ 'padding-right': '0px !important' });
+                        modal.trigger('cancel');
+                    });
+                    modal.$el.on('click', 'td a', function() {
+                        modal.trigger('cancel');
+                    });
+                });
+            },
+            onClickNextAuditData: function() {
+                var that = this;
+                this.ui.previousAuditData.removeAttr("disabled");
+                $.extend(this.entityCollection.queryParams, {
+                    startKey: function() {
+                        return that.next;
+                    }
+                });
+                this.fetchCollection({
+                    next: this.ui.nextAuditData,
+                    nextClick: true,
+                    previous: this.ui.previousAuditData
+                });
+            },
+            onClickPreviousAuditData: function() {
+                var that = this;
+                this.ui.nextAuditData.removeAttr("disabled");
+                $.extend(this.entityCollection.queryParams, {
+                    startKey: function() {
+                        return that.pervOld.pop();
+                    }
+                });
+                this.fetchCollection({
+                    next: this.ui.nextAuditData,
+                    previousClick: true,
+                    previous: this.ui.previousAuditData
+                });
+            },
+        });
+    return PurgeAuditTableLayoutView;
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/audit/AuditTableLayoutView.js b/dashboardv3/public/js/views/audit/AuditTableLayoutView.js
index ed570ea..ea52a45 100644
--- a/dashboardv3/public/js/views/audit/AuditTableLayoutView.js
+++ b/dashboardv3/public/js/views/audit/AuditTableLayoutView.js
@@ -179,6 +179,31 @@ define(['require',
             getAuditTableColumns: function() {
                 var that = this;
                 return this.entityCollection.constructor.getTableCols({
+
+                    tool: {
+                        label: "",
+                        cell: "html",
+                        editable: false,
+                        sortable: false,
+                        cell: Backgrid.ExpandableCell,
+                        accordion: false,
+                        expand: function(el, model) {
+                            el.attr('colspan', '4');
+                            require([
+                                'views/audit/CreateAuditTableLayoutView',
+                            ], function(CreateAuditTableLayoutView) {
+
+                                that.action = model.get('action');
+                                // $(el.target).attr('disabled', true);
+                                var eventModel = that.entityCollection.fullCollection.findWhere({ 'eventKey': model.get('eventKey') }).toJSON(),
+                                    collectionModel = new that.entityCollection.model(eventModel),
+                                    view = new CreateAuditTableLayoutView({ guid: that.guid, entityModel: collectionModel, action: that.action, entity: that.entity, entityName: that.entityName, attributeDefs: that.attributeDefs });
+                                view.render();
+                                $(el).append($('<div>').html(view.$el));
+                            });
+
+                        }
+                    },
                     user: {
                         label: "Users",
                         cell: "html",
@@ -207,20 +232,7 @@ define(['require',
                                 }
                             }
                         })
-                    },
-                    tool: {
-                        label: "Tools",
-                        cell: "html",
-                        editable: false,
-                        sortable: false,
-                        width: 100,
-                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
-                            fromRaw: function(rawValue, model) {
-                                return '<div class="btn btn-action btn-sm" data-id="auditCreate" data-action="' + Enums.auditAction[model.get('action')] + '" data-modalId="' + model.get('eventKey') + '">Detail</div>';
-                            }
-                        })
-                    },
-
+                    }
                 }, this.entityCollection);
 
             },
diff --git a/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js b/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js
index 43fb114..89f5337 100644
--- a/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js
+++ b/dashboardv3/public/js/views/audit/CreateAuditTableLayoutView.js
@@ -157,7 +157,7 @@ define(['require',
                     }
 
                 } else if (detailObj == "Deleted entity") {
-                    that.updateName(this.entityName);
+                    that.updateName(this.entityName ? this.entityName : "Entity");
                 }
             }
         });
diff --git a/dashboardv3/public/js/views/name_space/CreateNameSpaceLayoutView.js b/dashboardv3/public/js/views/name_space/CreateNameSpaceLayoutView.js
new file mode 100644
index 0000000..16d6a6d
--- /dev/null
+++ b/dashboardv3/public/js/views/name_space/CreateNameSpaceLayoutView.js
@@ -0,0 +1,591 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+define(['require',
+    'backbone',
+    'hbs!tmpl/name_space/CreateNameSpaceLayoutView_tmpl',
+    'utils/Utils',
+    'utils/Messages',
+    'views/name_space/NameSpaceAttributeItemView',
+    'collection/VTagList',
+    'utils/UrlLinks',
+    'platform'
+], function(require, Backbone, CreateNameSpaceLayoutViewTmpl, Utils, Messages, NameSpaceAttributeItemView, VTagList, UrlLinks, platform) {
+
+    var CreateNameSpaceLayoutView = Backbone.Marionette.CompositeView.extend(
+        /** @lends CreateNameSpaceLayoutView */
+        {
+            _viewName: 'CreateNameSpaceLayoutView',
+
+            template: CreateNameSpaceLayoutViewTmpl,
+
+            templateHelpers: function() {
+                return {
+                    create: this.create,
+                    description: this.description,
+                    fromTable: this.fromTable,
+                    isEditAttr: this.isEditAttr
+                };
+            },
+
+            /** Layout sub regions */
+            regions: {},
+
+            childView: NameSpaceAttributeItemView,
+
+            childViewContainer: "[data-id='addAttributeDiv']",
+
+            childViewOptions: function() {
+                return {
+                    // saveButton: this.ui.saveButton,
+                    parentView: this
+                };
+            },
+            /** ui selector cache */
+            ui: {
+                tagName: "[data-id='tagName']",
+                description: "[data-id='description']",
+                title: "[data-id='title']",
+                attributeData: "[data-id='attributeData']",
+                addAttributeDiv: "[data-id='addAttributeDiv']",
+                createTagForm: '[data-id="createTagForm"]',
+                namespaceAttrPageCancle: '[data-id="namespaceAttrPageCancle"]',
+                namespaceAttrPageOk: '[data-id="namespaceAttrPageOk"]'
+            },
+            /** ui events hash */
+            events: function() {
+                var events = {};
+                events["click " + this.ui.attributeData] = "onClickAddAttriBtn";
+                events["click " + this.ui.namespaceAttrPageOk] = function(e) {
+                    var that = this,
+                        modal = that.$el;
+                    if (e.target.dataset.action == "attributeEdit" || e.target.dataset.action == "addAttribute") {
+                        // var selectedNamespace = that.nameSpaceCollection.fullCollection.findWhere({ guid: that.guid });
+                        that.onUpdateAttr();
+                    } else {
+                        if (that.$el.find('.form-control.namespace-name')[0].value === "") {
+                            $(that.$el.find('.form-control.namespace-name')[0]).css("borderColor", "red");
+                            Utils.notifyInfo({
+                                content: "Namespace name is empty."
+                            });
+
+                        } else {
+                            that.onCreateNameSpace();
+                        }
+                    }
+
+                };
+                events["click " + this.ui.namespaceAttrPageCancle] = function(e) {
+                    this.options.onUpdateNamespace();
+                };
+                return events;
+            },
+            /**
+             * intialize a new CreateNameSpaceLayoutView Layout
+             * @constructs
+             */
+            initialize: function(options) {
+                _.extend(this, _.pick(options, 'tagCollection', 'enumDefCollection', 'model', 'tag', 'descriptionData', 'selectedTag', 'isNewNameSpace', 'isAttrEdit', 'entityDefCollection', 'typeHeaders', 'attrDetails'));
+                this.fromTable = this.isNewNameSpace ? true : false;
+                this.isEditAttr = this.isAttrEdit ? false : true;
+                if (this.model) {
+                    this.description = this.model.get('description');
+                } else {
+                    this.create = true;
+                }
+                if (!this.isNewNameSpace) {
+                    this.collection = this.isAttrEdit ? new Backbone.Collection([{
+                        "name": this.attrDetails.name,
+                        "typeName": this.attrDetails.attrTypeName,
+                        "isOptional": true,
+                        "cardinality": "SINGLE",
+                        "valuesMinCount": 0,
+                        "valuesMaxCount": 1,
+                        "isUnique": false,
+                        "isIndexable": false
+                    }]) : new Backbone.Collection([{
+                        "name": "",
+                        "typeName": "string",
+                        "isOptional": true,
+                        "cardinality": "SINGLE",
+                        "valuesMinCount": 0,
+                        "valuesMaxCount": 1,
+                        "isUnique": false,
+                        "isIndexable": false
+                    }]);
+                } else {
+                    this.collection = new Backbone.Collection();
+                }
+
+            },
+            bindEvents: function() {},
+            onRender: function() {
+                var that = this;
+                this.$('.fontLoader').show();
+                if (this.create) {
+                    this.tagCollectionList();
+                } else {
+                    this.ui.title.html('<span>' + _.escape(this.tag) + '</span>');
+                }
+                if (!('placeholder' in HTMLInputElement.prototype)) {
+                    this.ui.createTagForm.find('input,textarea').placeholder();
+                }
+                if (this.isNewNameSpace == true) {
+                    that.ui.namespaceAttrPageOk.text("Create");
+                    that.ui.namespaceAttrPageOk.attr('data-action', 'newNamespace');
+                } else {
+                    that.ui.namespaceAttrPageOk.text("Save");
+                    that.ui.namespaceAttrPageOk.attr('data-action', 'attributeEdit');
+                }
+                this.hideLoader();
+            },
+            tagCollectionList: function() {
+                var that = this,
+                    str = '';
+                this.tagCollection.fullCollection.each(function(val) {
+                    var name = Utils.getName(val.toJSON());
+                    str += '<option ' + (name == that.selectedTag ? 'selected' : '') + '>' + (name) + '</option>';
+                });
+            },
+            hideLoader: function() {
+                this.$('.fontLoader').hide();
+                this.$('.hide').removeClass('hide');
+            },
+            collectionAttribute: function() {
+                this.collection.add(new Backbone.Model({
+                    "name": "",
+                    "typeName": "string",
+                    "isOptional": true,
+                    "cardinality": "SINGLE",
+                    "valuesMinCount": 0,
+                    "valuesMaxCount": 1,
+                    "isUnique": false,
+                    "isIndexable": false
+                }));
+            },
+            onClickAddAttriBtn: function() {
+                this.collectionAttribute();
+                if (!('placeholder' in HTMLInputElement.prototype)) {
+                    this.ui.addAttributeDiv.find('input,textarea').placeholder();
+                }
+
+            },
+            loaderStatus: function(isActive) {
+                var that = this;
+                if (isActive) {
+                    parent.$('.namespace-attr-tableOverlay').show();
+                    parent.$('.namespace-attr-fontLoader').show();
+                } else {
+                    parent.$('.namespace-attr-tableOverlay').hide();
+                    parent.$('.namespace-attr-fontLoader').hide();
+                }
+            },
+            validateValues: function() {
+                var attrNameValidate = true,
+                    enumValue = true,
+                    stringValidate = true,
+                    enumType = true;
+
+                this.ui;
+                if (this.$el.find(".attributeInput").length > 0) {
+                    this.$el.find(".attributeInput").each(function() {
+                        if ($(this).val() === "") {
+                            $(this).css("borderColor", "red");
+                            attrNameValidate = false;
+                        }
+                    });
+                }
+                if (this.$el.find(".enumvalue-container").length > 0 && this.$el.find(".enumvalue-container")[0].style.display != 'none') {
+                    this.$el.find(".enumvalue-container").each(function(index) {
+                        if (this.style.display != 'none') {
+                            if ($(this).find(".enumValueSelector").length > 0) {
+                                $(this).find(".enumValueSelector").each(function(index) {
+                                    if ($(this).val().length === 0) {
+                                        $(this).css("borderColor", "red");
+                                        enumValue = false;
+                                    }
+                                });
+                            }
+                        }
+                    })
+                }
+                if (this.$el.find(".enumtype-container").length > 0 && this.$el.find(".enumtype-container")[0].style.display != 'none') {
+                    this.$el.find(".enumtype-container").each(function(index) {
+                        if (this.style.display != 'none') {
+                            if ($(this).find(".enumTypeSelector").length > 0) {
+                                $(this).find(".enumTypeSelector").each(function(index) {
+                                    if ($(this).val() == null || $(this).val() == '' || $(this).val().length === 0) {
+                                        $(this).css("borderColor", "red");
+                                        enumType = false;
+                                    }
+                                });
+                            }
+                        }
+                    })
+                }
+                if (this.$el.find(".stringlength-container").length > 0 && this.$el.find(".stringlength-container")[0].style.display != 'none') {
+                    this.$el.find(".stringlength-container").each(function(index) {
+                        if (this.style.display != 'none') {
+                            if ($(this).find(".stringLengthVal").length > 0) {
+                                $(this).find(".stringLengthVal").each(function(index) {
+                                    if ($(this).val().length === 0) {
+                                        $(this).css("borderColor", "red");
+                                        stringValidate = false;
+                                    }
+                                });
+                            }
+                        };
+                    })
+                }
+
+                this.$el.find(".attributeInput").keyup(function() {
+                    $(this).css("borderColor", "#e8e9ee");
+                });
+                if (!attrNameValidate) {
+                    Utils.notifyInfo({
+                        content: "Please fill the attributes details"
+                    });
+                    return true;
+                }
+                if (!enumType) {
+                    Utils.notifyInfo({
+                        content: "Please enter the Enumeration Name or select another type"
+                    });
+                    return true;
+                }
+                if (!enumValue) {
+                    Utils.notifyInfo({
+                        content: "Please enter the Enum values or select another type"
+                    });
+                    return true;
+                }
+                if (!stringValidate) {
+                    Utils.notifyInfo({
+                        content: "Please enter the Max Length for string or select another type"
+                    });
+                    return true;
+                }
+            },
+            onCreateNameSpace: function() {
+                var that = this,
+                    validate = true,
+                    attrNameValidate = true,
+                    enumValue = true,
+                    stringValidate = true,
+                    isPutCall = false,
+                    isPostCallEnum = false,
+                    enumDefs = [],
+                    putEnumDef = [];
+                this.checkLoader = 0;
+
+                if (this.validateValues()) {
+                    return;
+                };
+                this.loaderStatus(true);
+                var name = this.ui.tagName.val(),
+                    description = _.escape(this.ui.description.val());
+                var attributeObj = this.collection.toJSON();
+                if (this.collection.length === 1 && this.collection.first().get("name") === "") {
+                    attributeObj = [];
+                }
+                if (attributeObj.length) {
+                    _.each(attributeObj, function(obj) {
+                        var isMultiCheck = obj.multiValueSelect;
+                        obj.options = {
+                            "applicableEntityTypes": JSON.stringify(that.$el.find(".entityTypeSelector").val()),
+                            "maxStrLength": that.$el.find(".stringLengthVal").val() ? that.$el.find(".stringLengthVal").val() : "0"
+                        };
+                        if (obj.typeName != "string" && obj.typeName != "boolean" && obj.typeName != "byte" && obj.typeName != "short" && obj.typeName != "int" && obj.typeName != "float" && obj.typeName != "double" && obj.typeName != "long" && obj.typeName != "date") {
+                            obj.typeName = obj.typeName;
+                            var enumName = enumDefCollection.fullCollection.findWhere({ name: obj.typeName });
+                            if (enumName) {
+                                var enumDef = enumName.get('elementDefs');
+                                if (enumDef.length === obj.enumValues.length) {
+                                    _.each(enumDef, function(enumVal, index) {
+                                        if (obj.enumValues.indexOf(enumVal.value) === -1) {
+                                            isPutCall = true;
+                                        };
+                                    })
+                                } else {
+                                    isPutCall = true;
+                                }
+                            } else {
+                                isPostCallEnum = true;
+                            }
+                            var elementValues = [];
+                            _.each(obj.enumValues, function(inputEnumVal, index) {
+                                elementValues.push({
+                                    "ordinal": index + 1,
+                                    "value": inputEnumVal
+                                })
+                            });
+                            if (isPostCallEnum) {
+                                enumDefs.push({
+                                    "name": obj.typeName,
+                                    "elementDefs": elementValues
+                                })
+                            }
+                            if (isPutCall) {
+                                putEnumDef.push({
+                                    "name": obj.typeName,
+                                    "elementDefs": elementValues
+                                })
+                            }
+                        }
+                        if (isMultiCheck) {
+                            obj.multiValued = true;
+                            if (obj.typeName == "string" || obj.typeName == "int" || obj.typeName == "float") {
+                                obj.typeName = "array<" + obj.typeName + ">";
+                            }
+                        }
+                    });
+                    var notifyObj = {
+                        modal: true,
+                        confirm: {
+                            confirm: true,
+                            buttons: [{
+                                    text: "Ok",
+                                    addClass: "btn-atlas btn-md",
+                                    click: function(notice) {
+                                        notice.remove();
+                                    }
+                                },
+                                null
+                            ]
+                        }
+                    };
+                }
+                this.json = {
+                    "enumDefs": enumDefs,
+                    "structDefs": [],
+                    "classificationDefs": [],
+                    "entityDefs": [],
+                    "namespaceDefs": [{
+                        "category": "NAMESPACE",
+                        "createdBy": "admin",
+                        "updatedBy": "admin",
+                        "version": 1,
+                        "typeVersion": "1.1",
+                        "name": name.trim(),
+                        "description": description.trim(),
+                        "attributeDefs": attributeObj
+                    }]
+                };
+
+                var apiObj = {
+                    sort: false,
+                    success: function(model, response) {
+                        var nameSpaveDef = model.namespaceDefs;
+                        if (nameSpaveDef) {
+                            that.options.nameSpaceCollection.fullCollection.add(nameSpaveDef);
+                            Utils.notifySuccess({
+                                content: "Namespace " + name + Messages.getAbbreviationMsg(false, 'addSuccessMessage')
+                            });
+                        }
+                        that.checkLoader--;
+                        if (that.checkLoader == 0) {
+                            that.options.onUpdateNamespace();
+                        }
+                    },
+                    silent: true,
+                    reset: true,
+                    complete: function(model, status) {
+                        that.loaderStatus(false);
+                    }
+                }
+                that.checkLoader++;
+                $.extend(apiObj, { contentType: 'application/json', dataType: 'json', data: JSON.stringify(that.json) })
+                this.options.nameSpaceCollection.constructor.nonCrudOperation.call(this, UrlLinks.nameSpaceApiUrl(), "POST", apiObj);
+                if (isPutCall) {
+                    var putData = {
+                        "enumDefs": putEnumDef
+                    };
+                    that.checkLoader++;
+                    $.extend(apiObj, { contentType: 'application/json', dataType: 'json', data: JSON.stringify(putData) })
+                    this.options.nameSpaceCollection.constructor.nonCrudOperation.call(this, UrlLinks.typedefsUrl().defs, "PUT", apiObj);
+                }
+            },
+            onUpdateAttr: function() {
+                var that = this,
+                    attrNameValidate = true,
+                    enumValue = true,
+                    stringValidate = true,
+                    attributeDefs = that.options.selectedNamespace.get('attributeDefs'),
+                    enumDefs = [],
+                    postEnumDef = [],
+                    isPutCall = false,
+                    isPostCallEnum = false;
+                this.checkLoader = 0;
+                if (this.validateValues()) {
+                    return;
+                };
+                if (this.$el.find(".namespace-attr").length > 0 && this.collection.length > 0) {
+
+                    this.loaderStatus(true);
+                    var attributeObj = this.collection.toJSON(),
+                        name = this.collection.first().get("name"),
+                        multipleName = '';
+                    if (this.collection.length === 1 && this.collection.first().get("name") === "") {
+                        attributeObj = [];
+                    }
+                    if (attributeObj.length > 0) {
+                        _.each(attributeObj, function(obj) {
+                            var isMultiCheck = obj.multiValueSelect;
+                            multipleName += obj.name + ", ";
+                            obj.options = {
+                                "applicableEntityTypes": JSON.stringify(that.$el.find(".entityTypeSelector").val()),
+                                "maxStrLength": that.$el.find(".stringLengthVal").val() ? that.$el.find(".stringLengthVal").val() : "0"
+                            };
+                            if (obj.typeName != "string" && obj.typeName != "boolean" && obj.typeName != "byte" && obj.typeName != "short" && obj.typeName != "int" && obj.typeName != "float" && obj.typeName != "double" && obj.typeName != "long" && obj.typeName != "date") {
+                                var enumName = enumDefCollection.fullCollection.findWhere({ name: obj.typeName });
+                                if (enumName) {
+                                    var enumDef = enumName.get('elementDefs');
+                                    if (enumDef.length === obj.enumValues.length) {
+                                        _.each(enumDef, function(enumVal, index) {
+                                            if (obj.enumValues.indexOf(enumVal.value) === -1) {
+                                                isPutCall = true;
+                                            };
+                                        })
+                                    } else {
+                                        isPutCall = true;
+                                    }
+                                } else {
+                                    isPostCallEnum = true;
+                                }
+                                var elementValues = [];
+                                _.each(obj.enumValues, function(inputEnumVal, index) {
+                                    elementValues.push({
+                                        "ordinal": index + 1,
+                                        "value": inputEnumVal
+                                    })
+                                });
+                                if (isPostCallEnum) {
+                                    postEnumDef.push({
+                                        "name": obj.typeName,
+                                        "elementDefs": elementValues
+                                    })
+
+                                } else if (isPutCall) {
+                                    enumDefs.push({
+                                        "name": obj.typeName,
+                                        "elementDefs": elementValues
+                                    })
+                                }
+                            }
+                            if (isMultiCheck) {
+                                obj.multiValued = true;
+                                if (obj.typeName == "string" || obj.typeName == "int" || obj.typeName == "float") {
+                                    obj.typeName = "array<" + obj.typeName + ">";
+                                }
+                            }
+
+                        });
+                        var notifyObj = {
+                            modal: true,
+                            confirm: {
+                                confirm: true,
+                                buttons: [{
+                                        text: "Ok",
+                                        addClass: "btn-atlas btn-md",
+                                        click: function(notice) {
+                                            notice.remove();
+                                        }
+                                    },
+                                    null
+                                ]
+                            }
+                        };
+                        if (that.options.isNewAttr == true) {
+                            _.each(attributeObj, function(obj) {
+                                attributeDefs.push(obj);
+                            })
+                        } else {
+                            var selectedNamespaceUpdateCopy = that.options.selectedNamespace;
+                            var attrDef = selectedNamespaceUpdateCopy.toJSON().attributeDefs;
+                            _.each(attrDef, function(attrObj) {
+                                if (attrObj.name === that.$el.find(".attributeInput")[0].value) {
+                                    attrObj.name = attributeObj[0].name;
+                                    attrObj.typeName = attributeObj[0].typeName;
+                                    attrObj.multiValued = attributeObj[0].multiValueSelect || false;
+                                    attrObj.options.applicableEntityTypes = attributeObj[0].options.applicableEntityTypes;
+                                    attrObj.enumValues = attributeObj[0].enumValues;
+                                    attrObj.options.maxStrLength = attributeObj[0].options.maxStrLength;
+                                }
+                            });
+                        }
+                        var putNameSpace = function() {
+                            that.checkLoader++;
+                            $.extend(apiObj, { contentType: 'application/json', dataType: 'json', data: JSON.stringify(that.json) })
+                            that.options.nameSpaceCollection.constructor.nonCrudOperation.call(that, UrlLinks.nameSpaceUpdateUrl(), "PUT", apiObj);
+                        }
+                        this.json = {
+                            "enumDefs": enumDefs,
+                            "structDefs": [],
+                            "classificationDefs": [],
+                            "entityDefs": [],
+                            "namespaceDefs": that.options.isNewAttr ? [that.options.selectedNamespace.toJSON()] : [selectedNamespaceUpdateCopy.toJSON()]
+                        };
+                        var apiObj = {
+                            sort: false,
+                            success: function(model, response) {
+                                if (model.namespaceDefs.length === 0 && model.enumDefs.length) {
+                                    putNameSpace();
+                                } else {
+                                    var selectedNameSpace = that.options.nameSpaceCollection.fullCollection.findWhere({ guid: that.options.guid });
+                                    Utils.notifySuccess({
+                                        content: "One or more Namespace attribute" + Messages.getAbbreviationMsg(false, 'editSuccessMessage')
+                                    });
+                                    if (model.namespaceDefs && model.namespaceDefs.length) {
+                                        that.options.selectedNamespace.set(model.namespaceDefs[0]);
+                                    }
+                                    that.options.onEditCallback();
+                                }
+                                that.checkLoader--;
+                                if (that.checkLoader == 0) {
+                                    that.options.onUpdateNamespace();
+                                }
+
+                            },
+                            silent: true,
+                            reset: true,
+                            complete: function(model, status) {
+                                that.loaderStatus(false);
+                            }
+                        }
+                        if (isPostCallEnum) {
+                            var postData = {
+                                "enumDefs": postEnumDef
+                            };
+                            this.checkLoader++;
+                            $.extend(apiObj, { contentType: 'application/json', dataType: 'json', data: JSON.stringify(postData) })
+                            this.options.nameSpaceCollection.constructor.nonCrudOperation.call(this, UrlLinks.typedefsUrl().defs, "POST", apiObj);
+                        } else {
+                            putNameSpace();
+                        }
+                    }
+                } else {
+                    Utils.notifySuccess({
+                        content: "No attribute updated"
+                    });
+                    this.loaderStatus(false);
+                    that.options.onUpdateNamespace();
+                }
+            }
+        });
+    return CreateNameSpaceLayoutView;
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/name_space/EnumCreateUpdateItemView.js b/dashboardv3/public/js/views/name_space/EnumCreateUpdateItemView.js
new file mode 100644
index 0000000..bf8dd2e
--- /dev/null
+++ b/dashboardv3/public/js/views/name_space/EnumCreateUpdateItemView.js
@@ -0,0 +1,256 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+define(["require", "backbone", "hbs!tmpl/name_space/EnumCreateUpdateItemView_tmpl", "utils/Utils", "utils/UrlLinks", "utils/Messages"], function(
+    require,
+    Backbone,
+    EnumCreateUpdateItemViewTmpl,
+    Utils,
+    UrlLinks,
+    Messages
+) {
+    "use strict";
+
+    return Backbone.Marionette.ItemView.extend(
+        /** @lends GlobalExclusionListView */
+        {
+            template: EnumCreateUpdateItemViewTmpl,
+
+            /** Layout sub regions */
+            regions: {},
+
+            /** ui selector cache */
+            ui: {
+                enumTypeSelectorContainer: "[data-id='enumTypeSelectorContainer']",
+                enumSelector: "[data-id='enumSelector']",
+                enumValueSelectorContainer: "[data-id='enumValueSelectorContainer']",
+                valueSelector: "[data-id='valueSelector']",
+                enumCancleBtn: "[data-id='enumCancleBtn']",
+                enumOkBtn: "[data-id='enumOkBtn']"
+            },
+            /** ui events hash */
+            events: function() {
+                var events = {};
+                events["change " + this.ui.enumSelector] = function(e) {
+                    this.model.set({ enumValues: e.target.value.trim() });
+                };
+                events["change " + this.ui.enumSelector] = function(e) {
+                    var emumValue = this.ui.enumSelector.select2("data")[0] ?
+                        this.ui.enumSelector.select2("data")[0].text :
+                        this.ui.enumSelector.val();
+                    if (emumValue == "" || emumValue == null) {
+                        this.ui.enumValueSelectorContainer.hide();
+                    } else {
+                        this.ui.enumValueSelectorContainer.show();
+                        this.showEnumValues(emumValue);
+                    }
+                };
+                events["change " + this.ui.valueSelector] = function(e) {};
+                events["click " + this.ui.enumCancleBtn] = function(e) {
+                    if (this.options.closeModal) {
+                        this.options.closeModal();
+                        return;
+                    }
+                    this.ui.enumValueSelectorContainer.hide();
+                    this.ui.enumSelector.val("").trigger("change");
+                    this.ui.enumCancleBtn.attr("disabled", "true");
+                };
+                events["click " + this.ui.enumOkBtn] = function(e) {
+                    this.onUpdateEnum();
+                };
+                return events;
+            },
+
+            /**
+             * intialize a new GlobalExclusionComponentView Layout
+             * @constructs
+             */
+            initialize: function(options) {
+                this.enumDefCollection = options.enumDefCollection;
+                this.nameSpaceCollection = options.nameSpaceCollection;
+            },
+            onRender: function() {
+                var that = this,
+                    entitytypes = "",
+                    enumTypes = [];
+                this.ui.enumValueSelectorContainer.hide();
+                this.emumTypeSelectDisplay();
+                if (!this.options.closeModal) {
+                    this.ui.enumCancleBtn.attr("disabled", "true");
+                    this.ui.enumCancleBtn.text("Clear");
+                }
+            },
+            showEnumValues: function(enumName) {
+                var enumValues = "",
+                    selectedValues = [],
+                    selectedEnum = this.enumDefCollection.fullCollection.findWhere({ name: enumName }),
+                    selectedEnumValues = selectedEnum ? selectedEnum.get("elementDefs") : null,
+                    savedValues = [];
+                _.each(selectedEnumValues, function(enumVal, index) {
+                    selectedValues.push(_.unescape(enumVal.value));
+                    enumValues += "<option>" + enumVal.value + "</option>";
+                });
+
+                this.ui.enumCancleBtn.removeAttr("disabled");
+                this.ui.valueSelector.empty();
+                this.ui.valueSelector.append(enumValues);
+                this.ui.valueSelector.val(selectedValues);
+                this.ui.valueSelector.select2({
+                    placeholder: "Select Enum value",
+                    allowClear: false,
+                    tags: true,
+                    multiple: true
+                });
+            },
+            emumTypeSelectDisplay: function() {
+                var enumTypes = "";
+                this.enumDefCollection.fullCollection.each(function(model, index) {
+                    enumTypes += "<option>" + _.escape(model.get("name")) + "</option>";
+                });
+                this.ui.enumSelector.empty();
+                this.ui.enumSelector.append(enumTypes);
+                this.ui.enumSelector.val("");
+                this.ui.enumSelector.select2({
+                    placeholder: "Select Enum name",
+                    tags: true,
+                    allowClear: true,
+                    multiple: false,
+                    templateResult: this.formatSearchResult
+                });
+            },
+            formatSearchResult: function(state) {
+                if (!state.id) {
+                    return state.text;
+                }
+                if (!state.element) {
+                    return $("<span>Create new enum : <strong> " + _.escape(state.text) + "</strong></span>");
+                } else {
+                    return $("<span>" + _.escape(state.text) + "</span>");
+                }
+            },
+            validationEnum: function() {
+                var selectedEnumName = this.ui.enumSelector.val(),
+                    selectedEnumValues = this.ui.valueSelector.val();
+
+                if (selectedEnumName == "" || selectedEnumName == null) {
+                    this.ui.enumOkBtn.removeAttr("disabled");
+                    Utils.notifyInfo({
+                        content: "Please enter the Enumeration Name"
+                    });
+                    return true;
+                }
+                if (selectedEnumValues == "" || selectedEnumValues == null) {
+                    this.ui.enumOkBtn.removeAttr("disabled");
+                    Utils.notifyInfo({
+                        content: "Please  enter the Enum values"
+                    });
+                    return true;
+                }
+            },
+            onUpdateEnum: function(view, modal) {
+                var that = this,
+                    selectedEnumName = this.ui.enumSelector.val(),
+                    selectedEnumValues = this.ui.valueSelector.val(),
+                    enumName = this.enumDefCollection.fullCollection.findWhere({ name: selectedEnumName }),
+                    isPutCall = false,
+                    isPostCallEnum = false,
+                    enumDefs = [];
+                if (this.validationEnum()) {
+                    return;
+                }
+                this.ui.enumOkBtn.attr("disabled", "true");
+                if (enumName) {
+                    var enumDef = enumName.get("elementDefs");
+                    if (enumDef.length === selectedEnumValues.length) {
+                        _.each(enumDef, function(enumVal, index) {
+                            if (selectedEnumValues.indexOf(enumVal.value) === -1) {
+                                isPutCall = true;
+                            }
+                        });
+                    } else {
+                        isPutCall = true;
+                    }
+                } else {
+                    isPostCallEnum = true;
+                }
+                var elementValues = [];
+                _.each(selectedEnumValues, function(inputEnumVal, index) {
+                    elementValues.push({
+                        ordinal: index + 1,
+                        value: _.escape(inputEnumVal)
+                    });
+                });
+
+                enumDefs.push({
+                    name: selectedEnumName,
+                    elementDefs: elementValues
+                });
+
+                this.json = {
+                    enumDefs: enumDefs
+                };
+                var apiObj = {
+                    sort: false,
+                    success: function(model, response) {
+                        that.ui.enumValueSelectorContainer.hide();
+                        if (isPostCallEnum) {
+                            that.enumDefCollection.add(model.enumDefs[0]);
+                            Utils.notifySuccess({
+                                content: "Enumeration " + selectedEnumName + " added successfully"
+                            });
+                        } else {
+                            var foundEnum = that.enumDefCollection.fullCollection.find({ guid: model.enumDefs[0].guid })
+                            if (foundEnum) {
+                                foundEnum.set(model.enumDefs[0]);
+                            }
+                            Utils.notifySuccess({
+                                content: "Enumeration " + selectedEnumName + " updated successfully"
+                            });
+                        }
+                        if (that.options.onUpdateEnum) {
+                            that.options.onUpdateEnum();
+                        }
+                        that.ui.enumCancleBtn.attr("disabled", "true");
+                    },
+                    silent: true,
+                    reset: true,
+                    complete: function(model, status) {
+                        that.emumTypeSelectDisplay();
+                        that.ui.enumOkBtn.removeAttr("disabled");
+                        if (that.options.closeModal) {
+                            that.options.closeModal();
+                        }
+                    }
+                };
+                $.extend(apiObj, { contentType: "application/json", dataType: "json", data: JSON.stringify(this.json) });
+                if (isPostCallEnum) {
+                    this.nameSpaceCollection.constructor.nonCrudOperation.call(this, UrlLinks.typedefsUrl().defs, "POST", apiObj);
+                } else if (isPutCall) {
+                    this.nameSpaceCollection.constructor.nonCrudOperation.call(this, UrlLinks.typedefsUrl().defs, "PUT", apiObj);
+                } else {
+                    Utils.notifySuccess({
+                        content: "No updated values"
+                    });
+                    that.ui.enumOkBtn.removeAttr("disabled");
+                    if (that.options.closeModal) {
+                        that.options.closeModal();
+                    }
+                }
+            }
+        }
+    );
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/name_space/NameSpaceAttrTableLayoutView.js b/dashboardv3/public/js/views/name_space/NameSpaceAttrTableLayoutView.js
new file mode 100644
index 0000000..218f9c5
--- /dev/null
+++ b/dashboardv3/public/js/views/name_space/NameSpaceAttrTableLayoutView.js
@@ -0,0 +1,232 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+define(['require',
+    'backbone',
+    'hbs!tmpl/name_space/NameSpaceAttrTableLayoutView_tmpl',
+    'collection/VEntityList',
+    'collection/VTagList',
+    'models/VSearch',
+    'utils/Utils',
+    'utils/Messages',
+    'utils/Enums',
+    'utils/UrlLinks',
+    'utils/CommonViewFunction'
+], function(require, Backbone, NameSpaceAttrTableLayoutView_tmpl, VEntityList, VTagList, VSearch, Utils, Messages, Enums, UrlLinks, CommonViewFunction) {
+    'use strict';
+
+    var NameSpaceAttrTableLayoutView = Backbone.Marionette.LayoutView.extend(
+        /** @lends NameSpaceAttrTableLayoutView */
+        {
+            _viewName: 'NameSpaceAttrTableLayoutView',
+
+            template: NameSpaceAttrTableLayoutView_tmpl,
+
+            /** Layout sub regions */
+            regions: {
+                RNameSpaceAttrTableLayoutView: "#r_nameSpaceAttrTableLayoutView",
+                RModal: "#r_modal"
+            },
+
+            /** ui selector cache */
+            ui: {
+                attributeEdit: "[data-id='attributeEdit']",
+                addAttribute: '[data-id="addAttribute"]',
+                namespaceAttrPage: "[data-id='namespaceAttrPage']",
+                namespaceAttrPageTitle: "[data-id='namespaceAttrPageTitle']",
+                namespaceDetailPage: "[data-id='namespaceDetailPage']",
+            },
+            /** ui events hash */
+            events: function() {
+                var events = {};
+                events["click " + this.ui.attributeEdit] = "onEditAttr";
+                events["click " + this.ui.addAttribute] = "onEditAttr";
+                return events;
+            },
+            /**
+             * intialize a new NameSpaceAttrTableLayoutView Layout
+             * @constructs
+             */
+            initialize: function(options) {
+                _.extend(this, _.pick(options, 'guid', 'entity', 'entityName', 'attributeDefs', 'typeHeaders', 'nameSpaceCollection', 'nameSpaceAttr'));
+                this.commonTableOptions = {
+                    collection: this.nameSpaceAttr,
+                    includeFilter: false,
+                    includePagination: false,
+                    includePageSize: false,
+                    includeAtlasTableSorting: true,
+                    includeFooterRecords: false,
+                    gridOpts: {
+                        className: "table table-hover backgrid table-quickMenu",
+                        emptyText: 'No records found!'
+                    },
+                    filterOpts: {},
+                    paginatorOpts: {}
+                };
+                this.isFilters = null;
+                this.showDetails = true;
+            },
+            onRender: function() {
+                this.toggleNamespaceDetailsAttrView();
+                if (this.nameSpaceCollection.models.length && !this.model) {
+                    this.model = this.nameSpaceCollection.fullCollection.findWhere({ guid: this.guid });
+                    Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.tagDetail'));
+                    this.renderTableLayoutView();
+                }
+            },
+            bindEvents: function() {},
+            toggleNamespaceDetailsAttrView: function() {
+                var that = this;
+                if (that.showDetails) {
+                    that.ui.namespaceAttrPage.hide();
+                    that.ui.namespaceDetailPage.show();
+                } else {
+                    that.ui.namespaceAttrPage.show();
+                    that.ui.namespaceDetailPage.hide();
+                }
+            },
+            onEditAttr: function(e) {
+                var that = this,
+                    isAttrEdit = false,
+                    selectedNamespace = that.nameSpaceCollection.fullCollection.findWhere({ guid: that.guid }),
+                    attrributes = selectedNamespace ? selectedNamespace.get('attributeDefs') : null,
+                    attrName = e.target.dataset.name ? e.target.dataset.name : null,
+                    attrDetails = { name: attrName };
+                if (e.target.dataset.action == 'attributeEdit') {
+                    isAttrEdit = true
+                }
+                if (selectedNamespace) {
+                    that.newAttr = isAttrEdit ? false : true;
+                    _.each(attrributes, function(attrObj) {
+                        if (attrObj.name === attrName) {
+                            attrDetails.attrTypeName = attrObj.typeName;
+                            if (attrObj.typeName.includes('array')) {
+                                attrDetails.attrTypeName = attrObj.typeName.replace("array<", "").replace(">", "");
+                                attrDetails.multiValued = true;
+                            }
+                            attrDetails.attrEntityType = attrObj.options && attrObj.options.applicableEntityTypes ? JSON.parse(attrObj.options.applicableEntityTypes) : null;
+                            attrDetails.maxStrLength = attrObj.options && attrObj.options.maxStrLength ? attrObj.options.maxStrLength : null;
+                            attrDetails.enumValues = attrObj.enumValues ? attrObj.enumValues : null;
+                        }
+                    });
+                    this.showDetails = false;
+                    that.toggleNamespaceDetailsAttrView();
+                    require(["views/name_space/CreateNameSpaceLayoutView"], function(CreateNameSpaceLayoutView) {
+                        that.view = new CreateNameSpaceLayoutView({
+                            onEditCallback: function() {
+                                enumDefCollection.fetch({ reset: true });
+                                that.nameSpaceAttr.fullCollection.reset();
+                                that.options.selectedNameSpace.fetch({
+                                    skipDefaultError: true,
+                                    complete: function(model, status) {
+                                        that.nameSpaceAttr.fullCollection.add(model.responseJSON.attributeDefs);
+                                    }
+                                });
+                            },
+                            onUpdateNamespace: function() {
+                                that.renderTableLayoutView();
+                                that.showDetails = true;
+                                that.toggleNamespaceDetailsAttrView();
+                            },
+                            parent: that.$el,
+                            tagCollection: that.nameSpaceCollection,
+                            enumDefCollection: enumDefCollection,
+                            isAttrEdit: isAttrEdit,
+                            attrDetails: attrDetails,
+                            typeHeaders: typeHeaders,
+                            selectedNamespace: selectedNamespace,
+                            nameSpaceCollection: nameSpaceCollection,
+                            guid: that.guid,
+                            isNewAttr: that.newAttr
+                        });
+                        if (isAttrEdit) {
+                            that.ui.namespaceAttrPageTitle.text("Update Attribute of: " + selectedNamespace.get('name'));
+                        } else {
+                            that.ui.namespaceAttrPageTitle.text("Add Namespace Attribute for: " + selectedNamespace.get('name'));
+                        }
+                        that.RModal.show(that.view);
+                    });
+                }
+
+            },
+            renderTableLayoutView: function() {
+                var that = this;
+                require(['utils/TableLayout'], function(TableLayout) {
+                    var cols = new Backgrid.Columns(that.getNamespaceTableColumns());
+                    that.RNameSpaceAttrTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
+                        columns: cols
+                    })));
+                    if (!(that.nameSpaceAttr.models.length < that.limit)) {
+                        // that.RNameSpaceAttrTableLayoutView.$el.find('table tr').last().hide();
+                    }
+                });
+            },
+            getNamespaceTableColumns: function() {
+                var that = this;
+                return this.nameSpaceAttr.constructor.getTableCols({
+                        name: {
+                            label: "Attribute Name",
+                            cell: "html",
+                            editable: false,
+                            formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                                fromRaw: function(rawValue, model) {
+                                    return model.get('name');
+                                }
+                            })
+                        },
+                        typeName: {
+                            label: "typeName",
+                            cell: "html",
+                            editable: false,
+                            formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                                fromRaw: function(rawValue, model) {
+                                    return model.get('typeName');
+                                }
+                            })
+                        },
+                        options: {
+                            label: "Entity Type(s)",
+                            cell: "html",
+                            editable: false,
+                            formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                                    fromRaw: function(rawValue, model) {
+                                        var applicableEntityTypes = '',
+                                            attrEntityTypes = JSON.parse(model.get('options').applicableEntityTypes);
+                                        _.each(attrEntityTypes, function(values) {
+                                            applicableEntityTypes += '<label class="btn btn-action btn-xs btn-blue no-pointer">' + values + '</label>';
+                                        });
+                                    return applicableEntityTypes;
+                                }
+                            })
+                    },
+                    tool: {
+                        label: "Action",
+                        cell: "html",
+                        editable: false,
+                        sortable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                return '<div class="btn btn-action btn-sm" data-id="attributeEdit" data-action="attributeEdit" data-name="' + model.get('name') + '">Edit</div>';
+                            }
+                        })
+                    }
+                }, this.nameSpaceAttr);
+        }
+    });
+return NameSpaceAttrTableLayoutView;
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/name_space/NameSpaceAttributeItemView.js b/dashboardv3/public/js/views/name_space/NameSpaceAttributeItemView.js
new file mode 100644
index 0000000..ce99726
--- /dev/null
+++ b/dashboardv3/public/js/views/name_space/NameSpaceAttributeItemView.js
@@ -0,0 +1,266 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+define(['require',
+    'backbone',
+    'hbs!tmpl/name_space/NameSpaceAttributeItemView_tmpl',
+    'utils/Utils',
+    'utils/UrlLinks',
+    'utils/Messages'
+
+], function(require, Backbone, NameSpaceAttributeItemViewTmpl, Utils, UrlLinks, Messages) {
+    'use strict';
+
+    return Backbone.Marionette.ItemView.extend(
+        /** @lends GlobalExclusionListView */
+        {
+
+            template: NameSpaceAttributeItemViewTmpl,
+
+            /** Layout sub regions */
+            regions: {},
+
+            /** ui selector cache */
+            ui: {
+                attributeInput: "[data-id='attributeInput']",
+                close: "[data-id='close']",
+                dataTypeSelector: "[data-id='dataTypeSelector']",
+                entityTypeSelector: "[data-id='entityTypeSelector']",
+                enumTypeSelectorContainer: "[data-id='enumTypeSelectorContainer']",
+                enumTypeSelector: "[data-id='enumTypeSelector']",
+                enumValueSelectorContainer: "[data-id='enumValueSelectorContainer']",
+                enumValueSelector: "[data-id='enumValueSelector']",
+                multiValueSelect: "[data-id='multiValueSelect']",
+                multiValueSelectStatus: "[data-id='multiValueSelectStatus']",
+                stringLengthContainer: "[data-id='stringLengthContainer']",
+                stringLengthValue: "[data-id='stringLength']",
+                createNewEnum: "[data-id='createNewEnum']"
+            },
+            /** ui events hash */
+            events: function() {
+                var events = {};
+                events["keyup " + this.ui.attributeInput] = function(e) {
+                    this.model.set({ "name": e.target.value.trim() });
+                };
+                events["change " + this.ui.dataTypeSelector] = function(e) {
+                    //this.ui.multiValueSelect.hide();
+                    if (e.target.value.trim() === 'enumeration' || e.target.value.trim() === 'Enumeration') {
+                        // this.model.set({ "typeName": "enum" });
+                        this.ui.enumTypeSelectorContainer.show();
+                        this.emumTypeSelectDisplay();
+                        this.ui.stringLengthContainer.hide();
+                    } else if (e.target.value.trim() === 'string' || e.target.value.trim() === 'String') {
+                        this.model.set({ "typeName": e.target.value.trim() });
+                        this.model.set({ "enumValues": null });
+                        this.ui.stringLengthContainer.show();
+                        //this.ui.multiValueSelect.show();
+                        this.ui.enumTypeSelectorContainer.hide();
+                        this.ui.enumValueSelectorContainer.hide();
+                    } else {
+                        // if (e.target.value.trim() === 'int' || e.target.value.trim() === 'float') {
+                        //     this.ui.multiValueSelect.show();
+                        // }
+                        this.model.set({ "typeName": e.target.value.trim() });
+                        this.model.set({ "enumValues": null });
+                        this.ui.enumTypeSelectorContainer.hide();
+                        this.ui.enumValueSelectorContainer.hide();
+                        this.ui.stringLengthContainer.hide();
+                    }
+                };
+                events["change " + this.ui.enumTypeSelector] = function(e) {
+                    this.model.set({ "enumValues": e.target.value.trim() });
+                };
+                events["change " + this.ui.stringLengthContainer] = function(e) {
+                    this.model.set({ "maxStrLength": e.target.value.trim() });
+                };
+                events["change " + this.ui.enumTypeSelector] = function(e) {
+                    var emumValue = this.ui.enumTypeSelector.select2('data')[0] ? this.ui.enumTypeSelector.select2('data')[0].text : this.ui.enumTypeSelector.val();
+
+                    this.model.set({ "typeName": emumValue });
+                    if (emumValue == '' || emumValue == null) {
+                        this.ui.enumValueSelectorContainer.hide();
+                    } else {
+                        this.ui.enumValueSelectorContainer.show();
+                        this.showEnumValues(_.escape(emumValue));
+                    }
+                };
+                events["change " + this.ui.enumValueSelector] = function(e) {
+                    this.model.set({ "enumValues": this.ui.enumValueSelector.val() });
+                };
+                // events["change " + this.ui.multiValueSelectStatus] = function(e) {
+                //     this.model.set({ "multiValueSelect": e.target.checked });
+                // };
+                events["click " + this.ui.close] = 'onCloseButton';
+                events["click " + this.ui.createNewEnum] = 'onCreateUpdateEnum';
+                return events;
+            },
+
+            /**
+             * intialize a new GlobalExclusionComponentView Layout
+             * @constructs
+             */
+            initialize: function(options) {
+                this.parentView = options.parentView;
+
+            },
+            onRender: function() {
+                var that = this,
+                    entitytypes = '',
+                    enumTypes = [];
+                this.parentView.typeHeaders.fullCollection.each(function(model) {
+                    if (model.toJSON().category == "ENTITY") {
+                        that.ui.entityTypeSelector.append("<option>" + model.get('name') + "</option>");
+                        entitytypes += '<option  value="' + (model.get('name')) + '" data-name="' + (model.get('name')) + '">' + model.get('name') + '</option>';
+                    }
+                });
+                this.ui.entityTypeSelector.select2({
+                    placeholder: "Select Entity type",
+                    allowClear: true,
+                    multiple: true,
+                    selectionAdapter: $.fn.select2.amd.require("TagHideDeleteButtonAdapter")
+                });
+                this.ui.entityTypeSelector.html(entitytypes);
+
+                this.ui.entityTypeSelector.on('select2:open', function(e) { // to make selected option disable in dropdown added remove-from-list class
+                    $('.select2-dropdown--below').addClass('remove-from-list');
+                });
+                this.ui.stringLengthValue.val('50'); //default length for string is 50
+                this.ui.enumValueSelector.attr("disabled", "false"); // cannot edit the values
+                this.emumTypeSelectDisplay();
+                this.ui.enumTypeSelectorContainer.hide();
+                this.ui.enumValueSelectorContainer.hide();
+                if (this.parentView.isAttrEdit) {
+                    this.ui.close.hide();
+                    this.ui.createNewEnum.hide(); // cannot add new namespace on edit view
+                    this.ui.attributeInput.val(this.parentView.attrDetails.name);
+                    this.ui.attributeInput.attr("disabled", "false");
+                    this.ui.dataTypeSelector.attr("disabled", "false");
+                    this.ui.dataTypeSelector.attr("disabled", "false");
+                    //this.ui.multiValueSelect.hide();
+                    this.ui.dataTypeSelector.val(this.parentView.attrDetails.attrTypeName);
+                    if (this.parentView.attrDetails.attrTypeName == "string") {
+                        this.ui.stringLengthContainer.show();
+                        this.ui.stringLengthValue.val(this.parentView.attrDetails.maxStrLength);
+                    } else {
+                        this.ui.stringLengthContainer.hide();
+                    }
+
+                    _.each(this.parentView.attrDetails.attrEntityType, function(valName) {
+                        that.ui.entityTypeSelector.find('option').each(function(o) {
+                            var $el = $(this)
+                            if ($el.data("name") === valName) {
+                                $el.attr("data-allowremove", "false");
+                            }
+                        })
+                    });
+                    this.ui.entityTypeSelector.val(this.parentView.attrDetails.attrEntityType).trigger('change');
+                    if (this.parentView.attrDetails && this.parentView.attrDetails.attrTypeName) {
+                        var typeName = this.parentView.attrDetails.attrTypeName;
+                        if (typeName != "string" && typeName != "boolean" && typeName != "byte" && typeName != "short" && typeName != "int" && typeName != "float" && typeName != "double" && typeName != "long" && typeName != "date") {
+                            this.ui.enumTypeSelector.attr("disabled", "false");
+                            this.ui.dataTypeSelector.val("enumeration").trigger('change');
+                            this.ui.enumTypeSelector.val(typeName).trigger('change');
+                        }
+                    }
+                    // if (this.parentView.attrDetails.multiValued) {
+                    //     this.ui.multiValueSelect.show();
+                    //     $(this.ui.multiValueSelectStatus).prop('checked', true).trigger('change');
+                    //     this.ui.multiValueSelectStatus.attr("disabled", "false");
+                    // }
+                }
+            },
+            showEnumValues: function(enumName) {
+                var enumValues = '',
+                    selectedValues = [],
+                    selectedEnum = this.parentView.enumDefCollection.fullCollection.findWhere({ name: enumName }),
+                    selectedEnumValues = selectedEnum ? selectedEnum.get('elementDefs') : null,
+                    savedValues = [];
+                _.each(selectedEnumValues, function(enumVal, index) {
+                    selectedValues.push(_.unescape(enumVal.value));
+                    enumValues += "<option>" + enumVal.value + "</option>";
+                });
+                this.ui.enumValueSelector.empty();
+                this.ui.enumValueSelector.append(enumValues);
+                this.ui.enumValueSelector.val(selectedValues);
+                this.ui.enumValueSelector.select2({
+                    placeholder: "Select Enum value",
+                    allowClear: false,
+                    tags: false,
+                    multiple: true
+                });
+                this.model.set({ "enumValues": this.ui.enumValueSelector.val() });
+            },
+            emumTypeSelectDisplay: function() {
+                var enumTypes = '';
+                this.parentView.enumDefCollection.fullCollection.each(function(model, index) {
+                    enumTypes += "<option>" + _.escape(model.get('name')) + "</option>";
+                });
+                this.ui.enumTypeSelector.empty();
+                this.ui.enumTypeSelector.append(enumTypes);
+                this.ui.enumTypeSelector.val('');
+                this.ui.enumTypeSelector.select2({
+                    placeholder: "Select Enum name",
+                    tags: false,
+                    allowClear: true,
+                    multiple: false
+                });
+            },
+            onCreateUpdateEnum: function(e) {
+                var that = this;
+                require(["views/name_space/EnumCreateUpdateItemView", "modules/Modal"], function(EnumCreateUpdateItemView, Modal) {
+                    var view = new EnumCreateUpdateItemView({
+                            onUpdateEnum: function() {
+                                that.ui.enumValueSelectorContainer.hide();
+                                that.emumTypeSelectDisplay();
+                                that.ui.enumValueSelector.empty();
+                            },
+                            closeModal: function() {
+                                modal.trigger("cancel");
+                                that.parentView.enumDefCollection.fetch({
+                                    success: function() {
+                                        that.ui.enumTypeSelector.val(that.model.get('typeName')).trigger('change');
+                                    }
+                                });
+                            },
+                            enumDefCollection: that.parentView.enumDefCollection,
+                            nameSpaceCollection: that.parentView.options.nameSpaceCollection
+                        }),
+                        modal = new Modal({
+                            title: "Create/ Update Enum",
+                            content: view,
+                            cancelText: "Cancel",
+                            okCloses: false,
+                            okText: "Update",
+                            allowCancel: true,
+                            showFooter: false
+                        }).open();
+                    modal.on('closeModal', function() {
+                        modal.trigger('cancel');
+                    });
+                });
+            },
+            onCloseButton: function() {
+                var tagName = this.parentView.$el.find('[data-id="tagName"]').val();
+                if (this.parentView.collection.models.length > 0) {
+                    this.model.destroy();
+                }
+                if (this.parentView.collection.models.length == 0 && tagName != "") {
+                    this.parentView.$el.parent().next().find('button.ok').removeAttr("disabled");
+                }
+            }
+        });
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/name_space/NameSpaceContainerLayoutView.js b/dashboardv3/public/js/views/name_space/NameSpaceContainerLayoutView.js
new file mode 100644
index 0000000..3874a8d
--- /dev/null
+++ b/dashboardv3/public/js/views/name_space/NameSpaceContainerLayoutView.js
@@ -0,0 +1,117 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+define([
+    "require",
+    "backbone",
+    "hbs!tmpl/name_space/NameSpaceContainerLayoutView_tmpl",
+    'collection/VEntityList',
+    "utils/Utils",
+    "utils/Messages",
+    "utils/Globals",
+    "utils/UrlLinks",
+    "models/VTag"
+], function(require, Backbone, NameSpaceContainerLayoutViewTmpl, VEntityList, Utils, Messages, Globals, UrlLinks, VTag) {
+    "use strict";
+
+    var NameSpaceContainerLayoutView = Backbone.Marionette.LayoutView.extend(
+        /** @lends NameSpaceContainerLayoutView */
+        {
+            _viewName: "NameSpaceContainerLayoutView",
+
+            template: NameSpaceContainerLayoutViewTmpl,
+
+            /** Layout sub regions */
+            regions: {
+                RNameSpaceDetailContainer: "#r_nameSpaceDetailContainer",
+                RNameSpaceAttrContainer: "#r_nameSpaceAttrContainer"
+            },
+
+            /** ui selector cache */
+            ui: {},
+            /** ui events hash */
+            events: function() {},
+            /**
+             * intialize a new TagLayoutView Layout
+             * @constructs
+             */
+            initialize: function(options) {
+                _.extend(this.options, options);
+                this.selectedNameSpace = new VEntityList();
+                this.selectedNameSpace.url = UrlLinks.nameSpaceGuidApiUrl(this.options.namespaceID);
+                this.nameSpaceAttr = new VEntityList();
+            },
+            bindEvents: function() {},
+            onRender: function() {
+                this.fetchNameSpaceGuid();
+                this.options.nameSpaceCollection.fullCollection.sort({ silent: true });
+                this.options.nameSpaceCollection.comparator = function(model) {
+                    return -model.get('timestamp');
+                }
+                this.renderNameSpaceDetailLayoutView(this.options);
+                this.renderNameSpaceAttrLayoutView(this.options);
+            },
+            fetchNameSpaceGuid: function() {
+                var that = this;
+                this.selectedNameSpace.fetch({
+                    skipDefaultError: true,
+                    complete: function(model, status) {
+                        that.nameSpaceAttr.fullCollection.add(model.responseJSON.attributeDefs);
+                    }
+                });
+            },
+            renderNameSpaceDetailLayoutView: function(options) {
+                var that = this;
+                require(["views/name_space/NameSpaceDetailLayoutView"], function(NameSpaceDetailLayoutView) {
+                    if (that.isDestroyed) {
+                        return;
+                    }
+                    that.RNameSpaceDetailContainer.show(
+                        new NameSpaceDetailLayoutView({
+                            nameSpaceVent: that.options.nameSpaceVent,
+                            nameSpaceCollection: that.options.nameSpaceCollection,
+                            nameSpaceAttr: that.nameSpaceAttr,
+                            guid: that.options.namespaceID,
+                            enumDefCollection: that.enumDefCollection,
+                            typeHeaders: that.typeHeaders
+                        })
+                    );
+                });
+            },
+            renderNameSpaceAttrLayoutView: function(options) {
+                var that = this;
+                require(['views/name_space/NameSpaceAttrTableLayoutView'], function(NameSpaceAttrTableLayoutView) {
+                    if (that.isDestroyed) {
+                        return;
+                    }
+                    that.RNameSpaceAttrContainer.show(
+                        new NameSpaceAttrTableLayoutView({
+                            nameSpaceVent: that.options.nameSpaceVent,
+                            nameSpaceCollection: that.options.nameSpaceCollection,
+                            nameSpaceAttr: that.nameSpaceAttr,
+                            guid: that.options.namespaceID,
+                            typeHeaders: that.typeHeaders,
+                            enumDefCollection: that.enumDefCollection,
+                            selectedNameSpace:that.selectedNameSpace
+                        }));
+                });
+            }
+        }
+    );
+    return NameSpaceContainerLayoutView;
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/name_space/NameSpaceDetailLayoutView.js b/dashboardv3/public/js/views/name_space/NameSpaceDetailLayoutView.js
new file mode 100644
index 0000000..59f3b94
--- /dev/null
+++ b/dashboardv3/public/js/views/name_space/NameSpaceDetailLayoutView.js
@@ -0,0 +1,110 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+define(['require',
+    'backbone',
+    'hbs!tmpl/name_space/NameSpaceDetailLayoutView_tmpl',
+    'utils/Utils',
+    'views/tag/AddTagAttributeView',
+    'collection/VTagList',
+    'models/VTag',
+    'utils/Messages',
+    'utils/UrlLinks',
+    "utils/Globals",
+], function(require, Backbone, NameSpaceDetailLayoutViewTmpl, Utils, AddTagAttributeView, VTagList, VTag, Messages, UrlLinks, Globals) {
+    'use strict';
+
+    var NameSpaceDetailLayoutView = Backbone.Marionette.LayoutView.extend(
+        /** @lends NameSpaceDetailLayoutView */
+        {
+            template: NameSpaceDetailLayoutViewTmpl,
+            /** Layout sub regions */
+            regions: {},
+            /** ui selector cache */
+            ui: {
+                title: '[data-id="title"]',
+                editBox: '[data-id="editBox"]',
+                saveButton: "[data-id='saveButton']",
+                description: '[data-id="description"]',
+                publishButton: '[data-id="publishButton"]',
+                backButton: '[data-id="backButton"]'
+            },
+            /** ui events hash */
+            events: function() {
+                var events = {};
+                events["click " + this.ui.backButton] = function() {
+                    Utils.backButtonClick();
+                };
+                return events;
+            },
+            /**
+             * intialize a new NameSpaceDetailLayoutView Layout
+             * @constructs
+             */
+            initialize: function(options) {
+                _.extend(this, _.pick(options, 'guid', 'entity', 'entityName', 'attributeDefs', 'enumDefCollection', 'typeHeaders', 'nameSpaceCollection', 'selectedNameSpace', 'nameSpaceAttr'));
+
+            },
+            bindEvents: function() {
+                this.listenTo(this.nameSpaceCollection, 'reset', function() {
+                    if (!this.model) {
+                        this.model = this.nameSpaceCollection.fullCollection.findWhere({ guid: this.guid });
+                        if (this.model) {
+                            this.renderTagDetail();
+                        } else {
+                            this.$('.fontLoader').hide();
+                            Utils.notifyError({
+                                content: 'Tag Not Found'
+                            });
+                        }
+                    }
+                }, this);
+                this.listenTo(this.collection, 'error', function(error, response) {
+                    if (response.responseJSON && response.responseJSON.error) {
+                        Utils.notifyError({
+                            content: response.responseJSON.error
+                        });
+                    } else {
+                        Utils.notifyError({
+                            content: 'Something went wrong'
+                        });
+                    }
+                    this.$('.fontLoader').hide();
+                }, this);
+            },
+            onRender: function() {
+                if (this.nameSpaceCollection.models.length && !this.model) {
+                    this.model = this.nameSpaceCollection.fullCollection.findWhere({ guid: this.guid });
+                    Utils.showTitleLoader(this.$('.page-title .fontLoader'), this.$('.tagDetail'));
+                    this.renderTagDetail();
+                }
+                this.bindEvents();
+            },
+            renderTagDetail: function() {
+                var that = this,
+                    attributeData = "";
+                this.attributeDefs = this.model.get('attributeDefs');
+                this.ui.title.html('<span>' + that.model.get('name') + '</span>');
+                if (that.model.get('description')) {
+                    this.ui.description.text((that.model.get('description')));
+                }
+                Utils.hideTitleLoader(this.$('.fontLoader'), this.$('.tagDetail'));
+            }
+        });
+    return NameSpaceDetailLayoutView;
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/name_space/NameSpaceTableLayoutView.js b/dashboardv3/public/js/views/name_space/NameSpaceTableLayoutView.js
new file mode 100644
index 0000000..c852cf8
--- /dev/null
+++ b/dashboardv3/public/js/views/name_space/NameSpaceTableLayoutView.js
@@ -0,0 +1,419 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+define(['require',
+    'backbone',
+    'hbs!tmpl/name_space/NameSpaceTableLayoutView_tmpl',
+    'collection/VEntityList',
+    'collection/VTagList',
+    'models/VSearch',
+    'utils/Utils',
+    'utils/Messages',
+    'utils/Enums',
+    'utils/UrlLinks',
+    'utils/CommonViewFunction'
+], function(require, Backbone, NameSpaceTableLayoutView_tmpl, VEntityList, VTagList, VSearch, Utils, Messages, Enums, UrlLinks, CommonViewFunction) {
+    'use strict';
+
+    var NameSpaceTableLayoutView = Backbone.Marionette.LayoutView.extend(
+        /** @lends NameSpaceTableLayoutView */
+        {
+            _viewName: 'NameSpaceTableLayoutView',
+
+            template: NameSpaceTableLayoutView_tmpl,
+
+            /** Layout sub regions */
+            regions: {
+                RNameSpaceTableLayoutView: "#r_nameSpaceTableLayoutView",
+                RModal: "#r_modal"
+            },
+
+            /** ui selector cache */
+            ui: {
+                namespaceAttrPage: "[data-id='namespaceAttrPage']",
+                namespaceAttrPageTitle: "[data-id='namespaceAttrPageTitle']",
+                namespaceDetailPage: "[data-id='namespaceDetailPage']",
+                auditCreate: "[data-id='auditCreate']",
+                pageRecordText: "[data-id='pageRecordText']",
+                activePage: "[data-id='activePage']",
+                createNameSpace: "[data-id='createNameSpace']",
+                attributeEdit: "[data-id='attributeEdit']",
+                addAttribute: '[data-id="addAttribute"]',
+                namespaceAttrPageOk: '[data-id="namespaceAttrPageOk"]',
+                colManager: "[data-id='colManager']",
+                deleteNamespace: '[data-id="deleteNamespace"]',
+                namespaceAttrFontLoader: '.namespace-attr-fontLoader',
+                namespaceAttrTableOverlay: '.namespace-attr-tableOverlay'
+
+            },
+            /** ui events hash */
+            events: function() {
+                var events = {},
+                    that = this;
+                events["click " + this.ui.createNameSpace] = "onClickCreateNamespace";
+                events["click " + this.ui.addAttribute] = "onEditAttr";
+                events["click " + this.ui.attributeEdit] = "onEditAttr";
+                events["click " + this.ui.deleteNamespace] = function(e) {
+                    that.guid = e.target.dataset.guid;
+                    that.deleteNamespaceElement();
+                };
+                return events;
+            },
+            /**
+             * intialize a new NameSpaceTableLayoutView Layout
+             * @constructs
+             */
+            initialize: function(options) {
+                _.extend(this, _.pick(options, 'guid', 'entity', 'entityName', 'attributeDefs', 'typeHeaders', 'nameSpaceCollection', 'nameSpaceAttr', 'selectedNameSpace'));
+                this.limit = 10;
+                this.offset = 0;
+                this.pervOld = [];
+                this.onlyPurge = true;
+                this.newAttr = false;
+                this.commonTableOptions = {
+                    collection: this.nameSpaceCollection,
+                    includeFilter: false,
+                    includePagination: true,
+                    includeFooterRecords: true,
+                    includePageSize: true,
+                    includeGotoPage: true,
+                    includeAtlasTableSorting: true,
+                    includeTableLoader: true,
+                    includeColumnManager: true,
+                    gridOpts: {
+                        className: "table table-hover backgrid table-quickMenu",
+                        emptyText: 'No records found!'
+                    },
+                    columnOpts: {
+                        opts: {
+                            initialColumnsVisible: null,
+                            saveState: false
+                        },
+                        visibilityControlOpts: {
+                            buttonTemplate: _.template("<button class='btn btn-action btn-sm pull-right'>Columns&nbsp<i class='fa fa-caret-down'></i></button>")
+                        },
+                        el: this.ui.colManager
+                    },
+                    filterOpts: {},
+                    paginatorOpts: {}
+                };
+                this.currPage = 1;
+                this.isFilters = null;
+                this.guid = null;
+                this.showDetails = true; // toggle between sttribute page and detail page
+            },
+            onRender: function() {
+                this.toggleNamespaceDetailsAttrView();
+                $.extend(this.nameSpaceCollection.queryParams, { count: this.limit });
+                this.nameSpaceCollection.fullCollection.sort({ silent: true });
+                this.renderTableLayoutView();
+                this.$('.tableOverlay').hide();
+                this.$('.auditTable').show(); // Only for first time table show because we never hide after first render.
+                this.nameSpaceCollection.comparator = function(model) {
+                    return -model.get('timestamp');
+                }
+            },
+            toggleNamespaceDetailsAttrView: function() {
+                var that = this;
+                if (that.showDetails) {
+                    that.ui.namespaceAttrPage.hide();
+                    that.ui.namespaceDetailPage.show();
+                } else {
+                    that.ui.namespaceAttrPage.show();
+                    that.ui.namespaceDetailPage.hide();
+                }
+            },
+            bindEvents: function() {},
+            loaderStatus: function(isActive) {
+                var that = this;
+                if (isActive) {
+                    that.$('.namespace-attr-tableOverlay').show();
+                    that.$('.namespace-attr-fontLoader').show();
+                } else {
+                    that.$('.namespace-attr-tableOverlay').hide();
+                    that.$('.namespace-attr-fontLoader').hide();
+                }
+            },
+            onEditAttr: function(e) {
+                var that = this,
+                    isAttrEdit = e.target.dataset && e.target.dataset.id === 'attributeEdit' ? true : false,
+                    guid = e.target.dataset && e.target.dataset.guid ? e.target.dataset.guid : null,
+                    selectedNamespace = that.nameSpaceCollection.fullCollection.findWhere({ guid: guid }),
+                    attrributes = selectedNamespace ? selectedNamespace.get('attributeDefs') : null,
+                    attrName = e.target.dataset.name ? e.target.dataset.name : null,
+                    attrDetails = { name: attrName };
+                if (selectedNamespace) {
+                    that.ui.namespaceAttrPageOk.text("Save");
+                    that.newAttr = e.target && e.target.dataset.action === "createAttr" ? true : false;
+                    that.guid = guid;
+                    _.each(attrributes, function(attrObj) {
+                        if (attrObj.name === attrName) {
+                            attrDetails.attrTypeName = attrObj.typeName;
+                            if (attrObj.typeName.includes('array')) {
+                                attrDetails.attrTypeName = attrObj.typeName.replace("array<", "").replace(">", "");
+                                attrDetails.multiValued = true;
+                            }
+                            attrDetails.attrEntityType = attrObj.options && attrObj.options.applicableEntityTypes ? JSON.parse(attrObj.options.applicableEntityTypes) : null;
+                            attrDetails.maxStrLength = attrObj.options && attrObj.options.maxStrLength ? attrObj.options.maxStrLength : null;
+                            attrDetails.enumValues = attrObj.enumValues ? attrObj.enumValues : null;
+                        }
+                    });
+
+                    that.showDetails = false;
+                    that.toggleNamespaceDetailsAttrView();
+                    that.ui.namespaceAttrPageOk.attr('data-action', e.target.dataset.id);
+                    require(["views/name_space/CreateNameSpaceLayoutView"], function(CreateNameSpaceLayoutView) {
+                        that.view = new CreateNameSpaceLayoutView({
+                            onEditCallback: function() {
+                                that.nameSpaceCollection.fullCollection.sort({ silent: true });
+                                that.renderTableLayoutView();
+
+                            },
+                            onUpdateNamespace: function() {
+                                enumDefCollection.fetch({ reset: true });
+                                that.showDetails = true;
+                                that.toggleNamespaceDetailsAttrView();
+                            },
+                            parent: that.$el,
+                            tagCollection: that.nameSpaceCollection,
+                            enumDefCollection: enumDefCollection,
+                            isAttrEdit: isAttrEdit,
+                            typeHeaders: typeHeaders,
+                            attrDetails: attrDetails,
+                            selectedNamespace: selectedNamespace,
+                            nameSpaceCollection: nameSpaceCollection,
+                            guid: that.guid,
+                            isNewAttr: that.newAttr
+                        });
+                        if (isAttrEdit) {
+                            that.ui.namespaceAttrPageTitle.text("Update Attribute of: " + selectedNamespace.get('name'));
+                        } else {
+                            that.ui.namespaceAttrPageTitle.text("Add Namespace Attribute for: " + selectedNamespace.get('name'));
+                        }
+
+                        that.RModal.show(that.view);
+                    });
+                }
+            },
+            onClickCreateNamespace: function(e) {
+                var that = this,
+                    isNewNameSpace = true;
+                that.showDetails = false;
+                that.ui.namespaceAttrPageOk.text("Create");
+                that.ui.namespaceAttrPageOk.attr('data-action', 'createNamespace');
+                that.ui.namespaceAttrPageTitle.text("Create Namespace");
+                that.toggleNamespaceDetailsAttrView();
+                require(["views/name_space/CreateNameSpaceLayoutView"], function(CreateNameSpaceLayoutView) {
+                    that.view = new CreateNameSpaceLayoutView({
+                        onUpdateNamespace: function() {
+                            enumDefCollection.fetch({ reset: true });
+                            that.showDetails = true;
+                            that.toggleNamespaceDetailsAttrView();
+                        },
+                        tagCollection: that.nameSpaceCollection,
+                        enumDefCollection: enumDefCollection,
+                        typeHeaders: typeHeaders,
+                        isNewNameSpace: isNewNameSpace,
+                        nameSpaceCollection: nameSpaceCollection
+                    });
+                    that.RModal.show(that.view);
+                });
+            },
+            renderTableLayoutView: function() {
+                var that = this;
+                require(['utils/TableLayout'], function(TableLayout) {
+                    var cols = new Backgrid.Columns(that.getNamespaceTableColumns());
+                    that.RNameSpaceTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
+                        columns: cols
+                    })));
+                    if (!(that.nameSpaceCollection.models.length < that.limit)) {
+                        that.RNameSpaceTableLayoutView.$el.find('table tr').last().hide();
+                    }
+
+                });
+            },
+            getNamespaceTableColumns: function() {
+                var that = this;
+                return this.nameSpaceCollection.constructor.getTableCols({
+                    attributeDefs: {
+                        label: "",
+                        cell: "html",
+                        editable: false,
+                        sortable: false,
+                        cell: Backgrid.ExpandableCell,
+                        fixWidth: "50",
+                        accordion: false,
+                        alwaysVisible: true,
+                        expand: function(el, model) {
+                            el.attr('colspan', '8');
+                            var attrValues = '',
+                                attrTable = $('table'),
+                                attrTableBody = $('tbody'),
+                                attrTableHeading = "<thead><td style='display:table-cell'><b>Attribute</b></td><td style='display:table-cell'><b>Type</b></td><td style='display:table-cell'><b>Applicable Type(s)</b></td><td style='display:table-cell'><b>Action</b></td></thead>",
+                                attrRow = '',
+                                attrTableDetails = '';
+                            if (model.attributes && model.attributes.attributeDefs.length) {
+                                _.each(model.attributes.attributeDefs, function(attrObj) {
+                                    var applicableEntityTypes = '',
+                                        typeName = attrObj.typeName;
+                                    if (attrObj.options) {
+                                        // attrEntityTypes = JSON.parse(attrObj.options.applicableEntityTypes).join(', ');
+                                        var entityTypes = JSON.parse(attrObj.options.applicableEntityTypes);
+                                        _.each(entityTypes, function(values) {
+                                            applicableEntityTypes += '<label class="btn btn-action btn-xs btn-blue no-pointer">' + values + '</label>';
+                                        })
+                                    }
+                                    if (typeName.includes('array')) {
+                                        typeName = _.escape(typeName);
+                                    }
+                                    attrRow += "<tr> <td style='display:table-cell'>" + _.escape(attrObj.name) + "</td><td style='display:table-cell'>" + typeName + "</td><td style='display:table-cell'>" + applicableEntityTypes + "</td><td style='display:table-cell'> <div class='btn btn-action btn-sm' style='margin-left:0px;' data-id='attributeEdit' data-guid='" + model.get('guid') + "' data-name ='" + _.escape(attrObj.name) + "' data-action='attributeEdit' >Edit</div> </td></tr> ";
+                                });
+                                var purgeText = '<div class="row"><div class="col-sm-12 attr-details"><table style="padding: 50px;">' + attrTableHeading + attrRow + '</table></div></div>';
+                                $(el).append($('<div>').html(purgeText));
+                            } else {
+                                var purgeText = '<div class="row"><div class="col-sm-12 attr-details"><h5 class="text-center"> No attributes to show.</h5></div></div>';
+                                $(el).append($('<div>').html(purgeText));
+                            }
+
+                        }
+                    },
+                    name: {
+                        label: "Name",
+                        cell: "html",
+                        editable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                return '<a title= "' + model.get('name') + '" href ="#!/administrator/namespace/' + model.get('guid') + '">' + model.get('name') + '</a>';
+                            }
+                        })
+                    },
+                    description: {
+                        label: "Description",
+                        cell: "html",
+                        editable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                return model.get('description');
+                            }
+                        })
+                    },
+                    createdBy: {
+                        label: "Created by",
+                        cell: "html",
+                        renderable: false,
+                        editable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                return model.get('updatedBy');
+                            }
+                        })
+                    },
+                    createTime: {
+                        label: "Created on",
+                        cell: "html",
+                        renderable: false,
+                        editable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                return new Date(model.get('createTime'));
+                            }
+                        })
+                    },
+                    updatedBy: {
+                        label: "Updated by",
+                        cell: "html",
+                        renderable: false,
+                        editable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                return model.get('updatedBy');
+                            }
+                        })
+                    },
+                    updateTime: {
+                        label: "Updated on",
+                        cell: "html",
+                        renderable: false,
+                        editable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                return new Date(model.get('updateTime'));
+                            }
+                        })
+                    },
+                    tools: {
+                        label: "Action",
+                        cell: "html",
+                        sortable: false,
+                        editable: false,
+                        formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
+                            fromRaw: function(rawValue, model) {
+                                return "<button type='button' data-id='addAttribute' data-guid='" + model.get('guid') + "'' title='' class='btn btn-action btn-xs ' style='margin-bottom: 10px;' data-action='createAttr' data-original-title='Add Namespace attribute'><i class='fa fa-plus'></i> Attributes</button>";
+                                // "<button type='button' data-id='deleteNamespace' data-guid='" + model.get('guid') + "'' title='' class='btn btn-action btn-xs ' style='margin-bottom: 10px;' data-action='createAttr' data-original-title='Delete Namespace'><i class='fa fa-trash-o'></i> Delete</button>";
+                            }
+                        })
+                    }
+                }, this.nameSpaceCollection);
+            },
+            deleteNamespaceElement: function(nameSpaceName) {
+                var that = this,
+                    notifyObj = {
+                        modal: true,
+                        ok: function(argument) {
+                            that.onNotifyDeleteOk();
+                        },
+                        cancel: function(argument) {}
+                    };
+                var text = "Are you sure you want to delete the namespace";
+                notifyObj["text"] = text;
+                Utils.notifyConfirm(notifyObj);
+            },
+            onNotifyDeleteOk: function(data) {
+                var that = this,
+                    deleteNamespaceData = that.nameSpaceCollection.fullCollection.findWhere({ guid: that.guid });
+                // that.$('.position-relative .fontLoader').addClass('show');
+                that.$('.tableOverlay').show();
+                if (deleteNamespaceData) {
+                    var nameSpaceName = deleteNamespaceData.get("name");
+                    deleteNamespaceData.deleteNameSpace({
+                        typeName: nameSpaceName,
+                        success: function() {
+                            Utils.notifySuccess({
+                                content: "Namespace " + nameSpaceName + Messages.getAbbreviationMsg(false, 'deleteSuccessMessage')
+                            });
+                            that.nameSpaceCollection.fullCollection.remove(deleteNamespaceData);
+                            that.nameSpaceCollection.fullCollection.sort({ silent: true });
+                            that.renderTableLayoutView();
+                            that.showDetails = true;
+                            that.toggleNamespaceDetailsAttrView();
+                            that.loaderStatus(false);
+                        },
+                        complete: function() {
+                            that.$('.tableOverlay').hide();
+                            that.$('.position-relative .fontLoader').removeClass('show');
+                        }
+                    });
+                } else {
+                    Utils.notifyError({
+                        content: Messages.defaultErrorMessage
+                    });
+                }
+            }
+        });
+    return NameSpaceTableLayoutView;
+});
\ No newline at end of file
diff --git a/dashboardv3/public/js/views/search/SearchFilterBrowseLayoutView.js b/dashboardv3/public/js/views/search/SearchFilterBrowseLayoutView.js
index 244c234..4d5c5ce 100644
--- a/dashboardv3/public/js/views/search/SearchFilterBrowseLayoutView.js
+++ b/dashboardv3/public/js/views/search/SearchFilterBrowseLayoutView.js
@@ -36,7 +36,8 @@ define([
             RGlossaryTreeRender: '[data-id="r_glossaryTreeRender"]',
             RClassificationTreeRender: '[data-id="r_classificationTreeRender"]',
             REntityTreeRender: '[data-id="r_entityTreeRender"]',
-            RCustomFilterTreeRender: '[data-id="r_customFilterTreeRender"]'
+            RCustomFilterTreeRender: '[data-id="r_customFilterTreeRender"]',
+            RNameSpaceTreeRender: '[data-id="r_nameSpaceTreeRender"]'
         },
         ui: {
             //search
@@ -81,6 +82,7 @@ define([
                 this.classificationSearchTree = this.$('[data-id="classificationSearchTree"]');
                 this.termSearchTree = this.$('[data-id="termSearchTree"]');
                 this.customFilterSearchTree = this.$('[data-id="customFilterSearchTree"]');
+                this.nameSpaceSearchTree = this.$('[data-id="nameSpaceSearchTree"]');
                 this.entitySearchTree.jstree(true).show_all();
                 this.entitySearchTree.jstree("search", searchString);
                 this.classificationSearchTree.jstree(true).show_all();
@@ -89,6 +91,9 @@ define([
                 this.termSearchTree.jstree("search", searchString);
                 this.customFilterSearchTree.jstree(true).show_all();
                 this.customFilterSearchTree.jstree("search", searchString);
+                this.nameSpaceSearchTree.jstree(true).show_all();
+                this.nameSpaceSearchTree.jstree("search", searchString);
+
             };
 
             events["click " + this.ui.menuItems] = function(e) {
@@ -118,11 +123,12 @@ define([
             this.bindEvents();
         },
         onRender: function() {
-            var opt = opt = Utils.getUrlState.getQueryParams();
+            var opt = Utils.getUrlState.getQueryParams();
             this.renderEntityTree(opt);
             this.renderClassificationTree(opt);
             this.renderGlossaryTree(opt);
             this.renderCustomFilterTree();
+            this.renderNameSpaceTree();
             this.showHideGlobalFilter();
             this.showDefaultPage();
         },
@@ -195,6 +201,9 @@ define([
             if (options) {
                 _.extend(this.options, options);
                 this.showHideGlobalFilter();
+                if (this.RNameSpaceTreeRender.currentView) {
+                    this.RNameSpaceTreeRender.currentView.manualRender(this.options);
+                }
                 if (this.RCustomFilterTreeRender.currentView) {
                     this.RCustomFilterTreeRender.currentView.manualRender(this.options);
                 }
@@ -232,6 +241,12 @@ define([
             require(["views/search/tree/CustomFilterTreeLayoutView"], function(CustomFilterTreeLayoutView) {
                 that.RCustomFilterTreeRender.show(new CustomFilterTreeLayoutView(_.extend({ query: that.query }, that.options)));
             });
+        },
+        renderNameSpaceTree: function() {
+            var that = this;
+            require(["views/search/tree/NameSpaceTreeLayoutView"], function(NameSpaceTreeLayoutView) {
+                that.RNameSpaceTreeRender.show(new NameSpaceTreeLayoutView(_.extend({ query: that.query }, that.options)));
+            });
         }
     });
     return SearchFilterBrowseLayoutViewNew;
diff --git a/dashboardv3/public/js/views/search/tree/CustomFilterTreeLayoutView.js b/dashboardv3/public/js/views/search/tree/CustomFilterTreeLayoutView.js
index 1c44669..9766b32 100644
--- a/dashboardv3/public/js/views/search/tree/CustomFilterTreeLayoutView.js
+++ b/dashboardv3/public/js/views/search/tree/CustomFilterTreeLayoutView.js
@@ -245,12 +245,14 @@ define([
                 var aFilter = that.$("#" + str.node.a_attr.id),
                     filterOffset = aFilter.find(">.jstree-icon").offset();
                 that.$(".tree-tooltip").removeClass("show");
-                if (filterOffset.top && filterOffset.left) {
-                    aFilter.find(">span.tree-tooltip").css({
-                        top: "calc(" + filterOffset.top + "px - 45px)",
-                        left: "24px"
-                    }).addClass("show");
-                }
+                setTimeout(function() {
+                    if (aFilter.hasClass("jstree-hovered") && filterOffset.top && filterOffset.left) {
+                        aFilter.find(">span.tree-tooltip").css({
+                            top: "calc(" + filterOffset.top + "px - 45px)",
+                            left: "24px"
+                        }).addClass("show");
+                    }
+                }, 1200);
             }).on("dehover_node.jstree", function(nodes, str, res) {
                 that.$(".tree-tooltip").removeClass("show");
             });
diff --git a/dashboardv3/public/js/views/search/tree/EntityTreeLayoutView.js b/dashboardv3/public/js/views/search/tree/EntityTreeLayoutView.js
index 3056525..421fb2d 100644
--- a/dashboardv3/public/js/views/search/tree/EntityTreeLayoutView.js
+++ b/dashboardv3/public/js/views/search/tree/EntityTreeLayoutView.js
@@ -309,7 +309,7 @@ define([
                                 parent: "#",
                                 icon: "fa fa-file-o",
                                 state: {
-                                    disabled: entityCount == 0 ? true : false,
+                                    disabled: false,
                                     selected: isSelected
                                 },
                             };
@@ -489,12 +489,14 @@ define([
                 var aType = that.$("#" + str.node.a_attr.id),
                     typeOffset = aType.find(">.jstree-icon").offset();
                 that.$(".tree-tooltip").removeClass("show");
-                if (typeOffset.top && typeOffset.left) {
-                    aType.find(">span.tree-tooltip").css({
-                        top: "calc(" + typeOffset.top + "px - 45px)",
-                        left: "24px"
-                    }).addClass("show");
-                }
+                setTimeout(function() {
+                    if (aType.hasClass("jstree-hovered") && typeOffset.top && typeOffset.left) {
+                        aType.find(">span.tree-tooltip").css({
+                            top: "calc(" + typeOffset.top + "px - 45px)",
+                            left: "24px"
+                        }).addClass("show");
+                    }
+                }, 1200);
             }).on("dehover_node.jstree", function(nodes, str, res) {
                 that.$(".tree-tooltip").removeClass("show");
             });
diff --git a/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js b/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js
index 64be2db..28c6a9e 100644
--- a/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js
+++ b/dashboardv3/public/js/views/search/tree/GlossaryTreeLayoutView.js
@@ -56,6 +56,7 @@ define([
 
             events["click " + this.ui.createGlossary] = function(e) {
                 var that = this;
+                e.stopPropagation();
                 CommonViewFunction.createEditGlossaryCategoryTerm({
                     isGlossaryView: true,
                     collection: that.glossaryCollection,
@@ -664,12 +665,14 @@ define([
                     var aTerm = that.$("#" + str.node.a_attr.id),
                         termOffset = aTerm.find(">.jstree-icon").offset();
                     that.$(".tree-tooltip").removeClass("show");
-                    if (termOffset.top && termOffset.left) {
-                        aTerm.find(">span.tree-tooltip").css({
-                            top: "calc(" + termOffset.top + "px - 45px)",
-                            left: "24px"
-                        }).addClass("show");
-                    }
+                    setTimeout(function() {
+                        if (aTerm.hasClass("jstree-hovered") && termOffset.top && termOffset.left) {
+                            aTerm.find(">span.tree-tooltip").css({
+                                top: "calc(" + termOffset.top + "px - 45px)",
+                                left: "24px"
+                            }).addClass("show");
+                        }
+                    }, 1200);
                 }).on("dehover_node.jstree", function(nodes, str, res) {
                     that.$(".tree-tooltip").removeClass("show");
                 });
diff --git a/dashboardv3/public/js/views/search/tree/NameSpaceTreeLayoutView.js b/dashboardv3/public/js/views/search/tree/NameSpaceTreeLayoutView.js
new file mode 100644
index 0000000..2ece151
--- /dev/null
+++ b/dashboardv3/public/js/views/search/tree/NameSpaceTreeLayoutView.js
@@ -0,0 +1,384 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+define([
+    "require",
+    "hbs!tmpl/search/tree/NameSpaceTreeLayoutView_tmpl",
+    "utils/Utils",
+    "utils/Messages",
+    "utils/Globals",
+    "utils/UrlLinks",
+    "utils/CommonViewFunction",
+    "collection/VSearchList",
+    "collection/VGlossaryList",
+    "utils/Enums",
+    "jstree"
+], function(require, NameSpaceTreeLayoutViewTmpl, Utils, Messages, Globals, UrlLinks, CommonViewFunction, VSearchList, VGlossaryList, Enums) {
+    "use strict";
+
+    var NameSpaceTreeLayoutView = Marionette.LayoutView.extend({
+        template: NameSpaceTreeLayoutViewTmpl,
+
+        regions: {},
+        ui: {
+            //refresh
+            refreshTree: '[data-id="refreshTree"]',
+
+            // tree el
+            nameSpaceSearchTree: '[data-id="nameSpaceSearchTree"]',
+
+            // Create
+            createNameSpace: '[data-id="createNameSpace"]'
+        },
+        templateHelpers: function() {
+            return {
+                apiBaseUrl: UrlLinks.apiBaseUrl
+            };
+        },
+        events: function() {
+            var events = {},
+                that = this;
+            // refresh individual tree
+            events["click " + this.ui.refreshTree] = function(e) {
+                var type = $(e.currentTarget).data("type");
+                e.stopPropagation();
+                that.refresh({ type: type });
+            };
+
+            events["click " + this.ui.createNameSpace] = function(e) {
+                e.stopPropagation();
+                that.triggerUrl("#!/administrator?tabActive=namespace");
+            };
+
+            return events;
+        },
+        initialize: function(options) {
+            this.options = options;
+            _.extend(
+                this,
+                _.pick(
+                    options,
+                    "typeHeaders",
+                    "namespaceID",
+                    "searchVent",
+                    "entityDefCollection",
+                    "enumDefCollection",
+                    "nameSpaceCollection",
+                    "searchTableColumns",
+                    "searchTableFilters",
+                    "metricCollection",
+                    "nameSpaceCollection"
+                )
+            );
+            this.bindEvents();
+        },
+        onRender: function() {
+            this.renderNameSpaceTree();
+            //this.createNameSpaceAction();
+        },
+        bindEvents: function() {
+            var that = this;
+            this.listenTo(
+                this.nameSpaceCollection.fullCollection,
+                "reset add remove",
+                function() {
+                    if (this.ui.nameSpaceSearchTree.jstree(true)) {
+                        that.ui.nameSpaceSearchTree.jstree(true).refresh();
+                    } else {
+                        this.renderNameSpaceTree();
+                    }
+                },
+                this
+            );
+            // this.options.nameSpaceVent.on("Save:NamespaceAttribute", function(data) {
+            //     that.ui.nameSpaceSearchTree.jstree(true).refresh();
+            // });
+            $("body").on("click", ".namespacePopoverOptions li", function(e) {
+                that.$(".nameSpacePopover").popover("hide");
+                that[$(this).find("a").data("fn") + "NameSpace"](e);
+            });
+        },
+        createNameSpaceAction: function() {
+            var that = this;
+            Utils.generatePopover({
+                el: this.$el,
+                contentClass: "namespacePopoverOptions",
+                popoverOptions: {
+                    selector: ".nameSpacePopover",
+                    content: function() {
+                        var type = $(this).data("detail"),
+                            liString =
+                            "<li><i class='fa fa-list-alt'></i><a href='javascript:void(0)' data-fn='onViewEdit'>View/Edit</a></li><li><i class='fa fa-search'></i><a href='javascript:void(0)' data-fn='onSelectedSearch'>Search</a></li>";
+                        return "<ul>" + liString + "</ul>";
+                    }
+                }
+            });
+        },
+        renderNameSpaceTree: function() {
+            this.generateSearchTree({
+                $el: this.ui.nameSpaceSearchTree
+            });
+        },
+        manualRender: function(options) {
+            var that = this;
+            _.extend(this, options);
+            if (Utils.getUrlState.isAdministratorTab() && this.namespaceID) {
+                this.ui.nameSpaceSearchTree.jstree(true).select_node(this.namespaceID);
+            } else {
+                this.ui.nameSpaceSearchTree.jstree(true).deselect_all();
+                this.namespaceID = null;
+            }
+            // if (this.options.value === undefined) {
+            //     this.options.value = {};
+            // }
+            // if (!this.options.value.tag) {
+            //     this.ui.nameSpaceSearchTree.jstree(true).deselect_all();
+            //     this.nameSpaceId = null;
+            // } else {
+            //     if (that.options.value.tag.indexOf("*") != -1) {
+            //         that.ui.nameSpaceSearchTree.jstree(true).deselect_all();
+            //     }
+            //     var dataFound = this.nameSpaceCollection.fullCollection.find(function(obj) {
+            //         return obj.get("name") === that.options.value.tag;
+            //     });
+            //     if (dataFound) {
+            //         if ((this.nameSpaceId && this.nameSpaceId !== dataFound.get("guid")) || this.nameSpaceId === null) {
+            //             if (this.nameSpaceId) {
+            //                 this.ui.nameSpaceSearchTree.jstree(true).deselect_node(this.nameSpaceId);
+            //             }
+            //             this.fromManualRender = true;
+            //             this.nameSpaceId = dataFound.get("guid");
+            //             this.ui.nameSpaceSearchTree.jstree(true).select_node(dataFound.get("guid"));
+            //         }
+            //     }
+            //     if (!dataFound && Globals[that.options.value.tag]) {
+            //         this.fromManualRender = true;
+            //         this.typeId = Globals[that.options.value.tag].guid;
+            //         this.ui.nameSpaceSearchTree.jstree(true).select_node(this.typeId);
+            //     }
+            // }
+        },
+        onNodeSelect: function(nodeData) {
+            var that = this,
+                options = nodeData.node.original,
+                url = "#!/administrator/namespace";
+            if (options.parent === undefined) {
+                url += "/" + options.id;
+                this.triggerUrl(url);
+            } else {
+                //this.triggerSearch();
+            }
+        },
+        onViewEditNameSpace: function() {
+            var selectedNode = this.ui.nameSpaceSearchTree.jstree("get_selected", true);
+            if (selectedNode && selectedNode[0]) {
+                selectedNode = selectedNode[0];
+                var url = "#!/administrator?tabActive=namespace";
+                if (selectedNode.parent && selectedNode.original && selectedNode.original.name) {
+                    url += "&ns=" + selectedNode.parent + "&nsa=" + selectedNode.original.name;
+                    this.triggerUrl(url);
+                }
+            }
+        },
+        // triggerSearch: function(params, url) {
+        //     var serachUrl = url ? url : "#!/search/searchResult";
+        //     Utils.setUrl({
+        //         url: serachUrl,
+        //         urlParams: params,
+        //         mergeBrowserUrl: false,
+        //         trigger: true,
+        //         updateTabState: true
+        //     });
+        // },
+        triggerUrl: function(url) {
+            Utils.setUrl({
+                url: url,
+                mergeBrowserUrl: false,
+                trigger: true,
+                updateTabState: true
+            });
+        },
+        refresh: function(options) {
+            var that = this;
+            this.nameSpaceCollection.fetch({
+                skipDefaultError: true,
+                silent: true,
+                complete: function() {
+                    that.nameSpaceCollection.fullCollection.comparator = function(model) {
+                        return model.get("name").toLowerCase();
+                    };
+                    that.nameSpaceCollection.fullCollection.sort({ silent: true });
+                    that.ui.nameSpaceSearchTree.jstree(true).refresh();
+                }
+            });
+        },
+        getNameSpaceTree: function(options) {
+            var that = this,
+                nameSpaceList = [],
+                allCustomFilter = [],
+                namsSpaceTreeData = that.nameSpaceCollection.fullCollection.models,
+                openClassificationNodesState = function(treeDate) {
+                    if (treeDate.length == 1) {
+                        _.each(treeDate, function(model) {
+                            model.state["opeaned"] = true;
+                        });
+                    }
+                },
+                generateNode = function(nodeOptions, attrNode) {
+                    var attributesNode = attrNode ? null : nodeOptions.get("attributeDefs"),
+                        nodeStructure = {
+                            text: attrNode ? _.escape(nodeOptions.name) : _.escape(nodeOptions.get("name")),
+                            name: attrNode ? _.escape(nodeOptions.name) : _.escape(nodeOptions.get("name")),
+                            type: "nameSpace",
+                            id: attrNode ? _.escape(nodeOptions.name) : nodeOptions.get("guid"),
+                            icon: attrNode ? "fa fa-file-o" : "fa fa-folder-o",
+                            children: [],
+                            state: { selected: nodeOptions.get("guid") === that.namespaceID },
+                            gType: "NameSpace",
+                            model: nodeOptions
+                        };
+                    return nodeStructure;
+                };
+            // getChildren = function(options) {
+            //     var children = options.children,
+            //         data = [],
+            //         dataWithoutEmptyTag = [],
+            //         isAttrNode = true;
+            //     if (children && children.length) {
+            //         _.each(children, function(attrDetail) {
+            //             var nodeDetails = {
+            //                     name: _.escape(attrDetail.name),
+            //                     model: attrDetail
+            //                 },
+            //                 nodeProperties = {
+            //                     parent: options.parent,
+            //                     text: _.escape(attrDetail.name),
+            //                     model: attrDetail,
+            //                     id: options.parent + "_" + _.escape(attrDetail.name)
+            //                 },
+            //                 getNodeDetails = generateNode(nodeDetails, isAttrNode),
+            //                 classificationNode = _.extend(getNodeDetails, nodeProperties);
+            //             data.push(classificationNode);
+            //         });
+            //     } else {
+            //         return null;
+            //     }
+            //     return data;
+            // };
+            _.each(namsSpaceTreeData, function(filterNode) {
+                nameSpaceList.push(generateNode(filterNode));
+            });
+
+            var treeView = [{
+                icon: "fa fa-folder-o",
+                gType: "nameSpace",
+                type: "nameSpaceFolder",
+                children: nameSpaceList,
+                text: "Namespace",
+                name: "Namespace",
+                state: { opened: true }
+            }];
+            var customFilterList = treeView;
+            return nameSpaceList;
+        },
+        generateSearchTree: function(options) {
+            var $el = options && options.$el,
+                type = options && options.type,
+                that = this,
+                getEntityTreeConfig = function(opt) {
+                    return {
+                        plugins: ["search", "core", "sort", "conditionalselect", "changed", "wholerow", "node_customize"],
+                        conditionalselect: function(node) {
+                            var type = node.original.type;
+                            if (type == "nameSpaceFolder") {
+                                if (node.children.length) {
+                                    return false;
+                                } else {
+                                    return true;
+                                }
+                            } else {
+                                return true;
+                            }
+                        },
+                        state: { opened: true },
+                        search: {
+                            show_only_matches: true,
+                            case_sensitive: false
+                        },
+                        node_customize: {
+                            default: function(el, node) {
+                                var aTag = $(el).find(">a.jstree-anchor");
+                                aTag.append("<span class='tree-tooltip'>" + aTag.text() + "</span>");
+                                if (node.parent === "#") {
+                                    $(el).append('<div class="tools"><i class="fa"></i></div>');
+                                } else {
+                                    $(el).append('<div class="tools"><i class="fa fa-ellipsis-h nameSpacePopover" rel="popover"></i></div>');
+                                }
+                            }
+                        },
+                        core: {
+                            multiple: false,
+                            data: function(node, cb) {
+                                if (node.id === "#") {
+                                    cb(that.getNameSpaceTree());
+                                }
+                            }
+                        }
+                    };
+                };
+            $el.jstree(
+                    getEntityTreeConfig({
+                        type: ""
+                    })
+                )
+                .on("open_node.jstree", function(e, data) {
+                    that.isTreeOpen = true;
+                })
+                .on("select_node.jstree", function(e, data) {
+                    that.onNodeSelect(data);
+                })
+                .on("search.jstree", function(nodes, str, res) {
+                    if (str.nodes.length === 0) {
+                        $el.jstree(true).hide_all();
+                        $el.parents(".panel").addClass("hide");
+                    } else {
+                        $el.parents(".panel").removeClass("hide");
+                    }
+                })
+                .on("hover_node.jstree", function(nodes, str, res) {
+                    var aFilter = that.$("#" + str.node.a_attr.id),
+                        filterOffset = aFilter.find(">.jstree-icon").offset();
+                    that.$(".tree-tooltip").removeClass("show");
+                    setTimeout(function() {
+                        if (aFilter.hasClass("jstree-hovered") && ($(":hover").last().hasClass("jstree-hovered") || $(":hover").last().parent().hasClass("jstree-hovered")) && filterOffset.top && filterOffset.left) {
+                            aFilter
+                                .find(">span.tree-tooltip")
+                                .css({
+                                    top: "calc(" + filterOffset.top + "px - 45px)",
+                                    left: "24px"
+                                })
+                                .addClass("show");
+                        }
+                    }, 1200);
+                })
+                .on("dehover_node.jstree", function(nodes, str, res) {
+                    that.$(".tree-tooltip").removeClass("show");
+                });
+        }
+    });
+    return NameSpaceTreeLayoutView;
+});
\ No newline at end of file