diff --git a/0001-ATLAS-1668-updated-UI-to-exclude-terms-from-tag-UI-e.patch b/0001-ATLAS-1668-updated-UI-to-exclude-terms-from-tag-UI-e.patch
new file mode 100644
index 0000000..7fe4281
--- /dev/null
+++ b/0001-ATLAS-1668-updated-UI-to-exclude-terms-from-tag-UI-e.patch
@@ -0,0 +1,147 @@
+From 46485ba13cf8dce280389ba872d357b23ffcebd6 Mon Sep 17 00:00:00 2001
+From: kevalbhatt <kbhatt@apache.org>
+Date: Fri, 10 Mar 2017 18:14:02 +0530
+Subject: [PATCH] ATLAS-1668: updated UI to exclude terms from tag UI elements
+
+Signed-off-by: Madhan Neethiraj <madhan@apache.org>
+(cherry picked from commit e0145ffd40c08054cea7073239541879447794b4)
+---
+ .../business_catalog/AddTermToEntityLayoutView.js     |  6 +++---
+ .../js/views/business_catalog/TreeLayoutView.js       |  1 -
+ .../public/js/views/search/SearchLayoutView.js        |  8 ++++++--
+ .../public/js/views/search/SearchResultLayoutView.js  |  2 +-
+ .../public/js/views/tag/CreateTagLayoutView.js        |  6 +++++-
+ dashboardv2/public/js/views/tag/TagLayoutView.js      | 19 +++++++++----------
+ dashboardv2/public/js/views/tag/addTagModalView.js    |  3 +++
+ 7 files changed, 27 insertions(+), 18 deletions(-)
+
+diff --git a/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js b/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js
+index dd45e488..0212efe1 100644
+--- a/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js
++++ b/dashboardv2/public/js/views/business_catalog/AddTermToEntityLayoutView.js
+@@ -74,9 +74,9 @@ define(['require',
+                             }
+                             var obj = {
+                                 termName: termName,
+-                                guid: that.multiple[i].id.id,
+-                                deletedEntity: Enums.entityStateReadOnly[that.multiple[i].id.state],
+-                                entityName: that.multiple[i].model.get('name')
++                                guid: that.multiple[i].id,
++                                deletedEntity: Enums.entityStateReadOnly[that.multiple[i].model.status],
++                                entityName: Utils.getName(that.multiple[i].model)
+                             };
+                             if (obj.deletedEntity) {
+                                 Utils.notifyError({
+diff --git a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
+index 0bca0df7..998c8f42 100644
+--- a/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
++++ b/dashboardv2/public/js/views/business_catalog/TreeLayoutView.js
+@@ -377,7 +377,6 @@ define(['require',
+                         }
+                         var name = Utils.checkTagOrTerm(model.get('name'), true);
+                         if (name.name) {
+-                            // data-name="<space>'<tagName>'"  Space is required for DSL search Input 
+                             if (that.viewBased) {
+                                 parentLi = '<div class="tools"><i class="fa fa-refresh fa-spin-custom taxanomyloader"></i><i class="fa fa-ellipsis-h termPopover"></i></div><i class="fa fa-angle-right toggleArrow" data-id="expandArrow" data-href="' + hrefUrl + '"></i><a href="javascript:void(0)" data-href="' + hrefUrl + '" data-name="`' + model.get('name') + '`">' + name.name + '</a>';
+                             } else {
+diff --git a/dashboardv2/public/js/views/search/SearchLayoutView.js b/dashboardv2/public/js/views/search/SearchLayoutView.js
+index d3a90305..e68f8c06 100644
+--- a/dashboardv2/public/js/views/search/SearchLayoutView.js
++++ b/dashboardv2/public/js/views/search/SearchLayoutView.js
+@@ -172,11 +172,15 @@ define(['require',
+                     return Utils.getName(model.toJSON(), 'name').toLowerCase();
+                 }
+                 this.typeHeaders.fullCollection.sort().each(function(model) {
++                    var name = Utils.getName(model.toJSON(), 'name');
+                     if (model.get('category') == 'ENTITY') {
+-                        typeStr += '<option>' + (Utils.getName(model.toJSON(), 'name')) + '</option>';
++                        typeStr += '<option>' + (name) + '</option>';
+                     }
+                     if (model.get('category') == 'CLASSIFICATION') {
+-                        tagStr += '<option>' + (Utils.getName(model.toJSON(), 'name')) + '</option>';
++                        var checkTagOrTerm = Utils.checkTagOrTerm(name);
++                        if (checkTagOrTerm.tag) {
++                            tagStr += '<option>' + (name) + '</option>';
++                        }
+                     }
+                 });
+                 that.ui.typeLov.html(typeStr);
+diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+index d2a3b51d..3446a670 100644
+--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
++++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+@@ -294,7 +294,7 @@ define(['require',
+                         if (Globals.entityCreate && Globals.entityTypeConfList && Utils.getUrlState.isSearchTab()) {
+                             createEntityTag = "<p>If you do not find the entity in search result below then you can" + '<a href="javascript:void(0)" data-id="createEntity"> create new entity</a></p>';
+                         }
+-                        that.$('.searchResult').html(resultData + multiAssignDataTag + multiAssignDataTerm + createEntityTag);
++                        that.$('.searchResult').html(resultData + multiAssignDataTerm + multiAssignDataTag + createEntityTag);
+                     },
+                     silent: true,
+                     reset: true
+diff --git a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
+index 957a056e..34fa1147 100644
+--- a/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
++++ b/dashboardv2/public/js/views/tag/CreateTagLayoutView.js
+@@ -98,7 +98,11 @@ define(['require',
+                     that = this;
+                 this.ui.parentTag.empty();
+                 this.tagCollection.fullCollection.each(function(val) {
+-                    str += '<option>' + (Utils.getName(val.toJSON())) + '</option>';
++                    var name = Utils.getName(val.toJSON()),
++                        checkTagOrTerm = Utils.checkTagOrTerm(name);
++                    if (checkTagOrTerm.tag) {
++                        str += '<option>' + (name) + '</option>';
++                    }
+                 });
+                 that.ui.parentTag.html(str);
+                 // IE9 support
+diff --git a/dashboardv2/public/js/views/tag/TagLayoutView.js b/dashboardv2/public/js/views/tag/TagLayoutView.js
+index e6b20655..5311ad1b 100644
+--- a/dashboardv2/public/js/views/tag/TagLayoutView.js
++++ b/dashboardv2/public/js/views/tag/TagLayoutView.js
+@@ -144,18 +144,17 @@ define(['require',
+                 };
+                 that.collection.fullCollection.sort().each(function(model) {
+                     var name = Utils.getName(model.toJSON(), 'name');
+-                    if (name.indexOf(".") > -1) {
+-                        return;
+-                    }
+-                    if (searchString) {
+-                        if (name.search(new RegExp(searchString, "i")) != -1) {
+-                            // data-name="<space>'<tagName>'"  Space is required for DSL search Input 
+-                            str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '"  data-name=" `' + name + '`" >' + name + '</a></li>';
++                    var checkTagOrTerm = Utils.checkTagOrTerm(name);
++                    if (checkTagOrTerm.tag) {
++                        if (searchString) {
++                            if (name.search(new RegExp(searchString, "i")) != -1) {
++                                str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '"  data-name="`' + name + '`" >' + name + '</a></li>';
++                            } else {
++                                return;
++                            }
+                         } else {
+-                            return;
++                            str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '"  data-name="`' + name + '`">' + name + '</a></li>';
+                         }
+-                    } else {
+-                        str += '<li class="parent-node" data-id="tags"><div class="tools"><i class="fa fa-ellipsis-h tagPopover"></i></div><a href="#!/tag/tagAttribute/' + name + '"  data-name=" `' + name + '`">' + name + '</a></li>';
+                     }
+                 });
+                 this.ui.tagsParent.empty().html(str);
+diff --git a/dashboardv2/public/js/views/tag/addTagModalView.js b/dashboardv2/public/js/views/tag/addTagModalView.js
+index 559b2d57..cda5cf6c 100644
+--- a/dashboardv2/public/js/views/tag/addTagModalView.js
++++ b/dashboardv2/public/js/views/tag/addTagModalView.js
+@@ -193,6 +193,9 @@ define(['require',
+             var str = '<option selected="selected" disabled="disabled">-- Select a tag from the dropdown list --</option>';
+             this.collection.fullCollection.sort().each(function(obj, key) {
+                 var name = Utils.getName(obj.toJSON(), 'name');
++                if (name === "TaxonomyTerm") {
++                    return;
++                }
+                 // using obj.get('name') insted of name variable because if html is presen in name then escaped name will not found in tagList.
+                 if (_.indexOf(that.tagList, obj.get('name')) === -1) {
+                     str += '<option>' + name + '</option>';
+-- 
+2.11.0 (Apple Git-81)
+
diff --git a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java
index 075b9b6..da6d636 100644
--- a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java
+++ b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/EntityGraphRetriever.java
@@ -275,6 +275,11 @@
         }
 
         List<AtlasClassification> classifications = getClassifications(instanceVertex, classificationName);
+
+        if(CollectionUtils.isEmpty(classifications)) {
+            throw new AtlasBaseException(AtlasErrorCode.CLASSIFICATION_NOT_FOUND, classificationName);
+        }
+
         return classifications.get(0);
     }
 
@@ -550,4 +555,4 @@
     private Object getVertexAttribute(AtlasVertex vertex, AtlasAttribute attribute) throws AtlasBaseException {
         return vertex != null && attribute != null ? mapVertexToAttribute(vertex, attribute, null) : null;
     }
-}
\ No newline at end of file
+}
