diff --git a/release_notes/voltha_2.8.rst b/release_notes/voltha_2.8.rst
new file mode 100644
index 0000000..a11af77
--- /dev/null
+++ b/release_notes/voltha_2.8.rst
@@ -0,0 +1,245 @@
+VOLTHA 2.8 Release Notes
+========================
+
+Highlights
+----------
+
+VOLTHA-2.8 is the first Long Term Support (LTS) release for VOLTHA. Together with  ONOS 2.5  (which is already LTS),
+the LTS designation means that testing and bug-fixes will be guaranteed for 18 months on the released version of the
+codebase. The release focused on storage with persistence at scale, platform hardening, tcont type selection, Multi-Uni
+support and introduced several PON level metrics. All these elements provide confidence to the operators to expand
+their production deployments.
+
+The Long Term Support process is as follows:
+
+- LTS releases 18 months apart.
+- Each LTS release will be supported for 18 months with bug fixes and testing
+- 6 month release cycles following LTS release
+- Two interim releases every 6 months between LTS versions.
+
+VOLTHA 2.8 first and foremost meets the scale requirements (1024 ONUS per stack, 10240 on 10 stack across the same
+infrastructure) of the operator’s with persistence enabled on ETCD 6.2.5 version, deployed with the BITNAMI helm
+charts. Such result was achieved thanks to the combination of several improvements across the whole stack.
+The Technology profile is now mostly templated, the openolt adapter makes heavier use of the read-through cache,
+the rw-core does not store the flows for each device. A ETCD connection pool has been introduced in voltha-lib-go
+to ensure that the system is not choking by using 1 connection per service. With all these improvements on NVMe
+disks all 3 workflows provision 1024 subscribers in around 2 minutes.
+
+During the VOLTHA 2.8 release ONOS was moved from the 2.2 release which is shortly approaching EOL (end of life) to
+ONOS 2.5, guaranteeing that for the extent of the 2.8 release also ONOS will be supported.
+
+To support more customers in the field multi-UNI capability has been introduced across the VOLTHA stack and ONOS apps.
+The system is now capable of delivering configuration and thus traffic to subscribers connected to all UNI ports
+of each ONU, up to 16 per ONU.
+
+Further subscriber configuration has been introduced with the support for the IETF model for bandwidth profiles
+and the capability to provision and choose all the 5 TCONT types. These elements allow operator’s a wider variety
+of subscriber configurations
+
+To comply with operator requirements the ONU software upgrade APIs have been changed to support retrieval of images
+present on the ONU and to separate the download, activate, commit, requests, allowing the operator more control over
+the actions performed over the ONU. Furthermore hardening of the functionality has been done, achieving a much faster
+ONU update time.
+
+Further insight into live deployed networks has been introduced thanks to more Performance Measurements that can be
+retrieved from the ONU and the OLT. In particular VOLTHA 2.8 implements ANi-G and ANi-G test messages with tx/rx
+power readout, ONUi-PON, GEMj and UNI Ethernet layer, FEC and GEM history and several other counters.
+
+Finally the release provided bug fixes across the stack, especially concerning device/port handling, such as,
+PON enable/disable, OLT and ONU reboot and ONU software upgrade. Performance related improvements were included
+in ONOS apps. VOLTHA 2.8 hardened several operations, one worth noting is the omci message retry on failure in
+openonu adapter
+
+On the testing front VOLTHA 2.8 expanded the suite for TT up to 20 tests, with failure and error scenarios,
+including several multi TCONT testing as per TT workflow. Testing has included also a full suite for the
+Performance Measurements functionality, especially ANI-G. Furthermore we included support for multi-uni in the robot
+suite and expanded the soak testing with DT workflow.
+
+Along with VOLTHA 2.8, the Device Management Brigade also released a new version
+(`1.0.0 <https://github.com/opencord/device-management-interface/releases/tag/v1.0.0>`_) of the interface,
+which has been implemented on BBSIM and has initial robot test cases. This DMI release introduces specific components
+values, BITS protocol, gRPC streams for events and metrics that can be use in place of kafka, more events and
+a heart beat check.
+
+Features & Improvements
+-----------------------
+
+- ETCD 6.2.5 with persistence enabled
+
+  - Templated technology profile
+  - Removal of flows and meters storage in the rw-core.
+  - Openolt adapter read-through cache
+  - ETCD connection pool in voltha-lib-go
+  - Optimization of several stored attributes, removing duplicate items
+  - Automatic compaction and defragmentation
+
+- Move to ONOS 2.5 LTS
+- Expanded ONU software upgrade capability
+
+  - Retrieval of image specifics via OMCI of the images from the device
+  - Separation of download/activate/commit APIs
+  - Time optimization
+- Multi Uni per ONU support across the whole stack, ONOS apps and BBSIM
+- IETF bandwidth profile definition support
+- 5 Tcont type configuration and selection
+- Collection of more performance measurements and counters
+
+  - ANi-G and ANi-G test message with te/rs power support
+  - ONUi-PON and ONUi-GEMj
+  - ONU-UNI Ethernet layer
+  - Eth-Port
+  - GEM Port History
+  - FEC History
+  - Transceiver data via DMI
+- OMCI channel message send/receive failure handling with retry in openonu adapter
+- Voltctl extensions
+
+  - Multi-stack support
+  - Groups list
+  - Retrieve of Performance Metrics
+- Distroless and non root docker images for production deployment security
+
+Development/Deployment process
+------------------------------
+
+- Deprecation of kind-voltha in favour of voltha-stack and voltha-infra helm charts.
+
+Test
+----
+
+Voltha-2.8 tests are available on `Jenkins <https://jenkins.opencord.org/>`_.
+
+- Full Performance Monitoring Attributes test suite
+- Multi Uni per ONU tests
+- OMCI requests failures chaos monkey
+- Expanded TT tests from 5 to 19
+
+  - Disable/Enable ONU
+  - Disable/Delete OLT
+  - Open-olt, Open-onu, Rw-core, Of-agent Restart
+  - Delete/Re-add (reprovisioning) Subscribers
+  - ONU and OLT Physical and Soft Reboot
+  - Various Multi-Tcont scenarios
+
+- Radisys 3200G GPON OLT DT and ATT tests
+- Expanded and automated soak testing with DT workflow.
+- OLT soft reboot for DT
+- Updated ONU Software Upgrade Tests based on new Voltctl commands
+
+Design Discussions
+------------------
+
+- PON-ID configuration
+- MPLS support
+- TIM workflow
+
+
+Documentation
+-------------
+
+- Updated documentation with new ONU software update and software update is published on https://docs.voltha.org
+
+Known Issues
+------------
+TODO
+
+- Same TCONT for two uni add/delete subscribers does not work. `[VOL-4215] <https://jira.opencord.org/browse/VOL-4215>`_
+- EAPOL flow meter mismatch at scale for ATT job. `[VOL-4235] <https://jira.opencord.org/browse/VOL-4235>`_
+
+
+Certification Program
+---------------------
+
+Thanks to the `Continuous Certification <https://opennetworking.org/continuous-certification-program>`_ program at
+ONF we can also ensure that the following ONF member products are compatible with the VOLTHA 2.8 release:
+
+- Edgecore ASGVolt64 GPON OLT
+- Edgecore ASXVolt16 XGSGPON OLT
+- Radisys 3200G GPON OLT
+- Sercomm FG1000 GPON ONU
+- Sercomm Glasfaser GPON ONU
+- Edgecore 6712-32X Switch
+- Edgecore 7712-32X Switch
+
+In particular the 2.8 release added the Radisys 3200G GPON OLT.
+
+Jira stories
+------------
+A full list of stories and bugs completed can be found under the
+`VOLTHA 2.8 <https://jira.opencord.org/projects/VOL/versions/12100>`_ release page in Jira.
+
+Component Versions in VOLTHA 2.8 release
+----------------------------------------
+
+ONOS and Atomix:
+++++++++++++++++
+
+- `ONOS 2.5 LTS <https://github.com/opennetworkinglab/onos/releases/tag/2.5.2>`_: ``2.5.2``
+- `ATOMIX <https://github.com/atomix/atomix/releases/tag/atomix-3.1.9>`_: ``3.1.9``
+
+ONOS Apps:
+++++++++++
+
+- `aaa <https://gerrit.opencord.org/gitweb?p=aaa.git;a=summary>`_: ``2.4.0``
+- `dhcpl2relay <https://gerrit.opencord.org/gitweb?p=dhcpl2relay.git;a=summary>`_: ``2.4.0``
+- `igmpproxy <https://gerrit.opencord.org/gitweb?p=igmpproxy.git;a=summary>`_: ``2.3.0``
+- `kafka <https://gerrit.opencord.org/gitweb?p=kafka-onos.git;a=summary>`_: ``2.7.0``
+- `mcast <https://gerrit.opencord.org/gitweb?p=mcast.git;a=summary>`_: ``2.4.0``
+- `olt <https://gerrit.opencord.org/gitweb?p=olt.git;a=summary>`_: ``4.5.0``
+- `sadis <https://gerrit.opencord.org/gitweb?p=sadis.git;a=summary>`_: ``5.4.0``
+- `bng <https://gerrit.opencord.org/gitweb?p=bng.git;a=summary>`_: ``2.0.0``
+- `pppoeagent <https://gerrit.opencord.org/plugins/gitiles/pppoeagent/>`_: ``1.0.0``
+- `olttopology <https://gerrit.opencord.org/plugins/gitiles/olttopology/>`_: ``1.0.3``
+
+VOLTHA Components:
+++++++++++++++++++
+
+- `Helm Charts (voltha-helm-charts) <https://gerrit.opencord.org/gitweb?p=voltha-helm-charts.git;a=tree;h=refs/heads/voltha-2.8>`_ - ``2.8.0``
+- `bbsim <https://gerrit.opencord.org/gitweb?p=bbsim.git;a=tree>`_- ``1.8.0`` with `chart <https://gerrit.opencord.org/gitweb?p=helm-charts.git;a=tree;f=bbsim>`_ ``4.4.1``
+- `voltha-go <https://gerrit.opencord.org/gitweb?p=voltha-go.git;a=tree;h=refs/heads/voltha-2.8>`_ - `` 2.9.3`` with chart ``2.9.7``
+- `ofagent-go <https://gerrit.opencord.org/gitweb?p=ofagent-go.git;a=tree;h=refs/heads/voltha-2.8>`_ - ``1.6.5``  with chart ``2.9.7``
+- `voltctl <https://gerrit.opencord.org/gitweb?p=voltctl.git;a=tree>`_ - ``1.6.10``
+- `voltha-openolt-adapter <https://gerrit.opencord.org/gitweb?p=voltha-openolt-adapter.git;a=tree;h=refs/heads/voltha-2.8>`_ - ``3.5.1`` with chart ``2.9.2``
+- `voltha-openonu-adapter-go <https://gerrit.opencord.org/gitweb?p=voltha-openonu-adapter-go.git;a=tree;h=refs/heads/voltha-2.8>`_ - ``1.3.2`` with chart ``2.8.3``
+- `voltha-onos <https://gerrit.opencord.org/gitweb?p=voltha-onos.git;a=tree;h=refs/heads/voltha-2.8>`_ -  ``5.0.1`` with chart ``0.1.16``
+- `openolt agent <https://gerrit.opencord.org/gitweb?p=openolt.git;a=tree;h=refs/heads/voltha-2.8>`_ - ``3.4.8``
+- `voltha-protos <https://github.com/opencord/voltha-protos/releases/tag/v4.0.5>`_ - ``4.2.0``
+- `voltha-lib-go <https://github.com/opencord/voltha-lib-go/releases/tag/v4.0.3>`_ - ``5.0.5``
+- `Bbsim-sadis-server <https://github.com/opencord/bbsim-sadis-server/releases/tag/v0.1.3>`_ - ``0.3.0`` with chart ``0.2.0``
+- `voltha-system-tests <https://github.com/opencord/voltha-system-tests/releases/tag/v2.8.0>`_ - ``2.8.0``
+
+
+Helm Chart Versions:
+++++++++++++++++++++
+This section refers to the macro charts to deploy the required infrastructure and a (or many) VOLTHA stacks:
+- Voltha-infra: ``0.2.8``
+- Voltha-stack: ``0.2.9``
+
+
+**Available from EdgeCore site**
+
+- Out of band management
+
+  - ONL version (both GPON and XGSPON) ONL-onl-4.14_ONL-OS8_2020-04-14.1946-72b95a7_AMD64_INSTALLED_INSTALLER available
+    at /ASXvOLT16/OpenOLT_Agent/From_ONF_Distribution
+  - for ASFVOLT16 available, from /ASFvOLT16/OpenOLT_Agent/From_ONF_Distribution/voltha-2.8/OUT-OF-BAND.:
+
+    - ``openolt_asfvolt16-3.4.8-eec0fc9e9a01dc0d35b0b8441e0a22a4c0cc51b4-100G-NNI.deb`` if 100G NNI port is used
+    - ``openolt_asfvolt16-3.4.8-eec0fc9e9a01dc0d35b0b8441e0a22a4c0cc51b4-40G-NNI.deb`` if 40G NNI port is used.
+
+  - for ASGVOLT64 available at /ASGvOLT64/OpenOLT_Agent/From_ONF_Distribution/voltha-2.8/OUT-OF-BAND:
+
+    - ``openolt_asgvolt64-3.4.8-eec0fc9e9a01dc0d35b0b8441e0a22a4c0cc51b4-100G-NNI.deb`` if 100G NNI port is used
+    - ``openolt_asgvolt64-3.4.8-eec0fc9e9a01dc0d35b0b8441e0a22a4c0cc51b4-40G-NNI.deb`` if 40G NNI port is used.
+
+- In band management
+
+  - use ONL image, comprising of Bal and openolt (available from edgecore site) for ASFVOLT16
+    ONL-onl-4.14_ONL-OS8_2021-03-19.0322-72b95a7_AMD64_INSTALLED_INSTALLER-40G-NNI,
+    available at /ASXvOLT16/OpenOLT_Agent/From_ONF_Distribution/voltha-2.8/IN-BAND.
+    Note that debian package available as part of the ONL support 40G NNI by default.
+
+
+Get access credentials for https://edgecore.quickconnect.to and then login
+and navigate to File_Station -> EdgecoreNAS, and then the folder
+/ASXvOLT16/OpenOLT_Agent/From_ONF_Distribution/ and pick the version above
