.. This work is licensed under a Creative Commons Attribution 4.0 International License.
 
New Features
------------

ONAP PORTAL Framework items for: (Last Updated: 16 November 2017)

*    **Version**: Amsterdam Release
*    **Release Date**: 16 November 2017
*    **Description**: R1

.. contents::
    :depth: 2

Epic
^^^^

* [PORTAL-27] Digital Experience Control/UI upgrade 
* [PORTAL-28] Portal Notification Enhancement  

User Story
^^^^^^^^^^

* [PORTAL-100]	create a documentation Template in ReadTheDocs
* [PORTAL-21]	1710 feature - centralized user role management 
* [PORTAL-24]	1710 feature - enhanced notification module
* [PORTAL-26]	1710 feature - enhance Look & Feel GUI
* [PORTAL-29]	1710 feature - enhanced notification module
* [PORTAL-53]	functional test case integration
* [PORTAL-92]	Independent Versioning and Release Process
* [PORTAL-105]	create doc folder/directory
* [PORTAL-123]	CSIT Jenkins jobs for Portal-SDK
* [PORTAL-78]	Portal's SDK Demo App test case
* [PORTAL-98]	CSIT Jenkins jobs
* [PORTAL-103]	enhanced notification ticket source for ONAP 
* [PORTAL-104]	replace mysql DB connector with mariaDB in ONAP
* [PORTAL-106]	update Onboarding DB script - continue
* [PORTAL-109]	Update Docker version to 1.3 for Portal images
* [PORTAL-110]	Centralized Role management prep step1
* [PORTAL-112]	Remove old jenkins jobs that are not planned to fix
* [PORTAL-126]	Remove DMaaP BC UI app from Portal deployment
* [PORTAL-130]	Change FQDN for portal and associated GUI's to use onap.org url
* [PORTAL-134]	Release 1.3.0 for Portal repo
* [PORTAL-20]	remove mariadb client reference from be-common pom
* [PORTAL-39]	Remove MojoHaus Maven plug-in from pom file
* [PORTAL-50]	JUnit test coverage enabling in ONAP Portal code for Sonar scans.
* [PORTAL-52]	remove etc.zip file from repo and replace with folder structure of all properties files.
* [PORTAL-54]	Javadocs generation jenkins job needs to be fixed
* [PORTAL-55]	From main portal, provide an menu for CLI download
* [PORTAL-61]	1710 feature - enhanced notification module
* [PORTAL-70]	update Portal wiki documetation for 1.1.0 release
* [PORTAL-84]	update Onboarding DB script
* [PORTAL-89]	Portal/SDK release 1.3.0
* [PORTAL-90]	new ONAP License.txt approved change by LF council
* [PORTAL-95]	Docker container start timeout too short for database

