diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index 56e0d44a85a14e5d42d89838b0f5bcffee4b3e2e..34d83a5dd16005e2ba0d42a231c2af65cf396345 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -255,6 +255,22 @@ def refresh_ix_public_peers(hostname, netconf):
             json.dumps(peer))
 
 
+def refresh_vpn_rr_peers(hostname, netconf):
+    task_logger = logging.getLogger(constants.TASK_LOGGER_NAME)
+    task_logger.debug(
+        'removing cached vpn rr for %r' % hostname)
+    r = get_redis(InventoryTask.config)
+    for k in r.keys('vpn_rr_peer:*'):
+        value = json.loads(r.get(k.decode('utf-8')).decode('utf-8'))
+        if value['router'] == hostname:
+            r.delete(k)
+
+    for peer in juniper.vpn_rr_peers(netconf):
+        peer['router'] = hostname
+        r.set(
+            'vpn_rr_peer:' + peer['name'],
+            json.dumps(peer))
+
 @app.task
 def reload_router_config(hostname):
     task_logger = logging.getLogger(constants.TASK_LOGGER_NAME)
@@ -268,6 +284,7 @@ def reload_router_config(hostname):
     else:
 
         refresh_ix_public_peers(hostname, netconf_doc)
+        refresh_vpn_rr_peers(hostname, netconf_doc)
 
         community = juniper.snmp_community_string(netconf_doc)
         if not community: