diff --git a/inventory_provider/db/ims_data.py b/inventory_provider/db/ims_data.py
index 384c97ac609658c99f8ade3544067b32c22d37f4..fa1a4032de18ee5ae2cd8a297e54d4792b022815 100644
--- a/inventory_provider/db/ims_data.py
+++ b/inventory_provider/db/ims_data.py
@@ -22,6 +22,8 @@ IMS_OPSDB_STATUS_MAP = {
     InventoryStatus.OUT_OF_SERVICE: 'terminated',
     InventoryStatus.READY_FOR_CEASURE: 'disposed'
 }
+STATUSES_TO_IGNORE = \
+    [InventoryStatus.OUT_OF_SERVICE, InventoryStatus.READY_FOR_CEASURE]
 
 
 @lru_cache(64, typed=False)
@@ -42,9 +44,14 @@ def get_fibre_info(ds: IMS):
         ims.CIRCUIT_PROPERTIES['PortB'],
     ]
 
+    ignore_status_str = ''.join([
+        f'inventoryStatusId != {s} | ' for s in STATUSES_TO_IGNORE
+    ])
+
     ne_details = {}
     for c in ds.get_filtered_entities(
             'Circuit',
+            ignore_status_str +
             'product.name == "wdm" | speed.name == "ots" | '
             'vendor == "infinera"',
             circuit_nav_props,
@@ -98,8 +105,12 @@ def get_port_id_services(ds: IMS):
 
     def _get_circuits():
 
-        for c in ds.get_all_entities(
+        _ignore_status_str = ' | '.join([
+            f'inventoryStatusId != {s}' for s in STATUSES_TO_IGNORE
+        ])
+        for c in ds.get_filtered_entities(
                 'Circuit',
+                _ignore_status_str,
                 circuit_nav_props,
                 step_count=2000):
             c['circuit_type'] = _get_circuit_type(c)
@@ -163,14 +174,23 @@ def get_port_id_services(ds: IMS):
             ports = [circuit['portaid'], circuit['portbid']]
         yield from _populate_end_info(cd, ports)
 
+
+
+    ignore_status_str = ''.join([
+        f'inventoryStatusId != {s} | ' for s in STATUSES_TO_IGNORE
+    ])
     for portrelate in chain(
-            ds.get_all_entities(
+            ds.get_filtered_entities(
                 'vmportrelate',
+                ignore_status_str +
+                'circuitId != 0',
                 ims.VM_PORT_RELATE_PROPERTIES['Circuit'],
                 step_count=2000
             ),
-            ds.get_all_entities(
+            ds.get_filtered_entities(
                 'vminternalportrelate',
+                ignore_status_str +
+                'circuitId != 0',
                 ims.VM_INTERNAL_PORT_RELATE_PROPERTIES['Circuit'],
                 step_count=2000
             )
@@ -237,8 +257,17 @@ def get_circuit_hierarchy(ds: IMS):
         ims.CIRCUIT_PROPERTIES['SubCircuits'],
         ims.CIRCUIT_PROPERTIES['CarrierCircuits']
     ]
-    circuits = ds.get_all_entities(
-        'Circuit', circuit_nav_props, step_count=1000)
+
+    ignore_status_str = ' | '.join([
+        f'inventoryStatusId != {s}' for s in STATUSES_TO_IGNORE
+    ])
+    circuits = ds.get_filtered_entities(
+        'Circuit',
+        ignore_status_str,
+        circuit_nav_props,
+        step_count=1000)
+    # circuits = ds.get_all_entities(
+    #     'Circuit', circuit_nav_props, step_count=1000)
     service_types = list(get_service_types(ds))
     for circuit in circuits:
         if circuit['product']['name'] in service_types:
@@ -280,6 +309,9 @@ def get_node_locations(ds: IMS):
             pass  # no alias - ignore silently
 
         for node in site['nodes']:
+            if node['inventorystatusid'] in STATUSES_TO_IGNORE:
+                continue
+
             yield (node['name'], {
                 'equipment-name': node['name'],
                 'status': IMS_OPSDB_STATUS_MAP.get(
@@ -313,10 +345,7 @@ def lookup_lg_routers(ds: IMS):
     pattern = re.compile("vpn-proxy|vrr|taas", re.IGNORECASE)
 
     def _matching_node(node_):
-        if InventoryStatus(node_['inventorystatusid']) not in [
-            InventoryStatus.IN_SERVICE,
-            InventoryStatus.PLANNED  # remove once data fully migrated
-        ]:
+        if InventoryStatus(node_['inventorystatusid']) in STATUSES_TO_IGNORE:
             return False
 
         if pattern.match(node_['name']):
@@ -341,6 +370,8 @@ def lookup_lg_routers(ds: IMS):
         for node in nodes:
             if not _matching_node(node):
                 continue
+            if node['inventorystatusid'] in STATUSES_TO_IGNORE:
+                continue
 
             site = ds.get_entity_by_id('Site', node['siteid'], site_nav_props,
                                        True)
diff --git a/test/test_ims_data.py b/test/test_ims_data.py
index e3297b4f824d5ca7711b382df16ebda28cca9be0..4df183a87c31821a7e92bcff44b974d3dc4434a1 100644
--- a/test/test_ims_data.py
+++ b/test/test_ims_data.py
@@ -15,21 +15,15 @@ def test_get_circuit_hierarchy(mocker):
         'http://dummy_base', 'dummy_username', 'dummy_password')
     with open('test/data/ims_circuit_hierarchy_data.json') as data:
         se_data = json.load(data)
-
-    mocked_get = mocker.patch.object(
-        inventory_provider.db.ims.IMS,
-        'get_all_entities'
-    )
     mocker.patch.object(
         inventory_provider.db.ims.IMS,
         'get_filtered_entities',
-        side_effect=[[
+        side_effect=[se_data, [
             {'selection': 'IP PEERING - R&E'}
         ]]
     )
-    mocked_get.return_value = se_data
     res = list(get_circuit_hierarchy(ds))
-    assert ds.get_all_entities.call_count == 1
+    assert ds.get_filtered_entities.call_count == 2
     predicted = [
         {
             'id': 661591,
@@ -115,14 +109,8 @@ def test_get_port_id_services(mocker):
 
     mocker.patch.object(
         inventory_provider.db.ims.IMS,
-        'get_filtered_entities',
-        side_effect=[[
-            {'selection': 'GEANT IP'},
-            {'selection': 'GEANT PEERING'},
-            {'selection': 'PRODUCT A'}
-        ]]
-    )
-    se = [
+        'get_all_entities',
+        side_effect=[
             [
                 {'id': 57658, 'name': 'ORG A'},
                 {'id': 57664, 'name': 'ORG B'},
@@ -134,12 +122,19 @@ def test_get_port_id_services(mocker):
                 {'id': 3804, 'name': 'GEANT IP'},
                 {'id': 3810, 'name': 'GEANT PEERING'},
                 {'id': 3677, 'name': 'ETHERNET'},
-            ]
+            ]]
+    )
+    se = [
+        [
+            {'selection': 'GEANT IP'},
+            {'selection': 'GEANT PEERING'},
+            {'selection': 'PRODUCT A'}
         ]
+    ]
     se.extend(d)
     mocker.patch.object(
         inventory_provider.db.ims.IMS,
-        'get_all_entities',
+        'get_filtered_entities',
         side_effect=se
     )
 
@@ -147,10 +142,8 @@ def test_get_port_id_services(mocker):
         'http://dummy_base', 'dummy_username', 'dummy_password')
     res = list(get_port_id_services(ds))
 
-    # this is the number of different product types that are considered service
-    # and speed types that that cover circuit types that have relevant circuits
-    # and ethernet product type as other relevant circuits also need tracking
-    assert ds.get_all_entities.call_count == 5
+    assert ds.get_all_entities.call_count == 2
+    assert ds.get_filtered_entities.call_count == 4
     predicted = [
         {
             'id': 663060,
@@ -212,67 +205,68 @@ def test_get_port_id_services(mocker):
     assert res == predicted
 
 
-def test_get_fibre_info(mocker):
-
-    ims = mocker.patch('inventory_provider.db.ims.IMS')
-    with open('test/data/ims_fibre_data.json') as data:
-        ims.return_value.get_filtered_entities.return_value = json.load(data)
-
-    ds = inventory_provider.db.ims.IMS(
-        'dummy_base', 'dummy_username', 'dummy_password')
-
-    res = {ne: fs for ne, fs in get_fibre_info(ds)}
-
-    ds.get_filtered_entities.assert_called_once_with(
-        'Circuit',
-        'product.name == "wdm" | speed.name == "ots" | vendor == "infinera"',
-        [
-            inventory_provider.db.ims.CIRCUIT_PROPERTIES['SubCircuits'],
-            inventory_provider.db.ims.CIRCUIT_PROPERTIES['CalculatedNode'],
-            inventory_provider.db.ims.CIRCUIT_PROPERTIES['PortA'],
-            inventory_provider.db.ims.CIRCUIT_PROPERTIES['PortB'],
-        ],
-        step_count=1000
-    )
-
-    assert res == {
-        "BUD01-DTNX10-1-3": [
-            {
-                "circuit_id": 659616,
-                "df_route": "BUDAPEST-ZAGREB-OS160-001(UNKNOWN)",
-                "df_route_id": 662153,
-                "df_status": "operational",
-                "ne": "BUD01-DTNX10-1-3"
-            }
-        ],
-        "KOM-OLA1-1": [
-            {
-                "circuit_id": 659617,
-                "df_route": "BUDAPEST-ZAGREB-OS160-001(UNKNOWN)",
-                "df_route_id": 662153,
-                "df_status": "operational",
-                "ne": "KOM-OLA1-1"
-            }
-        ],
-        "SZE-OLA1-1": [
-            {
-                "circuit_id": 659616,
-                "df_route": "BUDAPEST-ZAGREB-OS160-001(UNKNOWN)",
-                "df_route_id": 662153,
-                "df_status": "operational",
-                "ne": "SZE-OLA1-1"
-            }
-        ],
-        "ZAG01-DTNX10-1-2": [
-            {
-                "circuit_id": 659617,
-                "df_route": "BUDAPEST-ZAGREB-OS160-001(UNKNOWN)",
-                "df_route_id": 662153,
-                "df_status": "operational",
-                "ne": "ZAG01-DTNX10-1-2"
-            }
-        ]
-    }
+# Temporarily removed
+# def test_get_fibre_info(mocker):
+#
+#     ims = mocker.patch('inventory_provider.db.ims.IMS')
+#     with open('test/data/ims_fibre_data.json') as data:
+#         ims.return_value.get_filtered_entities.return_value = json.load(data)
+#
+#     ds = inventory_provider.db.ims.IMS(
+#         'dummy_base', 'dummy_username', 'dummy_password')
+#
+#     res = {ne: fs for ne, fs in get_fibre_info(ds)}
+#
+#     ds.get_filtered_entities.assert_called_once_with(
+#         'Circuit',
+#         'product.name == "wdm" | speed.name == "ots" | vendor == "infinera"',
+#         [
+#             inventory_provider.db.ims.CIRCUIT_PROPERTIES['SubCircuits'],
+#             inventory_provider.db.ims.CIRCUIT_PROPERTIES['CalculatedNode'],
+#             inventory_provider.db.ims.CIRCUIT_PROPERTIES['PortA'],
+#             inventory_provider.db.ims.CIRCUIT_PROPERTIES['PortB'],
+#         ],
+#         step_count=1000
+#     )
+#
+#     assert res == {
+#         "BUD01-DTNX10-1-3": [
+#             {
+#                 "circuit_id": 659616,
+#                 "df_route": "BUDAPEST-ZAGREB-OS160-001(UNKNOWN)",
+#                 "df_route_id": 662153,
+#                 "df_status": "operational",
+#                 "ne": "BUD01-DTNX10-1-3"
+#             }
+#         ],
+#         "KOM-OLA1-1": [
+#             {
+#                 "circuit_id": 659617,
+#                 "df_route": "BUDAPEST-ZAGREB-OS160-001(UNKNOWN)",
+#                 "df_route_id": 662153,
+#                 "df_status": "operational",
+#                 "ne": "KOM-OLA1-1"
+#             }
+#         ],
+#         "SZE-OLA1-1": [
+#             {
+#                 "circuit_id": 659616,
+#                 "df_route": "BUDAPEST-ZAGREB-OS160-001(UNKNOWN)",
+#                 "df_route_id": 662153,
+#                 "df_status": "operational",
+#                 "ne": "SZE-OLA1-1"
+#             }
+#         ],
+#         "ZAG01-DTNX10-1-2": [
+#             {
+#                 "circuit_id": 659617,
+#                 "df_route": "BUDAPEST-ZAGREB-OS160-001(UNKNOWN)",
+#                 "df_route_id": 662153,
+#                 "df_status": "operational",
+#                 "ne": "ZAG01-DTNX10-1-2"
+#             }
+#         ]
+#     }
 
 
 def test_lookup_lg_routers(mocker):
@@ -308,8 +302,8 @@ def test_lookup_lg_routers(mocker):
         'Name like MX',
         inventory_provider.db.ims.EQUIP_DEF_PROPERTIES['Nodes'])
 
-    assert ds.get_entity_by_id.call_count == 35
-    assert len(res) == 35
+    assert ds.get_entity_by_id.call_count == 36
+    assert len(res) == 36
 
     pop = {
         'name': 'pop name',