diff --git a/inventory_provider/router_details.py b/inventory_provider/router_details.py
index 7eb2d24ec6995fbb8c6872762a120b5a9ce0d6ac..5c4ce7bc2cd1b0662249c45d8991a13d1943a6b5 100644
--- a/inventory_provider/router_details.py
+++ b/inventory_provider/router_details.py
@@ -19,12 +19,14 @@ def get_router_details(router):
     app.send_task(
         'inventory_provider.tasks.worker.juniper_refresh_vrr',
         args=[router["hostname"]])
+
     task_logger.debug("launching task: "
                       "inventory_provider"
                       ".tasks.worker.juniper_refresh_interfaces")
     app.send_task(
         'inventory_provider.tasks.worker.juniper_refresh_interfaces',
         args=[router["hostname"]])
+
     task_logger.debug("launching task: "
                       "inventory_provider"
                       ".tasks.worker.snmp_refresh_interfaces")
@@ -32,6 +34,15 @@ def get_router_details(router):
         'inventory_provider.tasks.worker.snmp_refresh_interfaces',
         args=[router["hostname"], router["community"]])
 
+    task_logger.debug("launching task: "
+                      "inventory_provider"
+                      ".tasks.worker.netconf_refresh_config")
+    app.send_task(
+        'inventory_provider.tasks.worker.netconf_refresh_config',
+        args=[router["hostname"]])
+
+
+
 
 def update_network_details(params):
     task_logger = logging.getLogger(TASK_LOGGER_NAME)
diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index c1c9022a92d29fe1cd855ee0e9509ee72316c956..2ac02c3403786193ba42498b6ef5267a57d6a309 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -4,9 +4,11 @@ import logging
 from celery import bootsteps, Task
 import redis
 
+from lxml import etree
+
 from inventory_provider.tasks.app import app
 from inventory_provider import config
-from inventory_provider import juniper, snmp
+from inventory_provider import juniper, snmp, netconf
 from inventory_provider import constants
 
 logging.basicConfig(level=logging.WARNING)
@@ -37,6 +39,20 @@ class InventoryTask(Task):
             "saved %s, key %s" % (hostname, key))
         return "OK"
 
+    @staticmethod
+    def save_key_json(hostname, key, data):
+        InventoryTask.save_key(
+            hostname,
+            key,
+            json.dumps(data))
+
+    @staticmethod
+    def save_key_etree(hostname, key, data):
+        InventoryTask.save_key(
+            hostname,
+            key,
+            etree.tostring(data, encoding='utf-8'))
+
 
 class WorkerArgs(bootsteps.Step):
     def __init__(self, worker, config_filename, **options):
@@ -60,7 +76,7 @@ app.steps['worker'].add(WorkerArgs)
 
 @app.task(bind=InventoryTask)
 def juniper_refresh_bgp(self, hostname):
-    InventoryTask.save_key(
+    InventoryTask.save_key_json(
         hostname,
         "bgp",
         juniper.fetch_bgp_config(hostname, InventoryTask.config["ssh"]))
@@ -68,7 +84,7 @@ def juniper_refresh_bgp(self, hostname):
 
 @app.task(bind=InventoryTask)
 def juniper_refresh_vrr(self, hostname):
-    InventoryTask.save_key(
+    InventoryTask.save_key_json(
         hostname,
         "vrr",
         juniper.fetch_vrr_config(hostname, InventoryTask.config["ssh"]))
@@ -76,7 +92,7 @@ def juniper_refresh_vrr(self, hostname):
 
 @app.task(bind=InventoryTask)
 def juniper_refresh_interfaces(self, hostname):
-    InventoryTask.save_key(
+    InventoryTask.save_key_json(
         hostname,
         "interfaces",
         juniper.fetch_interfaces(hostname, InventoryTask.config["ssh"]))
@@ -84,10 +100,19 @@ def juniper_refresh_interfaces(self, hostname):
 
 @app.task(bind=InventoryTask)
 def snmp_refresh_interfaces(self, hostname, community):
-    InventoryTask.save_key(
+    InventoryTask.save_key_json(
         hostname,
         "snmp-interfaces",
         list(snmp.get_router_interfaces(
             hostname,
             community,
             InventoryTask.config)))
+
+
+@app.task(bind=InventoryTask)
+def netconf_refresh_config(self, hostname):
+    InventoryTask.save_key(
+        hostname,
+        "netconf",
+        netconf.load_config_str(hostname, InventoryTask.config["ssh"]))
+