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


Service Orchestrator 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.1.0
--------------


:Release Date: yyyy-mm-dd



**New Features**
	Initial release of Service Orchestrator (SO) for Open Network Automation Platform (ONAP)


**Bug Fixes**
	- ``_ and a sentence explaining what this defect is addressing.
**Known Issues**
	- ``_ 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 Issues**
	You may want to include a reference to CVE (Common Vulnerabilities and Exposures) `CVE <https://cve.mitre.org>`_


**Upgrade Notes**

**Deprecation Notes**
	

**Other**

===========

End of Release Notes
