.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0


Release Notes
=============

.. note::
        * This Release Notes must be updated each time the team decides to Release new artifacts.
        * The scope of this Release Notes is for this particular component. In other words, each ONAP component has its Release Notes.
        * This Release Notes is cumulative, the most recently Released artifact is made visible in the top of this Release Notes.
        * Except the date and the version number, all the other sections are optional but there must be at least one section describing the purpose of this new release.
        * This note must be removed after content has been added.


Version: x.y.z
--------------


:Release Date: yyyy-mm-dd



**New Features**

One or two sentences explaining the purpose of this Release.

**Bug Fixes**
        - `CIMAN-65 <https://jira.onap.org/browse/CIMAN-65>`_ and a sentence explaining what this defect is addressing.
**Known Issues**
        - `CIMAN-65 <https://jira.onap.org/browse/CIMAN-65>`_ and two, three sentences.
          One sentences explaining what is the issue.

          Another sentence explaining the impact of the issue.

          And an optional sentence providing a workaround.

**Security Notes**

*Fixed Security Issues*

        List of security issues fixed in this release including CVEs and OJSI tickets.

*Known Security Issues*

        List of new security issues that are left unfixed in this release including CVEs and OJSI tickets.

*Known Vulnerabilities in Used Modules*

        Results of know vulnerabilities analysis in used modules.

**Upgrade Notes**

**Deprecation Notes**

**Other**

===========

End of Release Notes
