diff --git a/src/test/clmctest/dashboards/README.md b/docs/dashboards.md
similarity index 75%
rename from src/test/clmctest/dashboards/README.md
rename to docs/dashboards.md
index cb5454cc812b7f2d1a958b95b4b7aeabbb74c89e..04e10a7decdd5d81a73c2d15a8cd7e01d039aa84 100644
--- a/src/test/clmctest/dashboards/README.md
+++ b/docs/dashboards.md
@@ -1,6 +1,6 @@
 # Sample Chronograf Dashboards
 
-This folder contains several sample dashboards for use in Chronograf.
+The folder located at src/test/clmctest/dashboards contains several sample dashboards for use in Chronograf.
 
 ## Loading a dashboard
 
@@ -22,11 +22,11 @@ The pipe into the `jq` command is not strictly necessary, it is there to pretty-
 
 ## Overview
 
-### dc_dash.json
+### src/test/clmctest/dashboards/dc_dash.json
 
 Displays the average CPU usage over time for an entire data centre. It has a dashboard variable for the `location` field.
 
-### sf_dash.json
+### src/test/clmctest/dashboards/sf_dash.json
 
 The service function dashboard has two dashboard variables to choose two different service functions to display side by side (left and right column).
 
@@ -35,29 +35,29 @@ Each column displays the total network traffic sent and received in MB over time
 To get the top chart, a nested select statement is used:
 
 ```sql
-select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last("bytes_recv") / 1048576 AS "RX_MB", last("bytes_sent") / 1048576 AS "TX_MB" FROM "MSDemo"."autogen"."net" WHERE time > :dashboardTime: AND "sf"=:sf1: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)
+select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last("bytes_recv") / 1048576 AS "RX_MB", last("bytes_sent") / 1048576 AS "TX_MB" FROM "MSDemo"."autogen"."net" WHERE time > :dashboardTime: AND "sfp"=:sf1: GROUP BY time(1m), sfe FILL(null)) group by time(1m)
 ```
 
 (The constant 1048576 is 1024*1024)
 
-The inner select groups by ipendpoint and time, taking the maximum value in each time period for each ipendpoint and the outer select queries over the result of the inner select but then groups only by time.
+The inner select groups by sfe (servince function endpoint) and time, taking the maximum value in each time period for each service function endpoint and the outer select queries over the result of the inner select but then groups only by time.
 
 The derivative of the first chart requires a further nested select:
 
 ```sql
-select derivative(total_RX_MB, 1m) / 60 as RX_MB_per_s, derivative(total_TX_MB, 1m) / 60 as TX_MB_per_s from (select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last("bytes_recv") / 1048576 AS "RX_MB", last("bytes_sent") / 1048576 AS "TX_MB" FROM "MSDemo"."autogen"."net" WHERE time > :dashboardTime: AND "sf"=:sf1: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m))
+select derivative(total_RX_MB, 1m) / 60 as RX_MB_per_s, derivative(total_TX_MB, 1m) / 60 as TX_MB_per_s from (select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last("bytes_recv") / 1048576 AS "RX_MB", last("bytes_sent") / 1048576 AS "TX_MB" FROM "MSDemo"."autogen"."net" WHERE time > :dashboardTime: AND "sfp"=:sf1: GROUP BY time(1m), sfe FILL(null)) group by time(1m))
 ```
 
 The outer-most select taakes the derivative of the first chart for each data set separately. The derivative function is parameterised to understand it is over a 1m period but then the result is divided by 60 to give an average MB/s in each 1 minute period.
 
-### minio_dash.json
+### src/test/clmctest/dashboards/minio_dash.json
 
-The minio dashboard has two dashboard variables to choose two different ipendpoints to display side by side (left and right column). Minio endpoints must be chosen for all features to work.
+The minio dashboard has two dashboard variables to choose two different service function endpoints to display side by side (left and right column). Minio endpoints must be chosen for all features to work.
 
 The top chart shows the percentage of requests being served in less than a fixed set up time periods. This performance metric would highlight a service endpoint which was struggling to service demand.
 
 The other charts show network traffic using a similar formulation to the `sf_dash` described above.
 
-### nginx_dash.json
+### src/test/clmctest/dashboards/nginx_dash.json
 
 There are no dashboard variables on this dashboard: it is hard-coded to show the `nginx_1_ep1` and `nginx_1_ep2` endpoints. Various charts (network, CPU, responses per second) are displayed.
diff --git a/docs/total-service-request-delay.md b/docs/total-service-request-delay.md
index a27f47665f3f77341193feff8f74f51e89f5bb3b..66aa241937b42383005b74eb925d4620b1cc08ab 100644
--- a/docs/total-service-request-delay.md
+++ b/docs/total-service-request-delay.md
@@ -1,3 +1,27 @@
+<!--
+// © University of Southampton IT Innovation Centre, 2017
+//
+// Copyright in this software belongs to University of Southampton
+// IT Innovation Centre of Gamma House, Enterprise Road, 
+// Chilworth Science Park, Southampton, SO16 7NS, UK.
+//
+// This software may not be used, sold, licensed, transferred, copied
+// or reproduced in whole or in part in any manner or form or in or
+// on any media by any person other than in accordance with the terms
+// of the Licence Agreement supplied with the software, or otherwise
+// without the prior written consent of the copyright owners.
+//
+// This software is distributed WITHOUT ANY WARRANTY, without even the
+// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+// PURPOSE, except where stated in the Licence Agreement supplied with
+// the software.
+//
+//      Created By :            Stephen Phillips
+//      Created Date :          23-05-2018
+//      Created for Project :   FLAME
+-->
+
+
 # Round Trip Time of a Service Request
 
 The Round Trip Time (RTT) of a network is the time taken from sending a packet to receiving the acknowlegement. We are also interested in factoring in the size of the data being sent over the network and the delay caused by the service processing the request.
diff --git a/src/test/clmctest/dashboards/minio_dash.json b/src/test/clmctest/dashboards/minio_dash.json
index 906365095d80ef5a7f9c85d21053a9e95ba4aafb..f2976c0bff63b2d213322e7a6c0312d30f42798d 100644
--- a/src/test/clmctest/dashboards/minio_dash.json
+++ b/src/test/clmctest/dashboards/minio_dash.json
@@ -10,7 +10,7 @@
       "name": "minio2: Network RX",
       "queries": [
         {
-          "query": "SELECT derivative(max(\"bytes_recv\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"=:minio2: GROUP BY time(1m)",
+          "query": "SELECT derivative(max(\"bytes_recv\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"=:minio2: GROUP BY time(1m)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -22,7 +22,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT derivative(max(\"bytes_recv\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"=:minio2: GROUP BY time(1m)",
+            "rawText": "SELECT derivative(max(\"bytes_recv\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"=:minio2: GROUP BY time(1m)",
             "range": null,
             "shifts": null
           },
@@ -120,7 +120,7 @@
       "name": "minio1: Network RX",
       "queries": [
         {
-          "query": "SELECT derivative(max(\"bytes_recv\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"=:minio1: GROUP BY time(1m)",
+          "query": "SELECT derivative(max(\"bytes_recv\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"=:minio1: GROUP BY time(1m)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -132,7 +132,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT derivative(max(\"bytes_recv\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"=:minio1: GROUP BY time(1m)",
+            "rawText": "SELECT derivative(max(\"bytes_recv\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"=:minio1: GROUP BY time(1m)",
             "range": null,
             "shifts": null
           },
@@ -230,7 +230,7 @@
       "name": "minio2: Network TX",
       "queries": [
         {
-          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"=:minio2: GROUP BY time(1m)",
+          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"=:minio2: GROUP BY time(1m)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -242,7 +242,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"=:minio2: GROUP BY time(1m)",
+            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"=:minio2: GROUP BY time(1m)",
             "range": null,
             "shifts": null
           },
@@ -340,7 +340,7 @@
       "name": "minio1: Network TX",
       "queries": [
         {
-          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"=:minio1: GROUP BY time(1m)",
+          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"=:minio1: GROUP BY time(1m)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -352,7 +352,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"=:minio1: GROUP BY time(1m)",
+            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"=:minio1: GROUP BY time(1m)",
             "range": null,
             "shifts": null
           },
@@ -450,7 +450,7 @@
       "name": "minio2: Response time",
       "queries": [
         {
-          "query": "SELECT 100*last(\"0.001\") / last(\"count\") AS \"0.001\", 100*last(\"0.003\") / last(\"count\") AS \"0.003\", 100*last(\"0.005\") / last(\"count\") AS \"0.005\", 100*last(\"0.1\") / last(\"count\") AS \"0.1\", 100*last(\"0.5\") / last(\"count\") AS \"0.5\", 100*last(\"1\") / last(\"count\") AS \"1\" FROM \"MSDemo\".\"autogen\".\"minio_http_requests_duration_seconds\" WHERE time > :dashboardTime: and \"ipendpoint\"=:minio2: GROUP BY time(:interval:) FILL(null)",
+          "query": "SELECT 100*last(\"0.001\") / last(\"count\") AS \"0.001\", 100*last(\"0.003\") / last(\"count\") AS \"0.003\", 100*last(\"0.005\") / last(\"count\") AS \"0.005\", 100*last(\"0.1\") / last(\"count\") AS \"0.1\", 100*last(\"0.5\") / last(\"count\") AS \"0.5\", 100*last(\"1\") / last(\"count\") AS \"1\" FROM \"MSDemo\".\"autogen\".\"minio_http_requests_duration_seconds\" WHERE time > :dashboardTime: and \"sfe\"=:minio2: GROUP BY time(:interval:) FILL(null)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -462,7 +462,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT 100*last(\"0.001\") / last(\"count\") AS \"0.001\", 100*last(\"0.003\") / last(\"count\") AS \"0.003\", 100*last(\"0.005\") / last(\"count\") AS \"0.005\", 100*last(\"0.1\") / last(\"count\") AS \"0.1\", 100*last(\"0.5\") / last(\"count\") AS \"0.5\", 100*last(\"1\") / last(\"count\") AS \"1\" FROM \"MSDemo\".\"autogen\".\"minio_http_requests_duration_seconds\" WHERE time > :dashboardTime: and \"ipendpoint\"=:minio2: GROUP BY time(:interval:) FILL(null)",
+            "rawText": "SELECT 100*last(\"0.001\") / last(\"count\") AS \"0.001\", 100*last(\"0.003\") / last(\"count\") AS \"0.003\", 100*last(\"0.005\") / last(\"count\") AS \"0.005\", 100*last(\"0.1\") / last(\"count\") AS \"0.1\", 100*last(\"0.5\") / last(\"count\") AS \"0.5\", 100*last(\"1\") / last(\"count\") AS \"1\" FROM \"MSDemo\".\"autogen\".\"minio_http_requests_duration_seconds\" WHERE time > :dashboardTime: and \"sfe\"=:minio2: GROUP BY time(:interval:) FILL(null)",
             "range": null,
             "shifts": null
           },
@@ -560,7 +560,7 @@
       "name": "minio1: Response time",
       "queries": [
         {
-          "query": "SELECT 100*last(\"0.001\") / last(\"count\") AS \"0.001\", 100*last(\"0.003\") / last(\"count\") AS \"0.003\", 100*last(\"0.005\") / last(\"count\") AS \"0.005\", 100*last(\"0.1\") / last(\"count\") AS \"0.1\", 100*last(\"0.5\") / last(\"count\") AS \"0.5\", 100*last(\"1\") / last(\"count\") AS \"1\" FROM \"MSDemo\".\"autogen\".\"minio_http_requests_duration_seconds\" WHERE time > :dashboardTime: and \"ipendpoint\"=:minio1: GROUP BY time(:interval:) FILL(null)",
+          "query": "SELECT 100*last(\"0.001\") / last(\"count\") AS \"0.001\", 100*last(\"0.003\") / last(\"count\") AS \"0.003\", 100*last(\"0.005\") / last(\"count\") AS \"0.005\", 100*last(\"0.1\") / last(\"count\") AS \"0.1\", 100*last(\"0.5\") / last(\"count\") AS \"0.5\", 100*last(\"1\") / last(\"count\") AS \"1\" FROM \"MSDemo\".\"autogen\".\"minio_http_requests_duration_seconds\" WHERE time > :dashboardTime: and \"sfe\"=:minio1: GROUP BY time(:interval:) FILL(null)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -572,7 +572,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT 100*last(\"0.001\") / last(\"count\") AS \"0.001\", 100*last(\"0.003\") / last(\"count\") AS \"0.003\", 100*last(\"0.005\") / last(\"count\") AS \"0.005\", 100*last(\"0.1\") / last(\"count\") AS \"0.1\", 100*last(\"0.5\") / last(\"count\") AS \"0.5\", 100*last(\"1\") / last(\"count\") AS \"1\" FROM \"MSDemo\".\"autogen\".\"minio_http_requests_duration_seconds\" WHERE time > :dashboardTime: and \"ipendpoint\"=:minio1: GROUP BY time(:interval:) FILL(null)",
+            "rawText": "SELECT 100*last(\"0.001\") / last(\"count\") AS \"0.001\", 100*last(\"0.003\") / last(\"count\") AS \"0.003\", 100*last(\"0.005\") / last(\"count\") AS \"0.005\", 100*last(\"0.1\") / last(\"count\") AS \"0.1\", 100*last(\"0.5\") / last(\"count\") AS \"0.5\", 100*last(\"1\") / last(\"count\") AS \"1\" FROM \"MSDemo\".\"autogen\".\"minio_http_requests_duration_seconds\" WHERE time > :dashboardTime: and \"sfe\"=:minio1: GROUP BY time(:interval:) FILL(null)",
             "range": null,
             "shifts": null
           },
@@ -679,7 +679,7 @@
         "influxql": "SHOW TAG VALUES ON :database: FROM :measurement: WITH KEY=:tagKey:",
         "db": "MSDemo",
         "measurement": "cpu",
-        "tagKey": "ipendpoint",
+        "tagKey": "sfe",
         "fieldKey": ""
       },
       "links": {
@@ -702,7 +702,7 @@
         "influxql": "SHOW TAG VALUES ON :database: FROM :measurement: WITH KEY=:tagKey:",
         "db": "MSDemo",
         "measurement": "cpu",
-        "tagKey": "ipendpoint",
+        "tagKey": "sfe",
         "fieldKey": ""
       },
       "links": {
diff --git a/src/test/clmctest/dashboards/nginx_dash.json b/src/test/clmctest/dashboards/nginx_dash.json
index d60572664056e825819ae31a9cdbcface374a481..55378a193432fc03b674f199634c3db3d169db82 100644
--- a/src/test/clmctest/dashboards/nginx_dash.json
+++ b/src/test/clmctest/dashboards/nginx_dash.json
@@ -10,7 +10,7 @@
       "name": "nginx_ep_2: Requests / s",
       "queries": [
         {
-          "query": "SELECT non_negative_derivative(\"requests\") AS \"requests/sec\" FROM \"MSDemo\".\"autogen\".\"nginx\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep2'",
+          "query": "SELECT non_negative_derivative(\"requests\") AS \"requests/sec\" FROM \"MSDemo\".\"autogen\".\"nginx\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep2'",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -22,7 +22,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT non_negative_derivative(\"requests\") AS \"requests/sec\" FROM \"MSDemo\".\"autogen\".\"nginx\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep2'",
+            "rawText": "SELECT non_negative_derivative(\"requests\") AS \"requests/sec\" FROM \"MSDemo\".\"autogen\".\"nginx\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep2'",
             "range": null,
             "shifts": null
           },
@@ -120,7 +120,7 @@
       "name": "nginx_ep_2: Network TX",
       "queries": [
         {
-          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep2' GROUP BY time(1m)",
+          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep2' GROUP BY time(1m)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -132,7 +132,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep2' GROUP BY time(1m)",
+            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep2' GROUP BY time(1m)",
             "range": null,
             "shifts": null
           },
@@ -230,7 +230,7 @@
       "name": "nginx_ep_2: Network RX",
       "queries": [
         {
-          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep2' GROUP By time(1m) fill(previous)",
+          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep2' GROUP By time(1m) fill(previous)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -242,7 +242,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep2' GROUP By time(1m) fill(previous)",
+            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep2' GROUP By time(1m) fill(previous)",
             "range": null,
             "shifts": null
           },
@@ -340,7 +340,7 @@
       "name": "nginx_ep_1: Requests / s",
       "queries": [
         {
-          "query": "SELECT non_negative_derivative(\"requests\") AS \"requests/sec\" FROM \"MSDemo\".\"autogen\".\"nginx\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep1'",
+          "query": "SELECT non_negative_derivative(\"requests\") AS \"requests/sec\" FROM \"MSDemo\".\"autogen\".\"nginx\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep1'",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -352,7 +352,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT non_negative_derivative(\"requests\") AS \"requests/sec\" FROM \"MSDemo\".\"autogen\".\"nginx\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep1'",
+            "rawText": "SELECT non_negative_derivative(\"requests\") AS \"requests/sec\" FROM \"MSDemo\".\"autogen\".\"nginx\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep1'",
             "range": null,
             "shifts": null
           },
@@ -450,7 +450,7 @@
       "name": "nginx_ep_1: Network TX",
       "queries": [
         {
-          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep1' GROUP BY time(1m)",
+          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep1' GROUP BY time(1m)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -462,7 +462,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep1' GROUP BY time(1m)",
+            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep1' GROUP BY time(1m)",
             "range": null,
             "shifts": null
           },
@@ -560,7 +560,7 @@
       "name": "nginx_ep_1: Network RX",
       "queries": [
         {
-          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep1' GROUP By time(1m) fill(previous)",
+          "query": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep1' GROUP By time(1m) fill(previous)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -572,7 +572,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"ipendpoint\"='nginx_1_ep1' GROUP By time(1m) fill(previous)",
+            "rawText": "SELECT derivative(max(\"bytes_sent\")) / 62914560 AS \"RX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfe\"='nginx_1_ep1' GROUP By time(1m) fill(previous)",
             "range": null,
             "shifts": null
           },
@@ -670,7 +670,7 @@
       "name": "nginx_ep_2: CPU usage",
       "queries": [
         {
-          "query": "SELECT mean(\"cpu_usage\") AS \"mean_cpu_usage\" FROM \"MSDemo\".\"autogen\".\"procstat\" WHERE time > :dashboardTime: AND \"exe\"='nginx' AND \"ipendpoint\"='nginx_1_ep2' GROUP BY time(:interval:) FILL(null)",
+          "query": "SELECT mean(\"cpu_usage\") AS \"mean_cpu_usage\" FROM \"MSDemo\".\"autogen\".\"procstat\" WHERE time > :dashboardTime: AND \"exe\"='nginx' AND \"sfe\"='nginx_1_ep2' GROUP BY time(:interval:) FILL(null)",
           "queryConfig": {
             "database": "MSDemo",
             "measurement": "procstat",
@@ -693,7 +693,7 @@
               "exe": [
                 "nginx"
               ],
-              "ipendpoint": [
+              "sfe": [
                 "nginx_1_ep2"
               ]
             },
@@ -801,7 +801,7 @@
       "name": "nginx_ep_1: CPU usage",
       "queries": [
         {
-          "query": "SELECT mean(\"cpu_usage\") AS \"mean_cpu_usage\" FROM \"MSDemo\".\"autogen\".\"procstat\" WHERE time > :dashboardTime: AND \"exe\"='nginx' AND \"ipendpoint\"='nginx_1_ep1' GROUP BY time(:interval:) FILL(null)",
+          "query": "SELECT mean(\"cpu_usage\") AS \"mean_cpu_usage\" FROM \"MSDemo\".\"autogen\".\"procstat\" WHERE time > :dashboardTime: AND \"exe\"='nginx' AND \"sfe\"='nginx_1_ep1' GROUP BY time(:interval:) FILL(null)",
           "queryConfig": {
             "database": "MSDemo",
             "measurement": "procstat",
@@ -824,7 +824,7 @@
               "exe": [
                 "nginx"
               ],
-              "ipendpoint": [
+              "sfe": [
                 "nginx_1_ep1"
               ]
             },
diff --git a/src/test/clmctest/dashboards/sf_dash.json b/src/test/clmctest/dashboards/sf_dash.json
index 8430953819de013a3f0eca43cab74c30ad6e883e..10b2da9a5c0d74608c84072f555d2a2e66bdb599 100644
--- a/src/test/clmctest/dashboards/sf_dash.json
+++ b/src/test/clmctest/dashboards/sf_dash.json
@@ -10,7 +10,7 @@
       "name": "Average MB/s sent/recv for service-function 2",
       "queries": [
         {
-          "query": "select derivative(total_RX_MB, 1m) / 60 as RX_MB_per_s, derivative(total_TX_MB, 1m) / 60 as TX_MB_per_s from (select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"=:sf2: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)) ",
+          "query": "select derivative(total_RX_MB, 1m) / 60 as RX_MB_per_s, derivative(total_TX_MB, 1m) / 60 as TX_MB_per_s from (select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfp\"=:sf2: GROUP BY time(1m), sfe FILL(null)) group by time(1m)) ",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -22,7 +22,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "select derivative(total_RX_MB, 1m) / 60 as RX_MB_per_s, derivative(total_TX_MB, 1m) / 60 as TX_MB_per_s from (select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"=:sf2: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)) ",
+            "rawText": "select derivative(total_RX_MB, 1m) / 60 as RX_MB_per_s, derivative(total_TX_MB, 1m) / 60 as TX_MB_per_s from (select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfp\"=:sf2: GROUP BY time(1m), sfe FILL(null)) group by time(1m)) ",
             "range": null,
             "shifts": null
           },
@@ -120,7 +120,7 @@
       "name": "Total MB sent/recv for service-function 2",
       "queries": [
         {
-          "query": "select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"=:sf2: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)",
+          "query": "select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfp\"=:sf2: GROUP BY time(1m), sfe FILL(null)) group by time(1m)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -132,7 +132,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"=:sf2: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)",
+            "rawText": "select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfp\"=:sf2: GROUP BY time(1m), sfe FILL(null)) group by time(1m)",
             "range": null,
             "shifts": null
           },
@@ -230,7 +230,7 @@
       "name": "Average MB/s sent/recv for service-function 1",
       "queries": [
         {
-          "query": "select derivative(total_RX_MB, 1m) / 60 as RX_MB_per_s, derivative(total_TX_MB, 1m) / 60 as TX_MB_per_s from (select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"=:sf1: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)) ",
+          "query": "select derivative(total_RX_MB, 1m) / 60 as RX_MB_per_s, derivative(total_TX_MB, 1m) / 60 as TX_MB_per_s from (select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfp\"=:sf1: GROUP BY time(1m), sfe FILL(null)) group by time(1m)) ",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -242,7 +242,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "select derivative(total_RX_MB, 1m) / 60 as RX_MB_per_s, derivative(total_TX_MB, 1m) / 60 as TX_MB_per_s from (select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"=:sf1: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)) ",
+            "rawText": "select derivative(total_RX_MB, 1m) / 60 as RX_MB_per_s, derivative(total_TX_MB, 1m) / 60 as TX_MB_per_s from (select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfp\"=:sf1: GROUP BY time(1m), sfe FILL(null)) group by time(1m)) ",
             "range": null,
             "shifts": null
           },
@@ -340,7 +340,7 @@
       "name": "Total MB sent/recv for service-function 1",
       "queries": [
         {
-          "query": "select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"=:sf1: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)",
+          "query": "select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfp\"=:sf1: GROUP BY time(1m), sfe FILL(null)) group by time(1m)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -352,7 +352,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"=:sf1: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)",
+            "rawText": "select sum(RX_MB) as total_RX_MB, sum(TX_MB) as total_TX_MB from (SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sfp\"=:sf1: GROUP BY time(1m), sfe FILL(null)) group by time(1m)",
             "range": null,
             "shifts": null
           },
@@ -459,7 +459,7 @@
         "influxql": "SHOW TAG VALUES ON :database: FROM :measurement: WITH KEY=:tagKey:",
         "db": "MSDemo",
         "measurement": "cpu",
-        "tagKey": "sf",
+        "tagKey": "sfp",
         "fieldKey": ""
       },
       "links": {
@@ -482,7 +482,7 @@
         "influxql": "SHOW TAG VALUES ON :database: FROM :measurement: WITH KEY=:tagKey:",
         "db": "MSDemo",
         "measurement": "cpu",
-        "tagKey": "sf",
+        "tagKey": "sfp",
         "fieldKey": ""
       },
       "links": {