.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2017 Bell Canada & Amdocs Intellectual Property.  All rights reserved.

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

Version: 1.1.0
--------------

:Release Date: 2017-11-16

**New Features**

The Amsterdam release is the first release of the ONAP Operations Manager (OOM).

The main goal of the Amsterdam release was to:

    - Support Flexible Platform Deployment via Kubernetes of fully containerized OMAP components - on any type of environment.
    - Support State Management of ONAP platform components.
    - Support full production ONAP deployment and any variation of component level deployment for development.
    - Platform Operations Orchestration / Control Loop Actions.
    - Platform centralized logging with ELK stack.

**Bug Fixes**

	- The full list of implemented user stories and epics is available on `JIRA <https://jira.onap.org/secure/RapidBoard.jspa?rapidView=41&view=planning.nodetail&epics=visible>`_
	  This is the first release of OOM, the defects fixed in this release were raised during the course of the release.
	  Anything not closed is captured below under Known Issues. If you want to review the defects fixed in the Amsterdam release, refer to Jira link above.

**Known Issues**
	- `OOM-6 <https://jira.onap.org/browse/OOM-6>`_ Automated platform deployment on Docker/Kubernetes - VFC, AAF, MSB minor issues.

        Workaround:

        Manual configuration changes - however the reference vFirewall use case does not currently require these components
.
    - `OOM-10 <https://jira.onap.org/browse/OOM-10>`_ Platform configuration management.

        OOM ONAP Configuration Management - Handling of Secrets.

        Workaround:

        Automated workaround to be able to pull from protected docker repositories.


**Security Issues**
	N/A


**Upgrade Notes**

    N/A

**Deprecation Notes**

    N/A

**Other**



===========

End of Release Notes
