diff --git a/brian_dashboard_manager/templating/nren_access.py b/brian_dashboard_manager/templating/nren_access.py
index 17bb8ebcf2c6f04b319606f778fad182645418a0..67ba24cdacf17ef72b715225dc50bd35913dec74 100644
--- a/brian_dashboard_manager/templating/nren_access.py
+++ b/brian_dashboard_manager/templating/nren_access.py
@@ -5,8 +5,7 @@ from concurrent.futures import ProcessPoolExecutor
 from brian_dashboard_manager.templating.render import create_dropdown_panel
 from brian_dashboard_manager.templating.helpers import \
     is_aggregate_interface, is_logical_interface, is_physical_interface, \
-    num_generator, gridPos_generator, get_aggregate_targets, \
-    get_panel_fields
+    num_generator, gridPos_generator, get_panel_fields, create_aggregate_panel
 
 
 def get_nrens(interfaces):
@@ -58,9 +57,7 @@ def get_nrens(interfaces):
     return result
 
 
-# start IDs from 3 since aggregate
-# panels have hardcoded IDs (1, 2).
-id_gen = num_generator(start=3)
+id_gen = num_generator(start=1)
 
 # aggregate panels have y=0, start generating at 1*height
 gridPos = gridPos_generator(id_gen, start=1)
@@ -81,7 +78,16 @@ def get_panel_definitions(panels, datasource, errors=False):
 
 
 def build_data(nren, data, datasource):
-    agg_ingress, agg_egress = get_aggregate_targets(data['AGGREGATES'])
+    global gridPos
+    if len(data['AGGREGATES']) > 0:
+        agg_panels = create_aggregate_panel(
+            f'Aggregate - {nren}',
+            gridPos_generator(id_gen, agg=True),
+            data['AGGREGATES'], datasource)
+    else:
+        # if there's no aggregate panel(s), start other stuff at y=0.
+        gridPos = gridPos_generator(id_gen, start=0)
+        agg_panels = []
     services_dropdown = create_dropdown_panel('Services', **next(gridPos))
     service_panels = get_panel_definitions(data['SERVICES'], datasource)
     iface_dropdown = create_dropdown_panel('Interfaces', **next(gridPos))
@@ -90,8 +96,7 @@ def build_data(nren, data, datasource):
     return {
         'nren_name': nren,
         'datasource': datasource,
-        'ingress_aggregate_targets': agg_ingress,
-        'egress_aggregate_targets': agg_egress,
+        'aggregate_panels': agg_panels,
         'dropdown_groups': [
             {
                 'dropdown': services_dropdown,
diff --git a/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2 b/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2
index bca5b473718ce97f5aa71b771cb6a1c374ad2c59..76b76714349678aa0a00b6e4f0b6eb517ab3c44f 100644
--- a/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2
+++ b/brian_dashboard_manager/templating/templates/nren_access/nren-dashboard.json.j2
@@ -31,198 +31,9 @@
   "version": 1,
   "links": [],
   "panels": [
-      {
-      "aliasColors": {},
-      "bars": false,
-      "collapsed": null,
-      "dashLength": 10,
-      "dashes": false,
-      "datasource": "{{ datasource }}",
-      "fieldConfig": {
-        "defaults": {
-          "custom": {}
-        },
-        "overrides": []
-      },
-      "fill": 1,
-      "fillGradient": 10,
-      "gridPos": {
-        "h": 12,
-        "w": 12,
-        "x": 0,
-        "y": 0
-      },
-      "hiddenSeries": false,
-      "id": 1,
-      "legend": {
-        "alignAsTable": true,
-        "avg": true,
-        "current": true,
-        "max": true,
-        "min": false,
-        "rightSide": false,
-        "show": true,
-        "total": false,
-        "values": true
-      },
-      "lines": true,
-      "linewidth": 1,
-      "nullPointMode": "null",
-      "options": {
-        "alertThreshold": true
-      },
-      "percentage": false,
-      "pointradius": 2,
-      "points": false,
-      "renderer": "flot",
-      "search": null,
-      "seriesOverrides": [],
-      "spaceLength": 10,
-      "stack": true,
-      "steppedLine": false,
-      "tags": null,
-      "targets": [
-        {% for target in ingress_aggregate_targets %}
-          {{ target }}{{ "," if not loop.last }}
-        {% endfor %}
-      ],
-      "thresholds": [],
-      "timeFrom": null,
-      "timeRegions": [],
-      "timeShift": null,
-      "title": "Aggregate - {{ nren_name }} - ingress",
-      "tooltip": {
-        "shared": true,
-        "sort": 0,
-        "value_type": "individual"
-      },
-      "type": "graph",
-      "xaxis": {
-        "buckets": null,
-        "mode": "time",
-        "name": null,
-        "show": true,
-        "values": null
-      },
-      "yaxes": [
-        {
-          "format": "bps",
-          "label": "bits per second",
-          "logBase": 1,
-          "max": null,
-          "min": "",
-          "show": true
-        },
-        {
-          "format": "bps",
-          "label": "bits per second",
-          "logBase": 1,
-          "max": null,
-          "min": "",
-          "show": true
-        }
-      ],
-      "yaxis": {
-        "align": false,
-        "alignLevel": null
-      }
-    },
-    {
-      "aliasColors": {},
-      "bars": false,
-      "collapsed": null,
-      "dashLength": 10,
-      "dashes": false,
-      "datasource": "{{ datasource }}",
-      "fieldConfig": {
-        "defaults": {
-          "custom": {}
-        },
-        "overrides": []
-      },
-      "fill": 1,
-      "fillGradient": 10,
-      "gridPos": {
-        "h": 12,
-        "w": 12,
-        "x": 12,
-        "y": 0
-      },
-      "hiddenSeries": false,
-      "id": 2,
-      "legend": {
-        "alignAsTable": true,
-        "avg": true,
-        "current": true,
-        "max": true,
-        "min": false,
-        "rightSide": false,
-        "show": true,
-        "total": false,
-        "values": true
-      },
-      "lines": true,
-      "linewidth": 1,
-      "nullPointMode": "null",
-      "options": {
-        "alertThreshold": true
-      },
-      "percentage": false,
-      "pointradius": 2,
-      "points": false,
-      "renderer": "flot",
-      "search": null,
-      "seriesOverrides": [],
-      "spaceLength": 10,
-      "stack": true,
-      "steppedLine": false,
-      "tags": null,
-      "targets": [
-        {% for target in egress_aggregate_targets %}
-          {{ target }}{{ "," if not loop.last }}
-        {% endfor %}
-      ],
-      "thresholds": [],
-      "timeFrom": null,
-      "timeRegions": [],
-      "timeShift": null,
-      "title": "Aggregate - {{ nren_name }} - egress",
-      "tooltip": {
-        "shared": true,
-        "sort": 0,
-        "value_type": "individual"
-      },
-      "type": "graph",
-      "xaxis": {
-        "buckets": null,
-        "mode": "time",
-        "name": null,
-        "show": true,
-        "values": null
-      },
-      "yaxes": [
-        {
-          "format": "bps",
-          "label": "bits per second",
-          "logBase": 1,
-          "max": null,
-          "min": "",
-          "show": true
-        },
-        {
-          "format": "bps",
-          "label": "bits per second",
-          "logBase": 1,
-          "max": null,
-          "min": "",
-          "show": true
-        }
-      ],
-      "yaxis": {
-        "align": false,
-        "alignLevel": null
-      }
-    },
+    {% for panel in aggregate_panels %}
+        {{ panel }},
+    {% endfor %}
     {% for group in dropdown_groups %}
       {{ group.dropdown }}
       {% if group.panels|length > 0 %}
diff --git a/changelog.md b/changelog.md
index ce622e4126e6cd8b35f3823e6ff3a6639eae63bb..23becc2556f5a7e4661670890b4f8156b1d46a7b 100644
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,9 @@
 
 All notable changes to this project will be documented in this file.
 
+## [0.15] - 2021-05-17
+- [POL1-433] Only provision aggregate panels for NRENs if LAG interfaces are present.
+
 ## [0.14] - 2021-04-19
 - [POL1-420] Delete stale dashboards after provisioning.
 
diff --git a/setup.py b/setup.py
index 7a3fea90c63b1e8ce54e678688035d1c4fc5a2bd..47b079424ac889549eb2f03be9e24b71f98d8df5 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
 
 setup(
     name='brian-dashboard-manager',
-    version="0.14",
+    version="0.15",
     author='GEANT',
     author_email='swd@geant.org',
     description='',