diff --git a/src/test/clmctest/workshopdemo/dashboards/sf_dash.json b/src/test/clmctest/workshopdemo/dashboards/sf_dash.json
index a243b4ed2b5ad87bb72053a7d7671027660e2188..8430953819de013a3f0eca43cab74c30ad6e883e 100644
--- a/src/test/clmctest/workshopdemo/dashboards/sf_dash.json
+++ b/src/test/clmctest/workshopdemo/dashboards/sf_dash.json
@@ -2,15 +2,15 @@
   "id": 2,
   "cells": [
     {
-      "i": "dd7693ca-0622-41f0-9f2c-d9a468434097",
-      "x": 0,
-      "y": 8,
+      "i": "d4dad017-395e-4192-9a89-cfde2b5d133a",
+      "x": 5,
+      "y": 4,
       "w": 5,
       "h": 4,
-      "name": "Nginx network average MB/s sent/recv for nginx service-function",
+      "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\"='nginx' 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 \"sf\"=:sf2: GROUP BY time(1m), ipendpoint 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\"='nginx' 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 \"sf\"=:sf2: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)) ",
             "range": null,
             "shifts": null
           },
@@ -46,7 +46,7 @@
             "",
             ""
           ],
-          "label": "Mb / sec",
+          "label": "MB / sec",
           "prefix": "",
           "suffix": "",
           "base": "10",
@@ -108,19 +108,19 @@
         "fixFirstColumn": true
       },
       "links": {
-        "self": "/chronograf/v1/dashboards/2/cells/dd7693ca-0622-41f0-9f2c-d9a468434097"
+        "self": "/chronograf/v1/dashboards/2/cells/d4dad017-395e-4192-9a89-cfde2b5d133a"
       }
     },
     {
-      "i": "419b4e3c-1ca3-49ac-bc91-410bfbeb879a",
-      "x": 0,
-      "y": 4,
+      "i": "8522ec33-51a1-4cd4-a02b-02525800c25e",
+      "x": 5,
+      "y": 0,
       "w": 5,
       "h": 4,
-      "name": "Nginx network MB sent/recv total for nginx service-function",
+      "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\"='nginx' 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 \"sf\"=:sf2: GROUP BY time(1m), ipendpoint 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\"='nginx' 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 \"sf\"=:sf2: GROUP BY time(1m), ipendpoint FILL(null)) group by time(1m)",
             "range": null,
             "shifts": null
           },
@@ -218,19 +218,19 @@
         "fixFirstColumn": true
       },
       "links": {
-        "self": "/chronograf/v1/dashboards/2/cells/419b4e3c-1ca3-49ac-bc91-410bfbeb879a"
+        "self": "/chronograf/v1/dashboards/2/cells/8522ec33-51a1-4cd4-a02b-02525800c25e"
       }
     },
     {
-      "i": "ada5c993-47e3-479a-8e74-3000125f819d",
-      "x": 5,
-      "y": 0,
+      "i": "dd7693ca-0622-41f0-9f2c-d9a468434097",
+      "x": 0,
+      "y": 4,
       "w": 5,
       "h": 4,
-      "name": "Minio network",
+      "name": "Average MB/s sent/recv for service-function 1",
       "queries": [
         {
-          "query": "SELECT non_negative_derivative(mean(\"bytes_recv\")) / 30000000 AS \"RX_Mb_per_second\", non_negative_derivative(mean(\"bytes_sent\")) / 30000000 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"='minio' GROUP BY time(1m) FILL(null)",
+          "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)) ",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -242,11 +242,11 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT non_negative_derivative(mean(\"bytes_recv\")) / 30000000 AS \"RX_Mb_per_second\", non_negative_derivative(mean(\"bytes_sent\")) / 30000000 AS \"TX_Mb_per_second\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"='minio' GROUP BY time(1m) FILL(null)",
+            "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)) ",
             "range": null,
             "shifts": null
           },
-          "source": "/chronograf/v1/sources/1"
+          "source": "/chronograf/v1/sources/2"
         }
       ],
       "axes": {
@@ -266,7 +266,7 @@
             "",
             ""
           ],
-          "label": "Mb / sec",
+          "label": "MB / sec",
           "prefix": "",
           "suffix": "",
           "base": "10",
@@ -284,7 +284,7 @@
           "scale": "linear"
         }
       },
-      "type": "line",
+      "type": "line-stepplot",
       "colors": [
         {
           "id": "2f5981b6-6f85-4efc-989c-9da90fe54189",
@@ -328,19 +328,19 @@
         "fixFirstColumn": true
       },
       "links": {
-        "self": "/chronograf/v1/dashboards/2/cells/ada5c993-47e3-479a-8e74-3000125f819d"
+        "self": "/chronograf/v1/dashboards/2/cells/dd7693ca-0622-41f0-9f2c-d9a468434097"
       }
     },
     {
-      "i": "22298fa4-a5e1-4cb5-869c-6754b06fa857",
+      "i": "419b4e3c-1ca3-49ac-bc91-410bfbeb879a",
       "x": 0,
       "y": 0,
       "w": 5,
       "h": 4,
-      "name": "Nginx network MB sent/recv by endpoint",
+      "name": "Total MB sent/recv for service-function 1",
       "queries": [
         {
-          "query": "SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"='nginx' GROUP BY time(1m), ipendpoint FILL(null)",
+          "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)",
           "queryConfig": {
             "database": "",
             "measurement": "",
@@ -352,7 +352,7 @@
               "tags": []
             },
             "areTagsAccepted": false,
-            "rawText": "SELECT last(\"bytes_recv\") / 1048576 AS \"RX_MB\", last(\"bytes_sent\") / 1048576 AS \"TX_MB\" FROM \"MSDemo\".\"autogen\".\"net\" WHERE time > :dashboardTime: AND \"sf\"='nginx' GROUP BY time(1m), ipendpoint FILL(null)",
+            "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)",
             "range": null,
             "shifts": null
           },
@@ -438,11 +438,58 @@
         "fixFirstColumn": true
       },
       "links": {
-        "self": "/chronograf/v1/dashboards/2/cells/22298fa4-a5e1-4cb5-869c-6754b06fa857"
+        "self": "/chronograf/v1/dashboards/2/cells/419b4e3c-1ca3-49ac-bc91-410bfbeb879a"
+      }
+    }
+  ],
+  "templates": [
+    {
+      "tempVar": ":sf1:",
+      "values": [
+        {
+          "value": "nginx",
+          "type": "tagValue",
+          "selected": true
+        }
+      ],
+      "id": "2160b8b2-a885-4518-90dc-f2363eb3fc83",
+      "type": "tagValues",
+      "label": "",
+      "query": {
+        "influxql": "SHOW TAG VALUES ON :database: FROM :measurement: WITH KEY=:tagKey:",
+        "db": "MSDemo",
+        "measurement": "cpu",
+        "tagKey": "sf",
+        "fieldKey": ""
+      },
+      "links": {
+        "self": "/chronograf/v1/dashboards/2/templates/2160b8b2-a885-4518-90dc-f2363eb3fc83"
+      }
+    },
+    {
+      "tempVar": ":sf2:",
+      "values": [
+        {
+          "value": "minio",
+          "type": "tagValue",
+          "selected": true
+        }
+      ],
+      "id": "beb094ee-5bed-4956-a551-83fe8e905c19",
+      "type": "tagValues",
+      "label": "",
+      "query": {
+        "influxql": "SHOW TAG VALUES ON :database: FROM :measurement: WITH KEY=:tagKey:",
+        "db": "MSDemo",
+        "measurement": "cpu",
+        "tagKey": "sf",
+        "fieldKey": ""
+      },
+      "links": {
+        "self": "/chronograf/v1/dashboards/2/templates/beb094ee-5bed-4956-a551-83fe8e905c19"
       }
     }
   ],
-  "templates": [],
   "name": "Service Functions",
   "organization": "default",
   "links": {