diff --git a/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html b/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html
index af984f5..4361ca1 100644
--- a/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html
+++ b/dashboardv2/public/js/templates/search/SearchResultLayoutView_tmpl.html
@@ -25,6 +25,10 @@
         <a href="javascript:void(0)" class="inputAssignTag multiSelectTag assignTag btnAssign" style="display:none" data-id="addAssignTag"><i class="fa fa-plus"></i> Assign Tag</a>
     </div>
     <div class="searchTable">
+        <div style="display: none;margin-left: 20px" data-id="checkDeletedEntity">
+            <label class="checkbox">
+                <input type="checkbox" class="input" name="queryType" value="text" name="check" value="1" />Include historical entities</label>
+        </div>
         <span style="display: none;" class="labelShowRecord pull-left" data-id="pageRecordText"></span>
         <div data-id="paginationDiv" style="display:none">
             <ul class="pager pull-right">
diff --git a/dashboardv2/public/js/views/search/SearchResultLayoutView.js b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
index cad4bec..b2f24d4 100644
--- a/dashboardv2/public/js/views/search/SearchResultLayoutView.js
+++ b/dashboardv2/public/js/views/search/SearchResultLayoutView.js
@@ -60,6 +60,7 @@
                 addAssignTag: "[data-id='addAssignTag']",
                 editEntityButton: "[data-id='editEntityButton']",
                 createEntity: "[data-id='createEntity']",
+                checkDeletedEntity: "[data-id='checkDeletedEntity']"
             },
             templateHelpers: function() {
                 return {
@@ -116,6 +117,7 @@
                 events["click " + this.ui.previousData] = "onClickpreviousData";
                 events["click " + this.ui.editEntityButton] = "onClickEditEntity";
                 events["click " + this.ui.createEntity] = 'onClickCreateEntity';
+                events["click " + this.ui.checkDeletedEntity] = 'onCheckDeletedEntity';
                 return events;
             },
             /**
@@ -128,7 +130,6 @@
                 this.entityModel = new VEntity();
                 this.searchCollection = new VSearchList();
                 this.limit = 25;
-                this.firstFetch = true;
                 this.asyncFetchCounter = 0;
                 this.offset = 0;
                 this.commonTableOptions = {
@@ -231,18 +232,19 @@
                     }
                 }
             },
-            fetchCollection: function(value) {
+            fetchCollection: function(value, deleteChecked) {
                 var that = this;
                 this.showLoader();
                 if (Globals.searchApiCallRef && Globals.searchApiCallRef.readyState === 1) {
                     Globals.searchApiCallRef.abort();
                 }
-
                 if (value && !value.paginationChange) {
                     $.extend(this.searchCollection.queryParams, { limit: this.limit });
                     if (value.searchType) {
                         this.searchCollection.url = UrlLinks.searchApiUrl(value.searchType);
-                        $.extend(this.searchCollection.queryParams, { limit: this.limit });
+                        if (deleteChecked === undefined) {
+                            $.extend(this.searchCollection.queryParams, { limit: this.limit, excludeDeletedEntities: true });
+                        }
                         this.offset = 0;
                     }
                     _.extend(this.searchCollection.queryParams, { 'query': (value.query ? value.query.trim() : null), 'typeName': value.type || null, 'classification': value.tag || null });
@@ -281,21 +283,10 @@
                                 that.ui.previousData.attr('disabled', true);
                             }
                             if (that.searchCollection.models.length === 0) {
-                                that.checkTableFetch();
                                 that.offset = that.offset - that.limit;
-                                if (that.firstFetch) {
-                                    that.renderTableLayoutView();
-                                }
                             }
                         }
-                        if (that.firstFetch) {
-                            that.firstFetch = false;
-                        }
-
-                        // checking length for not rendering the table
-                        if (that.searchCollection.models.length) {
-                            that.renderTableLayoutView();
-                        }
+                        that.renderTableLayoutView();
                         if (value) {
                             var resultArr = [];
                             if (that.searchCollection.queryParams.typeName) {
@@ -326,6 +317,11 @@
                     that.REntityTableLayoutView.show(new TableLayout(_.extend({}, that.commonTableOptions, {
                         columns: columns
                     })));
+                    if (that.searchCollection.models.length && that.value.searchType !== "dsl") {
+                        that.ui.checkDeletedEntity.show();
+                    } else {
+                        that.ui.checkDeletedEntity.hide();
+                    }
                     that.ui.paginationDiv.show();
                     that.$(".ellipsis .inputAssignTag").hide();
                     that.renderBreadcrumb();
@@ -656,6 +652,14 @@
                         }
                     });
                 });
+            },
+            onCheckDeletedEntity: function(e) {
+                if (e.target.checked) {
+                    $.extend(this.searchCollection.queryParams, { limit: this.limit, excludeDeletedEntities: false });
+                } else {
+                    $.extend(this.searchCollection.queryParams, { limit: this.limit, excludeDeletedEntities: true });
+                }
+                this.fetchCollection(this.value, e.target.checked);
             }
         });
     return SearchResultLayoutView;
