diff --git a/src/osmo_gsm_tester/core/report.py b/src/osmo_gsm_tester/core/report.py
index 5014bf5..d2c68c5 100644
--- a/src/osmo_gsm_tester/core/report.py
+++ b/src/osmo_gsm_tester/core/report.py
@@ -53,6 +53,46 @@
         prop.set('name', 'ref:' + key)
         prop.set('value', val)
 
+def dict_to_junit(parent, d):
+    for key, val in d.items():
+        if isinstance(val, dict):
+            node = et.SubElement(parent, 'kpi_node')
+            node.set('name', key)
+            dict_to_junit(node, val)
+            continue
+        if isinstance(val, (tuple, list)):
+            node = et.SubElement(parent, 'kpi_node')
+            node.set('name', key)
+            list_to_junit(node, val)
+            continue
+        # scalar:
+        node = et.SubElement(parent, 'property')
+        node.set('name', key)
+        node.set('value', str(val))
+
+def list_to_junit(parent, li):
+    for i in range(len(li)):
+        if isinstance(li[i], dict):
+            node = et.SubElement(parent, 'kpi_node')
+            node.set('name', str(i))
+            dict_to_junit(node, li[i])
+            continue
+        if isinstance(val, (tuple, list)):
+            node = et.SubElement(parent, 'kpi_node')
+            node.set('name', str(i))
+            list_to_junit(node, li[i])
+            continue
+        # scalar:
+        node = et.SubElement(parent, 'property')
+        node.set('name', str(i))
+        node.set('value', str(li[i]))
+
+def kpis_to_junit(parent, kpis):
+    if not kpis:
+        return
+    assert isinstance(kpis, dict)
+    knode = et.SubElement(parent, 'kpis')
+    dict_to_junit(knode, kpis)
 
 def trial_to_junit_write(trial, junit_path):
     elements = et.ElementTree(element=trial_to_junit(trial))
@@ -118,6 +158,7 @@
     elif t.status != test.Test.PASS:
         error = et.SubElement(testcase, 'error')
         error.text = 'could not run'
+    kpis_to_junit(testcase, t.kpis())
     sout = et.SubElement(testcase, 'system-out')
     sout.text = escape_xml_invalid_characters(t.report_stdout())
     return testcase
diff --git a/src/osmo_gsm_tester/core/test.py b/src/osmo_gsm_tester/core/test.py
index c6d88e6..dfbd169 100644
--- a/src/osmo_gsm_tester/core/test.py
+++ b/src/osmo_gsm_tester/core/test.py
@@ -49,6 +49,7 @@
         self.fail_message = None
         self.log_targets = []
         self._report_stdout = None
+        self._kpis = None
         self.timeout = int(config_test_specific['timeout']) if 'timeout' in config_test_specific else None
 
     def module_name(self):
@@ -139,6 +140,14 @@
     def config_test_specific(self):
         return self._config_test_specific
 
+    def set_kpis(self, kpis):
+        if not isinstance(kpis, dict):
+            raise log.Error('Expected dictionary in toplevel kpis')
+        self._kpis = kpis
+
+    def kpis(self):
+        return self._kpis
+
     def set_report_stdout(self, text):
         'Overwrite stdout text stored in report from inside a test'
         self._report_stdout = text
