diff --git a/inventory_provider/db/ims.py b/inventory_provider/db/ims.py
index b3f4b26637452f578230d2df940c261ec4f43713..e3d43074bef0bc8d165ae23ea6fc741ea192ef15 100644
--- a/inventory_provider/db/ims.py
+++ b/inventory_provider/db/ims.py
@@ -6,6 +6,8 @@ from enum import Enum
 
 # Navigation Properties
 # http://149.210.162.190:81/ImsVersions/4.19.9/html/86d07a57-fa45-835e-d4a2-a789c4acbc96.htm  # noqa
+from requests import HTTPError
+
 CIRCUIT_PROPERTIES = {
     'Ports': 512,
     'InternalPorts': 1024,
@@ -75,6 +77,8 @@ VENDOR_RELATED_CONTACT_PROPERTIES = {
     'Contact': 16
 }
 
+NO_FILTERED_RESULTS_MESSAGE = 'no records found for entity:'
+
 
 class InventoryStatus(Enum):
     PLANNED = 1
@@ -166,7 +170,12 @@ class IMS(object):
             if response_.status_code == requests.codes.unauthorized:
                 return True
 
-            if response_.status_code == requests.codes.ok:
+            if response_.status_code in (requests.codes.ok,
+                                         requests.codes.not_found):
+
+                if NO_FILTERED_RESULTS_MESSAGE in response_.text.lower():
+                    return False
+
                 r = response_.json()
                 if r and 'HasErrors' in r and r['HasErrors']:
                     for e in r['Errors']:
@@ -238,12 +247,20 @@ class IMS(object):
                 'paginatorNumberOfElements': step_count
             }
             url = f'{entity}/filtered/{filter_string}'
-            entities = self._get_entity(
-                url,
-                params,
-                navigation_properties,
-                use_cache)
-            more_to_come = False
+            try:
+                more_to_come = False
+                entities = self._get_entity(
+                    url,
+                    params,
+                    navigation_properties,
+                    use_cache)
+            except HTTPError as e:
+                r = e.response
+                if r.status_code == requests.codes.not_found \
+                        and NO_FILTERED_RESULTS_MESSAGE in r.text.lower():
+                    entities = None
+                else:
+                    raise e
             if entities:
                 more_to_come = \
                     len(entities) >= step_count
diff --git a/test/test_ims.py b/test/test_ims.py
index 6031e863a05304e76520fb525cd1607240e53ee2..88d5945b372386b5920a97297978f387f88c5dbb 100644
--- a/test/test_ims.py
+++ b/test/test_ims.py
@@ -1,3 +1,5 @@
+from requests import HTTPError
+
 import inventory_provider
 
 
@@ -5,6 +7,7 @@ class MockResponse:
     def __init__(self, json_data, status_code):
         self.json_data = json_data
         self.status_code = status_code
+        self.text = '' if json_data else 'No records found for Entity:XXXXX'
 
     def json(self):
         return self.json_data
@@ -96,6 +99,20 @@ def test_ims_class_filtered_entities(mocker):
     assert mock_multi_get.call_count == 2
     assert res == [1, 2, 3]
 
+    def side_effect_no_recs(*args, **kargs):
+        if kargs['params']['paginatorStartElement'] == 0:
+            return MockResponse([1, 2], 200)
+        e = HTTPError()
+        e.response = MockResponse('', 404)
+        raise e
+
+    mocker.patch('inventory_provider.db.ims.requests.get',
+                 side_effect=side_effect_no_recs)
+
+    res = list(ds.get_filtered_entities(
+        'Node', 'dummy_param=dummy value', step_count=2))
+    assert res == [1, 2]
+
 
 def test_ims_class_get_all_entities(mocker):
     mock_get = mocker.patch('inventory_provider.db.ims.requests.get')