.. 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: 1.3.0
--------------


:Release Date: 2018-05-02


**New Features**

Support for config binding services.

**Bug Fixes**
    - `https://jira.onap.org/browse/DCAEGEN2-465`
**Known Issues**
    - `https://jira.onap.org/browse/DCAEGEN2-465`
      Default config causes standalone instance startup failure.

**Security Issues**
    - None 


**Upgrade Notes**

**Deprecation Notes**

**Other**

===========

End of Release Notes
