diff --git a/dashboardv2/public/js/utils/CommonViewFunction.js b/dashboardv2/public/js/utils/CommonViewFunction.js
index e1c22a1..a601d81 100644
--- a/dashboardv2/public/js/utils/CommonViewFunction.js
+++ b/dashboardv2/public/js/utils/CommonViewFunction.js
@@ -307,7 +307,8 @@
             entityName = Utils.getName(obj);
         if (traits) {
             traits.map(function(term) {
-                if (term.split(".").length > 1) {
+                var checkTagOrTerm = Utils.checkTagOrTerm(term);
+                if (checkTagOrTerm.term) {
                     terms.push({
                         deleteHtml: '<a class="pull-left" title="Remove Term"><i class="fa fa-trash" data-id="tagClick" data-type="term" data-assetname="' + entityName + '" data-name="' + term + '" data-guid="' + obj.guid + '" ></i></a>',
                         url: _.unescape(term).split(".").join("/"),
@@ -322,7 +323,7 @@
                 className += "showHideDiv hide";
             }
             obj['valueUrl'] = CommonViewFunction.breadcrumbUrlMaker(obj.url);
-            html += '<div class="' + className + '" dataterm-name="' + entityName + '"><div class="liContent"></div>' + obj.deleteHtml + '</div>';
+            html += '<div class="' + className + '" dataterm-name="' + obj.name + '"><div class="liContent"></div>' + obj.deleteHtml + '</div>';
         })
         if (terms.length > 1) {
             html += '<div><a  href="javascript:void(0)" data-id="showMoreLessTerm" class="inputTag inputTagGreen"><span>Show More </span><i class="fa fa-angle-right"></i></a></div>'
@@ -349,7 +350,8 @@
             entityName = Utils.getName(obj);
         if (traits) {
             traits.map(function(tag) {
-                if (tag.split(".").length === 1) {
+                var checkTagOrTerm = Utils.checkTagOrTerm(tag);
+                if (checkTagOrTerm.tag) {
                     var className = "inputTag";
                     if (count >= 1) {
                         popTag += '<a class="' + className + '" data-id="tagClick"><span class="inputValue">' + tag + '</span><i class="fa fa-times" data-id="delete"  data-assetname="' + entityName + '"data-name="' + tag + '" data-type="tag" data-guid="' + obj.guid + '" ></i></a>';
diff --git a/dashboardv2/public/js/utils/Utils.js b/dashboardv2/public/js/utils/Utils.js
index f214c50..b96bc9b 100644
--- a/dashboardv2/public/js/utils/Utils.js
+++ b/dashboardv2/public/js/utils/Utils.js
@@ -295,6 +295,11 @@
                 fullName: value
             }
         }
+        if (value && _.isString(value)) {
+            value = {
+                typeName: value
+            }
+        }
         if (_.isObject(value)) {
             var name = "";
             if (value && value.$typeName$) {
@@ -306,11 +311,14 @@
                 return {}
             }
             name = _.escape(name).split('.');
+
             var trem = false;
             if (value['taxonomy.namespace']) {
                 trem = true;
             } else if (value.values && value.values['taxonomy.namespace']) {
                 trem = true;
+            } else if (name.length > 1) {
+                trem = true; // Temp fix
             }
 
             if (trem) {
diff --git a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
index 41be98d..49953fd 100644
--- a/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
+++ b/dashboardv2/public/js/views/detail_page/DetailPageLayoutView.js
@@ -247,12 +247,11 @@
                     termData = "";
 
                 _.each(tagObject, function(val) {
-                    //var isTerm = Utils.checkTagOrTerm(val);
-                    if (val.typeName && val.typeName.split('.').length === 1) {
-                        tagData += '<span class="inputTag" data-id="tagClick"><span class="inputValue">' + val.typeName + '</span><i class="fa fa-close" data-id="deleteTag" data-type="tag"></i></span>';
-                    }
-                    if (val.typeName && val.typeName.split('.').length > 1) {
+                    var checkTagOrTerm = Utils.checkTagOrTerm(val);
+                    if (checkTagOrTerm.term) {
                         termData += '<span class="inputTag term" data-id="tagClick" data-href="' + val.typeName + '"><span class="inputValue">' + val.typeName + '</span><i class="fa fa-close" data-id="deleteTag" data-type="term"></i></span>';
+                    } else {
+                        tagData += '<span class="inputTag" data-id="tagClick"><span class="inputValue">' + val.typeName + '</span><i class="fa fa-close" data-id="deleteTag" data-type="tag"></i></span>';
                     }
                 });
                 this.ui.tagList.find("span.inputTag").remove();
