diff --git a/inventory_provider/db/ims.py b/inventory_provider/db/ims.py
index 5a9f1d4120e46513a37edbfa4bbfed0bbf1d08ad..832c39b6a9a758a62c7c3d7049fc49bf6b060c26 100644
--- a/inventory_provider/db/ims.py
+++ b/inventory_provider/db/ims.py
@@ -7,7 +7,10 @@ from enum import Enum
 
 
 # Navigation Properties
-
+# http://149.210.162.190:81/ImsVersions/4.19.9/html/86d07a57-fa45-835e-d4a2-a789c4acbc96.htm  # noqa
+CIRCUIT_PROPERTIES = {
+    'InternalPorts': 1024
+}
 # http://149.210.162.190:81/ImsVersions/4.19.9/html/2d27d509-77cb-537d-3ffa-796de7e82af8.htm  # noqa
 NODE_PROPERTIES = {
     'equipment definition': 16,
@@ -84,6 +87,7 @@ class IMS(object):
         response.raise_for_status()
         cls.bearer_token_init_time = re_init_time
         cls.bearer_token = response.json()
+        print(f'New token issued: {cls.bearer_token}')  # Remove after demo
 
     def _get_entity(
             self,
@@ -110,7 +114,7 @@ class IMS(object):
                 return entity
 
         if not IMS.bearer_token:
-            self._init_bearer_token(self.username, self.password)
+            IMS._init_bearer_token(self.username, self.password)
 
         def _is_invalid_login_state(response_):
             if response_.status_code == requests.codes.unauthorized:
@@ -118,6 +122,10 @@ class IMS(object):
 
             if response_.status_code == requests.codes.ok:
                 j = response_.json()
+                if j is None:
+                    # Sometime the API returns a 200 response but with no
+                    # body when the token has expired e.g. on a filtered query
+                    return True
                 if j and isinstance(j, dict) and \
                         j.get('HasErrors', False) and 'guid expired' in \
                         j['Errors'][0]['ErrorMessage'].lower():
@@ -203,10 +211,11 @@ if __name__ == '__main__':
     username = sys.argv[1]
     password = sys.argv[2]
     ims = IMS('http://83.97.94.128:81/api', username, password)
-    i = ims.get_entity_by_name(
-        'Site',
-        'London',
-        SITE_PROPERTIES.values())
-    print(i)
+    i = ims.get_entity_by_id(
+        sys.argv[3],
+        sys.argv[4],
+        sys.argv[5] if len(sys.argv) > 5 else None
+    )
+    print(json.dumps(i, indent=4, sort_keys=True))