diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py
index 9ac5bbe036863ecf40d704fc2ed69dbad16fd6ac..2280f6e0211a4945e5a5feed19fcad4fd0b3ecc7 100644
--- a/inventory_provider/juniper.py
+++ b/inventory_provider/juniper.py
@@ -313,11 +313,9 @@ def load_routers_from_netdash(url):
     """
     r = requests.get(url=url)
     r.raise_for_status()
-
-    neteng_routers = set([
+    return [
         l.strip() for l in r.text.splitlines() if l.strip()
-    ])
-    return list(neteng_routers)
+    ]
 
 
 def local_interfaces(
diff --git a/inventory_provider/tasks/data.py b/inventory_provider/tasks/data.py
index 278f2721bd457854966f119314783eb10664b3fa..4c2b2e847769af3f329c3a1ff43ada10f1f102bd 100644
--- a/inventory_provider/tasks/data.py
+++ b/inventory_provider/tasks/data.py
@@ -105,11 +105,12 @@ def build_service_interface_user_list(config):
 
 def derive_router_hostnames(config):
     r = get_next_redis(config)
-    junosspace_equipment = set()
-    for k in r.keys('junosspace:*'):
-        m = re.match('^junosspace:(.*)$', k.decode('utf-8'))
-        assert m
-        junosspace_equipment.add(m.group(1))
+
+    routers = r.get('netdash')
+    assert routers
+    junosspace_equipment = json.loads(routers.decode('utf-8'))
+    assert isinstance(junosspace_equipment, (list, tuple))
+    junosspace_equipment = set(junosspace_equipment)
 
     opsdb_equipment = set()
     for k in r.scan_iter('opsdb:interface_services:*'):
diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index d00a07f9d96a7ab05c79853e373d260fcd0c9bc3..4042331c6fbd510d3d5fcf8edee1b5044add372d 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -268,36 +268,25 @@ def update_neteng_managed_device_list(self):
     self.update_state(
         state=states.STARTED,
         meta={
-            'task': 'update_junosspace_device_list',
-            'message': 'querying junosspace for managed routers'
+            'task': 'update_neteng_managed_device_list',
+            'message': 'querying netdash for managed routers'
         })
 
-    r = get_next_redis(InventoryTask.config)
-
-    routers = {}
-    for d in juniper.load_routers_from_junosspace(
-            InventoryTask.config['junosspace']):
-        routers['junosspace:' + d['hostname']] = json.dumps(d).encode('utf-8')
+    routers = list(juniper.load_routers_from_netdash(
+        InventoryTask.config['managed-routers']))
 
     self.update_state(
         state=states.STARTED,
         meta={
-            'task': 'update_junosspace_device_list',
-            'message': 'found %d routers, saving details' % len(routers)
+            'task': 'update_neteng_managed_device_list',
+            'message': f'found {len(routers)} routers, saving details'
         })
 
-    rp = r.pipeline()
-    for k in r.scan_iter('junosspace:*'):
-        rp.delete(k)
-    rp.execute()
-
-    rp = r.pipeline()
-    for k, v in routers.items():
-        rp.set(k, v)
-    rp.execute()
+    r = get_next_redis(InventoryTask.config)
+    r.set('netdash', json.dumps(routers).encode('utf-8'))
 
     return {
-        'task': 'update_junosspace_device_list',
+        'task': 'update_neteng_managed_device_list',
         'message': 'saved %d managed routers' % len(routers)
     }