diff --git a/README.md b/README.md
index 2de1ab1dea7b91ad68b08f77694f7ffcb9228544..79dce28a85f488014c0114adba6784ccabeac93a 100755
--- a/README.md
+++ b/README.md
@@ -270,7 +270,7 @@ commands and parse data in JSON format, that Telegraf can parse and forward to I
 [you@host <repo location>]$cp telegraf_configs/twping_json.py /opt/twping_json.py
 ```
 
-Copy Telegraf configuation template, edit and adapt to you deployment as needed.
+Copy Telegraf configuration template, edit and adapt to you deployment as needed.
 
 ```
 [you@host <repo location>]$sudo mv /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.orig
@@ -278,6 +278,10 @@ Copy Telegraf configuation template, edit and adapt to you deployment as needed.
 [you@host <repo location>]$sudo nano /etc/telegraf/telegraf.conf
 ```
 
+Copy Telegraf testlist generated by the init script in the telegraf config fragments locations
+
+[you@host <repo location>]$sudo cp testlist.conf /etc/telegraf/telegraf.d/geant_tests.conf
+
 Once done test the data acquisition process works without errors
 
 ```
diff --git a/telegraf_configs/telegraf.conf b/telegraf_configs/telegraf.conf
index 4a4627ac3d5de7420843853225c7fab2bb1e6237..569be2720195351806fe0465e5124d57772dc39a 100644
--- a/telegraf_configs/telegraf.conf
+++ b/telegraf_configs/telegraf.conf
@@ -21,74 +21,3 @@
   data_format = "json"
 
 
-#
-# TWAMP script runner - TWAMP server-client running on network devices
-#
-[[inputs.exec]]
-  commands = [
-  "/opt/rpm_twamp_snmp.py 62.40.96.47 62.40.97.7 TWAMP 3VfrNKak rt1.pra.cz--mx1.vie.at mx1.vie.at",
-  "/opt/rpm_twamp_snmp.py 62.40.96.47 62.40.97.12 TWAMP 3VfrNKak rt1.pra.cz--mx1.fra.de mx1.fra.de",
-  "/opt/rpm_twamp_snmp.py 62.40.97.7 62.40.97.10 TWAMP 3VfrNKak mx1.vie.at--mx1.poz.pl mx1.poz.pl",
-  "/opt/rpm_twamp_snmp.py 62.40.97.7 62.40.97.1 TWAMP 3VfrNKak mx1.vie.at--mx1.bud.hu mx1.bud.hu",
-  "/opt/rpm_twamp_snmp.py 62.40.97.7 62.40.97.15 TWAMP 3VfrNKak mx1.vie.at--mx1.mil2.it mx1.mil2.it",
-  "/opt/rpm_twamp_snmp.py 62.40.97.7 62.40.96.39 TWAMP 3VfrNKak mx1.vie.at--mx1.ath2.gr mx1.ath2.gr",
-  "/opt/rpm_twamp_snmp.py 62.40.97.7 62.40.96.21 TWAMP 3VfrNKak mx1.vie.at--mx1.sof.bg mx1.sof.bg",
-  "/opt/rpm_twamp_snmp.py 62.40.97.12 62.40.96.19 TWAMP 3VfrNKak mx1.fra.de--mx1.buc.ro mx1.buc.ro",
-  "/opt/rpm_twamp_snmp.py 62.40.97.12 62.40.97.11 TWAMP 3VfrNKak mx1.fra.de--mx1.ams.nl mx1.ams.nl",
-  "/opt/rpm_twamp_snmp.py 62.40.97.10 62.40.97.12 TWAMP 3VfrNKak mx1.poz.pl--mx1.fra.de mx1.fra.de",
-  "/opt/rpm_twamp_snmp.py 62.40.97.15 62.40.97.14 TWAMP 3VfrNKak mx1.mil2.it--mx1.gen.ch mx1.gen.ch",
-  "/opt/rpm_twamp_snmp.py 62.40.96.21 62.40.96.19 TWAMP 3VfrNKak mx1.sof.bg--mx1.buc.ro mx1.buc.ro",
-  "/opt/rpm_twamp_snmp.py 62.40.96.19 62.40.97.1 TWAMP 3VfrNKak mx1.buc.ro--mx1.bud.hu mx1.bud.hu",
-  "/opt/rpm_twamp_snmp.py 62.40.96.5 62.40.96.6 TWAMP 3VfrNKak rt1.mar.fr--rt1.mil2.it rt1.mil2.it",
-  "/opt/rpm_twamp_snmp.py 62.40.96.5 62.40.97.16 TWAMP 3VfrNKak rt1.mar.fr--mx1.mad.es mx1.mad.es",
-  "/opt/rpm_twamp_snmp.py 62.40.96.5 62.40.97.14 TWAMP 3VfrNKak rt1.mar.fr--mx1.gen.ch mx1.gen.ch",
-  "/opt/rpm_twamp_snmp.py 62.40.96.6 62.40.97.7 TWAMP 3VfrNKak rt1.mil2.it--mx1.vie.at mx1.vie.at",
-  "/opt/rpm_twamp_snmp.py 62.40.96.6 62.40.97.14 TWAMP 3VfrNKak rt1.mil2.it--mx1.gen.ch mx1.gen.ch",
-  "/opt/rpm_twamp_snmp.py 62.40.97.14 62.40.97.12 TWAMP 3VfrNKak mx1.gen.ch--mx1.fra.de mx1.fra.de",
-  "/opt/rpm_twamp_snmp.py 62.40.96.54 62.40.97.4 TWAMP 3VfrNKak rt1.bra.sk--mx2.bra.sk mx2.bra.sk",
-  "/opt/rpm_twamp_snmp.py 62.40.97.4 62.40.97.7 TWAMP 3VfrNKak mx2.bra.sk--mx1.vie.at mx1.vie.at",
-  "/opt/rpm_twamp_snmp.py 62.40.97.4 62.40.97.1 TWAMP 3VfrNKak mx2.bra.sk--mx1.bud.hu mx1.bud.hu",
-  "/opt/rpm_twamp_snmp.py 62.40.96.4 62.40.96.2 TWAMP 3VfrNKak rt2.chi.md--rt1.chi.md rt1.chi.md",
-  "/opt/rpm_twamp_snmp.py 62.40.96.4 62.40.96.68 TWAMP 3VfrNKak rt2.chi.md--rt2.kie.ua rt2.kie.ua",
-  "/opt/rpm_twamp_snmp.py 62.40.96.2 62.40.96.19 TWAMP 3VfrNKak rt1.chi.md--mx1.buc.ro mx1.buc.ro",
-  "/opt/rpm_twamp_snmp.py 62.40.96.68 62.40.96.1 TWAMP 3VfrNKak rt2.kie.ua--rt1.kie.ua rt1.kie.ua",
-  "/opt/rpm_twamp_snmp.py 62.40.96.1 62.40.97.10 TWAMP 3VfrNKak rt1.kie.ua--mx1.poz.pl mx1.poz.pl",
-  "/opt/rpm_twamp_snmp.py 62.40.96.60 62.40.96.51 TWAMP 3VfrNKak rt2.tal.ee--rt1.tal.ee rt1.tal.ee",
-  "/opt/rpm_twamp_snmp.py 62.40.96.60 62.40.96.26 TWAMP 3VfrNKak rt2.tal.ee--mx1.ham.de mx1.ham.de",
-  "/opt/rpm_twamp_snmp.py 62.40.96.51 62.40.96.59 TWAMP 3VfrNKak rt1.tal.ee--rt2.rig.lv rt2.rig.lv",
-  "/opt/rpm_twamp_snmp.py 62.40.96.26 62.40.97.12 TWAMP 3VfrNKak mx1.ham.de--mx1.fra.de mx1.fra.de",
-  "/opt/rpm_twamp_snmp.py 62.40.96.26 62.40.97.11 TWAMP 3VfrNKak mx1.ham.de--mx1.ams.nl mx1.ams.nl",
-  "/opt/rpm_twamp_snmp.py 62.40.96.59 62.40.96.58 TWAMP 3VfrNKak rt2.rig.lv--rt1.rig.lv rt1.rig.lv",
-  "/opt/rpm_twamp_snmp.py 62.40.96.58 62.40.96.52 TWAMP 3VfrNKak rt1.rig.lv--rt1.kau.lt rt1.kau.lt",
-  "/opt/rpm_twamp_snmp.py 62.40.96.36 62.40.96.42 TWAMP 3VfrNKak rt1.por.pt--rt1.bil.es rt1.bil.es",
-  "/opt/rpm_twamp_snmp.py 62.40.96.36 62.40.96.17 TWAMP 3VfrNKak rt1.por.pt--mx2.lis.pt mx2.lis.pt",
-  "/opt/rpm_twamp_snmp.py 62.40.96.42 62.40.97.16 TWAMP 3VfrNKak rt1.bil.es--mx1.mad.es mx1.mad.es",
-  "/opt/rpm_twamp_snmp.py 62.40.96.42 62.40.97.13 TWAMP 3VfrNKak rt1.bil.es--mx1.par.fr mx1.par.fr",
-  "/opt/rpm_twamp_snmp.py 62.40.96.17 62.40.97.16 TWAMP 3VfrNKak mx2.lis.pt--mx1.mad.es mx1.mad.es",
-  "/opt/rpm_twamp_snmp.py 62.40.97.13 62.40.97.14 TWAMP 3VfrNKak mx1.par.fr--mx1.gen.ch mx1.gen.ch",
-  "/opt/rpm_twamp_snmp.py 62.40.97.13 62.40.96.15 TWAMP 3VfrNKak mx1.par.fr--mx1.lon2.uk mx1.lon2.uk",
-  "/opt/rpm_twamp_snmp.py 62.40.96.53 62.40.97.10 TWAMP 3VfrNKak rt2.kau.lt--mx1.poz.pl mx1.poz.pl",
-  "/opt/rpm_twamp_snmp.py 62.40.96.53 62.40.96.52 TWAMP 3VfrNKak rt2.kau.lt--rt1.kau.lt rt1.kau.lt",
-  "/opt/rpm_twamp_snmp.py 62.40.96.62 62.40.97.11 TWAMP 3VfrNKak rt2.ams.nl--mx1.ams.nl mx1.ams.nl",
-  "/opt/rpm_twamp_snmp.py 62.40.96.62 62.40.97.5 TWAMP 3VfrNKak rt2.ams.nl--mx1.lon.uk mx1.lon.uk",
-  "/opt/rpm_twamp_snmp.py 62.40.97.5 62.40.97.11 TWAMP 3VfrNKak mx1.lon.uk--mx1.ams.nl mx1.ams.nl",
-  "/opt/rpm_twamp_snmp.py 62.40.97.5 62.40.97.14 TWAMP 3VfrNKak mx1.lon.uk--mx1.gen.ch mx1.gen.ch",
-  "/opt/rpm_twamp_snmp.py 62.40.97.5 62.40.96.15 TWAMP 3VfrNKak mx1.lon.uk--mx1.lon2.uk mx1.lon2.uk",
-  "/opt/rpm_twamp_snmp.py 62.40.97.5 62.40.96.25 TWAMP 3VfrNKak mx1.lon.uk--mx1.dub2.ie mx1.dub2.ie",
-  "/opt/rpm_twamp_snmp.py 62.40.96.15 62.40.96.3 TWAMP 3VfrNKak mx1.lon2.uk--mx1.dub.ie mx1.dub.ie",
-  "/opt/rpm_twamp_snmp.py 62.40.96.25 62.40.96.3 TWAMP 3VfrNKak mx1.dub2.ie--mx1.dub.ie mx1.dub.ie",
-  "/opt/rpm_twamp_snmp.py 62.40.96.8 62.40.97.7 TWAMP 3VfrNKak mx2.zag.hr--mx1.vie.at mx1.vie.at",
-  "/opt/rpm_twamp_snmp.py 62.40.96.8 62.40.97.1 TWAMP 3VfrNKak mx2.zag.hr--mx1.bud.hu mx1.bud.hu",
-  "/opt/rpm_twamp_snmp.py 62.40.96.10 62.40.97.1 TWAMP 3VfrNKak mx2.lju.si--mx1.bud.hu mx1.bud.hu",
-  "/opt/rpm_twamp_snmp.py 62.40.96.10 62.40.97.15 TWAMP 3VfrNKak mx2.lju.si--mx1.mil2.it mx1.mil2.it",
-  "/opt/rpm_twamp_snmp.py 62.40.96.20 62.40.97.11 TWAMP 3VfrNKak mx2.bru.be--mx1.ams.nl mx1.ams.nl",
-  "/opt/rpm_twamp_snmp.py 62.40.96.20 62.40.97.5 TWAMP 3VfrNKak mx2.bru.be--mx1.lon.uk mx1.lon.uk",
-  "/opt/rpm_twamp_snmp.py 62.40.96.11 62.40.97.15 TWAMP 3VfrNKak mx2.ath.gr--mx1.mil2.it mx1.mil2.it",
-  "/opt/rpm_twamp_snmp.py 62.40.96.11 62.40.96.39 TWAMP 3VfrNKak mx2.ath.gr--mx1.ath2.gr mx1.ath2.gr",
-]
-
-  name_suffix = "_twamp"
-  timeout = "2m"
-  data_format = "json"
-  tag_keys = ["src", "dst", "src_ip", "dst_ip"]
-#  fielddrop = ["sample_is_valid"]
\ No newline at end of file
diff --git a/tools/init_timemap_v3.py b/tools/init_timemap_v3.py
index 1b6358cd9c9172c4f40269ea362dd62539713428..076d8a58ab93bc3d06c73b6a72d4d59783a85dda 100755
--- a/tools/init_timemap_v3.py
+++ b/tools/init_timemap_v3.py
@@ -4,51 +4,57 @@ import json
 import socket
 import xml.etree.ElementTree as ET
 
+
 def get_nodes(tree):
     cy_nodes_list = []
     addr_map = {}
     svg_nodes = tree.findall(".//*[@class='node']/{http://www.w3.org/2000/svg}text")
     for svg_node in svg_nodes:
         nid = svg_node.text
-        x = svg_node.attrib.get('x', None)
-        y = svg_node.attrib.get('y', None)
+        x = svg_node.attrib.get("x", None)
+        y = svg_node.attrib.get("y", None)
 
         if x is None or y is None:
             print(f"WARN - Unable to get positions for {nid}: {x},{y}")
             continue
 
         try:
-            addr = socket.gethostbyname( nid+".geant.net" )
+            addr = socket.gethostbyname(nid + ".geant.net")
             fqdn = socket.gethostbyaddr(addr)[0]
         except:
-            fqdn = nid+".geant.net"
+            fqdn = nid + ".geant.net"
             addr = ""
-        
+
         addr_map[nid] = addr
 
         # Fill the data structure to plot the node on Timemap page with Cytoscape
-        cy_nodes_list.append( {
-            'data': {
-                'id': nid,
-                'name': nid,
-                'fqdn': fqdn,
-                'ip': addr,
-            },
-            'position': {
-                'x': int(float(x)),
-                'y': int(float(y)/2), 
-            },
-            'locked': True,
-        })
+        cy_nodes_list.append(
+            {
+                "data": {
+                    "id": nid,
+                    "name": nid,
+                    "fqdn": fqdn,
+                    "ip": addr,
+                },
+                "position": {
+                    "x": int(float(x)),
+                    "y": int(float(y) / 2),
+                },
+                "locked": True,
+            }
+        )
 
     return cy_nodes_list, addr_map
 
+
 def get_edges(tree):
     cy_edges_list = []
     svg_edges = tree.findall(".//*[@class='edge']")
     for svg_edge in svg_edges:
         title = svg_edge.find("./{http://www.w3.org/2000/svg}title").text
-        att = svg_edge.find(".//{http://www.w3.org/2000/svg}a").attrib.get('{http://www.w3.org/1999/xlink}title', None)
+        att = svg_edge.find(".//{http://www.w3.org/2000/svg}a").attrib.get(
+            "{http://www.w3.org/1999/xlink}title", None
+        )
         if not att:
             print(f"WARN - Unable to get link attribute Element for {title}")
             continue
@@ -64,51 +70,80 @@ def get_edges(tree):
             continue
 
         # Fill the data structure to plot the link on the Timemap page wit Cytoscape
-        cy_edges_list.append( {
-            'data': {
-                'id': title,
-                'label': title.replace("--","-"),     # G.edges.get(e)['label'].replace('"', ''),
-                'source': source,
-                'source_ip': source_ip,
-                'target': target,
-                'target_ip': target_ip,
-            },
-            'pannable': True,
-        })
+        cy_edges_list.append(
+            {
+                "data": {
+                    "id": title,
+                    "label": title.replace(
+                        "--", "-"
+                    ),  # G.edges.get(e)['label'].replace('"', ''),
+                    "source": source,
+                    "source_ip": source_ip,
+                    "target": target,
+                    "target_ip": target_ip,
+                },
+                "pannable": True,
+            }
+        )
     return cy_edges_list
 
 
 def generate_test_list(dyngraph, address_map):
-    testlist = []
-    for edge in dyngraph['elements']['edges']:
-        data = edge['data']
-        src, dst = data.get('id',"").split("--")
-        src = address_map.get(src,"")
-        dst = address_map.get(dst,"")
-        if not(src and dst):
+    # Telegraf testlist header
+    testlist = [
+        "# TWAMP script runner - TWAMP server-client running on network devices",
+        "[[inputs.exec]]",
+        "commands = [",
+    ]
+
+    for edge in dyngraph["elements"]["edges"]:
+        data = edge["data"]
+        src, dst = data.get("id", "").split("--")
+        src = address_map.get(src, "")
+        dst = address_map.get(dst, "")
+        if not (src and dst):
             continue
         # Prepare the entry for the test list
         testlist.append(
             # "/opt/rpm_twamp_snmp.py 62.40.97.7 62.40.97.1 TWAMP 3VfrNKak mx1.vie.at--mx1.bud.hu mx1.bud.hu"
-            f"\"/opt/rpm_twamp_snmp.py {src} {dst} TWAMP 3VfrNKak {data['id']} {data['source']}\","
+            f"  \"/opt/rpm_twamp_snmp.py {src} {dst} TWAMP 3VfrNKak {data['id']} {data['source']}\","
         )
+
+    # Telegraf testlist footer
+    testlist.append("]")
+    testlist.append('  name_suffix = "_twamp"')
+    testlist.append('  timeout = "2m"')
+    testlist.append('  data_format = "json"')
+    testlist.append('  tag_keys = ["src", "dst", "src_ip", "dst_ip"]')
+
     return testlist
 
+
 # Main
 # Usage example: python3 init_timemap_v2.py -s ./dotfiles/geantISIS_latest.svg -o ./dotfiles/latest_graph.json -t ./dotfiles/tests.txt
 
 parser = argparse.ArgumentParser()
-parser.add_argument("-s", "--svgfile",  help="topology SVG input file")
-parser.add_argument("-o", "--output",   default="latest_graph.json", help="output json file (default latest_graph.json)")
-parser.add_argument("-t", "--testlist", default="testlist.conf",     help="test list config file to simplofy Telegraf setup (default testlist.conf)")
+parser.add_argument("-s", "--svgfile", help="topology SVG input file")
+parser.add_argument(
+    "-o",
+    "--output",
+    default="latest_graph.json",
+    help="output json file (default latest_graph.json)",
+)
+parser.add_argument(
+    "-t",
+    "--testlist",
+    default="testlist.conf",
+    help="test list config file to simplofy Telegraf setup (default testlist.conf)",
+)
 args = parser.parse_args()
 
 
 # Parse input file
-dyngraph = { 
-    'elements': {
-        'nodes': [],
-        'edges': [],
+dyngraph = {
+    "elements": {
+        "nodes": [],
+        "edges": [],
     },
 }
 
@@ -117,21 +152,20 @@ tree = ET.parse(args.svgfile)
 # Add nodes from dot graph
 nodes, address_map = get_nodes(tree)
 if nodes:
-    dyngraph['elements']['nodes'] = nodes
+    dyngraph["elements"]["nodes"] = nodes
 
 # Add edges from ISIS dynamic topology
 edges = get_edges(tree)
 if nodes:
-    dyngraph['elements']['edges'] = edges
+    dyngraph["elements"]["edges"] = edges
 
 # Write JSON topology used in Timemap GUI
-json.dump(dyngraph, open(args.output, 'w'), indent=2)
+json.dump(dyngraph, open(args.output, "w"), indent=2)
 
 # Create testlist to be used in Telegraf configurations
 testlist = generate_test_list(dyngraph, address_map)
 
 outF = open(args.testlist, "w")
 for t in testlist:
-    outF.write( t+"\n" )
+    outF.write(t + "\n")
 outF.close()
-