Release 5.0.0 Artefacts and Documentation

Change-Id: If897b9f13ae13962db4cddb0ff151992d56aa7d5
Signed-off-by: Angelika Wittek <angelika.wittek@konteno.de>
diff --git a/Releases/5.0.0/GettingStarted_mdmbl.pdf b/Releases/5.0.0/GettingStarted_mdmbl.pdf
new file mode 100644
index 0000000..73db47f
--- /dev/null
+++ b/Releases/5.0.0/GettingStarted_mdmbl.pdf
Binary files differ
diff --git a/Releases/5.0.0/Installation Guide for the  openMDM5 Application.pdf b/Releases/5.0.0/Installation Guide for the  openMDM5 Application.pdf
new file mode 100644
index 0000000..e0c1dcf
--- /dev/null
+++ b/Releases/5.0.0/Installation Guide for the  openMDM5 Application.pdf
Binary files differ
diff --git a/Releases/5.0.0/LICENSE.txt b/Releases/5.0.0/LICENSE.txt
new file mode 100644
index 0000000..e48e096
--- /dev/null
+++ b/Releases/5.0.0/LICENSE.txt
@@ -0,0 +1,277 @@
+Eclipse Public License - v 2.0
+
+    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+    PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
+    OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+  a) in the case of the initial Contributor, the initial content
+     Distributed under this Agreement, and
+
+  b) in the case of each subsequent Contributor:
+     i) changes to the Program, and
+     ii) additions to the Program;
+  where such changes and/or additions to the Program originate from
+  and are Distributed by that particular Contributor. A Contribution
+  "originates" from a Contributor if it was added to the Program by
+  such Contributor itself or anyone acting on such Contributor's behalf.
+  Contributions do not include changes or additions to the Program that
+  are not Modified Works.
+
+"Contributor" means any person or entity that Distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which
+are necessarily infringed by the use or sale of its Contribution alone
+or when combined with the Program.
+
+"Program" means the Contributions Distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement
+or any Secondary License (as applicable), including Contributors.
+
+"Derivative Works" shall mean any work, whether in Source Code or other
+form, that is based on (or derived from) the Program and for which the
+editorial revisions, annotations, elaborations, or other modifications
+represent, as a whole, an original work of authorship.
+
+"Modified Works" shall mean any work in Source Code or other form that
+results from an addition to, deletion from, or modification of the
+contents of the Program, including, for purposes of clarity any new file
+in Source Code form that contains any contents of the Program. Modified
+Works shall not include works that contain only declarations,
+interfaces, types, classes, structures, or files of the Program solely
+in each case in order to link to, bind by name, or subclass the Program
+or Modified Works thereof.
+
+"Distribute" means the acts of a) distributing or b) making available
+in any manner that enables the transfer of a copy.
+
+"Source Code" means the form of a Program preferred for making
+modifications, including but not limited to software source code,
+documentation source, and configuration files.
+
+"Secondary License" means either the GNU General Public License,
+Version 2.0, or any later versions of that license, including any
+exceptions or additional permissions as identified by the initial
+Contributor.
+
+2. GRANT OF RIGHTS
+
+  a) Subject to the terms of this Agreement, each Contributor hereby
+  grants Recipient a non-exclusive, worldwide, royalty-free copyright
+  license to reproduce, prepare Derivative Works of, publicly display,
+  publicly perform, Distribute and sublicense the Contribution of such
+  Contributor, if any, and such Derivative Works.
+
+  b) Subject to the terms of this Agreement, each Contributor hereby
+  grants Recipient a non-exclusive, worldwide, royalty-free patent
+  license under Licensed Patents to make, use, sell, offer to sell,
+  import and otherwise transfer the Contribution of such Contributor,
+  if any, in Source Code or other form. This patent license shall
+  apply to the combination of the Contribution and the Program if, at
+  the time the Contribution is added by the Contributor, such addition
+  of the Contribution causes such combination to be covered by the
+  Licensed Patents. The patent license shall not apply to any other
+  combinations which include the Contribution. No hardware per se is
+  licensed hereunder.
+
+  c) Recipient understands that although each Contributor grants the
+  licenses to its Contributions set forth herein, no assurances are
+  provided by any Contributor that the Program does not infringe the
+  patent or other intellectual property rights of any other entity.
+  Each Contributor disclaims any liability to Recipient for claims
+  brought by any other entity based on infringement of intellectual
+  property rights or otherwise. As a condition to exercising the
+  rights and licenses granted hereunder, each Recipient hereby
+  assumes sole responsibility to secure any other intellectual
+  property rights needed, if any. For example, if a third party
+  patent license is required to allow Recipient to Distribute the
+  Program, it is Recipient's responsibility to acquire that license
+  before distributing the Program.
+
+  d) Each Contributor represents that to its knowledge it has
+  sufficient copyright rights in its Contribution, if any, to grant
+  the copyright license set forth in this Agreement.
+
+  e) Notwithstanding the terms of any Secondary License, no
+  Contributor makes additional grants to any Recipient (other than
+  those set forth in this Agreement) as a result of such Recipient's
+  receipt of the Program under the terms of a Secondary License
+  (if permitted under the terms of Section 3).
+
+3. REQUIREMENTS
+
+3.1 If a Contributor Distributes the Program in any form, then:
+
+  a) the Program must also be made available as Source Code, in
+  accordance with section 3.2, and the Contributor must accompany
+  the Program with a statement that the Source Code for the Program
+  is available under this Agreement, and informs Recipients how to
+  obtain it in a reasonable manner on or through a medium customarily
+  used for software exchange; and
+
+  b) the Contributor may Distribute the Program under a license
+  different than this Agreement, provided that such license:
+     i) effectively disclaims on behalf of all other Contributors all
+     warranties and conditions, express and implied, including
+     warranties or conditions of title and non-infringement, and
+     implied warranties or conditions of merchantability and fitness
+     for a particular purpose;
+
+     ii) effectively excludes on behalf of all other Contributors all
+     liability for damages, including direct, indirect, special,
+     incidental and consequential damages, such as lost profits;
+
+     iii) does not attempt to limit or alter the recipients' rights
+     in the Source Code under section 3.2; and
+
+     iv) requires any subsequent distribution of the Program by any
+     party to be under a license that satisfies the requirements
+     of this section 3.
+
+3.2 When the Program is Distributed as Source Code:
+
+  a) it must be made available under this Agreement, or if the
+  Program (i) is combined with other material in a separate file or
+  files made available under a Secondary License, and (ii) the initial
+  Contributor attached to the Source Code the notice described in
+  Exhibit A of this Agreement, then the Program may be made available
+  under the terms of such Secondary Licenses, and
+
+  b) a copy of this Agreement must be included with each copy of
+  the Program.
+
+3.3 Contributors may not remove or alter any copyright, patent,
+trademark, attribution notices, disclaimers of warranty, or limitations
+of liability ("notices") contained within the Program from any copy of
+the Program which they Distribute, provided that Contributors may add
+their own appropriate notices.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While this
+license is intended to facilitate the commercial use of the Program,
+the Contributor who includes the Program in a commercial product
+offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes
+the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every
+other Contributor ("Indemnified Contributor") against any losses,
+damages and costs (collectively "Losses") arising from claims, lawsuits
+and other legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program
+in a commercial product offering. The obligations in this section do not
+apply to any claims or Losses relating to any actual or alleged
+intellectual property infringement. In order to qualify, an Indemnified
+Contributor must: a) promptly notify the Commercial Contributor in
+writing of such claim, and b) allow the Commercial Contributor to control,
+and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may
+participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those performance
+claims and warranties, and if a court requires any other Contributor to
+pay any damages as a result, the Commercial Contributor must pay
+those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
+BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
+TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
+PURPOSE. Each Recipient is solely responsible for determining the
+appropriateness of using and distributing the Program and assumes all
+risks associated with its exercise of rights under this Agreement,
+including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs
+or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
+SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other software
+or hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably practicable.
+However, Recipient's obligations under this Agreement and any licenses
+granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and
+may only be modified in the following manner. The Agreement Steward
+reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. The Eclipse Foundation
+is the initial Agreement Steward. The Eclipse Foundation may assign the
+responsibility to serve as the Agreement Steward to a suitable separate
+entity. Each new version of the Agreement will be given a distinguishing
+version number. The Program (including Contributions) may always be
+Distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is published,
+Contributor may elect to Distribute the Program (including its
+Contributions) under the new version.
+
+Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+receives no rights or licenses to the intellectual property of any
+Contributor under this Agreement, whether expressly, by implication,
+estoppel or otherwise. All rights in the Program not expressly granted
+under this Agreement are reserved. Nothing in this Agreement is intended
+to be enforceable by any entity that is not a Contributor or Recipient.
+No third-party beneficiary rights are created under this Agreement.
+
+Exhibit A - Form of Secondary Licenses Notice
+
+"This Source Code may also be made available under the following
+Secondary Licenses when the conditions for such availability set forth
+in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+version(s), and exceptions or additional permissions here}."
+
+  Simply including a copy of this Agreement, including this Exhibit A
+  is not sufficient to license the Source Code under Secondary Licenses.
+
+  If it is not possible or desirable to put the notice in a particular
+  file, then You may include the notice in a location (such as a LICENSE
+  file in a relevant directory) where a recipient would be likely to
+  look for such a notice.
+
+  You may add additional accurate notices of copyright ownership.
diff --git a/Releases/5.0.0/NOTICE.txt b/Releases/5.0.0/NOTICE.txt
new file mode 100644
index 0000000..8bbd2e1
--- /dev/null
+++ b/Releases/5.0.0/NOTICE.txt
@@ -0,0 +1,341 @@
+# Notices for Eclipse MDM|BL
+
+This content is produced and maintained by the Eclipse MDM|BL project,
+it is a project of the openMDM(R) Eclipse Working Group.
+
+* Project home: https://projects.eclipse.org/projects/technology.mdmbl
+
+## Trademarks
+
+Eclipse MDM|BL, MDM|BL and Eclipse openMDM(R) logo are registered trademarks
+of the Eclipse Foundation.
+
+## Copyright
+
+All content is the property of the following respective authors or their employers.
+For more information regarding authorship of content, please consult the listed
+source code repository logs.
+
+Copyright (c) 2016-2018 Gigatronik Ingolstadt GmbH
+Copyright (c) 2016-2018 Peak Solution GmbH
+Copyright (c) 2017-2018 science + computing AG Tuebingen (ATOS SE)
+Copyright (c) 2017-2018 Canoo Engineering AG
+Copyright (c) 2017 Florian Schmitt
+Copyright (c) 2017-2018 Angelika Wittek
+Copyright (c) 2018 Elektronische Fahrwerksysteme GMBH
+Copyright (c) 2018 Karakun AG
+
+## Declared Project Licenses
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0 which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+## Source Code
+
+The project maintains the following source code repositories:
+
+org.eclipse.mdm.api.base.git	      - The openMDM(R) API.
+org.eclipse.mdm.api.default.git	    - Extension of the openMDM(R) API containing default elements.
+org.eclipse.mdm.api.odsadapter.git	- ODS implementation of persistence adapter.
+org.eclipse.mdm.nucleus.git	        - Core building blocks for the openMDM Business Logic and Web Frontend.
+
+## Third-party Content
+
+The Content includes items that have been sourced from third parties as set out below.
+If you did not receive this Content directly from the Eclipse Foundation, the following
+is provided for informational purposes only, and you should look to
+the Redistributor's license for terms and conditions of use.
+
+antlr4-4.5.3.jar(2.5.3)
+    * License: New BSD license
+
+aopalliance-repackaged-2.5.0-b05.jar (2.5.0-b05)
+    * License: CDDL
+
+commons-codec-1.2.jar (1.2)
+    * License: Apache License, 2.0
+
+commons-httpclient-3.1.jar  (3.1)
+    * License: Apache License, 2.0
+
+commons-lang3-3.4.jar (3.4)
+    * License: Apache License, 2.0
+
+gson-2.7.jar (2.7)
+    * License: Apache License, 2.0
+
+Google Guava Version: 25.0-jre  (25.0)
+    * License: Apache License, 2.0
+    
+Gradle Wrapper (4.10.2)
+    * License: Apache License, 2.0    
+
+hk2-api-2.5.0-b05.jar (2.5.0-b05)
+    * License: CDDL-1.1
+
+hk2-locator-2.5.0-b05.jar(2.5.0-b05)
+    * License: CDDL
+
+hk2-utils-2.5.0-b05.jar  (2.5.0-b05)
+    * License: CDDL
+
+jackson-annotations-2.9.0.jar  (2.9.0)
+    * License: Apache License, 2.0
+
+jackson-core-2.9.2.jar(2.9.2)
+    * License: Apache License, 2.0
+
+jackson-databind-2.9.2.jar  (2.9.2)
+    * License: Apache License, 2.0
+
+jackson-jaxrs-base-2.9.2.jar(2.9.2)
+    * License: Apache License, 2.0
+
+jackson-jaxrs-json-provider-2.9.2.jar(2.9.2)
+    * License: Apache License, 2.0
+
+jackson-module-jaxb-annotations-2.9.2.jar  (2.9.2)
+    * License: Apache License, 2.0
+
+javassist-3.20.0-GA.jar  (2.20.0-GA)
+    * License: Apache 2.0
+
+jcl-over-slf4j-1.7.25.jar(1.7.25)
+    * License: MIT License
+    * Licence Path: https://www.slf4j.org/license.html
+    * Project URL:  https://www.slf4j.org
+    * Source URL:   https://github.com/qos-ch/slf4j
+
+jersey-client-2.23.2.jar (2.23.2)
+     * License: CDDL
+
+jersey-common-2.23.2.jar (2.23.2)
+    * License: CDDL
+
+jersey-container-servlet-2.23.2.jar  (2.23.2)
+    * License: CDDL
+
+jersey-container-servlet-core-2.23.3.jar(2.23.2)
+    * License: CDDL
+
+jersey-guava-2.23.2.jar  (2.23.2)
+    * License: Apache License, 2.0
+
+jersey-media-jaxb-2.23.2.jar(2.23.2)
+    * License: CDDL
+
+jersey-media-sse-2.23.2.jar (2.23.2)
+    * License: CDDL
+
+jersey-server-2.23.2.jar (2.23.2)
+    * License: Apache-2.0
+
+logback-classic-1.2.3.jar(1.2.3)
+    * License: Eclipse Public License 1.0
+
+logback-core-1.2.3.jar(1.2.3)
+    * License: Eclipse Public License 1.0
+
+osgi-resource-locator-1.0.1.jar(1.0.1)
+    * License: CDDL
+
+protobuf-java-3.2.0.jar (3.2.0)
+    * License: New BSD license
+
+protobuf-java-util-3.2.0.jar  (3.2.0)
+    * License: New BSD license
+
+slf4j-api-1.7.25.jar  (1.7.25)
+    * License: MIT license
+    * Licence Path: https://www.slf4j.org/license.html
+    * Project URL: https://github.com/qos-ch/slf4j
+    * Source URL:  https://github.com/qos-ch/slf4j/releases/tag/v_1.7.25
+
+validation-api-1.1.0.Final.jar (1.1.0.Final)
+* License: Apache License, 2.0
+
+vavr-0.9.1-sources.jar (0.9.1)
+* License: Apache License, 2.0
+
+@angular/common@2.4.8
+    * License: MIT
+    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
+    * Project: https://github.com/angular/angular
+    * Source:  https://github.com/angular/angular
+
+@angular/compiler@2.4.8
+    * License: MIT
+    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
+    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
+    * Project: https://github.com/angular/angular
+    * Source:  https://github.com/angular/angular
+
+@angular/core@2.4.8
+    * License: MIT
+    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
+    * Project: https://github.com/angular/angular
+    * Source:  https://github.com/angular/angular
+
+@angular/forms@2.4.8
+    * License: MIT
+    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
+    * Project: https://github.com/angular/angular
+    * Source:  https://github.com/angular/angular
+
+@angular/http@2.4.8
+    * License: MIT
+    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
+    * Project: https://github.com/angular/angular
+    * Source:  https://github.com/angular/angular
+
+@angular/platform-browser-dynamic@2.4.8
+    * License: MIT
+    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
+    * Project: https://github.com/angular/angular
+    * Source:  https://github.com/angular/angular
+
+@angular/platform-browser@2.4.8
+    * License: MIT
+    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
+    * Project: https://github.com/angular/angular
+    * Source:  https://github.com/angular/angular
+
+@angular/router@3.4.8
+    * License: MIT
+    * Licence Path: https://github.com/angular/angular/blob/master/LICENSE
+    * Project: https://github.com/angular/angular
+    * Source:  https://github.com/angular/angular
+
+@types/file-saver@0.0.0
+    * License: MIT
+    * Licence Path: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/LICENSE
+    * Project: https://github.com/DefinitelyTyped/DefinitelyTyped
+    * Source:  https://github.com/DefinitelyTyped/DefinitelyTyped
+
+bootstrap@3.3.7
+    * License: MIT
+    * Licence Path: https://github.com/twbs/bootstrap/raw/master/LICENSE
+    * Project: https://github.com/twbs/bootstrap
+    * Source:  https://github.com/twbs/bootstrap
+
+class-transformer@0.1.6
+    * License: MIT
+    * Licence Path: https://github.com/typestack/class-transformer/blob/master/LICENSE
+    * Project: https://github.com/pleerock/class-transformer
+    * Source:  https://github.com/pleerock/class-transformer
+
+core-js@2.4.1
+    * License: MIT
+    * Licence Path: https://github.com/zloirock/core-js/raw/master/LICENSE
+    * Project: https://github.com/zloirock/core-js
+    * Source:  https://github.com/zloirock/core-js
+
+file-saver@1.3.3
+    * License: MIT
+    * Licence Path: https://github.com/eligrey/FileSaver.js/raw/master/LICENSE.md
+    * Project: https://github.com/eligrey/FileSaver.js
+    * Source:  https://github.com/eligrey/FileSaver.js
+
+font-awesome@4.7.0
+    * License: MIT
+    * Licence Path: https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt
+    * Project: https://fontawesome.com/
+    * Source:  https://github.com/FortAwesome/Font-Awesome
+
+moment@2.17.1
+    * License: MIT
+    * Licence Path: https://github.com/moment/moment/raw/master/LICENSE
+    * Project: https://github.com/moment/moment
+    * Source:  https://github.com/moment/moment
+
+ngx-bootstrap@1.9.1
+    * License: MIT
+    * Licence Path: https://github.com/valor-software/ngx-bootstrap/blob/development/LICENSE
+    * Project: https://valor-software.com/ngx-bootstrap
+    * Source:  https://github.com/valor-software/ngx-bootstrap
+
+ng2-split-pane@1.3.1
+    * License: MIT
+    * Licence Path: https://github.com/wannabegeek/ng2-split-pane/raw/master/LICENSE
+    * Project: https://github.com/wannabegeek/ng2-split-pane
+    * Source:  https://github.com/wannabegeek/ng2-split-pane
+
+primeng@2.0.5
+    * License: MIT
+    * Licence Path: https://github.com/primefaces/primeng/raw/master/LICENSE.md
+    * Project: https://github.com/primefaces/primeng
+    * Source:  https://github.com/primefaces/primeng
+
+reflect-metadata@0.1.3
+    * License: Apache-2.0
+    * Project: https://github.com/rbuckton/ReflectDecorators
+    * Source:  https://github.com/rbuckton/ReflectDecorators
+
+rxjs@5.1.0
+    * License: Apache-2.0
+    * Project: https://github.com/ReactiveX/RxJS
+    * Source:  https://github.com/ReactiveX/RxJS
+
+symbol-observable@1.2.0
+    * License: MIT
+    * Licence Path: https://github.com/blesh/symbol-observable/raw/master/license
+    * Project: https://github.com/blesh/symbol-observable
+    * Source:  https://github.com/blesh/symbol-observable
+
+ts-helpers@1.1.1
+    * License: MIT
+    * Licence Path: https://github.com/ngParty/ts-helpers/raw/master/LICENSE
+    * Project: https://github.com/ngParty/ts-helpers
+    * Source:  https://github.com/ngParty/ts-helpers
+
+zone.js@0.7.6
+    * License: MIT
+    * Licence Path: https://github.com/angular/zone.js/raw/master/LICENSE
+    * Project: https://github.com/angular
+    * Source:  https://github.com/angular/zone.js
+    
+FFAMFAMFAM Silk Icon, Version 1.3
+    * License: Creative Commons Attribution 3.0 License 
+    * Licence Path: https://creativecommons.org/licenses/by/3.0/
+    * Project: http://www.famfamfam.com/lab/icons/silk/
+    * Source:  http://www.famfamfam.com/lab/icons/silk/
+
+ods530.idl
+Permission of use:
+From Hans-Georg Swolana, Chairman of the Board ASAM e.V.,
+ Prof. Dr. Marcus Rieker, Member of the Board ASAM e.V.
+Date: Hoehenkirchen, 06/01/2016
+"The ASAM Board of Directors releases the IDL files for use under the EPL to the Eclipse IWG openMDM.
+This is valid for all versions of ASAM ODS 5.3.x.
+This permission is valid under the conditions of Eclipse will not modify the file."
+
+AvalonEvent.idl, CorbaFileServer.idl
+Permission of use:
+From Dr. Ralph Noerenberg
+Date: 08/15/2016
+"Herewith, we release the generated Client-Source-Code generated from our CORBA IDLs, namely
+* CORBANotification Service (generated from „AvalonEvent.idl”)
+* CORBAFileServer (generated from „CorbaFileServer.idl“),
+Under the Eclipse Public License (EPL). This agreement does not include the „AvalonEvent.idl“ and
+„CorbaFileServer.idl“ itself, which remain protected property of HighQSoft. "
+
+OMG Notification Service Specification Version: 1.1
+The terms of use are defined in section "Freely Available And Available
+Free" see: http://www.omg.org/gettingstarted/overview.htm
+
+OMG Event Service Specification Version: 1.2
+The terms of use are defined in section "Freely Available And Available
+Free" see: http://www.omg.org/gettingstarted/overview.htm
+
+
+## Cryptography
+
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
diff --git a/Releases/5.0.0/README.md b/Releases/5.0.0/README.md
new file mode 100644
index 0000000..4ecbc75
--- /dev/null
+++ b/Releases/5.0.0/README.md
@@ -0,0 +1,621 @@
+## minimum requirements
+* JDK 1.8.0_45
+* Gradle 2.13
+
+## build dependencies
+Before you can install and build the application, you have to checkout and install: (gradlew install)
+* org.eclipse.mdm.api.base
+* org.eclipse.mdm.api.default
+* org.eclipse.mdm.api.odsadapter
+
+## build, deploy and configure the application
+
+1. **edit** the **org.eclipse.mdm.nucleus/org.eclipse.mdm.application/src/main/webapp/app/core/property.service.ts** and set the variables host, port and prefix for your deployment
+(This properties are used to create the rest URLs to communicate with the backend)
+Furthermore, specify the **contextPath** in **org.eclipse.mdm.nucleus/org.eclipse.mdm.application/src/main/webapp/webpack.config.js**
+2. **build** the application (gradlew install)
+The command **gradlew install** at **org.eclipse.mdm.nucleus** creates a ZIP archive named **mdm_web-${version}.zip** at
+**/org.eclipse.mdm.nucleus/build/distributions**
+The ZIP archive contains the backend **org.eclipse.mdm.nucleus-${version}.war** and the configurations **/configuration**
+3. **check** that the database for the preference service is running or else start it with **asadmin start-database**.
+4. **deploy** the backend ( **org.eclipse.mdm.nucleuss-${version}.war** file) at your application server. Make sure to deploy the war file with application name **org.eclipse.mdm.nucleus**, otherwise the LoginRealmModule is not able to lookup the ConnectorService EJB. Additionally in the following examples, we assume that the context root is also set to **org.eclipse.mdm.nucleus**.
+When deploying on command line you can use: **asadmin deploy --name org.eclipse.mdm.nucleus "/path/to/org.eclipse.mdm.nucleus-${version}.war"**
+5. **copy the content** of the extracted **/configuration** folder to **GLASSFISH_ROOT/glassfish/domains/domain1/config**
+6. **edit** the **org.eclipse.mdm.connector/service.xml** file to configure the data sources
+7. **configure** a **LoginModule** with name **MDMRealm** (See section **Configure LoginModule** for details)
+8. **restart** the application server
+9. **visit** the main page of the client to make sure everything works fine. The main page of the client should be available under
+http://SERVER:PORT/{APPLICATIONROOT}
+_(eg: http://localhost:8080/org.eclipse.mdm.nucleus_)
+
+## configure LoginModule
+MDM 5 backend implements the delegated approach to roles and permissions, wherein the data sources (ASAM ODS server, PAK cloud)
+themselves can implement their own security scheme (which they already have) and then delegates the appropriate
+user data to the backends.
+
+In the case of ASAM ODS servers this is done using a technical user and the `for_user` attribute on the established
+connection, so it is a form of 'login on behalf'.
+
+In the case of PAK Cloud this is done by passing the user name along with a http header `X-Remote-User` which is then
+used by PAK Cloud to establish the users roles (from an internal database or an external authentication provider).
+
+Before the user is 'logged in on behalf' he is authenticated by a LoginModule within the Glassfish application server.
+There are different implementations available (e.g. LDAP, Certificate, JDBC, ...). To keep this guide simple, we will setup
+a FileRealm, which stores the user information in a flat file:
+
+The following command will create a FileRealm with name `MDMRealm` that stores the users in a file called `mdm-keyfile`:
+
+```
+asadmin create-auth-realm --classname com.sun.enterprise.security.auth.realm.file.FileRealm --property file=${com.sun.aas.instanceRoot}/config/mdm-keyfile:jaas-context=MDMRealm:assign-groups=MDM MDMRealm
+```
+
+To be able to login you need to explicitly add users to the `MDMRealm`:
+
+```
+asadmin create-file-user --authrealmname MDMRealm
+```
+
+Next you need to add the following snippet to your `login.conf` in `${com.sun.aas.instanceRoot}/config/`
+
+```
+MDMRealm {
+  com.sun.enterprise.security.auth.login.FileLoginModule required;
+};
+```
+As a last step you have to provide the credentials of the technical user in adapter configuration in `service.xml`. 
+For the ODS adapter you you have to specify the parameters `user` and `password` of the technical user. For example:
+
+```
+<service entityManagerFactoryClass="org.eclipse.mdm.api.odsadapter.ODSContextFactory">
+    ...
+	<param name="user">sa</param>
+	<param name="password">sa</param>
+	...
+</service>
+```
+
+Make sure to restart Glassfish after this change.
+
+### Remove MDMLoginRealm from previous versions:
+In versions 5.0.0M1, 0.10 and older the configuration of a custom login realm was neccessary. If you configured your glassfish instance
+for one of these version, you can remove the old configuration options and artifact, as they are no longer needed:
+
+* **delete** the jar file **org.eclipse.mdm.realm.login.glassfish-VERSION.jar** from **GLASSFISH4_ROOT/glassfish/domains/domain1/lib**
+   
+* **open** the Glassfish login **configuration file** at **GLASSFISH4_ROOT/glassfish/domains/domain1/config/login.conf**
+   
+* **delete** custom MDM realm module entry to this config file
+    
+```   
+MDMLoginRealm {
+  org.eclipse.mdm.realm.login.glassfish.LoginRealmModule required;
+};
+```
+
+* **remove** the MDMLoginRealm by executing the following command or by deleting it in the Glassfish web console:
+ 
+```
+asadmin delete-auth-realm MDMLoginRealm
+```
+
+
+## configure logging
+
+MDM 5 uses SLF4J and logback for logging. The default configuration file can be found at **org.eclipse.mdm.nucleus/src/main/resources/logback.xml**. It logs INFO level messages to **mdm5.log** in the **logs** folder of the Glassfish domain. If you want to customize logging, you can either edit the file within the war file or preferably provide your own logging configuration via system parameter in the JVM settings in Glassfish: **-Dlogback.configurationFile=/path/to/config.xml**
+
+## available rest URLs
+
+**Business Object: Environment**
+
+* http://{SERVER}:{PORT}/{APPLICATIONROOT}/mdm/environments
+* http://{SERVER}:{PORT}/{APPLICATIONROOT}/mdm/environments/{SOURCENAME}
+* http://{SERVER}:{PORT}/{APPLICATIONROOT}/mdm/environments/{SOURCENAME}/localizations
+* _example: http://localhost:8080/org.eclipse.mdm.nucleus/mdm/environments_
+
+Since all other calls operate on a specific source all subsequent calls share the common prefix
+`http://{SERVER}:{PORT}/{APPLICATIONROOT}/mdm/environments/{SOURCENAME}/`, which we will be our root for the description of the next calls.
+Strings enclosed in curly brackets are meant to be replaced by appropriate values. The following parameters are recurring throughout the different URLs:
+
+* APPLICATIONROOT is the context root under which MDM is deployed
+* SOURCENAME is the source name the underlying data source
+* CONTEXTTYPE is one of [unitundertest, testsequence, testequipment]
+* DATATYPE is one of [STRING, STRING_SEQUENCE, DATE, DATE_SEQUENCE, BOOLEAN, BOOLEAN_SEQUENCE, BYTE, BYTE_SEQUENCE, SHORT, SHORT_SEQUENCE, INTEGER, INTEGER_SEQUENCE, LONG, LONG_SEQUENCE, FLOAT, FLOAT_SEQUENCE, DOUBLE, DOUBLE_SEQUENCE, BYTE_STREAM, BYTE_STREAM_SEQUENCE, FLOAT_COMPLEX, FLOAT_COMPLEX_SEQUENCE, DOUBLE_COMPLEX, DOUBLE_COMPLEX_SEQUENCE, FILE_LINK, FILE_LINK_SEQUENCE] 
+* FILTERSTRING is a String defining a filter. For example `Test.Name eq 't*'` filters for all tests which names begin with `t`.
+
+
+**Business Object: Test**
+
+* GET:    /tests
+* GET:    /tests?filter={FILTERSTRING}
+* GET:    /tests/searchattributes
+* GET:    /tests/localizations
+* GET:    /tests/{TESTID}
+
+**Business Object: TestStep**
+
+* GET:    /teststeps
+* GET:    /teststeps?filter=FILTERSTRING
+* GET:    /teststeps/searchattributes
+* GET:    /teststeps/localizations
+* GET:    /teststeps/{TESTSTEPID}
+* GET:    /teststeps/{TESTSTEPID}/contexts
+* GET:    /teststeps/{TESTSTEPID}/contexts/{CONTEXTTYPE}
+
+**Business Object: Measurement**
+
+* GET:    /measurements
+* GET:    /measurements?filter={FILTERSTRING}
+* GET:    /measurements/searchattributes
+* GET:    /measurements/localizations
+* GET:    /measurements/{MEASUREMENTID}
+* GET:    /measurements/{MEASUREMENTID}/contexts
+* GET:    /measurements/{MEASUREMENTID}/contexts/{CONTEXTTYPE}
+
+**Business Object: ChannelGroup**
+
+* GET:    /channelgroups
+* GET:    /channelgroups/localizations
+* GET:    /channelgroups/{CHANNELGROUPID}
+
+**Business Object: Channel**
+
+* GET:    /channels
+* GET:    /channels/localizations
+* GET:    /channels/{CHANNELID}
+
+**Business Object: Project**
+
+* GET:    /projects
+* GET:    /projects?filter={FILTERSTRING}
+* GET:    /projects/searchattributes
+* GET:    /projects/localizations
+* GET:    /projects/{PROJECTID}
+
+**Business Object: Pool**
+
+* GET:    /pools
+* GET:    /pools?filter={FILTERSTRING}
+* GET:    /pools/searchattributes
+* GET:    /pools/localizations
+* GET:    /pools/{POOLID}
+
+**Business Object: ValueList**
+
+* GET:    /valuelists
+* POST:   /valuelists (JSON: { "name" : "testValueList" })
+* GET:    /valuelists/{VALUELISTID}
+* PUT:    /valuelists/{VALUELISTID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /valuelists/{VALUELISTID}
+* GET:    /valuelists/searchattributes
+* GET:    /valuelists/localizations
+
+**Business Object: ValueListValue**
+
+* GET:    /valuelists/{VALUELISTID}/valuelistvalues
+* POST:   /valuelists/{VALUELISTID}/valuelistvalues (JSON: { "name" : "testValueListValue" })
+* GET:    /valuelists/{VALUELISTID}/valuelistvalues/{VALUELISTVALUEID}
+* PUT:    /valuelists/{VALUELISTID}/valuelistvalues/{VALUELISTVALUEID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /valuelists/{VALUELISTID}/valuelistvalues/{VALUELISTVALUEID}
+* GET:    /valuelists/{VALUELISTID}/valuelistvalues/searchattributes
+* GET:    /valuelists/{VALUELISTID}/valuelistvalues/localizations
+
+**Business Object: PhysicalDimension**
+
+* GET:    /physicaldimensions
+* POST:   /physicaldimensions (JSON: { "name" : "testPhysicalDimension" })
+* GET:    /physicaldimensions/{PHYSICALDIMENSIONID}
+* PUT:    /physicaldimensions/{PHYSICALDIMENSIONID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /physicaldimensions/{PHYSICALDIMENSIONID}
+* GET:    /physicaldimensions/searchattributes
+* GET:    /physicaldimensions/localizations
+
+**Business Object: Unit**
+
+* GET:    /units
+* POST:   /units (JSON: { "name" : "testUnit", "physicaldimension" : "PHYSICALDIMENSIONID" })
+* GET:    /units/{UNITID}
+* PUT:    /units/{UNITID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /units/{UNITID}
+* GET:    /units/searchattributes
+* GET:    /units/localizations
+
+**Business Object: Quantity**
+
+* GET:    /quantities
+* POST:   /quantities (JSON: { "name" : "testQuantity", "unit" : "UNITID" })
+* GET:    /quantities/{QUANTITYID}
+* PUT:    /quantities/{QUANTITYID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /quantities/{QUANTITYID}
+* GET:    /quantities/searchattributes
+* GET:    /quantities/localizations
+
+**Business Object: CatalogComponent**
+
+* GET:    /catcomps/{CONTEXTTYPE}
+* POST:   /catcomps/{CONTEXTTYPE} (JSON: { "name" : "testCatalogComponent" })
+* GET:    /catcomps/{CONTEXTTYPE}/{CATALOGCOMPONENTID}
+* PUT:    /catcomps/{CONTEXTTYPE}/{CATALOGCOMPONENTID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /catcomps/{CONTEXTTYPE}/{CATALOGCOMPONENTID}
+* GET:    /catcomps/{CONTEXTTYPE}/searchattributes
+* GET:    /catcomps/{CONTEXTTYPE}/localizations
+
+**Business Object: CatalogAttribute**
+
+* GET:    /catcomps/{CONTEXTTYPE}/{CATALOGCOMPONENTID}/catattrs
+* POST:   /catcomps/{CONTEXTTYPE}/{CATALOGCOMPONENTID}/catattrs (JSON: { "name" : "testCatalogAttribute", "datatype" : "DATATYPE" })
+* GET:    /catcomps/{CONTEXTTYPE}/{CATALOGCOMPONENTID}/catattrs/{CATALOGATTRIBUTEID}
+* PUT:    /catcomps/{CONTEXTTYPE}/{CATALOGCOMPONENTID}/catattrs/{CATALOGATTRIBUTEID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /catcomps/{CONTEXTTYPE}/{CATALOGCOMPONENTID}/catattrs/{CATALOGATTRIBUTEID}
+* GET:    /catcomps/{CONTEXTTYPE}/{CATALOGCOMPONENTID}/catattrs/searchattributes
+* GET:    /catcomps/{CONTEXTTYPE}/{CATALOGCOMPONENTID}/catattrs/localizations
+
+**Business Object: CatalogSensor**
+
+* GET:    /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors
+* POST:   /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors (JSON: { "name" : "testCatalogSensor" })
+* GET:    /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/{CATALOGSENSORID}
+* PUT:    /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/{CATALOGSENSORID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/{CATALOGSENSORID}
+* GET:    /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/searchattributes
+* GET:    /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/localizations
+
+**Business Object: CatalogSensorAttribute**
+
+* GET:    /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/{CATALOGSENSORID}/catsensorattrs
+* POST:   /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/{CATALOGSENSORID}/catsensorattrs (JSON: { "name" : "testCatalogAttribute", "datatype" : "DATATYPE" })
+* GET:    /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/{CATALOGSENSORID}/catsensorattrs/{CATALOGATTRIBUTEID}
+* PUT:    /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/{CATALOGSENSORID}/catsensorattrs/{CATALOGATTRIBUTEID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/{CATALOGSENSORID}/catsensorattrs/{CATALOGATTRIBUTEID}
+* GET:    /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/{CATALOGSENSORID}/catsensorattrs/searchattributes
+* GET:    /catcomps/testequipment/{CATALOGCOMPONENTID}/catsensors/{CATALOGSENSORID}/catsensorattrs/localizations
+
+**Business Object: TemplateRoot**
+
+* GET:    /tplroots/{CONTEXTTYPE}
+* POST:   /tplroots/{CONTEXTTYPE} (JSON: { "name" : "testTemplateRoot" })
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}
+* PUT:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}
+* GET:    /tplroots/{CONTEXTTYPE}/searchattributes
+* GET:    /tplroots/{CONTEXTTYPE}/localizations
+
+**Business Object: TemplateComponent**
+
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps
+* POST:   /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps (JSON: { "name" : "testTemplateComponent", "catalogcomponent" : "CATALOGCOMPONENTID" })
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}
+* PUT:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/searchattributes
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/localizations
+
+**Business Object: TemplateAttribute**
+
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplattrs
+* POST:   /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplattrs (JSON: { "name" : "testCatalogAttribute" } (name must be identical with corresponding CatalogAttribute))
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplattrs/{TEMPLATEATTRIBUTEID}
+* PUT:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplattrs/{TEMPLATEATTRIBUTEID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplattrs/{TEMPLATEATTRIBUTEID}
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplattrs/searchattributes
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplattrs/localizations
+
+**Business Object: TemplateSensor**
+
+* GET:    /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors
+* POST:   /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors (JSON: { "name" : "testTemplateSensor", "catalogsensor" : "CATALOGSENSORID", "quantity" : "QUANTITYID" })
+* GET:    /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors/{TEMPLATESENSORID}
+* PUT:    /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors/{TEMPLATESENSORID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors/{TEMPLATESENSORID}
+* GET:    /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors/searchattributes
+* GET:    /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors/localizations
+
+**Business Object: TemplateSensorAttribute**
+
+* GET:    /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors/{TEMPLATESENSORID}/tplsensorattrs
+* GET:    /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors/{TEMPLATESENSORID}/tplsensorattrs/{TEMPLATEATTRIBUTEID}
+* PUT:    /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors/{TEMPLATESENSORID}/tplsensorattrs/{TEMPLATEATTRIBUTEID} (JSON: { "MimeType" : "myMimeType" })
+* GET:    /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors/{TEMPLATESENSORID}/tplsensorattrs/searchattributes
+* GET:    /tplroots/testequipment/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplsensors/{TEMPLATESENSORID}/tplsensorattrs/localizations
+
+**Business Object: NestedTemplateComponent**
+
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps
+* POST:   /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps (JSON: { "name" : "testNestedTemplateComponent", "catalogcomponent" : "CATALOGCOMPONENTID" })
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/{NESTEDTEMPLATECOMPONENTID}
+* PUT:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/{NESTEDTEMPLATECOMPONENTID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/{NESTEDTEMPLATECOMPONENTID}
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/searchattributes
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/localizations
+
+**Business Object: NestedTemplateAttribute**
+
+* CONTEXTTYPE is one of [unitundertest, testsequence, testequipment]
+
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/{NESTEDTEMPLATECOMPONENTID}/tplattrs
+* POST:   /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/{NESTEDTEMPLATECOMPONENTID}/tplattrs (JSON: { "name" : "testCatalogAttribute" } (name must be identical with corresponding CatalogAttribute))
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/{NESTEDTEMPLATECOMPONENTID}/tplattrs/{NESTEDTEMPLATEATTRIBUTEID}
+* PUT:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/{NESTEDTEMPLATECOMPONENTID}/tplattrs/{NESTEDTEMPLATEATTRIBUTEID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/{NESTEDTEMPLATECOMPONENTID}/tplattrs/{NESTEDTEMPLATEATTRIBUTEID}
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/{NESTEDTEMPLATECOMPONENTID}/tplattrs/searchattributes
+* GET:    /tplroots/{CONTEXTTYPE}/{TEMPLATEROOTID}/tplcomps/{TEMPLATECOMPONENTID}/tplcomps/{NESTEDTEMPLATECOMPONENTID}/tplattrs/localizations
+
+**Business Object: TemplateTest**
+
+* GET:    /tpltests
+* POST:   /tpltests (JSON: { "name" : "testTemplateTest" })
+* GET:    /tpltests/{TEMPLATETESTID}
+* PUT:    /tpltests/{TEMPLATETESTID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /tpltests/{TEMPLATETESTID}
+* GET:    /tpltests/searchattributes
+* GET:    /tpltests/localizations
+
+**Business Object: TemplateTestStep**
+
+* GET:    /tplteststeps
+* POST:   /tplteststeps (JSON: { "name" : "testTemplateTestStep" })
+* GET:    /tplteststeps/{TEMPLATETESTSTEPID}
+* PUT:    /tplteststeps/{TEMPLATETESTSTEPID} (JSON: { "MimeType" : "myMimeType" })
+* DELETE: /tplteststeps/{TEMPLATETESTSTEPID}
+* GET:    /tplteststeps/searchattributes
+* GET:    /tplteststeps/localizations
+
+**Business Object: TemplateTestStepUsage**
+
+* GET:    /tpltests/{TEMPLATETESTID}/tplteststepusages
+* POST:   /tpltests/{TEMPLATETESTID}/tplteststepusages (JSON: { "name" : "testTemplateTestStepUsage", "tplteststep" : "TEMPLATETESTSTEPID" })
+* GET:    /tpltests/{TEMPLATETESTID}/tplteststepusages/{TEMPLATETESTSTEPUSAGEID}
+* DELETE: /tpltests/{TEMPLATETESTID}/tplteststepusages/{TEMPLATETESTSTEPUSAGEID}
+* GET:    /tpltests/{TEMPLATETESTID}/tplteststepusages/searchattributes
+* GET:    /tpltests/{TEMPLATETESTID}/tplteststepusages/localizations
+
+**Query endpoint**
+
+* http://{SERVER}:{PORT}/{APPLICATIONROOT}/mdm/query
+
+  _example:  
+`curl -POST -H "Content-Type: application/json" -d '{"resultType": "test", "columns": ["Test.Name", "TestStep.Name"], "filters": { "sourceName": "SOURCENAME", "filter": "Test.Id gt 1", "searchString": ""}}'http://sa:sa@localhost:8080/org.eclipse.mdm.nucleus/mdm/query`
+* http://{SERVER}:{PORT}/{APPLICATIONROOT}/mdm/suggestions
+
+  _example:  `curl -POST -H "Content-Type: application/json" -d '{"sourceNames": ["SOURCENAME"], "type": "Test", "attrName": "Name"}' http://sa:sa@localhost:8080/org.eclipse.mdm.nucleus/mdm/suggestions`
+
+
+
+## Preference Service
+Preference service stores its data to a relational database. The database connection is looked up by JNDI and the JNDI name and other database relevant parameters are specified in src/main/resources/META-INF/persistence.xml. The default JNDI name for the JDBC resource is set to jdbc/openMDM. This JDBC resource and its dependent JDBC Connection Pool has to be created and configured within the glassfish web administration console or through asadmin command line tool.
+
+Furthermore the schema has to be created in the configured database. Therefore database DDL scripts are available for PostgreSQL and Apache Derby databases in the folder `schema/org.eclipse.mdm.preferences` of the distribution. Other databases supported by EclipseLink may also work, but is up to the user to adapt the DDL scripts.
+
+### available rest URLs
+* http://{SERVER}:POART/{APPLICATIONROOT}/mdm/preferences
+* example: `curl -GET -H "Content-Type: application/json" http://localhost:8080/org.eclipse.mdm.nucleus/mdm/preferences?scope=SYSTEM&key=ignoredAttributes`
+* example: `curl -PUT -H "Content-Type: application/json" -d '{"scope": "SYSTEM", "key": "ignoredAttributes", "value": "[\"*.MimeType\"]"}' http://localhost:8080/org.eclipse.mdm.nucleus/mdm/preferences`
+* example: `curl -DELETE http://localhost:8080/org.eclipse.mdm.nucleus/mdm/preferences/ID`
+
+
+## FreeTextSearch
+### Configuration
+1. **start** ElasticSearch. ElasticSearch can be downloaded at https://www.elastic.co/products/elasticsearch. For testing purpose, it can be simply started by executing bin/run.bat
+2. **edit** the configuration (global.properties) to fit your environment. You need an ODS Server which supports Notifications. All fields have to be there, but can be empty. However certain ODS Servers ignore some parameters (e.g. PeakODS ignores pollingIntervall since it pushes notifications).
+3. **start up** the application. At the first run it will index the database. This might take a while. After that MDM registers itself as NotificationListener and adapts all changes one-by-one.
+
+### Run on dedicated server
+The Indexing is completely independent from the searching. So the Indexer can be freely deployed at any other machine. In the simplest case, the same steps as in Configuration have to be done. The application can then be deployed on any other machine. All components besides the FreeTextIndexer and its dependencies are not user. Those can be left out, if desired.
+
+
+##Known issues:
+If you run into "java.lang.ClassNotFoundException: javax.xml.parsers.ParserConfigurationException not found by org.eclipse.persistence.moxy" this is a bug described in https://bugs.eclipse.org/bugs/show_bug.cgi?id=463169 and https://java.net/jira/browse/GLASSFISH-21440.
+This solution is to replace GLASSFISH_HOME/glassfish/modules/org.eclipse.persistence.moxy.jar with this: http://central.maven.org/maven2/org/eclipse/persistence/org.eclipse.persistence.moxy/2.6.1/org.eclipse.persistence.moxy-2.6.1.jar
+
+
+If you run into "java.lang.ClassNotFoundException: com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector not found by com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" you have to download http://central.maven.org/maven2/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.5.1/jackson-module-jaxb-annotations-2.5.1.jar and put it under GLASSFISH_HOME/glassfish/domains/domain1/autodeploy/bundles
+
+## Client preferences
+
+The applications preferences are managed in the administration section. This section can be accessed via the `Administration` button in the main navigation bar or via
+* `http://../administration`.
+A preference is a pair of a unique key and a value. The key is composed of a prefix defining the purpose of the preference followed by an arbitrary but unique identifier string. It is recommended to choose the identifier the same as the preferences 'name' field, in case there is one. The value holds the preference's data in a Json string. The following preferences, sorted by their scope, can be set:
+
+User:
+  - Basket
+  - View
+  - Filter
+
+System:
+  - Node provider
+  - Shopping basket file extensions
+
+Source:
+  - Ignored attributes
+
+However, it might be necessary to reload the application before a newly defined preference is available or any changes on an existing preferences are applied.
+WARNING: Corrupted preferences can result in malfunctions of the application.
+
+### User scope
+A user scoped preference's area of effect is limited to the logged in user. All user scoped preferences can also be set in dialogs in the main application.
+
+1.) Basket
+  Basket preferences keys must start with the prefix `basket.nodes.`. This preference has the fields 'items' and 'name' and holds all the information for saved baskets. The field 'items' holds an array of MDMItems, providing the relevant information of a related node, i.e. 'source', 'type' and 'id'. The field 'name' defines the name, which is provided in the main application to load this basket.
+
+  ** Example:
+  { "items": [{"source":"MDMNVH","type":"Test","id":38}],
+    "name": "basketExample" }
+
+2.) View
+  View preferences keys must start with the prefix `tableview.view.` This preference has the fields 'columns' and 'name' and holds the layout information for the tables displaying the search results and the basket nodes.
+  The field 'columns' holds an array of ViewColumn objects. A ViewColumn is an Object with the fields 'type', 'name', 'sortOrder' and an optional field 'style'. The ViewColumn's 'type' can be set to all available MDM data types, i.e. `Project`, `Pool`, `Test`, `TestStep`, `Measurement`, `ChannelGroup`, `Channel`. The ViewColumn's 'name' field specifies an attribute, which must be an searchable attribute for the given 'type'. The ViewColumn's sortOrder can be set by the number `1` (ascending), `-1` (descending), or null (unsorted). Only one column of the array can have a non-null value sortOrder at a time. The ViewColumn's style element can hold any CSS-style object. However, it is supposed to contain only the columns width. The column order in the array is identically with the appearance in the table.
+  The view's field 'name' defines the name, which is provided in the main application to load this view.
+
+  **Example:
+  { "columns": [{"type":"Test","name":"Id","style":{"width":"75px"},"sortOrder":null}],
+    "name": "viewExample" }
+
+3.) Filter
+  Filter preferences keys must start with the prefix `filter.nodes.`. This preference has the fields 'conditions', 'name', 'environments', 'resultType' and 'fulltextQuery'. It provides the information for the attribute based / advanced search.
+  The field 'conditions' holds an array of Condition objects. A Condition specifies a search condition for attribute based search. It consists of the fields 'type', 'name', 'operator', 'value' and 'valueType'. The Condition's 'type' can be set to all available MDM data types, i.e. `Project`, `Pool`, `Test`, `TestStep`, `Measurement`, `ChannelGroup`, `Channel`. The Condition's 'name' field specifies an attribute, which must be an searchable attribute for the given 'type'. The Condition's 'operator' field, holds on of the following numbers: `0`(=), `1`(<), `2`(>), `3`(like). The Condition's 'value' field holds a string array containing input for the attribute based search. The Condition's 'resultType' field should match the type corresponding to the attribute specified in the 'name' filed, e.g. `string`, `date` or `long`.
+  The Filter's field 'name' defines the name, which is provided in the main application to load this filter.
+  The Filter's field 'environments' holds an string array with the names of the sources that should be included in the search.
+  The Filter's field 'resultType' can be set to all available MDM data types (see above). Only nodes of this type will be included in the search.
+  The Filter's field 'fulltextQuery' holds a string containing full text search input.
+
+  **Example:
+  { "conditions":[{"type":"Test","attribute":"Name","operator":0,"value":[],"valueType":"string"}],
+    "name":"filterExample",
+    "environments":["sourceName"],
+    "resultType":"Test",
+    "fulltextQuery":"" }
+
+
+### System scope
+System scoped preference are applied globally.
+
+1.) Node provider
+
+  The navigation tree structure can be defined via a node provider. The default node provider is set in
+  * ..\src\main\webapp\src\app\navigator\defaultnodeprovider.json.
+  It is recommended not to change the default node provider. Instead new node providers can be added as preferences. Their keys must start with the prefix ´nodeprovider.´. Once a custom node provider is supplied it can be selected in the dropdown menu in the navigation tree header.
+
+  I.) Structure
+
+    a) First layer/root nodes
+    In the node provider each layer of nodes of the navigation tree is defined in a nested object. The first layer of nodes, is always the environment level. This is necessary due to the provided endpoints. The first layer consists of the fields 'name', 'type', and 'children'. The field 'name' sets the name, which is displayed in the application to select the corresponding node provider. The field 'type' defines the data type of the nodes, which is always `Environments` on the first layer. The next layer of nodes are defined via the field 'children'.
+
+    b) Children
+    A child object consists of the fields 'type', 'query', and 'children'. The field 'type' sets the data type of this layer of nodes. It can be set to all available MDM data types, i.e. `Project`, `Pool`, `Test`, `TestStep`, `Measurement`, `ChannelGroup`, `Channel`. The filed 'query' holds the URL to load this layer of nodes. The first part of the query for each child object should be `/` plus the type of the layer in small letters followed by an `s`. For a nested child objected a filter is attached to the query in the form: `?filter=<parentType>.Id eq {<parentType>.Id}`. The placeholder <parentType> has to be replaced by the actual parent type (set in the field 'type' in the parent child or root layer, see example below). At runtime the curly braces will be replaced by the Id of the parent node. Further child objects, and thereby more sublayers, can be nested via the field 'children'. The children field does not need to be set for the last layer of nodes.
+
+  II.) Examples
+
+    a) Minimal node provider
+    { "name": "My name to display", "type": "Environment"}
+
+    b) node provider with two child layers
+    {
+      "name": "My name to display",
+      "type": "Environment",
+      "children": {
+        "type": "Project",
+        "query": "/projects",
+        "children": {
+          "type": "Pool",
+          "query": "/pools?filter=Project.Id eq {Project.Id}"
+        }
+      }
+    }
+    
+2.) Shopping basket file extensions
+
+When downloading the contents of a shopping basket, a file with extension `mdm` is generated. The file extension can be changed by adding a preference with key `shoppingbasket.fileextensions`. For example the used extension can be set to `mdm-xml` by setting the value to `{ "default": "mdm-xml" }`.
+
+### Source scope
+Source scoped preferences are applied at any user but limited to the specified source. The source can be specified in the `Add Preference` or `Edit Preference` dialog.
+
+1.) Ignored Attributes
+The ignore attributes preference must have the exact key `ignoredAttributes`. An identifier must not be added. The preference specifies all attributes, which are supposed to be ignored in the detail view. The preference is a simple Json string holding a list of attributes in the form {"<type>.<AttributeName>"}. The placeholders <type> and <AttributeName> have to be replaced by the actual type and name of the attribute which should be ignored, respectively.
+
+**Example:
+["*.MimeType", "TestStep.Sortindex"]
+
+##Create a module
+Any MDM module needs to be a valid angular2 module. An angular2 module consists of one angular2 component and one ng-module at least. In the angular2 component any content can be defined. The component must be declared in a ng-module to grant accessibility in the rest of the application. In a module additional components and services can be defined. All related files should be stored in a new subfolder in the app folder
+* ..\org.eclipse.mdm.nucleus\org.eclipse.mdm.application\src\main\webapp\src\app.
+
+###Angular2 components (see example 1)
+A component is defined in a typescript file starting with the @Component() identifier. Any html content can be provided here in an inline template or via a link to an external html resource. Thereafter the component itself, which is supposed to hold any logic needed, is defined and exported.
+
+###Ng-module (see example 2)
+ On one hand the ng-module provides other MDM modules of the application, and thereby all the services and components declared within them, in this MDM module. The 'imports' array holds all modules from the application needed in this MDM module. It should always hold the MDMCoreModule, which provides basic functionalities. On the other hand a ng-module grants accessibility of components of this module in other directives (including the html template) within the module (in a 'declaration' array) or even in other parts of the application (in an 'export' array). For more details see *https://angular.io/docs/ts/latest/guide/ngmodule.html.
+
+ ** Minimal example
+ First create a new folder
+ * ..\org.eclipse.mdm.nucleus\org.eclipse.mdm.application\src\main\webapp\src\app\new-module
+
+ 1) Minimal angular2 component
+ Add a new typescript file named 'mdm-new.component.ts' with the following content:
+
+ import {Component} from '@angular/core';
+ @Component({template: '<h1>Example Module</h1>'})
+ export class MDMNewComponent {}
+
+ 2) Minimal ng-module
+ Add a new typescript file named 'mdm-new.module.ts' with the following content:
+
+ import { NgModule } from '@angular/core';
+ import { MDMCoreModule } from '../core/mdm-core.module';
+ import { MDMNewComponent } from './mdm-new.component';
+ @NgModule({imports: [MDMCoreModule], declarations: [MDMNewComponent]})
+ export class MDMNewModule {}
+
+###Embedding a module (no lazy loading)
+To embed this new module in MDM you have to register this module in the MDMModules Module.
+This is done by registering the component to **moduleRoutes** in **modules-routing.module.ts**:
+***
+ { path: 'new', component: MDMNewComponent}
+***
+
+Furthermore you have to define a display name for the registered route in the array returned by **getLinks** in  **modules.component.ts**:
+***
+{ path: 'new', name: 'New Module' }
+***
+
+For further information refer to the Angular 2 documentation for modules & router:
+* https://angular.io/docs/ts/latest/guide/ngmodule.html
+* https://angular.io/docs/ts/latest/guide/router.html
+
+
+ ###Lazy loading and routing module
+ For lazy-loading (recommended in case there is a high number of modules) embedding of the module is slightly different.
+ ***
+  { path: 'example', loadChildren: '../example-module/mdm-example.module#MDMExampleModule'}
+ ***
+
+ Additionally, a ng-module, the so called routing module, is needed to provide the routes to this modules components.
+ ***
+  const moduleRoutes: Routes = [{ path: '', component: MDMExampleComponent }];
+  @NgModule({imports: [RouterModule.forChild(moduleRoutes)], exports: [RouterModule]})
+  export class MDMExampleRoutingModule {}
+ ***   
+
+ The routing module needs to be declared in the ng-module of this module as well. A full example is provided in
+  * ..\org.eclipse.mdm.nucleus\org.eclipse.mdm.application\src\main\webapp\src\app\example-module
+
+
+ ###Filerelease module
+ The filerelease module is stored in the following folder:
+*..\org.eclipse.mdm.nucleus\org.eclipse.mdm.application\src\main\webapp\src\app\filerelease
+
+It can be embedded as any other module described above. Register to **moduleRoutes** in **modules-routing.module.ts**:
+***
+ { path: 'filerelease', component: MDMFilereleaseComponent }
+***
+
+Add entry to **links** array in **MDMModulesComponent**: 
+***
+  { name: 'MDM Suche', path: 'search'}
+***
+
+To make the filerelease module available in the detail view it needs to be imported in the corresponding ng-module **mdm-detail.module.ts**.
+Thereafter, the MDMFilereleaseCreateComponent can be imported to the **mdm-detail-view.component.ts**. Then the following has to be added to the **mdm-detail-view.component.html** file:
+***
+  <mdm-filerelease-create [node]=selectedNode [disabled]="isReleasable()"></mdm-filerelease-create>
+***
+
+
+
+It should be located right after the add to basket button:
+***
+<div class="btn-group pull-right" role="group">
+  <button type="button" class="btn btn-default" (click)="add2Basket()" [disabled]="isShopable()">In den Warenkorb</button>
+  <mdm-filerelease-create [node]=selectedNode [disabled]="isReleasable()"></mdm-filerelease-create>
+</div>
+***
+
+## Copyright and License ##
+Copyright (c) 2015-2018 Contributors to the Eclipse Foundation
+
+ See the NOTICE file(s) distributed with this work for additional
+ information regarding copyright ownership.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v. 2.0 which is available at
+ http://www.eclipse.org/legal/epl-2.0.
+
+ SPDX-License-Identifier: EPL-2.0
\ No newline at end of file
diff --git a/Releases/5.0.0/openMDM_application.zip b/Releases/5.0.0/openMDM_application.zip
new file mode 100644
index 0000000..6f68092
--- /dev/null
+++ b/Releases/5.0.0/openMDM_application.zip
Binary files differ
diff --git a/Releases/5.0.0/release_notes.md b/Releases/5.0.0/release_notes.md
new file mode 100644
index 0000000..200466c
--- /dev/null
+++ b/Releases/5.0.0/release_notes.md
@@ -0,0 +1,294 @@
+# Release Notes - openMDM(R) Application #
+
+* [mdmbl Eclipse Project Page](https://projects.eclipse.org/projects/technology.mdmbl)
+* [mdmbl Eclipse Git Repositories](http://git.eclipse.org/c/?q=mdmbl)
+* [mdmbl nightly builds - last stable version](http://download.eclipse.org/mdmbl/nightly_master/?d)
+
+## Release 5.0.0, 2018/11/07 ##
+
+[Release Review and Graduation Review](https://projects.eclipse.org/projects/technology.mdmbl/releases/5.0.0) of the mdmbl Eclipse project succeeded.
+
+
+## Version 5.0.0M5, 2018/10/30 ##
+
+### Changes ###
+
+ * License switch from Eclipse Public License 1.0 to Eclipse Public License 2.0.
+
+### Bugzilla Bugs fixed ###
+
+ * [540226](https://bugs.eclipse.org/bugs/show_bug.cgi?id=540226)   -  Failed EJB lookup if using catcomps endpoint
+ * [539716](https://bugs.eclipse.org/bugs/show_bug.cgi?id=539716)   -  License switch EPL-1.0 to EPL-2.0
+
+
+## Version 5.0.0M4, 2018/09/26 ##
+
+This code brings along a change with the realm configuration. You can configure your realm now in a standardized way.  In the [readme.md](http://git.eclipse.org/c/mdmbl/org.eclipse.mdm.nucleus.git/tree/README.md) in the org.eclipse.mdm.nucleus project is described how to setup and configure a file realm for local installations. You can also configure your LDAP, AD or others.
+See the [glassfish documentation](https://javaee.github.io/glassfish/doc/4.0/security-guide.pdf)
+
+Note: The component "org.eclipse.mdm.realms" is not used any longer.
+
+### Changes ###
+
+* [526883](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526883) - [[REQU-109]](https://openmdm.atlassian.net/browse/REQU-101) - Integrate external distribution "Authentification and Authorization"
+
+
+### Bugzilla Bugs fixed ###
+
+ * [535381](https://bugs.eclipse.org/bugs/show_bug.cgi?id=535381)   -       Delegated roles and rights with backend connectors
+
+## Version 5.0.0M3, 2018/09/10 ##
+
+In this milestone new REST APIs were added for editing MDM business objects.
+The list of all REST APIs see the [readme.md](http://git.eclipse.org/c/mdmbl/org.eclipse.mdm.nucleus.git/tree/README.md) in the org.eclipse.mdm.nucleus project.
+
+### API changes ###
+
+* no
+
+### Changes ###
+
+* [526883](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526883) - [[REQU-101]](https://openmdm.atlassian.net/browse/REQU-101) - The MDM business objects should be editable via openMDM5 RESTful API (CRUD operations)
+* [REQU-102](https://openmdm.atlassian.net/browse/REQU-102) - Deploy data model via RESTful API
+* [REQU-110](https://openmdm.atlassian.net/browse/REQU-110) - Integrate external distribtion "CRUD Operations for administrative objects"
+
+### Bugzilla Bugs fixed ###
+
+* no
+
+## Version 5.0.0M2, 2018/07/23 ##
+
+### API changes ###
+
+ * no
+
+### Changes ###
+
+* [REQU-108](https://openmdm.atlassian.net/browse/REQU-108) - Bug Fixes and enhancements
+
+### Bugzilla Bugs fixed ###
+
+  * [534866](https://bugs.eclipse.org/bugs/show_bug.cgi?id=534866)	- Results incorrect if attribute search is combined with full text search yielding no results
+  * [535606](https://bugs.eclipse.org/bugs/show_bug.cgi?id=535606)	- Attribute search is not case insensitive
+  * [536840](https://bugs.eclipse.org/bugs/show_bug.cgi?id=536840)	- Avoid function calls from html template for translation
+  * [530512](https://bugs.eclipse.org/bugs/show_bug.cgi?id=530512)	- Missing Information after change tabs
+  * [526163](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526163)	- Resolve unmet dependency error cause by ng2-dropdown-multiselect
+  * [532425](https://bugs.eclipse.org/bugs/show_bug.cgi?id=532425)	- Update and rename ng2-bootstrap to ngx-bootstrap
+  * [536229](https://bugs.eclipse.org/bugs/show_bug.cgi?id=536229)	- Provide a readable error message, if preference service throws an error
+
+
+
+
+## Version 5.0.0M1, 2018/05/18 ##
+
+Note: the system of version numbers has changed!
+
+### API changes ###
+
+ * no
+
+### Changes ###
+
+* [REQU-106](https://openmdm.atlassian.net/browse/REQU-106) - Provide legal documentation, IP Checks, end user content
+* [REQU-107](https://openmdm.atlassian.net/browse/REQU-107) - Notification Service Implementation vis OMG Specs
+
+### Bugzilla Bugs fixed ###
+
+* [528033](https://bugs.eclipse.org/bugs/show_bug.cgi?id=528033)	- Web client does not quote entity IDs in filter strings
+* [532154](https://bugs.eclipse.org/bugs/show_bug.cgi?id=532154)	- Update libraries for IP check
+* [532167](https://bugs.eclipse.org/bugs/show_bug.cgi?id=532167)	- logging
+* [532343](https://bugs.eclipse.org/bugs/show_bug.cgi?id=532343)	- Configure Logging
+* [532165](https://bugs.eclipse.org/bugs/show_bug.cgi?id=532165)	- Java lib
+* [532170](https://bugs.eclipse.org/bugs/show_bug.cgi?id=532170)	- freetext.notificationType
+* [534643](https://bugs.eclipse.org/bugs/show_bug.cgi?id=534643)	- search-datepicker does not recognize model changes via input textbox
+
+## Version V0.10, 2018/02/23 ##
+
+### API changes ###
+
+ * [529569](https://bugs.eclipse.org/bugs/show_bug.cgi?id=529569) - [[REQU-103]](https://openmdm.atlassian.net/browse/REQU-103) - Using Shopping Basket (Search results)
+
+#####  An overview of the API changes made :
+
+* Shopping basket:
+  - Added methods:
+    - String org.eclipse.mdm.api.base.BaseApplicationContext.getAdapterType()
+    - Map<Entity, String> org.eclipse.mdm.api.base.BaseEntityManager.getLinks(Collection<Entity>)
+  - file extensions:
+When downloading the contents of a shopping basket, a file with extension `mdm` is generated. The file extension can be changed by adding a preference with key `shoppingbasket.fileextensions`. For example the used extension can be set to `mdm-xml` by setting the value to `{ "default": "mdm-xml" }`.
+
+### Changes ###
+
+### Bugzilla Bugs fixed ###
+
+* [521880](https://bugs.eclipse.org/bugs/show_bug.cgi?id=521880)	- Component with empty FileLink can not be updated
+* [526124](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526124)	- OpenMDM web (nucleus) broken as of 10-16-2017 because of version ranges/tracking versions
+* [528261](https://bugs.eclipse.org/bugs/show_bug.cgi?id=528261)	- ODS EntityConfigRepository.find(EntityType) should throw IllegalArgumentException if requested entity type is not found	2018-01-11
+* [525848](https://bugs.eclipse.org/bugs/show_bug.cgi?id=525848)	- ODSConverter cannot parse 17 character dates
+* [529568](https://bugs.eclipse.org/bugs/show_bug.cgi?id=529568)	- Junit Tests have to run stand alone
+* [525980](https://bugs.eclipse.org/bugs/show_bug.cgi?id=525980)	- Remove version range in org.eclipse.mdm.api.base/build.gradle
+* [529629](https://bugs.eclipse.org/bugs/show_bug.cgi?id=529629)	- Query group and aggregate function are not working as expected
+* [526141](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526141)	- Remove version range in org.eclipse.mdm.api.odsadapter/build.gradle
+* [529867](https://bugs.eclipse.org/bugs/show_bug.cgi?id=529867)	- Jenkins builds fail since 12.01.17
+* [526147](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526147)	- wrong logic in org.eclipse.mdm.api.default/src/main/java/org/eclipse/mdm/api/dflt/model/EntityFactory
+* [529887](https://bugs.eclipse.org/bugs/show_bug.cgi?id=529887)	- FileUpload throws java.net.UnknownHostException
+* [526260](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526260)	- Writing enumeration values
+* [530511](https://bugs.eclipse.org/bugs/show_bug.cgi?id=530511)	- Missing progress bar
+* [526763](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526763)	- Issues in dynamic enumeration handling
+* [530775](https://bugs.eclipse.org/bugs/show_bug.cgi?id=530775)	- ODS adapter: getParameters exposes sensitive information
+* [527673](https://bugs.eclipse.org/bugs/show_bug.cgi?id=527673)	- ValueType.UNKNOWN.createValue() throws NPE due to ValueType.type not being set
+* [530791](https://bugs.eclipse.org/bugs/show_bug.cgi?id=530791)	- UpdateStatement is broken
+* [528149](https://bugs.eclipse.org/bugs/show_bug.cgi?id=528149)	- Search tab in web UI should accept attribute values even if no suggestions are present
+* [528193](https://bugs.eclipse.org/bugs/show_bug.cgi?id=528193)	- Autocomplete text box in search UI should accept custom values automatically
+* [528260](https://bugs.eclipse.org/bugs/show_bug.cgi?id=528260)	- ValueType.UNKNOWN should have Object rather than Void as representation type
+
+
+
+## Version V0.9, 2017/11/24 ##
+
+### API changes ###
+
+* [525536](https://bugs.eclipse.org/bugs/show_bug.cgi?id=525536) - [[REQU-50]](https://openmdm.atlassian.net/browse/REQU-50) - Modelling of relations
+* [526880](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526880) -  [[REQU-65]](https://openmdm.atlassian.net/browse/REQU-65) Separation of interfaces
+* [526882](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526882) -  [[REQU-78]](https://openmdm.atlassian.net/browse/REQU-78) Packaging
+* [522277](https://bugs.eclipse.org/bugs/show_bug.cgi?id=522277) -  [[REQU-80]](https://openmdm.atlassian.net/browse/REQU-80) Referencing
+
+#####  An overview of the API changes made :
+
+* service.xml:
+ - Property `entityManagerFactoryClass` has to be changed to `org.eclipse.mdm.api.odsadapter.ODSContextFactory` for ODS Datasources.
+ - Datasource specific parameters for `NotificationService` and the freetext search parameters are now supplied by service.xml not by global.properties.
+
+
+* org.eclipse.mdm.api.base:
+ - New entry class `BaseApplicationContextFactory` instead of `BaseEntityManagerFactory`.
+ - Services can now be retrieved from `BaseApplicationContext` instead of `BaseEntityManager`.
+ - `NotificationManagerFactory` was removed; `NotficationManager` was renamed to `NotificationService`.
+ - Query package was split into query and search.
+ - Creation of Query (`ModelManager#createQuery()`) was moved from `ModelManager` to new `QueryService` class.
+ - Moved `ModelManager`, `EntityType`, `Core` and similar to subpackage `adapter`
+ - `EntityStore` and `ChildrenStore` are now top-level classes in the subpackage `adapter`
+ - Moved `FileService` to subpackage file
+ - Added methods:
+   - `ContextComponent#getContextRoot()`
+   - `ContextSensor#getContextComponent()`
+  - Introduced new (protected) method `BaseEntityFactory.createBaseEntity(Class, Core)` for creating instances of classes derived from `BaseEntity` using an already existing `Core` instance. Must be overridden in derived classes to ensure the instances can be created via the (usually package-private) Constructor(Core) of the BaseEntity-derived class. If the constructor of the class passed to `createBaseEntity`  is not accessible, the super class implementation is called to try if the constructor is accessible from there.
+  - Introduced new (protected) method `BaseEntityFactory.getCore(BaseEntity)` to extract the Core object from a BaseEntity instance.
+  - Modified the interface of BaseEntityManager: the get*Store methods have been defined as non final.
+  With that, these methods can be overriden in the OdsAdpter and be used there to access the stores without resorting directly to the core.
+  There also comments added in several places to improve the understandibility of the current implementation.
+
+
+* org.eclipse.mdm.api.default:
+ - Introduced `ApplicationContextFactory` and `ApplicationContext` which extend their base counterparts. Should be unnecessary when merging api.base and api.default repositories.
+
+
+* org.eclipse.mdm.api.odsadapter:
+ - Adapted to the changes from `api.base` and `api.default`
+
+
+* org.eclipse.mdm.nucleus:
+ - Adapted to the changes from `api.base` and `api.default`
+ - `ConnectorService` manages `ApplicationContexts` instead of `EntityManagers`
+ - Datasource specific parameters for `NotificationService` are now supplied by service.xml not by global.properties.
+
+
+### Changes ###
+
+* [522278](https://bugs.eclipse.org/bugs/show_bug.cgi?id=522278) -  [[REQU-98]](https://openmdm.atlassian.net/browse/REQU-98) Search Parameter Parser
+* [526881](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526881) -  [[REQU-75]](https://openmdm.atlassian.net/browse/REQU-75) Specifications
+
+### Bugzilla Bugs fixed ###
+
+* [521880](https://bugs.eclipse.org/bugs/show_bug.cgi?id=521880) -  Component with empty FileLink can not be updatet
+* [526124](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526124) -  OpenMDM web (nucleus) broken as of 10-16-2017 because of version ranges/t
+* [526763](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526763) -  Issues in dynamic enumeration handling
+* [525980](https://bugs.eclipse.org/bugs/show_bug.cgi?id=525980) -  Remove version range in org.eclipse.mdm.api.base/build.gradle
+* [526260](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526260) -  Writing enumeration values
+* [526141](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526141) -  Remove version range in org.eclipse.mdm.api.odsadapter/build.gradle
+* [525848](https://bugs.eclipse.org/bugs/show_bug.cgi?id=525848) -  ODSConverter cannot parse 17 character dates
+* [526147](https://bugs.eclipse.org/bugs/show_bug.cgi?id=526147) -  wrong logic in org.eclipse.mdm.api.default/.../EntityFactory
+
+## Version V0.8, 2017/09/08 ##
+
+### API changes ###
+
+  * [REQU-62](https://openmdm.atlassian.net/browse/REQU-62) - Polyvalant variants
+  * [REQU-49](https://openmdm.atlassian.net/browse/REQU-49) - Extensibility of Entity Classes
+  * [REQU-79](https://openmdm.atlassian.net/browse/REQU-79) - Consistent relationships
+  * [REQU-97](https://openmdm.atlassian.net/browse/REQU-97) - Change handling of enumerations
+
+### Changes ###
+
+* [REQU-73](https://openmdm.atlassian.net/browse/REQU-73) - Representation class
+* [REQU-74](https://openmdm.atlassian.net/browse/REQU-74) - Empty Interface
+* [REQU-77](https://openmdm.atlassian.net/browse/REQU-77) - Name convention
+* [REQU-82](https://openmdm.atlassian.net/browse/REQU-82) - Return-Type
+* [REQU-91](https://openmdm.atlassian.net/browse/REQU-91) - Context Information
+
+### Bugzilla Bugs fixed ###
+
+* [520291](https://bugs.eclipse.org/bugs/show_bug.cgi?id=520291) - 	Elastic Search :: ElasticSearch answered 400, error while performing some search
+* [521011](https://bugs.eclipse.org/bugs/show_bug.cgi?id=521011) - 	EntityFactory.createContextSensor always throws an exception
+* [520330](https://bugs.eclipse.org/bugs/show_bug.cgi?id=520330) - 	Improve development setup in Eclipse
+* [518063](https://bugs.eclipse.org/bugs/show_bug.cgi?id=518063) - 	Nucleus: config-dir is missing in the build artefact mdm-web.zip
+* [518124](https://bugs.eclipse.org/bugs/show_bug.cgi?id=518124) - 	Configure JIPP and Sonar for mdmbl projects
+* [518444](https://bugs.eclipse.org/bugs/show_bug.cgi?id=518444) - 	Unify used gradle versions and update to latest stable
+* [518825](https://bugs.eclipse.org/bugs/show_bug.cgi?id=518825) - 	Nucleus build: create a separate gradle task for npm build
+* [519212](https://bugs.eclipse.org/bugs/show_bug.cgi?id=519212) - 	Enable production mode for client build
+* [519993](https://bugs.eclipse.org/bugs/show_bug.cgi?id=519993) - 	Create Gradle composite build
+* [519453](https://bugs.eclipse.org/bugs/show_bug.cgi?id=519453) - 	org.eclipse.mdm.openatfx build can't download dependency
+* [519995](https://bugs.eclipse.org/bugs/show_bug.cgi?id=519995) - 	Setup Guide and avalon
+* [520248](https://bugs.eclipse.org/bugs/show_bug.cgi?id=520248) - 	Build of org.eclipse.mdm.api.odsadapter only works with "gradle clean install"
+* [517057](https://bugs.eclipse.org/bugs/show_bug.cgi?id=517057) - 	Add Repository Descriptions
+
+
+
+## Version V0.7, 2017/07/21 ##
+
+### API changes ###
+  * [REQU-48](https://openmdm.atlassian.net/browse/REQU-48) - Type of Entity-IDs
+
+
+### Changes ###
+* [REQU-67](https://openmdm.atlassian.net/browse/REQU-67) - Final
+* [REQU-92](https://openmdm.atlassian.net/browse/REQU-92) - Error Handling
+
+### Bugzilla Bugs fixed ###
+* [519448](https://bugs.eclipse.org/bugs/show_bug.cgi?id=519448) - Build of of freetextindexer in org.eclipse.mdm.nucleus fails
+* [518062](https://bugs.eclipse.org/bugs/show_bug.cgi?id=518062) - ODSAdapter: Encoding issue when switching to UTF-8
+* [518060](https://bugs.eclipse.org/bugs/show_bug.cgi?id=518060) - ODSAdapter - junit tests fail
+* [515748](https://bugs.eclipse.org/bugs/show_bug.cgi?id=515748) - Unable to build org.eclipse.mdm.nucleus
+* [518335](https://bugs.eclipse.org/bugs/show_bug.cgi?id=518335) - Set executable flag for gradlew in git repo
+
+
+## Version V0.6, 2017/06/07
+### Changes ###
+
+  * [REQU-2](https://openmdm.atlassian.net/browse/REQU-2) - Display a tree view for navigation
+  * [REQU-3](https://openmdm.atlassian.net/browse/REQU-3) - Display icons in the tree view
+  * [REQU-4](https://openmdm.atlassian.net/browse/REQU-4) - Display different ODS data sources in the tree view
+  * [REQU-5](https://openmdm.atlassian.net/browse/REQU-5) - Expand serveral nodes of the tree view simultaneously    
+  * [REQU-6](https://openmdm.atlassian.net/browse/REQU-6) - Display a scroll bar in the tree vie
+  * [REQU-7](https://openmdm.atlassian.net/browse/REQU-7) - Web Client GUI Adjustment
+  * [REQU-9](https://openmdm.atlassian.net/browse/REQU-9) - Display tabs on Detail view
+  * [REQU-10](https://openmdm.atlassian.net/browse/REQU-10) - Update Detail View
+  * [REQU-12](https://openmdm.atlassian.net/browse/REQU-12) - Select data source for attribute-based search
+  * [REQU-13](https://openmdm.atlassian.net/browse/REQU-13) - Definition or selection of a search query
+  * [REQU-14](https://openmdm.atlassian.net/browse/REQU-14) - Limit search to a certain result type
+  * [REQU-15](https://openmdm.atlassian.net/browse/REQU-15) - Display attributes of the selected data source(s)
+  * [REQU-16](https://openmdm.atlassian.net/browse/REQU-16) - Set search attribute values
+  * [REQU-18](https://openmdm.atlassian.net/browse/REQU-18) - Select data source for fulltext search
+  * [REQU-22](https://openmdm.atlassian.net/browse/REQU-22) - Create and store a view for search results
+  * [REQU-23](https://openmdm.atlassian.net/browse/REQU-23) - Select a view to display search results
+  * [REQU-24](https://openmdm.atlassian.net/browse/REQU-24) - Filter fulltext search results
+  * [REQU-25](https://openmdm.atlassian.net/browse/REQU-25) - Display actions for search results
+  * [REQU-27](https://openmdm.atlassian.net/browse/REQU-27) - Select data objects for shoppping basket
+  * [REQU-28](https://openmdm.atlassian.net/browse/REQU-28) - Store a shopping basket
+  * [REQU-29](https://openmdm.atlassian.net/browse/REQU-29) - Select a shopping basket
+  * [REQU-30](https://openmdm.atlassian.net/browse/REQU-30) - Export shopping basket
+  * [REQU-31](https://openmdm.atlassian.net/browse/REQU-31) - Load an exported shopping basket
+  * [REQU-32](https://openmdm.atlassian.net/browse/REQU-32) - Display actions for shopping basket
+  * [REQU-85](https://openmdm.atlassian.net/browse/REQU-85) - Seach type date
+  * [REQU-86](https://openmdm.atlassian.net/browse/REQU-86) - Search across multiple data sources
+  * [REQU-95](https://openmdm.atlassian.net/browse/REQU-95) - Backend configuration