parallel ip - initial checkin

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.project b/.project
new file mode 100644
index 0000000..42ba18f
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.ui.api.aggregator</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/about.html b/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
new file mode 100644
index 0000000..bcaceb9
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2016 - Loetz GmbH&Co.KG                                    -->
+<!--# All rights reserved. This program and the accompanying materials 		 -->
+<!--# are made available under the terms of the Eclipse Public License v1.0  -->
+<!--# which accompanies this distribution, and is available at               -->
+<!--# http://www.eclipse.org/legal/epl-v10.html                              -->
+<!--#                                                                        -->
+<!--# Contributors:                                                          -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation                           -->
+<!--#======================================================================= -->
+<!--# Module specific parameters for the Jenkins Job 						 -->
+<!--#======================================================================= -->
+
+<jenkins>
+    
+	<!-- DO NOT EDIT BELOW THIS LINE -->
+        <jenkins.build.dependencies>
+                <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.ecview.core</jenkins.build.dependency>
+        </jenkins.build.dependencies>
+</jenkins>
diff --git a/notice.html b/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/notice.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>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.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.ui.api.feature/.project b/org.eclipse.osbp.ui.api.feature/.project
new file mode 100644
index 0000000..78ec128
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.ui.api.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.ui.api.feature/LICENSE.txt b/org.eclipse.osbp.ui.api.feature/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.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 code and documentation 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 additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"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, including all Contributors.
+
+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, in source code and object code
+form.
+
+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 and object code 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.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all 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 Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+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, 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, 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.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api.feature/build.properties b/org.eclipse.osbp.ui.api.feature/build.properties
new file mode 100644
index 0000000..0d1db20
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/build.properties
@@ -0,0 +1,5 @@
+bin.includes = epl-v10.html,  feature.xml,\
+               feature.properties,\
+               license.html
+src.includes = epl-v10.html,  LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.ui.api.feature/epl-v10.html b/org.eclipse.osbp.ui.api.feature/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>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.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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 additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">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, in
+source code and object code form.</p>
+
+<p class="list">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 and object code 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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all 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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, 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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api.feature/feature.properties b/org.eclipse.osbp.ui.api.feature/feature.properties
new file mode 100644
index 0000000..e6b4c8b
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Cristiano Gavião - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName =OSBP UI API 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This feature provides the bundles for OSBP UI API.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.ui.api.feature/feature.xml b/org.eclipse.osbp.ui.api.feature/feature.xml
new file mode 100644
index 0000000..5866cf6
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/feature.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.ui.api.feature"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <plugin
+        id="org.eclipse.osbp.ui.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.ui.api.feature/license.html b/org.eclipse.osbp.ui.api.feature/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>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.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api.feature/pom.xml b/org.eclipse.osbp.ui.api.feature/pom.xml
new file mode 100644
index 0000000..91a5666
--- /dev/null
+++ b/org.eclipse.osbp.ui.api.feature/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--# Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation API and implementation -->
+<!--#======================================================================= -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.eclipse.osbp.ui.api</groupId>
+        <artifactId>org.eclipse.osbp.ui.api.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>org.eclipse.osbp.ui.api.feature</artifactId>
+    <packaging>eclipse-feature</packaging>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.eclipse.tycho.extras</groupId>
+                <artifactId>tycho-source-feature-plugin</artifactId>
+                <version>${tychoExtrasVersion}</version>
+                <executions>
+                    <execution>
+                        <id>source-feature</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>source-feature</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <labelSuffix> (source)</labelSuffix>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250 
+					is not fixed -->
+                <groupId>org.eclipse.tycho</groupId>
+                <artifactId>tycho-p2-plugin</artifactId>
+                <version>${tycho-version}</version>
+                <executions>
+                    <execution>
+                        <id>attached-p2-metadata</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>p2-metadata</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+    
+    </dependencies>
+
+</project>
diff --git a/org.eclipse.osbp.ui.api/.project b/org.eclipse.osbp.ui.api/.project
new file mode 100644
index 0000000..9e8b8f6
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.ui.api</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.ui.api/LICENSE.txt b/org.eclipse.osbp.ui.api/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.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 code and documentation 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 additions to the Program which: (i) are separate
+modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"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, including all Contributors.
+
+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, in source code and object code
+form.
+
+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 and object code 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.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all 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 Contributors all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
+other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
+in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution.
+
+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, 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, 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.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
+of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
+of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.ui.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fcfcbfe
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/META-INF/MANIFEST.MF
@@ -0,0 +1,50 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.ui.api
+Bundle-SymbolicName: org.eclipse.osbp.ui.api
+Bundle-Version: 0.9.0.qualifier
+Require-Bundle: org.eclipse.core.runtime,
+ com.vaadin.server;bundle-version="7.5.7"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.ui.api.complexdatacontainer;version="0.9.0",
+ org.eclipse.osbp.ui.api.contextfunction;version="0.9.0";uses:="com.vaadin.ui",
+ org.eclipse.osbp.ui.api.customfields;version="0.9.0";uses:="com.vaadin.server,org.eclipse.e4.core.services.events,com.vaadin.ui",
+ org.eclipse.osbp.ui.api.datamart;version="0.9.0",
+ org.eclipse.osbp.ui.api.functionlibrary;version="0.9.0";uses:="org.eclipse.osbp.ui.api.statemachine",
+ org.eclipse.osbp.ui.api.layout;version="0.9.0",
+ org.eclipse.osbp.ui.api.message;version="0.9.0",
+ org.eclipse.osbp.ui.api.metadata;version="0.9.0";uses:="org.eclipse.emf.ecore,org.eclipse.osbp.dsl.xtext.types.bundles",
+ org.eclipse.osbp.ui.api.organization;version="0.9.0",
+ org.eclipse.osbp.ui.api.pos;version="0.9.0";uses:="org.eclipse.osbp.ui.api.statemachine",
+ org.eclipse.osbp.ui.api.report;version="0.9.0",
+ org.eclipse.osbp.ui.api.statemachine;version="0.9.0";
+  uses:="org.joda.time,
+   org.eclipse.osbp.dsl.dto.lib.services,
+   org.eclipse.osbp.ui.api.themes,
+   org.eclipse.osbp.ui.api.message,
+   org.eclipse.osbp.dsl.common.datatypes,
+   org.eclipse.osbp.ui.api.metadata,
+   org.eclipse.osbp.ecview.core.common.context,
+   org.eclipse.osbp.ui.api.user",
+ org.eclipse.osbp.ui.api.themes;version="0.9.0";uses:="com.vaadin.server",
+ org.eclipse.osbp.ui.api.user;version="0.9.0";uses:="org.eclipse.osbp.ui.api.customfields,org.eclipse.e4.ui.model.application",
+ org.eclipse.osbp.ui.api.useraccess;version="0.9.0";uses:="org.eclipse.osbp.dsl.common.datatypes,org.eclipse.osbp.ui.api.complexdatacontainer,org.eclipse.osbp.ui.api.userfilter",
+ org.eclipse.osbp.ui.api.userfilter;version="0.9.0",
+ org.eclipse.osbp.ui.initialization;version="0.9.0"
+Import-Package: javax.validation;version="1.1.0.Final",
+ javax.validation.constraints;version="1.1.0.Final",
+ mondrian.rolap;version="3.5.0",
+ org.eclipse.e4.core.services.events,
+ org.eclipse.e4.ui.model.application,
+ org.eclipse.emf.ecore,
+ org.eclipse.osbp.dsl.common.datatypes;version="0.9.0",
+ org.eclipse.osbp.dsl.dto.lib.services;version="0.9.0",
+ org.eclipse.osbp.dsl.xtext.types.bundles;version="0.9.0",
+ org.eclipse.osbp.ecview.core.common.context;version="0.9.0",
+ org.eclipse.xtext.common.types,
+ org.eclipse.xtext.resource,
+ org.eclipse.xtext.util,
+ org.joda.time;version="2.7.0",
+ org.slf4j;resolution:=optional
+Bundle-ClassPath: .
+Bundle-Vendor: Eclipse OSBP
diff --git a/org.eclipse.osbp.ui.api/about.html b/org.eclipse.osbp.ui.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/about.ini b/org.eclipse.osbp.ui.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.ui.api/about.mappings b/org.eclipse.osbp.ui.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.ui.api/about.properties b/org.eclipse.osbp.ui.api/about.properties
new file mode 100644
index 0000000..ac57d66
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012-2016 Loetz GmbH&Co.KG
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.ui.api
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016, Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.ui.api/build.properties b/org.eclipse.osbp.ui.api/build.properties
new file mode 100644
index 0000000..5364007
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               license.html,\
+               LICENSE.txt
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.ui.api/epl-v10.html b/org.eclipse.osbp.ui.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Public License - Version 1.0</title>
+<style type="text/css">
+  body {
+    size: 8.5in 11.0in;
+    margin: 0.25in 0.5in 0.25in 0.5in;
+    tab-interval: 0.5in;
+    }
+  p {  	
+    margin-left: auto;
+    margin-top:  0.5em;
+    margin-bottom: 0.5em;
+    }
+  p.list {
+  	margin-left: 0.5in;
+    margin-top:  0.05em;
+    margin-bottom: 0.05em;
+    }
+  </style>
+
+</head>
+
+<body lang="EN-US">
+
+<h2>Eclipse Public License - v 1.0</h2>
+
+<p>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.</p>
+
+<p><b>1. DEFINITIONS</b></p>
+
+<p>"Contribution" means:</p>
+
+<p class="list">a) in the case of the initial Contributor, the initial
+code and documentation distributed under this Agreement, and</p>
+<p class="list">b) in the case of each subsequent Contributor:</p>
+<p class="list">i) changes to the Program, and</p>
+<p class="list">ii) additions to the Program;</p>
+<p class="list">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 additions to the
+Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.</p>
+
+<p>"Contributor" means any person or entity that distributes
+the Program.</p>
+
+<p>"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.</p>
+
+<p>"Program" means the Contributions distributed in accordance
+with this Agreement.</p>
+
+<p>"Recipient" means anyone who receives the Program under
+this Agreement, including all Contributors.</p>
+
+<p><b>2. GRANT OF RIGHTS</b></p>
+
+<p class="list">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, in
+source code and object code form.</p>
+
+<p class="list">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 and object code 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.</p>
+
+<p class="list">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.</p>
+
+<p class="list">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.</p>
+
+<p><b>3. REQUIREMENTS</b></p>
+
+<p>A Contributor may choose to distribute the Program in object code
+form under its own license agreement, provided that:</p>
+
+<p class="list">a) it complies with the terms and conditions of this
+Agreement; and</p>
+
+<p class="list">b) its license agreement:</p>
+
+<p class="list">i) effectively disclaims on behalf of all 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;</p>
+
+<p class="list">ii) effectively excludes on behalf of all Contributors
+all liability for damages, including direct, indirect, special,
+incidental and consequential damages, such as lost profits;</p>
+
+<p class="list">iii) states that any provisions which differ from this
+Agreement are offered by that Contributor alone and not by any other
+party; and</p>
+
+<p class="list">iv) states that source code for the Program is available
+from such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for software
+exchange.</p>
+
+<p>When the Program is made available in source code form:</p>
+
+<p class="list">a) it must be made available under this Agreement; and</p>
+
+<p class="list">b) a copy of this Agreement must be included with each
+copy of the Program.</p>
+
+<p>Contributors may not remove or alter any copyright notices contained
+within the Program.</p>
+
+<p>Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.</p>
+
+<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p><b>5. NO WARRANTY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, 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.</p>
+
+<p><b>6. DISCLAIMER OF LIABILITY</b></p>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, 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.</p>
+
+<p><b>7. GENERAL</b></p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>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.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No party
+to this Agreement will bring a legal action under this Agreement more
+than one year after the cause of action arose. Each party waives its
+rights to a jury trial in any resulting litigation.</p>
+
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/license.html b/org.eclipse.osbp.ui.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/license.html
@@ -0,0 +1,164 @@
+<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse
+ Foundation is provided to you under the terms and conditions of the 
+Eclipse Public License Version 1.0
+   ("EPL").  A copy of the EPL is provided with this Content and is also
+ available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, 
+documentation and other files maintained in the Eclipse Foundation 
+source code
+   repository ("Repository") in software modules ("Modules") and made 
+available as downloadable archives ("Downloads").</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to 
+facilitate delivering, extending, and upgrading the Content.  Typical 
+modules may include plug-ins ("Plug-ins"), plug-in fragments 
+("Fragments"), and features ("Features").</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or 
+Fragments and associated material.  Each Feature may be packaged as a 
+sub-directory in a directory named "features".  Within a Feature, files 
+named "feature.xml" may contain a list of the names and version numbers 
+of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features ("Included 
+Features"). Within a Feature, files named "feature.xml" may contain a 
+list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be 
+contained in files named "about.html" ("Abouts"). The terms and 
+conditions governing Features and
+Included Features should be contained in files named "license.html" 
+("Feature Licenses").  Abouts and Feature Licenses may be located in any
+ directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is 
+installed using the Provisioning Technology (as defined below), you must
+ agree to a license ("Feature Update License") during the
+installation process.  If the Feature contains Included Features, the 
+Feature Update License should either provide you with the terms and 
+conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be 
+found in the "license" property of files named "feature.properties" 
+found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
+terms and conditions (or references to such terms and conditions) that 
+govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
+CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
+or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions 
+govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, 
+examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager ("Provisioning Technology") for the purpose of 
+allowing users to install software, documentation, information and/or
+   other materials (collectively "Installable Software"). This 
+capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about 
+packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   ("Specification").</p>
+
+<p>You may use Provisioning Technology to allow other parties to install
+ Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to
+ be presented to, and accepted by, the users of the Provisioning 
+Technology
+   in accordance with the Specification. By using Provisioning 
+Technology in such a manner and making it available in accordance with 
+the
+   Specification, you further acknowledge your agreement to, and the 
+acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur ("Provisioning Process") in 
+which a user may execute the Provisioning Technology
+       on a machine ("Target Machine") with the intent of installing, 
+extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology 
+may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user 
+the terms and conditions that govern the use of the Installable
+       Software ("Installable Software Agreement") and such Installable 
+Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable 
+Software Agreement must inform the user of the terms and conditions that
+ govern
+       the Installable Software and must solicit acceptance by the end 
+user in the manner prescribed in such Installable Software Agreement. 
+Upon such
+       indication of agreement by the user, the provisioning Technology 
+will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>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.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+
+
+</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/pom.xml b/org.eclipse.osbp.ui.api/pom.xml
new file mode 100644
index 0000000..2aaa8fd
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.ui.api</artifactId>
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+        <plugins>
+        </plugins>
+    </build>
+    <parent>
+        <groupId>org.eclipse.osbp.ui.api</groupId>
+        <artifactId>org.eclipse.osbp.ui.api.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <packaging>eclipse-plugin</packaging>
+    <dependencies>
+        <dependency>
+            <groupId>org.eclipse.osbp.dependencies</groupId>
+            <artifactId>org.eclipse.osbp.dependencies.feature.vaadin</artifactId>
+            <version>7.5.7</version>
+            <type>eclipse-feature</type>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainer.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainer.java
new file mode 100644
index 0000000..c608771
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainer.java
@@ -0,0 +1,33 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.complexdatacontainer;
+
+/**
+ *  Any complex data container may implement this interface, to broadcast changes
+ *  inside its internal data.
+ *  
+ *  Any other class instance may listen to changes inside the internal data in this class,
+ *  without the need to know about any data structure necessary.
+ */
+public interface IComplexDataContainer {
+	
+	/**
+	 * @param listener  add any other class instance as an listener for internal data
+	 */
+	public void addComplexDataContainerChangedListener(IComplexDataContainerChangedListener listener);
+	
+	/**
+	 * @param listener  remove any other class instance as an listener for internal data
+	 */
+	public void removeComplexDataContainerChangedListener(IComplexDataContainerChangedListener listener);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainerChangedListener.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainerChangedListener.java
new file mode 100644
index 0000000..a0468ee
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/complexdatacontainer/IComplexDataContainerChangedListener.java
@@ -0,0 +1,25 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.complexdatacontainer;
+
+/**
+ *  Any class instance may listen to changes inside the internal data of a complex data container,
+ *  without the need to know about its data structure necessary.
+ */
+public interface IComplexDataContainerChangedListener {
+	
+	/**
+	 * The internal data of any complex data container listened to has been changed.
+	 */
+	public void complexDataContainerChanged();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserFilterDialogProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserFilterDialogProvider.java
new file mode 100644
index 0000000..d35e87d
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserFilterDialogProvider.java
@@ -0,0 +1,38 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.contextfunction;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.VerticalLayout;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IUserFilterDialogProvider. Used to inject a dialog to maintain user filters.
+ */
+public interface IUserFilterDialogProvider {
+	
+	/**
+	 * Gets the dialog.
+	 *
+	 * @return the dialog
+	 */
+	Component getDialog();
+	
+	/**
+	 * Creates the view.
+	 *
+	 * @param parent
+	 *            the parent layout the view will be attached to.
+	 */
+	void createView(final VerticalLayout parent);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserMenuProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserMenuProvider.java
new file mode 100644
index 0000000..04eadf9
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IUserMenuProvider.java
@@ -0,0 +1,19 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.contextfunction;
+
+import com.vaadin.ui.Component;
+
+public interface IUserMenuProvider {
+	Component getMenu();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IVaadinDialogProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IVaadinDialogProvider.java
new file mode 100644
index 0000000..40db253
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IVaadinDialogProvider.java
@@ -0,0 +1,38 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.contextfunction;
+
+import com.vaadin.ui.Component;
+import com.vaadin.ui.VerticalLayout;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IVaadinDialogProvider. Used to inject a vaadin based dialog.
+ */
+public interface IVaadinDialogProvider {
+	
+	/**
+	 * Gets the dialog component.
+	 *
+	 * @return the dialog
+	 */
+	Component getDialog();
+	
+	/**
+	 * Creates the view.
+	 *
+	 * @param parent
+	 *            the parent layout the view will be attached to.
+	 */
+	void createView(final VerticalLayout parent);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IViewEmbeddedProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IViewEmbeddedProvider.java
new file mode 100644
index 0000000..e54505d
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/contextfunction/IViewEmbeddedProvider.java
@@ -0,0 +1,20 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.contextfunction;
+
+import com.vaadin.ui.VerticalLayout;
+
+public interface IViewEmbeddedProvider {
+	void createView(final VerticalLayout parent);
+	void createComponents();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobUploadComponent.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobUploadComponent.java
new file mode 100644
index 0000000..dc5ba57
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/customfields/IBlobUploadComponent.java
@@ -0,0 +1,141 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011 - 2016 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG
+ * 
+ */
+package org.eclipse.osbp.ui.api.customfields;
+
+import java.util.List;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+
+import com.vaadin.server.Resource;
+import com.vaadin.ui.Label;
+
+public interface IBlobUploadComponent {
+	public enum BUTTON_ALIGNMENT {
+		TOP, BUTTOM, LEFT, RIGHT, DEFAULT
+	}
+
+	/**
+	 * Enables the upload button.
+	 *
+	 * @param uploadButton
+	 *            the upload button
+	 */
+	void enableUploadButton(boolean uploadButton);
+
+	/**
+	 * Sets the resolution for the blob to be displayed via resolution id
+	 * 
+	 * @param displayResolutionId
+	 */
+	void setDisplayResolutionId(int displayResolutionId);
+	
+	/**
+	 * Sets the resolution for the blob to be displayed via resolution string
+	 *
+	 * @param displayResolution the new display resolution
+	 */
+	void setDisplayResolution(String displayResolution);
+	/**
+	 * Sets the uuid for the blob to be displayed
+	 * 
+	 * @param uniqueName
+	 */
+	void setUploadedUniqueName(String uniqueName);
+
+	/**
+	 * Sets the firmly linked.
+	 *
+	 * @param firmlyLinked
+	 *            the new firmly linked
+	 */
+	void setFirmlyLinked(boolean firmlyLinked);
+
+	/**
+	 * Checks if component is firmly linked.
+	 *
+	 * @return true, if is firmly linked
+	 */
+	boolean isFirmlyLinked();
+
+	/**
+	 * Sets the event broker.
+	 *
+	 * @param eventBroker the new event broker
+	 */
+	void setEventBroker(IEventBroker eventBroker);
+
+	/**
+	 * Sets the display image label.
+	 *
+	 * @param displayImageLabel the new display image label
+	 */
+	void setDisplayImageLabel(Label displayImageLabel);
+
+	/**
+	 * Sets the button alignment.
+	 *
+	 * @param buttonAlignment the new button alignment
+	 */
+	void setUploadButtonAlignment(BUTTON_ALIGNMENT buttonAlignment);
+
+	/**
+	 * Checks if is unique name enabled.
+	 *
+	 * @return true, if is unique name enabled
+	 */
+	boolean isUniqueNameEnabled();
+
+	/**
+	 * Sets the unique name enabled.
+	 *
+	 * @param uniqueNameEnabled the new unique name enabled
+	 */
+	void setUniqueNameEnabled(boolean uniqueNameEnabled);
+	
+	/**
+	 * Sets the upload component label.
+	 *
+	 * @param label the new blob upload comp label
+	 */
+	void setBlobUploadCompLabel(Label label);
+	
+	/**
+	 * Sets the upload button caption.
+	 *
+	 * @param buttonCaption the new upload button caption
+	 */
+	void setUploadButtonCaption(String buttonCaption);
+	
+	/**
+	 * Sets the upload icon.
+	 *
+	 * @param uploadIcon the new upload icon
+	 */
+	void setUploadIcon(Resource uploadIcon);
+	
+	/**
+	 * Sets the download icon.
+	 *
+	 * @param downloadIcon the new download icon
+	 */
+	void setDownloadIcon(Resource downloadIcon);
+	
+	/**
+	 * Sets the upload accepted mime types.
+	 *
+	 * @param mimeTypes the new upload accepted mime types
+	 */
+	void setUploadAcceptedMimeTypes(List<String> mimeTypes);
+	
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DerivedOlapException.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DerivedOlapException.java
new file mode 100644
index 0000000..6c6946a
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/DerivedOlapException.java
@@ -0,0 +1,28 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.ui.api.datamart;
+
+public class DerivedOlapException extends Exception {
+
+	public DerivedOlapException(String message) {
+		super(message);
+	}
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDataMart.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDataMart.java
new file mode 100644
index 0000000..bbfedfd
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDataMart.java
@@ -0,0 +1,42 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.datamart;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.eclipse.osbp.ui.api.user.IUser;
+
+public interface IDataMart {
+    public enum EType {
+        BOOLEAN, DATE, FLOAT, DOUBLE, BYTE, SHORT, INTEGER, LONG, STRING, TIME, BLOPMAPPING, LENUM, none
+    }
+    
+	public final static String DATAMART_CLASS_POSTFIX = "Datamart";
+	public final static String DATAMART_ID_COLUMN_PREFIX = "__";
+	public final static String DATAMART_ID_COLUMN_POSTFIX = "__ID__";
+	
+	public static final String  singleSelectDecorator = "$";
+	public static final String  multiSelectDecorator = "§";
+	public static final String  exceptDecorator = "%";
+	public static final String  slicerSingleSelectDecorator = "?";
+	public static final String  slicerMultiSelectDecorator = "!";
+	public static final String  sqlFilterNothing = "'*'";
+	public static final String  filterIdPlaceholder = "&";
+	
+	public static String decorate(String decorator, String input) {return decorator+input+decorator;}
+
+	public abstract HashMap<String, ArrayList<IDualData>> getFilters(IUser user);
+	public abstract HashMap<String, EType> getIdMap();
+	public abstract HashMap<String, EType> getTypesMap(IUser user);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartFilterGenerator.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartFilterGenerator.java
new file mode 100644
index 0000000..0b47637
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartFilterGenerator.java
@@ -0,0 +1,44 @@
+package org.eclipse.osbp.ui.api.datamart;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.eclipse.osbp.ui.api.layout.IViewLayoutManager;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.user.IUser;
+
+import com.vaadin.data.Property.ValueChangeListener;
+
+public interface IDatamartFilterGenerator {
+	void setDslMetadataService(IDSLMetadataService dslMetadataService);
+
+	boolean createFilter(IDataMart datamart, IUser user,
+			ValueChangeListener filterChangeListener,
+			IViewLayoutManager layoutManager);
+
+	boolean createFilter(IDataMart datamart, IUser user,
+			ValueChangeListener filterChangeListener,
+			IViewLayoutManager layoutManager, boolean showCaption);
+
+	void setId(String idProperty, String id);
+
+	void resetId();
+
+	Map<String, IDatamartSelectable> getSelectors();
+
+	boolean isCube();
+
+	void setCube(boolean cube);
+
+	void resetItem(String filter);
+
+	Map<String, String> getFilter(boolean isCube);
+
+	void setLocale(Locale locale);
+
+	void selectItem(String filter, String selection);
+
+	void updateFilter(IDataMart datamart, IUser user,
+			ValueChangeListener filterChangeListener);
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartSelectable.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartSelectable.java
new file mode 100644
index 0000000..6502891
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDatamartSelectable.java
@@ -0,0 +1,151 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.datamart;
+
+import java.util.Collection;
+import java.util.List;
+
+import com.vaadin.data.Container;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.server.Sizeable.Unit;
+
+public interface IDatamartSelectable {
+	
+	/**
+	 * Checks if is slicer.
+	 *
+	 * @return true, if is slicer
+	 */
+	boolean isSlicer();
+	
+	/**
+	 * Checks if is multi selected.
+	 *
+	 * @return true, if is multi selected
+	 */
+	boolean isMultiSelected();
+	
+	/**
+	 * Update the combo box.
+	 *
+	 * @param options the dual data items 
+	 */
+	void update(Collection<IDualData> options);
+	
+	/**
+	 * Gets the filter name.
+	 *
+	 * @return the filter name
+	 */
+	String getFilterName();
+	
+	/**
+	 * Sets the filter name.
+	 *
+	 * @param filterName the new filter name
+	 */
+	void setFilterName(String filterName);
+	
+	/**
+	 * Gets the selected items.
+	 *
+	 * @return the selected items
+	 */
+	List<IDualData> getSelectedItems();
+	
+	Object getValue();
+	
+	/**
+	 * Gets the first item.
+	 *
+	 * @return the first item matching
+	 */
+	IDualData getFirstItem();
+	
+	/**
+	 * Gets the hierarchy if any.
+	 *
+	 * @return the hierarchy
+	 */
+	String getHierarchy();
+	
+	/**
+	 * Sets the hierarchy.
+	 *
+	 * @param hierarchy the new hierarchy
+	 */
+	void setHierarchy(String hierarchy);
+	
+	/**
+	 * Gets the container datasource of the underlying combobox.
+	 *
+	 * @return the container datasource
+	 */
+	Container getContainerDataSource();
+	
+	/**
+	 * Select an item in the underlying combobox
+	 *
+	 * @param obj the obj
+	 */
+	void select(Object obj);
+	
+	/**
+	 * Adds the value change listener.
+	 *
+	 * @param listener the listener
+	 */
+	void addValueChangeListener(ValueChangeListener listener);
+	
+	/**
+	 * Removes the value change listener.
+	 *
+	 * @param listener the listener
+	 */
+	void removeValueChangeListener(ValueChangeListener listener);
+	/**
+	 * Sets the caption.
+	 *
+	 * @param caption the new caption
+	 */
+	void setCaption(String caption);
+	
+	/**
+	 * Sets the description.
+	 *
+	 * @param description the new description
+	 */
+	void setDescription(String description);
+	
+	/**
+	 * Gets the height.
+	 *
+	 * @return the height
+	 */
+	float getHeight();
+	
+	/**
+	 * Gets the height units.
+	 *
+	 * @return the height units
+	 */
+	Unit getHeightUnits();
+	
+	/**
+	 * Sets the width.
+	 *
+	 * @param width the new width
+	 */
+	void setWidth(String width);
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDualData.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDualData.java
new file mode 100644
index 0000000..678f8de
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/datamart/IDualData.java
@@ -0,0 +1,69 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG
+ * 
+ */
+package org.eclipse.osbp.ui.api.datamart;
+
+/**
+ * The Interface IDualData.
+ */
+public interface IDualData {
+	
+	/**
+	 * Gets the selection value.
+	 *
+	 * @return the selection value
+	 */
+	String getSelectionValue();
+
+	/**
+	 * Sets the selection value.
+	 *
+	 * @param value the new selection value
+	 */
+	void setSelectionValue(String value);
+
+	/**
+	 * Gets the formatted value.
+	 *
+	 * @return the formatted value
+	 */
+	String getFormattedValue();
+
+	/**
+	 * Gets the significant value.
+	 *
+	 * @return the significant value
+	 */
+	String getSignificantValue();
+
+	/**
+	 * Sets the formatted value.
+	 *
+	 * @param formattedValue the new formatted value
+	 */
+	void setFormattedValue(String formattedValue);
+
+	/**
+	 * Sets the unformatted value.
+	 *
+	 * @param unformattedValue the new unformatted value
+	 */
+	void setUnformattedValue(String unformattedValue);
+
+	/**
+	 * Gets the hierarchy.
+	 *
+	 * @return the hierarchy
+	 */
+	String getHierarchy();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryGroup.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryGroup.java
new file mode 100644
index 0000000..3ef47ec
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryGroup.java
@@ -0,0 +1,18 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.functionlibrary;
+
+//TODO Version 2 - move to API package
+public interface IFunctionLibraryGroup {
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryPackage.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryPackage.java
new file mode 100644
index 0000000..2352007
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryPackage.java
@@ -0,0 +1,18 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.functionlibrary;
+
+// TODO Version 2 - move to API package
+public interface IFunctionLibraryPackage {
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryService.java
new file mode 100644
index 0000000..b091bcd
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/functionlibrary/IFunctionLibraryService.java
@@ -0,0 +1,43 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.ui.api.functionlibrary;
+
+import java.util.Locale;
+
+import org.eclipse.osbp.ui.api.statemachine.IStateMachine;
+
+/**
+ * This service provides access to the function library.
+ */
+public interface IFunctionLibraryService {
+
+	public Object callFunctionLibrary(String className, String methodName,
+			Object fieldValue, Locale locale, Object... params);
+
+	public Object callFunctionLibrary(String className, String methodName,
+			Object fieldValue);
+
+	public Object callFunctionLibrary(String className, String methodName,
+			Locale locale);
+
+	public Object callFunctionLibrary(String className, String methodName);
+
+	public boolean guard(IStateMachine statemachine, String className, String methodName);
+
+	public boolean operation(IStateMachine statemachine, String className,
+			String methodName, Object... params);
+
+	public Object function(IStateMachine statemachine, String className,
+			String methodName, Object... params);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/layout/IViewLayoutManager.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/layout/IViewLayoutManager.java
new file mode 100644
index 0000000..8370e3e
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/layout/IViewLayoutManager.java
@@ -0,0 +1,16 @@
+package org.eclipse.osbp.ui.api.layout;
+
+import com.vaadin.server.Extension;
+import com.vaadin.ui.AbstractOrderedLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.VerticalLayout;
+
+public interface IViewLayoutManager {
+	void init(AbstractOrderedLayout parent);
+	void addExtension(Extension extension);
+	void removeExtension(Extension extension);
+	void setLabelValue(String text);
+	HorizontalLayout getTopArea();
+	VerticalLayout getSideArea();
+	VerticalLayout getDataArea();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/IMessageRequester.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/IMessageRequester.java
new file mode 100644
index 0000000..9003a59
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/IMessageRequester.java
@@ -0,0 +1,11 @@
+package org.eclipse.osbp.ui.api.message;
+
+public interface IMessageRequester {
+	void addButtonListener(IMessageRequester.ClickRecipient recipient);
+	void removeButtonListener(IMessageRequester.ClickRecipient recipient);
+	
+	public interface ClickRecipient extends java.util.EventListener {
+		void messageButtonPressed(MessageRequesterEvent e);
+	}
+	
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageEvent.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageEvent.java
new file mode 100644
index 0000000..8154ffd
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageEvent.java
@@ -0,0 +1,27 @@
+package org.eclipse.osbp.ui.api.message;
+
+public class MessageEvent {
+	public enum EventType {
+		KEYBOARD, TRIGGER, ID, MESSAGEOPEN, MESSAGECLOSE, ERROR, STATUSOPEN, STATUSCLOSE;
+	};
+	
+	private EventType type;
+	private String id;
+	public MessageEvent(EventType type, String id) {
+		this.type = type;
+		this.id = id;
+	}
+	public EventType getType() {
+		return type;
+	}
+	public void setType(EventType type) {
+		this.type = type;
+	}
+	public String getId() {
+		return id;
+	}
+	public void setId(String id) {
+		this.id = id;
+	}
+	
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageRequesterEvent.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageRequesterEvent.java
new file mode 100644
index 0000000..f47aa20
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/message/MessageRequesterEvent.java
@@ -0,0 +1,30 @@
+package org.eclipse.osbp.ui.api.message;
+
+import java.util.EventObject;
+
+public class MessageRequesterEvent extends EventObject {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -3166264241081462470L;
+	private String id;
+	private MessageEvent eventData;
+
+	public MessageRequesterEvent(Object source, String id, MessageEvent eventData) {
+		super(source);
+		this.id = id;
+		this.eventData = eventData;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public MessageEvent getEventData() {
+		return eventData;
+	}
+
+	public void setEventData(MessageEvent eventData) {
+		this.eventData = eventData;
+	}
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/metadata/IDSLMetadataService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/metadata/IDSLMetadataService.java
new file mode 100644
index 0000000..a23bb06
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/metadata/IDSLMetadataService.java
@@ -0,0 +1,213 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.metadata;
+
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.util.Pair;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IDSLMetadataService.
+ */
+public interface IDSLMetadataService {
+
+	/**
+	 * The Enum DSLLiterals avoids dependencies to the concrete DSL
+	 * implementations.
+	 */
+	enum DSLLiterals {
+
+		/** The perspective literal placeholder. */
+		PERSPECTIVES
+	}
+
+	/**
+	 * Gets dsl grammar elements identified by a literal enum.
+	 *
+	 * @param literal
+	 *            the literal
+	 * @return iterator for dsl grammar elements
+	 */
+	@SuppressWarnings("rawtypes")
+	List<Pair> getDslGrammarElementNames(IDSLMetadataService.DSLLiterals literal);
+
+	/**
+	 * Returns the EObject to be casted to the requested model for the given
+	 * model id and EClass.
+	 *
+	 * @param id
+	 *            the id
+	 * @param eclass
+	 *            the eclass
+	 * @return the metadata
+	 */
+	EObject getMetadata(String id, EClass eclass);
+
+	/**
+	 * Gets the all metadata descriptions.
+	 *
+	 * @param eClass
+	 *            the e class
+	 * @return the all descriptions
+	 */
+	Iterable<IEObjectDescription> getAllDescriptions(EClass eClass);
+
+	/**
+	 * Returns the fully qualified name for the given eObject. If the model is
+	 * based on Xtext, then the returned fqn should be used from the
+	 * EObjectDescription.
+	 * 
+	 * TODO Riegel - ensure that all DSLs generate a proper fqn. For now they
+	 * are missing their package in the FQN.
+	 *
+	 * @param eObject
+	 *            the EObject
+	 * @return the fully qualified name
+	 */
+	String getFullyQualifiedName(EObject eObject);
+
+	/**
+	 * Returns the class name for the given eObject. Kind specifies which type
+	 * of class should be returned. The types depend on their xtext inferrer.
+	 * There may be kind "ui", "translator", "service",...<br>
+	 * If you have no idea what should be returned, just leave the kind
+	 * <code>null</code>.
+	 *
+	 * @param eObject
+	 *            the EObject
+	 * @param kind
+	 *            the kind of requested class type. Depends on the underlying
+	 *            model. Leave null for default.
+	 * @return the class name
+	 */
+	String getClassName(EObject eObject, String kind);
+
+	/**
+	 * Returns all the classpath URI for a given extension.
+	 *
+	 * @param className
+	 *            the class name
+	 * @param extension
+	 *            the extension
+	 * @return the class uri
+	 */
+	String getClassURI(String className, String extension);
+
+	/**
+	 * Returns the class URI for the given eObject and kind. For kind see
+	 * {@link #getClassName(EObject, String)}.
+	 *
+	 * @param eObject
+	 *            the eObject
+	 * @param kind
+	 *            the kind
+	 * @return the class URI
+	 */
+	String getClassURI(EObject eObject, String kind);
+
+	/**
+	 * Gets a class instance for the given eObject and extension.
+	 *
+	 * @param eObject the e object
+	 * @param extension the extension
+	 * @return the class instance
+	 */
+	Object getClassInstance(EObject eObject, String extension);
+	
+	/**
+	 * Gets a resource URL from the bundle of the given extension.
+	 *
+	 * @param eObject the e object
+	 * @param dslExtension the dsl extension e.g. report
+	 * @param resourceExtension the resource extension e.g. rptdesign
+	 * @return the resource URL
+	 */
+	URL getResourceURL(EObject eObject, String dslExtension, String resourceExtension);
+	
+	/**
+	 * Resolves the given proxy using the internal resource set.
+	 * 
+	 * @param proxy
+	 *            the proxy instance
+	 * @return resolved EObject
+	 */
+	EObject resolve(EObject proxy);
+
+	/**
+	 * Returns all resolved EObjects provided by
+	 * {@link #getAllDescriptions(EClass)}.
+	 *
+	 * @param eClass
+	 *            the e class
+	 * @return the all EObjects
+	 */
+	Iterable<EObject> getAll(EClass eClass);
+
+	/**
+	 * Translates a fully qualified key for the given locale.
+	 *
+	 * @param locale
+	 *            the locale
+	 * @param key
+	 *            the key
+	 * @return the string
+	 */
+	String translate(String locale, String key);
+
+	/**
+	 * Gets all translations.
+	 *
+	 * @return the translations for all languages
+	 */
+	Map<String, Properties> getTranslations();
+
+	/**
+	 * Gets the bundle space type provider from MetadataBuilderService.
+	 *
+	 * @return the type provider
+	 */
+	@SuppressWarnings("restriction")
+	BundleSpaceTypeProvider getTypeProvider();
+
+	/**
+	 * Returns a set with all sub types of the given type. The key holds the
+	 * localized simple name if localeTag is != null The value holds the
+	 * qualified name of the type
+	 * 
+	 * @param localeTag
+	 *            the locale tag
+	 * @param typeName
+	 *            the type name
+	 * @return all applicable type names
+	 */
+	Map<String, String> getAllTypeNames(String localeTag, String typeName);
+
+	/**
+	 * Creates an instance of the given qualified type.
+	 *
+	 * @param typeName
+	 *            the type name
+	 * @return the class
+	 * @throws ClassNotFoundException
+	 *             the class not found exception
+	 */
+	Class<?> createType(String typeName) throws ClassNotFoundException;
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/organization/IOrganizationViewPartProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/organization/IOrganizationViewPartProvider.java
new file mode 100644
index 0000000..a349a38
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/organization/IOrganizationViewPartProvider.java
@@ -0,0 +1,28 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.organization;
+
+/**
+ * Returns the URI for the viewpart. Use "service.ranking:Integer=1000" as OSGi
+ * property.
+ */
+public interface IOrganizationViewPartProvider {
+
+	/**
+	 * Returns the URI for the organization view part.
+	 * 
+	 * @return
+	 */
+	String getViewPartURI();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IPOSService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IPOSService.java
new file mode 100644
index 0000000..98fec24
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IPOSService.java
@@ -0,0 +1,84 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG
+ * 
+ */
+package org.eclipse.osbp.ui.api.pos;
+
+import org.eclipse.osbp.ui.api.statemachine.IStateMachine;
+
+/**
+ * The Interface IPOSService exposes communication link to payment terminals using ZVT protocol
+ */
+public interface IPOSService {
+	
+	/**
+	 * Sets the statemachine.
+	 *
+	 * @param statemachine the new statemachine
+	 */
+	void setStatemachine(IStateMachine statemachine);
+	
+	/**
+	 * Open ZVT channel.
+	 *
+	 * @param host the host
+	 * @param port the port
+	 * @return true, if successful
+	 */
+	boolean openZVTChannel(String host, int port);
+
+	/**
+	 * Close ZVT channel.
+	 */
+	void closeZVTChannel();
+
+	/**
+	 * Send Zvt registration.
+	 *
+	 * @param password the password
+	 * @param configuration the configuration
+	 */
+	void zvtRegistration(String password, String configuration);
+
+	/**
+	 * Send Zvt authorization.
+	 *
+	 * @param amount the amount
+	 */
+	void zvtAuthorization(Double amount);
+
+	/**
+	 * Send Zvt acknowledge.
+	 */
+	void zvtAcknowledge();
+	
+	/**
+	 * Send Zvt reversal.
+	 *
+	 * @param receipt the receipt
+	 */
+	void zvtReversal(String password, String receipt);
+
+	/**
+	 * Gets the zvt response.
+	 *
+	 * @return the zvt response
+	 */
+	String getZvtResponse();
+
+	/**
+	 * Gets the zvt transactional data.
+	 *
+	 * @return the zvt transactional data
+	 */
+	IZVTTransactionData getZvtTransactionData();
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IZVTTransactionData.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IZVTTransactionData.java
new file mode 100644
index 0000000..b77cf7f
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/pos/IZVTTransactionData.java
@@ -0,0 +1,383 @@
+/*
+ *                                                                            
+ *  Copyright (c) 2011 - 2017 - Loetz GmbH & Co KG, 69115 Heidelberg, Germany 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Initial contribution:                                                      
+ *     Loetz GmbH & Co. KG
+ * 
+ */
+package org.eclipse.osbp.ui.api.pos;
+
+import java.nio.ByteBuffer;
+
+/**
+ * The Interface IZVTTransactionData.
+ */
+public interface IZVTTransactionData {
+	
+	/**
+	 * The Enum PaymentType.
+	 */
+	static enum PaymentType {
+		
+		/** offline mode */
+		OFFLINE, 
+		/** card is checked without authorization */
+		CARDCHECKED_NOAUTHORIZATION, 
+		/** online mode */
+		ONLINE, 
+		/** pin mode */
+		PIN
+	};
+
+	/**
+	 * Parses the.
+	 *
+	 * @param buffer the buffer
+	 * @param position the position
+	 * @param length the length
+	 * @return the int
+	 */
+	int parse(ByteBuffer buffer, int position, int length);
+
+	/**
+	 * Gets the amount.
+	 *
+	 * @return the amount
+	 */
+	double getAmount();
+
+	/**
+	 * Sets the amount.
+	 *
+	 * @param amount the new amount
+	 */
+	void setAmount(double amount);
+
+	/**
+	 * Gets the trace number.
+	 *
+	 * @return the trace number
+	 */
+	String getTraceNumber();
+
+	/**
+	 * Sets the trace number.
+	 *
+	 * @param traceNumber the new trace number
+	 */
+	void setTraceNumber(String traceNumber);
+
+	/**
+	 * Gets the original trace number.
+	 *
+	 * @return the original trace number
+	 */
+	String getOriginalTraceNumber();
+
+	/**
+	 * Sets the original trace number.
+	 *
+	 * @param originalTraceNumber the new original trace number
+	 */
+	void setOriginalTraceNumber(String originalTraceNumber);
+
+	/**
+	 * Gets the card sequence.
+	 *
+	 * @return the card sequence
+	 */
+	int getCardSequence();
+
+	/**
+	 * Sets the card sequence.
+	 *
+	 * @param cardSequence the new card sequence
+	 */
+	void setCardSequence(int cardSequence);
+
+	/**
+	 * Gets the payment type.
+	 *
+	 * @return the payment type
+	 */
+	PaymentType getPaymentType();
+
+	/**
+	 * Sets the payment type.
+	 *
+	 * @param paymentType the new payment type
+	 */
+	void setPaymentType(PaymentType paymentType);
+
+	/**
+	 * Gets the pan efid.
+	 *
+	 * @return the pan efid
+	 */
+	String getPan_efid();
+
+	/**
+	 * Sets the pan efid.
+	 *
+	 * @param pan_efid the new pan efid
+	 */
+	void setPan_efid(String pan_efid);
+
+	/**
+	 * Gets the terminal id.
+	 *
+	 * @return the terminal id
+	 */
+	String getTerminalId();
+
+	/**
+	 * Sets the terminal id.
+	 *
+	 * @param terminalId the new terminal id
+	 */
+	void setTerminalId(String terminalId);
+
+	/**
+	 * Gets the authorization.
+	 *
+	 * @return the authorization
+	 */
+	String getAuthorization();
+
+	/**
+	 * Sets the authorization.
+	 *
+	 * @param authorization the new authorization
+	 */
+	void setAuthorization(String authorization);
+
+	/**
+	 * Gets the currency.
+	 *
+	 * @return the currency
+	 */
+	int getCurrency();
+
+	/**
+	 * Sets the currency.
+	 *
+	 * @param currency the new currency
+	 */
+	void setCurrency(int currency);
+
+	/**
+	 * Gets the blocked groups.
+	 *
+	 * @return the blocked groups
+	 */
+	String getBlockedGroups();
+
+	/**
+	 * Sets the blocked groups.
+	 *
+	 * @param blockedGroups the new blocked groups
+	 */
+	void setBlockedGroups(String blockedGroups);
+
+	/**
+	 * Gets the receipt.
+	 *
+	 * @return the receipt
+	 */
+	String getReceipt();
+
+	/**
+	 * Sets the receipt.
+	 *
+	 * @param receipt the new receipt
+	 */
+	void setReceipt(String receipt);
+
+	/**
+	 * Gets the card type.
+	 *
+	 * @return the card type
+	 */
+	int getCardType();
+
+	/**
+	 * Sets the card type.
+	 *
+	 * @param cardType the new card type
+	 */
+	void setCardType(int cardType);
+
+	/**
+	 * Gets the card type ID.
+	 *
+	 * @return the card type ID
+	 */
+	int getCardTypeID();
+
+	/**
+	 * Sets the card type ID.
+	 *
+	 * @param cardTypeID the new card type ID
+	 */
+	void setCardTypeID(int cardTypeID);
+
+	/**
+	 * Gets the geld karte.
+	 *
+	 * @return the geld karte
+	 */
+	String getGeldKarte();
+
+	/**
+	 * Sets the geld karte.
+	 *
+	 * @param geldKarte the new geld karte
+	 */
+	void setGeldKarte(String geldKarte);
+
+	/**
+	 * Gets the authorization parameter.
+	 *
+	 * @return the authorization parameter
+	 */
+	String getAuthorizationParameter();
+
+	/**
+	 * Sets the authorization parameter.
+	 *
+	 * @param authorizationParameter the new authorization parameter
+	 */
+	void setAuthorizationParameter(String authorizationParameter);
+
+	/**
+	 * Gets the contract number.
+	 *
+	 * @return the contract number
+	 */
+	String getContractNumber();
+
+	/**
+	 * Sets the contract number.
+	 *
+	 * @param contractNumber the new contract number
+	 */
+	void setContractNumber(String contractNumber);
+
+	/**
+	 * Gets the additional text.
+	 *
+	 * @return the additional text
+	 */
+	String getAdditionalText();
+
+	/**
+	 * Sets the additional text.
+	 *
+	 * @param additionalText the new additional text
+	 */
+	void setAdditionalText(String additionalText);
+
+	/**
+	 * Gets the result code AS.
+	 *
+	 * @return the result code AS
+	 */
+	String getResultCodeAS();
+
+	/**
+	 * Sets the result code AS.
+	 *
+	 * @param resultCodeAS the new result code AS
+	 */
+	void setResultCodeAS(String resultCodeAS);
+
+	/**
+	 * Gets the turnover number.
+	 *
+	 * @return the turnover number
+	 */
+	String getTurnoverNumber();
+
+	/**
+	 * Sets the turnover number.
+	 *
+	 * @param turnoverNumber the new turnover number
+	 */
+	void setTurnoverNumber(String turnoverNumber);
+
+	/**
+	 * Gets the card name.
+	 *
+	 * @return the card name
+	 */
+	String getCardName();
+
+	/**
+	 * Sets the card name.
+	 *
+	 * @param cardName the new card name
+	 */
+	void setCardName(String cardName);
+
+	/**
+	 * Gets the tlv.
+	 *
+	 * @return the tlv
+	 */
+	String getTlv();
+
+	/**
+	 * Sets the tlv.
+	 *
+	 * @param tlv the new tlv
+	 */
+	void setTlv(String tlv);
+
+	/**
+	 * Gets the transaction time.
+	 *
+	 * @return the transaction time
+	 */
+	String getTransactionTime();
+
+	/**
+	 * Sets the transaction time.
+	 *
+	 * @param time the new transaction time
+	 */
+	void setTransactionTime(String time);
+
+	/**
+	 * Gets the transaction date.
+	 *
+	 * @return the transaction date
+	 */
+	String getTransactionDate();
+
+	/**
+	 * Sets the transaction date.
+	 *
+	 * @param date the new transaction date
+	 */
+	void setTransactionDate(String date);
+
+	/**
+	 * Gets the expiry date.
+	 *
+	 * @return the expiry date
+	 */
+	String getExpiry();
+
+	/**
+	 * Sets the expiry date.
+	 *
+	 * @param expiry the new expiry date
+	 */
+	void setExpiry(String expiry);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/report/IReportProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/report/IReportProvider.java
new file mode 100644
index 0000000..1d19243
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/report/IReportProvider.java
@@ -0,0 +1,76 @@
+package org.eclipse.osbp.ui.api.report;
+
+import java.io.InputStream;
+import java.util.Map;
+
+import org.eclipse.osbp.ui.api.datamart.IDataMart;
+import org.eclipse.osbp.ui.api.datamart.IDatamartFilterGenerator;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
+import org.eclipse.osbp.ui.api.user.IUser;
+
+public interface IReportProvider {
+	public final static String APPCONTEXT_REPORT = "AppContext_Report";
+	public final static String APPCONTEXT_THEMERESOURCESERVICE = "ThemeResourceService_Report";
+	public final static String APPCONTEXT_DSLMETADATASERVICE = "DSLMetadataService_Report";
+	public final static String APPCONTEXT_USER = "User_Report";
+	public final static String APPCONTEXT_DATAMARTINSTANCE = "DatamartInstance_Report";
+	public final static String APPCONTEXT_FILTERMAP = "FilterMap_Report";
+	public final static String APPCONTEXT_PROPERTYLOOKUP = "PropertyLookup_Report";
+
+	public enum Rendering {
+		PDF_FILE(false, true, true, false, false), PDF_STREAM(false, true,
+				false, true, false),
+		/** @see {@link http://www.eclipse.org/forums/index.php/t/204085/} */
+		PDF_PRINT_STREAM(false, true, false, true, true), HTML_FILE(true,
+				false, true, false, false), HTML_STREAM(true, false, false,
+				true, false);
+
+		public boolean asHtml() {
+			return fAsHtml;
+		}
+
+		public boolean asPdf() {
+			return fAsPdf;
+		}
+
+		public boolean asFile() {
+			return fAsFile;
+		}
+
+		public boolean asStream() {
+			return fAsStream;
+		}
+
+		public boolean forPrinting() {
+			return fForPrinting;
+		}
+
+		private final boolean fAsHtml;
+		private final boolean fAsPdf;
+		private final boolean fAsFile;
+		private final boolean fAsStream;
+		private final boolean fForPrinting;
+
+		Rendering(boolean asHtml, boolean asPdf, boolean asFile,
+				boolean asStream, boolean forPrinting) {
+			fAsHtml = asHtml;
+			fAsPdf = asPdf;
+			fAsFile = asFile;
+			fAsStream = asStream;
+			fForPrinting = forPrinting;
+		}
+	}
+
+	void printReportAsPdf(String reportId, IUser user,
+			IDSLMetadataService dslMetadataService, Map<String, String> filterMap);
+
+	InputStream get(String reportId, IUser user,
+			IDSLMetadataService dslMetadataService, Map<String, String> filterMap);
+
+	InputStream get(String reportId, IUser user,
+			IDSLMetadataService dslMetadataService, Map<String, String> filterMap,
+			Rendering renderer, IThemeResourceService themeResourceService,
+			String outputPath);
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IDataProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IDataProvider.java
new file mode 100644
index 0000000..47c6837
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IDataProvider.java
@@ -0,0 +1,19 @@
+package org.eclipse.osbp.ui.api.statemachine;
+
+import java.util.Stack;
+
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.services.Query;
+
+public interface IDataProvider {
+	void initDatasource(String dtoName);
+	public interface Provider extends IStateMachineParticipant {
+		Boolean find(Provider listener, String dtoName, Query query);
+		Boolean find(Provider listener, String dtoName, String fieldname, Object search);
+		Boolean operation(Provider listener, String name, Stack<Object> parameter);
+		void addTo(Provider listener, String dtoName, String listName, IDto dto);
+		void removeFrom(Provider listener, String dtoName, String listName, IDto dto);
+		void update(Provider listener, String dtoName, IDto dto);
+		void delete(Provider listener, String dtoName, IDto dto);
+	}
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IEventSource.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IEventSource.java
new file mode 100644
index 0000000..c40e179
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IEventSource.java
@@ -0,0 +1,11 @@
+package org.eclipse.osbp.ui.api.statemachine;
+
+public interface IEventSource {
+	public interface Enabler extends IStateMachineParticipant {
+		void enable(Enabler listener, String id, Boolean enabled);
+		void append(Enabler listener, String id, String key);
+		void remove(Enabler listener, String id, int pos);
+		void caption(Enabler listener, String id, String value);
+		void image(Enabler listener, String id, String imageName);
+	}
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IPeripheral.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IPeripheral.java
new file mode 100644
index 0000000..3b0a074
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IPeripheral.java
@@ -0,0 +1,8 @@
+package org.eclipse.osbp.ui.api.statemachine;
+
+public interface IPeripheral{
+	void initDevices();
+	void releaseDevices();
+	public interface Command extends IStateMachineParticipant {
+	}
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachine.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachine.java
new file mode 100644
index 0000000..567d797
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachine.java
@@ -0,0 +1,159 @@
+package org.eclipse.osbp.ui.api.statemachine;
+
+import java.nio.channels.SelectableChannel;
+import java.util.Locale;
+import java.util.Set;
+import java.util.Stack;
+
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.services.Query;
+import org.eclipse.osbp.ui.api.message.MessageEvent;
+import org.eclipse.osbp.ui.api.message.MessageEvent.EventType;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.report.IReportProvider;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
+import org.eclipse.osbp.ui.api.user.IUser;
+import org.joda.time.DateTime;
+
+public interface IStateMachine {
+	class Data {
+		public String name;
+		public Double value;
+		public Boolean state;
+		public Object object;
+	};
+
+	String getIPAddress();
+
+	DateTime getNow();
+
+	void processEvent(IStateMachine statemachine, MessageEvent event);
+
+	void registerEnabler(IEventSource.Enabler listener);
+
+	void unregisterEnabler(IEventSource.Enabler listener);
+
+	void registerDataProvider(IDataProvider.Provider listener);
+
+	void unregisterDataProvider(IDataProvider.Provider listener);
+
+	void start();
+
+	void enable(String id, Boolean enable);
+
+	Object get(String id);
+
+	void set(String id, Object content);
+
+	void clear(String id);
+
+	void append(String id, String key);
+
+	void remove(String id, int pos);
+
+	void caption(String id, String value);
+
+	void image(String id, String imageName);
+	
+	void addDataProvider(IDataProvider.Provider listener);
+
+	void removeDataProvider(IDataProvider.Provider listener);
+
+	void registerPeripheral(IPeripheral.Command listener);
+
+	void unregisterPeripheral(IPeripheral.Command listener);
+
+	Boolean find(String dtoName, String fieldName, Object search);
+
+	Boolean find(String dtoName, Query query);
+	
+	void addTo(String dtoName, String listName, IDto dto);
+
+	void removeFrom(String dtoName, String listName, IDto dto);
+	
+	void update(String dtoName);
+
+	void delete(String dtoName);
+
+	Boolean operation(String name, Stack<Object> parameter);
+
+	String getUserAgentInfo();
+
+	Boolean isTouchDevice();
+
+	int getSceenWidth();
+
+	int getScreenHeight();
+
+	Locale getBrowserLocale();
+
+	Boolean isHttps();
+
+	void schedule(IStateMachine statemachine, long milliseconds,
+			MessageEvent event);
+
+	Double parseDouble(String doubleStr);
+
+	String formatDouble(Double value, int length, int precision);
+
+	void setUser(IUser user);
+
+	IUser getUser();
+
+	String getUserName();
+	
+	String getUserPassword();
+
+	String getUserEmail();
+	
+	String getUserPosition();
+	
+	String getUserPrintService();
+	
+	void setLocale(Locale locale);
+
+	Locale getLocale();
+
+	Stack<Object> getParameters();
+
+	void setDslMetadataService(IDSLMetadataService dslMetadataService);
+
+	IDSLMetadataService getDslMetadataService();
+	
+	void setThemeResourceService(IThemeResourceService themeResourceService);
+	
+	IThemeResourceService getThemeResourceService();
+
+	String getTranslation(String token);
+
+	void closeMessage(String messageId);
+	
+	void setReportProvider(IReportProvider reportprovider);
+	
+	IReportProvider getReportProvider();
+
+	void openMessage(String messageId);
+
+	void openMessage(String messageId, boolean okButton);
+	
+	void openQuestion(String messageId, EventType type, String yesEvent, String noEvent, String cancelEvent);
+
+	void dispatchMessages(MessageEvent event);
+	
+	void clearParameters();
+	
+	Object getStorage(String key, String attribute);
+	
+	Set<String> getStorageAttributes(String key);
+
+	void putStorage(String key, String attribute, Object content);
+	
+	void openChannel(SelectableChannel channel);
+	
+	SelectableChannel getChannel();
+	
+	void closeChannel();
+
+	String getLastTrigger();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachineParticipant.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachineParticipant.java
new file mode 100644
index 0000000..f746e99
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/statemachine/IStateMachineParticipant.java
@@ -0,0 +1,30 @@
+package org.eclipse.osbp.ui.api.statemachine;
+
+import java.lang.reflect.Method;
+import java.util.Locale;
+
+import org.eclipse.osbp.ecview.core.common.context.IViewContext;
+
+public interface IStateMachineParticipant {
+	void setStatemachine(IStateMachine statemachine);
+
+	IStateMachine getStatemachine();
+
+	void setViewContext(IViewContext viewContext);
+
+	void init();
+
+	void setLocale(Locale locale);
+
+	Method getter(Object listener, String id);
+
+	Method setter(Object listener, String id, Class<?> parameter);
+
+	Class<?> getReturnType(Object obj, String id);
+
+	void set(Object obj, String id, Object content);
+
+	Object get(Object obj, String id);
+
+	void clear(Object obj, String id);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/IThemeResourceService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/IThemeResourceService.java
new file mode 100644
index 0000000..4110a4c
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/themes/IThemeResourceService.java
@@ -0,0 +1,68 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.themes;
+
+import java.io.InputStream;
+
+import com.vaadin.server.Resource;
+
+public interface IThemeResourceService {
+	
+	/** all available theme resource types */
+	static public enum ThemeResourceType {
+		/** any "big" images like background images */
+		IMAGE, 
+		/** any "small" icons, mostly 16x16 px */
+		ICON,
+		/** flag icon, mostly 16x16 px */
+		FLAG,
+	}
+	
+	/**
+	 * Resets the base paths of the theme resource  
+	 */
+	void reset();
+	/**
+	 * @param themeResourceType
+	 * @return the file extension defined for the theme resource type
+	 */
+	String getThemeResourceTypeExtension(ThemeResourceType themeResourceType);
+	
+	/**
+	 * @param themeResourceType
+	 * @return the path defined for the theme resource type
+	 */
+	String getThemeResourceTypePath(ThemeResourceType themeResourceType);
+	
+	/**
+	 * @param resourceID
+	 * @param themeResourceType
+	 * @return the full qualified uri for the resource id of the theme resource type
+	 */
+	String getThemeURI(String resourceID, ThemeResourceType themeResourceType);
+	
+	/**
+	 * @param resourceID
+	 * @param themeResourceType
+	 * @return the resource for the resource id of the theme resource type
+	 */
+	Resource getThemeResource(String resourceID, ThemeResourceType themeResourceType);
+	
+	/**
+	 * Gets the theme resource input stream.
+	 *
+	 * @param resourceURL the resource URL
+	 * @return the theme resource input stream
+	 */
+	InputStream getThemeResourceInputStream(String resourceURL);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/user/IUser.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/user/IUser.java
new file mode 100644
index 0000000..db34f9c
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/user/IUser.java
@@ -0,0 +1,199 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.ui.api.user;
+
+import java.util.Collection;
+import java.util.Locale;
+
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.osbp.ui.api.customfields.IBlobUploadComponent;
+
+/**
+ * Every user object needs to implement this interface.
+ */
+public interface IUser {
+	// to avoid dependency to publicapi
+	public static final String userClass = "userClass";
+	/**
+	 * Sets the application.
+	 *
+	 * @param application
+	 *            the new application
+	 */
+	void setApplication(MApplication application);
+
+	/**
+	 * Returns the user name.
+	 * 
+	 * @return
+	 */
+	String getUserName();
+
+	/**
+	 * Gets the layouting strategy.
+	 *
+	 * @return the layouting strategy
+	 */
+	String getLayoutingStrategy();
+
+	/**
+	 * Gets the focusing strategy.
+	 *
+	 * @return the focusing strategy
+	 */
+	String getFocusingStrategy();
+
+	/**
+	 * Gets the theme.
+	 *
+	 * @return the theme
+	 */
+	String getTheme();
+	
+	/**
+	 * Gets the Print Service.
+	 *
+	 * @return the print service name
+	 */
+	String getPrintService();
+
+	/**
+	 * Sets the user name.
+	 *
+	 * @param userName
+	 *            the new user name
+	 */
+	void setUserName(String userName);
+
+	/**
+	 * Gets the id.
+	 *
+	 * @return the id
+	 */
+	String getId();
+
+	/**
+	 * Gets the position.
+	 *
+	 * @return the position
+	 */
+	String getPosition();
+
+	/**
+	 * Gets the extra password.
+	 *
+	 * @return the extra password
+	 */
+	String getExtraPassword();
+
+	/**
+	 * Gets the supervisor.
+	 *
+	 * @return the supervisor
+	 */
+	boolean isSupervisor();
+
+	/**
+	 * Gets the perspective id.
+	 *
+	 * @return the perspective id
+	 */
+	String getPerspective();
+
+	/**
+	 * Gets the email.
+	 *
+	 * @return the email
+	 */
+	String getEmail();
+	
+	/**
+	 * Gets the blob upload component.
+	 *
+	 * @return the blob upload component
+	 */
+	IBlobUploadComponent getBlobUploadComponent();
+
+	/**
+	 * Gets the roles.
+	 *
+	 * @return the roles
+	 */
+	Collection<String> getRoles();
+
+	/**
+	 * Gets the locale.
+	 *
+	 * @return the locale
+	 */
+	Locale getLocale();
+
+	/**
+	 * Sets the locale.
+	 *
+	 * @param locale
+	 *            the new locale
+	 */
+	void setLocale(Locale locale);
+
+	/**
+	 * Sets the print service name.
+	 *
+	 * @param print service
+	 *            the new print service
+	 */
+	void setPrintService(String printService);
+
+	/**
+	 * Adds a locale listener to the service.
+	 *
+	 * @param listener
+	 *            the listener
+	 */
+	void addUserLocaleListener(UserLocaleListener listener);
+
+	/**
+	 * Removes the given locale listener from the service.
+	 *
+	 * @param listener
+	 *            the listener
+	 */
+	void removeUserLocaleListener(UserLocaleListener listener);
+
+	/**
+	 * Notifies the listener about the changed locale.
+	 *
+	 * @param locale
+	 *            the locale
+	 */
+	void notifyUserLocaleChanged(Locale locale);
+
+	/**
+	 * The listener interface for receiving locale events. The class that is
+	 * interested in processing a locale event implements this interface, and
+	 * the object created with that class is registered with a component using
+	 * the component's <code>addLocaleListener</code> method. When the user's
+	 * locale change event occurs, that object's appropriate method is invoked.
+	 *
+	 */
+	interface UserLocaleListener {
+
+		/**
+		 * Notifies the listener about a locale change.
+		 *
+		 * @param locale
+		 *            the locale
+		 */
+		void localeChanged(Locale locale);
+
+	}
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractAuthorization.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractAuthorization.java
new file mode 100644
index 0000000..37fc79d
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractAuthorization.java
@@ -0,0 +1,591 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class AAuthorization.
+ */
+public abstract class AbstractAuthorization {
+
+	/** The authorization groups. */
+	private final HashMap<String, AbstractRoleAuthorizationGroup> fAuthorizationGroups;
+
+	/**
+	 * Instantiates a new a authorization.
+	 *
+	 * @param authorizationGroups
+	 *            the authorization groups
+	 */
+	protected AbstractAuthorization(AbstractRoleAuthorizationGroup... authorizationGroups) {
+		fAuthorizationGroups = new HashMap<String, AbstractRoleAuthorizationGroup>();
+		for (AbstractRoleAuthorizationGroup authorizationGroup : authorizationGroups) {
+			fAuthorizationGroups.put(authorizationGroup.getRoleName(), authorizationGroup);
+		}
+	}
+
+	/**
+	 * Gets the authorization group name.
+	 *
+	 * @return the authorization group name
+	 */
+	final public String getAuthorizationGroupName() {
+		return this.getClass().getSimpleName();
+	}
+
+	/**
+	 * Adds the role authorization group.
+	 *
+	 * @param roleName
+	 *            the role name
+	 * @param group
+	 *            the group
+	 */
+	final public void addRoleAuthorizationGroup(String roleName, AbstractRoleAuthorizationGroup group) {
+		fAuthorizationGroups.put(roleName, group);
+	}
+
+	/**
+	 * Gets the role authorization group.
+	 *
+	 * @param role
+	 *            the role
+	 * @return the role authorization group
+	 */
+	final public AbstractRoleAuthorizationGroup getRoleAuthorizationGroup(String role) {
+		return fAuthorizationGroups.get(role);
+	}
+
+	/**
+	 * Gets the authorization groups.
+	 *
+	 * @return the authorization groups
+	 */
+	final public HashMap<String, AbstractRoleAuthorizationGroup> getAuthorizationGroups() {
+		return this.fAuthorizationGroups;
+	}
+
+	/**
+	 * The Class Permission.
+	 */
+	public static class Permission {
+
+		/** The Constant ANY. */
+		private final static String ANY = "*";
+
+		/** The Constant SEPARATOR. */
+		private final static String SEPARATOR = ":";
+
+		/** The type. */
+		private final Type fType;
+
+		/** The group. */
+		private final Group fGroup;
+
+		/** The class. */
+		private final String fClass;
+
+		/** The attribute. */
+		private final String fAttribute;
+
+		/** The action. */
+		private final Action fAction;
+
+		/**
+		 * For blip process start.
+		 *
+		 * @param blipProcess
+		 *            the blip process
+		 * @param action
+		 *            the action
+		 * @return the permission
+		 */
+		public static Permission forBlipProcess(String blipProcess, Action action) {
+			return new Permission(Group.blipProcess, blipProcess, action);
+		}
+
+		/**
+		 * For blip user task execute.
+		 *
+		 * @param blipUserTask
+		 *            the blip user task
+		 * @param action
+		 *            the action
+		 * @return the permission
+		 */
+		public static Permission forBlipUserTask(String blipUserTask, Action action) {
+			return new Permission(Group.blipUserTask, blipUserTask, action);
+		}
+
+		/**
+		 * For entity.
+		 *
+		 * @param entity
+		 *            the entity
+		 * @param action
+		 *            the action
+		 * @return the permission
+		 */
+		public static Permission forEntity(String entity, Action action) {
+			return new Permission(Group.entity, entity, action);
+		}
+
+		/**
+		 * For entity property.
+		 *
+		 * @param entity
+		 *            the entity
+		 * @param property
+		 *            the property
+		 * @param action
+		 *            the action
+		 * @return the permission
+		 */
+		public static Permission forEntityProperty(String entity, String property, Action action) {
+			return new Permission(Group.entity, entity, property, action);
+		}
+
+		/**
+		 * For dto.
+		 *
+		 * @param dto
+		 *            the dto
+		 * @param action
+		 *            the action
+		 * @return the permission
+		 */
+		public static Permission forDto(String dto, Action action) {
+			return new Permission(Group.dto, dto, action);
+		}
+
+		/**
+		 * For dto property.
+		 *
+		 * @param dto
+		 *            the dto
+		 * @param property
+		 *            the property
+		 * @param action
+		 *            the action
+		 * @return the permission
+		 */
+		public static Permission forDtoProperty(String dto, String property, Action action) {
+			return new Permission(Group.dto, dto, property, action);
+		}
+
+		/**
+		 * Instantiates a new permission.
+		 *
+		 * @param group
+		 *            the group
+		 * @param clas
+		 *            the clas
+		 * @param action
+		 *            the action
+		 */
+		public Permission(Group group, String clas, Action action) {
+			this(Type.GRANT, group, clas, null, action);
+		}
+
+		/**
+		 * Instantiates a new permission.
+		 *
+		 * @param group
+		 *            the group
+		 * @param clas
+		 *            the clas
+		 * @param attribute
+		 *            the attribute
+		 * @param action
+		 *            the action
+		 */
+		public Permission(Group group, String clas, String attribute, Action action) {
+			this(Type.GRANT, group, clas, attribute, action);
+		}
+
+		/**
+		 * Instantiates a new permission.
+		 *
+		 * @param type
+		 *            the type
+		 * @param group
+		 *            the group
+		 * @param clas
+		 *            the clas
+		 * @param attribute
+		 *            the attribute
+		 * @param action
+		 *            the action
+		 */
+		public Permission(Type type, Group group, String clas, String attribute, Action action) {
+			fGroup = group;
+			fClass = clas;
+			fAttribute = attribute;
+			fAction = action;
+			fType = type;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see java.lang.Object#toString()
+		 */
+		public String toString() {
+			return fGroup.toString() + SEPARATOR + fClass + SEPARATOR + fAttribute + SEPARATOR + fAction.toString();
+		}
+
+		/**
+		 * Checks if is permitted.
+		 *
+		 * @return true, if is permitted
+		 */
+		public boolean isPermitted() {
+			return fType.isPermitted();
+		}
+
+		/**
+		 * Checks for veto.
+		 *
+		 * @return true, if successful
+		 */
+		public boolean hasVeto() {
+			return !fType.isPermitted();
+		}
+
+		/**
+		 * Checks if permission is for an attribute. Negative logic!
+		 *
+		 * @return true, if is attribute
+		 */
+		public boolean isAttribute() {
+			return fAttribute != null;
+		}
+	}
+
+	/**
+	 * The Enum Type.
+	 */
+	public static enum Type {
+
+		/** The grant. */
+		GRANT(true),
+		/** The deny. */
+		DENY(false);
+
+		/** The permitted. */
+		private final boolean fPermitted;
+
+		/**
+		 * Instantiates a new type.
+		 *
+		 * @param permitted
+		 *            the permitted
+		 */
+		private Type(boolean permitted) {
+			fPermitted = permitted;
+		}
+
+		/**
+		 * Checks if is permitted.
+		 *
+		 * @return true, if is permitted
+		 */
+		public boolean isPermitted() {
+			return fPermitted;
+		}
+	}
+
+	/**
+	 * The Enum Group.
+	 */
+	public static enum Group {
+
+		/** The blip process start. */
+		blipProcess(Action.startable),
+
+		/** The blip user task execute. */
+		blipUserTask(Action.executable),
+
+		/** The entity. */
+		entity(Action.readable, Action.creatable, Action.updatable, Action.deletable),
+
+		/** The bean. */
+		bean(Action.readable, Action.creatable, Action.updatable, Action.deletable),
+
+		/** The dto. */
+		dto(Action.readable, Action.creatable, Action.updatable, Action.deletable);
+
+		/** The default action. */
+		private final Action fDefaultAction;
+
+		/** The any actions. */
+		private final Action[] fAnyActions;
+
+		/**
+		 * Instantiates a new group.
+		 *
+		 * @param defaultAction
+		 *            the default action
+		 * @param anyActions
+		 *            the any actions
+		 */
+		private Group(Action defaultAction, Action... anyActions) {
+			fDefaultAction = defaultAction;
+			fAnyActions = anyActions;
+		}
+
+		/**
+		 * By name.
+		 *
+		 * @param value
+		 *            the value
+		 * @return the group
+		 */
+		public static Group byName(String value) {
+			for (Group item : values()) {
+				if (value.equalsIgnoreCase(item.toString())) {
+					return item;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * Checks for default action.
+		 *
+		 * @return true, if successful
+		 */
+		public boolean hasDefaultAction() {
+			return (fDefaultAction != null);
+		}
+
+		/**
+		 * Gets the default action.
+		 *
+		 * @return the default action
+		 */
+		public Action getDefaultAction() {
+			return fDefaultAction;
+		}
+
+		/**
+		 * Gets the any actions.
+		 *
+		 * @return the any actions
+		 */
+		public Action[] getAnyActions() {
+			return fAnyActions;
+		}
+	}
+
+	/**
+	 * The Enum Action.
+	 */
+	public static enum Action {
+
+		/** can a new entity instance be CREATED. */
+		creatable,
+
+		/** can an entity instance be READ. */
+		readable,
+
+		/** can an entity instance be UPDATED. */
+		updatable,
+
+		/** can an entity instance be DELETED. */
+		deletable,
+
+		/** can an entity instance be CREATED, READ, UPDATED and DELETED. */
+		any,
+		/** is the entity.property INVISIBLE, otherwise at least visible */
+		invisible,
+		/** is entity.property DISABLED, otherwise at least enabled */
+		disabled(invisible),
+		/** is entity.property NONEDITABLE, otherwise at least editable */
+		noneditable(disabled),
+
+		/** is the blip process startable. */
+		startable,
+
+		/** is the blip user task event executable. */
+		executable;
+		
+		/** The depends on action. */
+		private final Action fDependsOnAction;
+
+		/** The auto granted actions. */
+		private Set<Action> fAutoGrantedActions;
+
+		/** The auto denied actions. */
+		private Set<Action> fAutoDeniedActions;
+
+		/**
+		 * Instantiates a new action.
+		 */
+		private Action() {
+			this(null);
+		}
+
+		/**
+		 * Instantiates a new action.
+		 *
+		 * @param dependsOnAction
+		 *            the depends on action
+		 */
+		private Action(Action dependsOnAction) {
+			fDependsOnAction = dependsOnAction;
+		}
+
+		/**
+		 * By name.
+		 *
+		 * @param value
+		 *            the value
+		 * @return the action
+		 */
+		public static Action byName(String value) {
+			if (value != null) {
+				for (Action item : values()) {
+					if (value.equalsIgnoreCase(item.toString())) {
+						return item;
+					}
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * Check auto granted actions.
+		 */
+		private void checkAutoGrantedActions() {
+			if (fAutoGrantedActions == null) {
+				fAutoGrantedActions = new HashSet<Action>();
+				if (fDependsOnAction != null) {
+					fAutoGrantedActions.add(fDependsOnAction);
+					fAutoGrantedActions.addAll(fDependsOnAction.getAutoGrantedActions());
+				}
+			}
+		}
+
+		/**
+		 * Check auto denied actions.
+		 */
+		private void checkAutoDeniedActions() {
+			if (fAutoDeniedActions == null) {
+				fAutoDeniedActions = new HashSet<Action>();
+				for (Action checkAction : values()) {
+					if (this.equals(checkAction.fDependsOnAction)) {
+						fAutoDeniedActions.add(checkAction);
+						fAutoDeniedActions.addAll(checkAction.getAutoDeniedActions());
+					}
+				}
+			}
+		}
+
+		/**
+		 * Checks for auto granted actions.
+		 *
+		 * @return true, if successful
+		 */
+		public boolean hasAutoGrantedActions() {
+			checkAutoGrantedActions();
+			return !fAutoGrantedActions.isEmpty();
+		}
+
+		/**
+		 * Gets the auto granted actions.
+		 *
+		 * @return the auto granted actions
+		 */
+		public Set<Action> getAutoGrantedActions() {
+			checkAutoGrantedActions();
+			return fAutoGrantedActions;
+		}
+
+		/**
+		 * Checks for auto denied actions.
+		 *
+		 * @return true, if successful
+		 */
+		public boolean hasAutoDeniedActions() {
+			checkAutoDeniedActions();
+			return !fAutoDeniedActions.isEmpty();
+		}
+
+		/**
+		 * Gets the auto denied actions.
+		 *
+		 * @return the auto denied actions
+		 */
+		public Set<Action> getAutoDeniedActions() {
+			checkAutoDeniedActions();
+			return fAutoDeniedActions;
+		}
+	}
+
+	/**
+	 * The Enum PermissionResult.
+	 */
+	public static enum PermissionResult {
+
+		/** The explicit granted. */
+		EXPLICIT_GRANTED(true, true),
+
+		/** The explicit denied. */
+		EXPLICIT_DENIED(true, false),
+
+		/** The implicit denied. */
+		IMPLICIT_DENIED(false, false);
+
+		/** The permitted. */
+		private final boolean fPermitted;
+
+		/** The explicit. */
+		private final boolean fExplicit;
+
+		/**
+		 * Instantiates a new permission result.
+		 *
+		 * @param explicit
+		 *            the explicit
+		 * @param permitted
+		 *            the permitted
+		 */
+		private PermissionResult(boolean explicit, boolean permitted) {
+			fExplicit = explicit;
+			fPermitted = permitted;
+		}
+
+		/**
+		 * Checks if is explicit.
+		 *
+		 * @return true, if is explicit
+		 */
+		public boolean isExplicit() {
+			return fExplicit;
+		}
+
+		/**
+		 * Checks if is permitted.
+		 *
+		 * @return true, if is permitted
+		 */
+		public boolean isPermitted() {
+			return fPermitted;
+		}
+	}
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractOrgElement.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractOrgElement.java
new file mode 100644
index 0000000..6ba7d66
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractOrgElement.java
@@ -0,0 +1,130 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class APosition.
+ */
+public abstract class AbstractOrgElement implements IOrgElement {
+
+	/** The Constant serialVersionUID. */
+	private static final long serialVersionUID = 8654353192167477349L;
+
+	/** The root node. */
+	private IOrgElement rootNode;
+
+	/** The organization the node belongs to. */
+	private ISubOrganization organization;
+
+	/** The super ordinate. */
+	private IOrgElement superOrdinate = null;
+
+	/** The name of the node. */
+	private String name;
+
+	public IOrgElement getSuperOrdinate() {
+		return superOrdinate;
+	}
+
+	public void setSuperOrdinate(IOrgElement superOrdinate) {
+		this.superOrdinate = superOrdinate;
+	}
+
+	public void setRootNode(IOrgElement rootNode) {
+		this.rootNode = rootNode;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.osbp.authentication.provider.IOrgNode#getName()
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.osbp.authentication.provider.IOrgNode#hasSuperior()
+	 */
+	@Override
+	public boolean hasSuperior() {
+		return superOrdinate != null;
+	}
+
+	/**
+	 * Gets the superior org node.
+	 *
+	 * @return the superior org node
+	 */
+	public IOrgElement getSuperiorOrgNode() {
+		return superOrdinate;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.osbp.authentication.provider.IOrgNode#getSuperior()
+	 */
+	@Override
+	public String getSuperior() {
+		return superOrdinate == null ? null : superOrdinate.getName();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.osbp.authentication.provider.IOrgNode#hasRootNode()
+	 */
+	@Override
+	public boolean hasRootNode() {
+		return superOrdinate != null;
+	}
+
+	/**
+	 * Gets the root node org node.
+	 *
+	 * @return the root node org node
+	 */
+	public IOrgElement getRootNodeOrgNode() {
+		return rootNode;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.osbp.authentication.provider.IOrgNode#getRootNode()
+	 */
+	@Override
+	public String getRootNode() {
+		return rootNode == null ? null : rootNode.getName();
+	}
+
+	@Override
+	public ISubOrganization getOrganization() {
+		return organization;
+	}
+
+	public void setOrganization(ISubOrganization organization) {
+		this.organization = organization;
+	}
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractPosition.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractPosition.java
new file mode 100644
index 0000000..2974937
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractPosition.java
@@ -0,0 +1,65 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class APosition.
+ */
+public abstract class AbstractPosition extends AbstractOrgElement implements IPosition {
+
+	/** The Constant serialVersionUID. */
+	private static final long serialVersionUID = 8654353192167477349L;
+
+	/** The role names. */
+	private Set<String> roleNames = new HashSet<>();
+
+	/** The permission list. */
+	private IPermissionList permissions;
+
+	public void setRoles(Set<String> roles) {
+		this.roleNames = roles;
+	}
+
+	/**
+	 * Adds a role
+	 *
+	 * @param role
+	 *            the role
+	 */
+	public void addRole(String role) {
+		roleNames.add(role);
+	}
+
+	/**
+	 * Gets the roles.
+	 *
+	 * @return the roles
+	 */
+	public Collection<String> getRoles() {
+		return roleNames;
+	}
+
+	@Override
+	public IPermissionList getPermissionList() {
+		return permissions;
+	}
+
+	public void setPermissionList(IPermissionList permissions) {
+		this.permissions = permissions;
+	}
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractRoleAuthorizationGroup.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractRoleAuthorizationGroup.java
new file mode 100644
index 0000000..bdb5e2b
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractRoleAuthorizationGroup.java
@@ -0,0 +1,185 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Action;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Group;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Permission;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Type;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class ARoleAuthorizationGroup.
+ */
+public abstract class AbstractRoleAuthorizationGroup {
+
+	/** The permissions. */
+	private Map<String,Boolean> fPermissions = new HashMap<>(); 
+
+	/**
+	 * Instantiates a new a role authorization group.
+	 *
+	 * @param permissionSets the permission sets
+	 */
+	@SafeVarargs
+	protected AbstractRoleAuthorizationGroup(Set<Permission>... permissionSets) {
+		for (Set<Permission> permissionSet : permissionSets) {
+			for (Permission permission : permissionSet) {
+				fPermissions.put(permission.toString(), permission.isPermitted());
+			}
+		}
+	}
+	
+	/**
+	 * Adds the permission.
+	 *
+	 * @param permission the permission
+	 */
+	public final void addPermission(Permission permission) {
+		fPermissions.put(permission.toString(), permission.isPermitted());
+	}
+
+	/**
+	 * Gets the name.
+	 *
+	 * @return the name
+	 */
+	public final String getName() {
+		return getRoleName();
+	}
+	
+	/**
+	 * Gets the role name.
+	 *
+	 * @return the role name
+	 */
+	public final String getRoleName() {
+		return this.getClass().getSimpleName();
+	}
+	
+//	final public Map<String,Boolean> getPermissions() { // NOSONAR
+//		return fPermissions; // NOSONAR
+//	} // NOSONAR
+	
+	/**
+ * Gets the permission keys.
+ *
+ * @return the permission keys
+ */
+public final Set<String> getPermissionKeys() {
+		return fPermissions.keySet();
+	}
+	
+	/**
+	 * Exists permission keys.
+	 *
+	 * @param key the key
+	 * @return true, if successful
+	 */
+	public final boolean existsPermissionKeys(String key) {
+		return fPermissions.containsKey(key);
+	}
+	
+	/**
+	 * Gets the permission.
+	 *
+	 * @param key the key
+	 * @return the permission
+	 */
+	public final boolean getPermission(String key) {
+		return fPermissions.get(key);
+	}
+
+	/**
+	 * Granted.
+	 *
+	 * @param group the group
+	 * @param clas the clas
+	 * @param actions the actions
+	 * @return the sets the
+	 */
+	public static final Set<Permission> granted(Group group, String clas, Action... actions) {
+		Set<Permission> granted = new HashSet<>();
+		// --- any default authorizations ---
+		if  (group.hasDefaultAction()) {
+			granted.add(new Permission(group, clas, group.getDefaultAction()));
+		}
+		// --- if the ANY-authorization is given ---
+		if  ((actions.length == 1) && actions[0].equals(Action.any)) {
+			for (Action anyAction : group.getAnyActions()) {
+				granted.add(new Permission(group, clas, anyAction));
+			}
+		}
+		else { 
+			// --- every authorization explizit ---
+			for (Action action : actions) {
+				granted.add(new Permission(group, clas, action));
+			}
+		}
+		return granted;
+	}
+	
+	/**
+	 * Granted.
+	 *
+	 * @param group the group
+	 * @param clas the clas
+	 * @param attribute the attribute
+	 * @param actions the actions
+	 * @return the sets the
+	 */
+	public static final Set<Permission> granted(Group group, String clas, String attribute, Action... actions) {
+		Set<Permission> granted = new HashSet<>();
+		for (Action action : actions) {
+			// --- if the action has auto granted actions ---
+			if  (action.hasAutoGrantedActions()) {
+				for (Action autoGrantedAction : action.getAutoGrantedActions()) {
+					granted.add(new Permission(Type.GRANT, group, clas, attribute, autoGrantedAction));
+				}
+			}
+			// --- grant the action itself ---
+			granted.add(new Permission(Type.GRANT, group, clas, attribute, action));
+		}
+		return granted;
+	}
+	
+	/**
+	 * Denied.
+	 *
+	 * @param group the group
+	 * @param clas the clas
+	 * @param attribute the attribute
+	 * @param actions the actions
+	 * @return the sets the
+	 */
+	public static final Set<Permission> denied(Group group, String clas, String attribute, Action... actions) {
+		Set<Permission> denied = new HashSet<>();
+		for (Action action : actions) {
+			// --- if the action has auto denied actions ---
+			if  (action.hasAutoDeniedActions()) {
+				for (Action autoDeniedAction : action.getAutoDeniedActions()) {
+					denied.add(new Permission(Type.DENY, group, clas, attribute, autoDeniedAction));
+				}
+			}
+			// --- deny the action itself ---
+			denied.add(new Permission(Type.DENY, group, clas, attribute, action));
+		}
+		return denied;
+	}
+	
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractSubOrganization.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractSubOrganization.java
new file mode 100644
index 0000000..f3484ce
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/AbstractSubOrganization.java
@@ -0,0 +1,126 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class ASubOrganization.
+ */
+public class AbstractSubOrganization extends AbstractOrgElement implements ISubOrganization {
+
+	/** The title of an organization. */
+	private String title;
+	/** The position map of all positions including of its sub organizations. */
+	private Map<String, IPosition> positionMap = new HashMap<String, IPosition>();
+	/**
+	 * The position map only of the own positions without its sub organizations
+	 * .
+	 */
+	private Map<String, IPosition> ownPositionMap = new HashMap<String, IPosition>();
+	/** The sub organization map. */
+	private Map<String, ISubOrganization> subOrgMap = new HashMap<String, ISubOrganization>();
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.authentication.provider.ISubOrganization#getFilterValueList
+	 * ()
+	 */
+	@Override
+	public List<String> getFilterValueList() {
+		return null;
+	}
+
+	/**
+	 * Gets the title.
+	 *
+	 * @return the title
+	 */
+	public String getTitle() {
+		return title;
+	}
+
+	/**
+	 * Sets the title.
+	 *
+	 * @param title
+	 *            the new title
+	 */
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.ui.api.useraccess.IOrganizationService#getPosition(java
+	 * .lang.String)
+	 */
+	@Override
+	public IPosition getPosition(String name) {
+		addSubOrgPositions();
+		return positionMap.get(name);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.ui.api.useraccess.IOrganizationService#getPositions()
+	 */
+	@Override
+	final public Collection<IPosition> getPositions() {
+		addSubOrgPositions();
+		return positionMap.values();
+	}
+
+	/**
+	 * Maintains the position map up to date.
+	 */
+	private void addSubOrgPositions() {
+		for (ISubOrganization subOrg : getSubOrganizations()) {
+			if(subOrg instanceof AbstractSubOrganization) {
+				((AbstractSubOrganization)subOrg).addSubOrgPositions();
+			}
+			for (IPosition subOrgPosition : subOrg.getOwnPositions()) {
+				positionMap.put(subOrgPosition.getName(), subOrgPosition);
+			}
+		}
+	}
+
+	@Override
+	final public Collection<IPosition> getOwnPositions() {
+		return ownPositionMap.values();
+	}
+
+	final public void setPosition(IPosition position) {
+		positionMap.put(position.getName(), position);
+		ownPositionMap.put(position.getName(), position);
+	}
+
+	final public Collection<ISubOrganization> getSubOrganizations() {
+		return subOrgMap.values();
+	}
+
+	public void setSubOrganization(ISubOrganization subOrg) {
+		subOrgMap.put(subOrg.getName(), subOrg);
+	}
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IBlipProcessPermissions.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IBlipProcessPermissions.java
new file mode 100644
index 0000000..a318eb8
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IBlipProcessPermissions.java
@@ -0,0 +1,34 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.List;
+
+/**
+ *  Container with all blip process permissions.
+ *  <br>
+ *  All existing roles from authorization and all mentioned blips are inspected.
+ */
+public interface IBlipProcessPermissions {
+	/**
+	 *  @param  blipProcessName     the blip process requested
+	 *  @return list of strings containing all roles, which can start the process
+	 */
+	List<String> getProcessStartableRoles(String blipProcessName);
+	/**
+	 *  @param  blipProcessName     the blip process requested
+	 *  @param  blipHumanTaskName   the blip human task requested
+	 *  @return list of strings containing all roles, which can start the process
+	 */
+	List<String> getHumanTaskExecutableRoles(String blipProcessName, String blipHumanTaskName);
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrgElement.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrgElement.java
new file mode 100644
index 0000000..9e0e539
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrgElement.java
@@ -0,0 +1,62 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IPosition.
+ */
+public interface IOrgElement {
+
+	/**
+	 * Gets the name.
+	 *
+	 * @return the name
+	 */
+	String getName();
+
+	/**
+	 * Checks for superior.
+	 *
+	 * @return true, if successful
+	 */
+	boolean hasSuperior();
+
+	/**
+	 * Gets the superior.
+	 *
+	 * @return the superior
+	 */
+	String getSuperior();
+
+	/**
+	 * Checks for root node.
+	 *
+	 * @return true, if successful
+	 */
+	boolean hasRootNode();
+
+	/**
+	 * Gets the root node.
+	 *
+	 * @return the root node
+	 */
+	String getRootNode();
+	
+	/**
+	 * Gets the organization the node belongs to.
+	 *
+	 * @return the organization
+	 */
+	ISubOrganization getOrganization();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrganizationService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrganizationService.java
new file mode 100644
index 0000000..141a6ff
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IOrganizationService.java
@@ -0,0 +1,61 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IOrganizationService.
+ */
+public interface IOrganizationService {
+	
+	/**
+	 * Gets the organization.
+	 *
+	 * @param name the name
+	 * @return the organization
+	 */
+	AbstractSubOrganization getOrganization(final String name);
+	
+	/**
+	 * Gets the organizations.
+	 *
+	 * @return the organizations
+	 */
+	Collection<AbstractSubOrganization> getOrganizations();
+	
+	/**
+	 * Gets the organization names.
+	 *
+	 * @return the organization names
+	 */
+	Collection<String> getOrganizationNames();
+	
+	/**
+	 * Gets all defined roles.
+	 *
+	 * @return the roles
+	 */
+	Collection<String> getRoles();
+	
+	/**
+	 * @return instance containing all blip process permissions
+	 */
+	IBlipProcessPermissions getBlipProcessPermissions();
+	
+	/**
+	 * Reloads the models and refreshes internal structures.
+	 */
+	void reload();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPermissionList.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPermissionList.java
new file mode 100644
index 0000000..65130e9
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPermissionList.java
@@ -0,0 +1,43 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+import java.util.Set;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IPermissionList.
+ */
+public interface IPermissionList {
+
+	/** The Constant NEGATIVE_POSTFIX. */
+	public static final String NEGATIVE_POSTFIX = "_FALSE";
+	
+	/**
+	 * Sets the.
+	 *
+	 * @param roles the roles
+	 * @param authorizationServices the authorization services
+	 * @return the i permission list
+	 */
+	IPermissionList set(Collection<String> roles, AbstractAuthorization authorizationService);
+	
+	/**
+	 * Gets the permissions.
+	 *
+	 * @return the permissions
+	 */
+	Set<String> getPermissions();
+	
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPosition.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPosition.java
new file mode 100644
index 0000000..87f3800
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IPosition.java
@@ -0,0 +1,12 @@
+package org.eclipse.osbp.ui.api.useraccess;
+
+public interface IPosition extends IOrgElement {
+
+	/**
+	 * Gets the permission list.
+	 *
+	 * @return the permission list
+	 */
+	IPermissionList getPermissionList();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/ISubOrganization.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/ISubOrganization.java
new file mode 100644
index 0000000..8c51dd1
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/ISubOrganization.java
@@ -0,0 +1,79 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface ISubOrganization.
+ */
+@SuppressWarnings("all")
+public interface ISubOrganization extends IOrgElement {
+
+	/**
+	 * Gets the filter value list.
+	 *
+	 * @return the filter value list
+	 */
+	public java.util.List getFilterValueList();
+
+	/**
+	 * Gets the position node.
+	 *
+	 * @param name
+	 *            the name
+	 * @return the position node
+	 */
+	IPosition getPosition(final String name);
+
+	/**
+	 * Sets the position node.
+	 *
+	 * @param name
+	 *            the name
+	 * @return the position node
+	 */
+	void setPosition(IPosition position);
+
+	/**
+	 * Gets the position nodes including its sub organizations.
+	 *
+	 * @return the position nodes
+	 */
+	Collection<IPosition> getPositions();
+
+	/**
+	 * Gets the position nodes without its sub organizations.
+	 *
+	 * @return the position nodes
+	 */
+	Collection<IPosition> getOwnPositions();
+
+	/**
+	 * gets the sub organizations.
+	 * 
+	 * @return the sub organizations
+	 */
+	Collection<ISubOrganization> getSubOrganizations();
+
+	/**
+	 * Sets the sub organization.
+	 *
+	 * @param subOrg
+	 *            the sub organization
+	 * @return the position node
+	 */
+	void setSubOrganization(ISubOrganization subOrg);
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IUserAccessService.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IUserAccessService.java
new file mode 100644
index 0000000..21ba4b6
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/useraccess/IUserAccessService.java
@@ -0,0 +1,451 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.useraccess;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.ui.api.complexdatacontainer.IComplexDataContainer;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.Permission;
+import org.eclipse.osbp.ui.api.useraccess.AbstractAuthorization.PermissionResult;
+import org.eclipse.osbp.ui.api.userfilter.UserFilterMap;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IUserAccessService.
+ */
+public interface IUserAccessService extends IComplexDataContainer {
+
+	public final String ADMINISTRATOR = "Administrator";
+	// in case we have no organizational information
+	public final String DEFAULTUSERROLE = "Users";
+	public final String DEFAULTADMINROLE = "Admins";
+
+	/**
+	 * Gets the authorizations.
+	 *
+	 * @return the authorizations
+	 */
+	Object getAuthorizations();
+
+	/**
+	 * Gets the user.
+	 *
+	 * @return the user
+	 */
+	IDto getUser();
+
+	/**
+	 * Gets the profileimage id.
+	 *
+	 * @return the profileimage id
+	 */
+	String getProfileimageId();
+
+	/**
+	 * Gets the id.
+	 *
+	 * @return the id
+	 */
+	String getId();
+
+	/**
+	 * Gets the position name.
+	 *
+	 * @return the position name
+	 */
+	String getPositionName();
+
+	/**
+	 * Gets the email.
+	 *
+	 * @return the email
+	 */
+	String getEmail();
+
+	/**
+	 * Gets the position.
+	 *
+	 * @return the position
+	 */
+	AbstractPosition getPosition();
+
+	/**
+	 * Gets the perspective id.
+	 *
+	 * @return the perspective id
+	 */
+	String getPerspective();
+
+	/**
+	 * Gets the extra password.
+	 *
+	 * @return the extra password
+	 */
+	String getExtraPassword();
+
+	/**
+	 * Checks if the password is reset.
+	 *
+	 * @return true, if the password is reset.
+	 */
+	boolean isPasswordReset();
+
+	/**
+	 * Gets the roles.
+	 *
+	 * @return the roles
+	 */
+	Collection<String> getRoles();
+
+	/**
+	 * Gets the permissions.
+	 *
+	 * @return the permissions
+	 */
+	IPermissionList getPermissions();
+
+	/**
+	 * Checks if is permitted.
+	 *
+	 * @param permission
+	 *            the permission
+	 * @return the permission result
+	 */
+	PermissionResult isPermitted(Permission permission);
+
+	/**
+	 * Checks if is authenticated.
+	 *
+	 * @return true, if is authenticated
+	 */
+	boolean isAuthenticated();
+
+	/**
+	 * Authenticate.
+	 *
+	 * @param portal
+	 *            the portal
+	 * @param username
+	 *            the username
+	 * @param password
+	 *            the password
+	 * @return true, if successful
+	 */
+	boolean authenticate(String portal, String username, String password);
+
+	/**
+	 * Authenticate.
+	 *
+	 * @param portalId
+	 *            the portal id
+	 * @param username
+	 *            the username
+	 * @param password
+	 *            the password
+	 * @return true, if successful
+	 */
+	boolean authenticate(int portalId, String username, String password);
+
+	/**
+	 * Authenticate.
+	 *
+	 * @param username
+	 *            the username
+	 * @param password
+	 *            the password
+	 * @return true, if successful
+	 */
+	boolean authenticate(String username, String password);
+
+	/**
+	 * Sets the session attribute.
+	 *
+	 * @param key
+	 *            the key
+	 * @param value
+	 *            the value
+	 */
+	void setSessionAttribute(String key, Object value);
+
+	/**
+	 * Gets the session attribute.
+	 *
+	 * @param key
+	 *            the key
+	 * @return the session attribute
+	 */
+	Object getSessionAttribute(String key);
+
+	/**
+	 * Logout.
+	 */
+	void logout();
+
+	/**
+	 * Gets the all users.
+	 *
+	 * @return the all users
+	 */
+	Set<String> getAllUsers();
+
+	/**
+	 * Gets the all users positions.
+	 *
+	 * @return the all users positions
+	 */
+	Map<String, String> getAllUsersPositions();
+
+	/**
+	 * Gets the all emails.
+	 *
+	 * @return the all emails
+	 */
+	Set<String> getAllEmails();
+
+	/**
+	 * Find users for position.
+	 *
+	 * @param orgNode
+	 *            the org node
+	 * @return the sets the
+	 */
+	Set<String> findUsersForPosition(String orgNode);
+
+	/**
+	 * Gets the all positions.
+	 *
+	 * @return the all positions
+	 */
+	Set<AbstractPosition> getAllPositions();
+
+	/**
+	 * Find user account.
+	 *
+	 * @param username
+	 *            the username
+	 * @return the user account dto
+	 */
+	IDto findUserAccount(String username);
+
+	/**
+	 * Find position for user.
+	 *
+	 * @param username
+	 *            the username
+	 * @return the a position
+	 */
+	AbstractPosition findPositionForUser(String username);
+
+	/**
+	 * Find position for position name.
+	 *
+	 * @param positionName
+	 *            the position name
+	 * @return the a position
+	 */
+	AbstractPosition findPositionForPositionName(String positionName);
+
+	/**
+	 * Find roles for user.
+	 *
+	 * @param username
+	 *            the username
+	 * @return the collection
+	 */
+	Collection<String> findRolesForUser(String username);
+
+	/**
+	 * Find permissions for user.
+	 *
+	 * @param username
+	 *            the username
+	 * @return the i permission list
+	 */
+	IPermissionList findPermissionsForUser(String username);
+
+	/**
+	 * Check user name uniqueness for logged in users.
+	 *
+	 * @param username
+	 *            the user name
+	 * @return true, if successful
+	 */
+	boolean checkLoggedInUsernameExists(String username);
+
+	/**
+	 * Check user name uniqueness independent of a successful log in.
+	 *
+	 * @param username
+	 *            the user name
+	 * @return true, if successful
+	 */
+	boolean checkNotLoggedInUsernameExists(String username);
+
+	/**
+	 * Check email uniqueness.
+	 *
+	 * @param email
+	 *            the email
+	 * @return true, if successful
+	 */
+	boolean checkEmailExists(String email);
+
+	/**
+	 * Lock account.
+	 *
+	 * @param username
+	 *            the username
+	 * @param locked
+	 *            the locked
+	 */
+	void lockAccount(String username, boolean locked);
+
+	/**
+	 * Enable account.
+	 *
+	 * @param username
+	 *            the username
+	 * @param enabled
+	 *            the enabled
+	 */
+	void enableAccount(String username, boolean enabled);
+
+	/**
+	 * Sets the cookie hash.
+	 *
+	 * @param username
+	 *            the username
+	 * @param cookie
+	 *            the cookie
+	 */
+	void setCookieHash(String username, String cookie);
+
+	/**
+	 * Checks if is cookie valid.
+	 *
+	 * @param username
+	 *            the username
+	 * @param cookie
+	 *            the cookie
+	 * @return true, if is cookie valid
+	 */
+	boolean isCookieValid(String username, String cookie);
+
+	/**
+	 * Encrypt password.
+	 *
+	 * @param decryptedPassword
+	 *            the decrypted password
+	 * @return the string
+	 */
+	String encryptPassword(String decryptedPassword);
+
+	/**
+	 * Checks if is account locked.
+	 *
+	 * @param username
+	 *            the username
+	 * @return true, if is account locked
+	 */
+	boolean isAccountLocked(String username);
+
+	/**
+	 * Checks if the account is still not registered.
+	 *
+	 * @param username
+	 *            the username
+	 * @return true, the account is still not registered
+	 */
+	boolean isAccountNotRegistered(String username);
+
+	/**
+	 * Checks if is account enabled.
+	 *
+	 * @param username
+	 *            the username
+	 * @return true, if is account enabled
+	 */
+	boolean isAccountEnabled(String username);
+
+	/**
+	 * Encrypt passwords.
+	 */
+	void encryptPasswords();
+
+	/**
+	 * Gets the all user account roles.
+	 *
+	 * @return the all user account roles
+	 */
+	Map<String, Collection<String>> getAllUserAccountRoles();
+
+	/**
+	 * Gets the locale tag.
+	 *
+	 * @return the locale tag
+	 */
+	String getLocaleTag();
+
+	/**
+	 * Gets the layouting strategy.
+	 *
+	 * @return the layouting strategy
+	 */
+	String getLayoutingStrategy();
+
+	/**
+	 * Gets the focusing strategy.
+	 *
+	 * @return the focusing strategy
+	 */
+	String getFocusingStrategy();
+
+	/**
+	 * Gets the theme.
+	 *
+	 * @return the theme
+	 */
+	String getTheme();
+	
+	/**
+	 * Gets the prints the service.
+	 *
+	 * @return the prints the service
+	 */
+	String getPrintService();
+
+	/**
+	 * Gets the user filter map.
+	 *
+	 * @return the user filter map
+	 */
+	UserFilterMap getUserFilterMap();
+
+	/**
+	 * Checks if is superuser.
+	 *
+	 * @return true, if is superuser
+	 */
+	boolean isSuperuser();
+
+	/**
+	 * Checks if is supervisor.
+	 *
+	 * @return true, if is supervisor
+	 */
+	boolean isSupervisor();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/userfilter/UserFilterMap.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/userfilter/UserFilterMap.java
new file mode 100644
index 0000000..74cdb3d
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/api/userfilter/UserFilterMap.java
@@ -0,0 +1,42 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.api.userfilter;
+
+import java.util.HashMap;
+import java.util.List;
+
+public class UserFilterMap {
+	/** The in filter map. */
+	private HashMap<String, List<String>> inFilterMap = new HashMap<>();
+	
+	/** The not filter map. */
+	private HashMap<String, List<String>> notFilterMap = new HashMap<>();
+	
+	/**
+	 * Gets the in filter map.
+	 *
+	 * @return the in filter map
+	 */
+	public HashMap<String, List<String>> getInFilterMap() {
+		return inFilterMap;
+	}
+	
+	/**
+	 * Gets the not filter map.
+	 *
+	 * @return the not filter map
+	 */
+	public HashMap<String, List<String>> getNotFilterMap() {
+		return notFilterMap;
+	}
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationListener.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationListener.java
new file mode 100644
index 0000000..9be66a8
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationListener.java
@@ -0,0 +1,83 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.initialization;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public abstract class AbstractInitializationListener implements IInitializationListener {
+
+	private IInitializationNotification lastNotification = null;
+	
+	@Override
+	public void resendLastNotification() {
+		if	(lastNotification instanceof InitializationDoneNotification) {
+			notifyInitializationDone(lastNotification);
+		}
+		else if (lastNotification instanceof InitializationNotification) {
+			notifyInitializationStep(lastNotification);
+		}
+	}
+
+	private Set<IInitializationProvider> initializationProviders = new HashSet<IInitializationProvider>();
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationListener#bindInitializationProvider(org.eclipse.osbp.ui.initialization.AbstractInitializationProvider)
+	 */
+	@Override
+	public void addInitializationProvider(IInitializationProvider provider) {
+		initializationProviders.add(provider);
+		provider.addInitializationListener(this);
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationListener#unbindInitializationProvider(org.eclipse.osbp.ui.initialization.IInitializationProvider)
+	 */
+	@Override
+	public void removeInitializationProvider(IInitializationProvider provider) {
+		initializationProviders.remove(provider);
+		provider.removeInitializationListener(this);
+	}
+	
+	protected void removeAllInitializationProviders() {
+		for	(IInitializationProvider provider : initializationProviders) {
+			removeInitializationProvider(provider);
+		}
+	}
+	
+	protected boolean hasInitializationToBeDone() {
+		for	(IInitializationProvider provider : initializationProviders) {
+			if	(provider.hasInitializationToBeDone()) {
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationListener#notifyInitializationStep(org.eclipse.osbp.ui.initialization.InitializationNotification)
+	 */
+	@Override
+	public synchronized void notifyInitializationStep(IInitializationNotification notification) {
+		lastNotification = notification;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationListener#notifyInitializationDone(org.eclipse.osbp.ui.initialization.InitializationDoneNotification)
+	 */
+	@Override
+	public synchronized void notifyInitializationDone(IInitializationNotification notification) {
+		lastNotification = notification;
+		// unbindInitializationProvider(notification.getInitializationProvider());
+	}
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationProvider.java
new file mode 100644
index 0000000..f3b9009
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/AbstractInitializationProvider.java
@@ -0,0 +1,68 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.initialization;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public abstract class AbstractInitializationProvider implements IInitializationProvider {
+
+	private Set<AbstractInitializationListener> initializationListeners = new HashSet<AbstractInitializationListener>();
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationProvider#hasInitializationToBeDone()
+	 */
+	@Override
+	abstract public boolean hasInitializationToBeDone();
+	
+	abstract public String getInitializationProviderTitle();
+	
+	abstract public int getInitializationTotalSteps();
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationProvider#addInitializationListener(org.eclipse.osbp.ui.initialization.AbstractInitializationListener)
+	 */
+	@Override
+	public void addInitializationListener(AbstractInitializationListener listener) {
+		initializationListeners.add(listener);
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationProvider#removeInitializationListener(org.eclipse.osbp.ui.initialization.AbstractInitializationListener)
+	 */
+	@Override
+	public void removeInitializationListener(IInitializationListener listener) {
+		initializationListeners.remove(listener);
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationProvider#notifyInitializationStep(org.eclipse.osbp.ui.initialization.InitializationNotification)
+	 */
+	@Override
+	public void notifyInitializationStep(IInitializationNotification notification) {
+		for	(IInitializationListener listener : initializationListeners) {
+			listener.notifyInitializationStep(notification);
+		}
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationProvider#notifyInitializationDone()
+	 */
+	@Override
+	public void notifyInitializationDone() {
+		InitializationDoneNotification notification = new InitializationDoneNotification(this);
+		for	(IInitializationListener listener : initializationListeners) {
+			listener.notifyInitializationDone(notification);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationListener.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationListener.java
new file mode 100644
index 0000000..8370c3c
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationListener.java
@@ -0,0 +1,26 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.initialization;
+
+public interface IInitializationListener {
+
+	public void addInitializationProvider(IInitializationProvider provider);
+
+	public void removeInitializationProvider(IInitializationProvider provider);
+
+	public void notifyInitializationStep(IInitializationNotification notification);
+
+	public void notifyInitializationDone(IInitializationNotification notification);
+	
+	public void resendLastNotification();
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationNotification.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationNotification.java
new file mode 100644
index 0000000..dda8874
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationNotification.java
@@ -0,0 +1,36 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.initialization;
+
+public interface IInitializationNotification {
+
+	public abstract IInitializationProvider getInitializationProvider();
+
+	/**
+	 * Gets the recommended progress value.
+	 * 
+	 * It's calculated by the actual steps number, total count of steps and optional the progress of the actual step 
+	 *
+	 * @return the recommended progress value
+	 */
+	public abstract double getRecommendedProgressValue();
+
+	/**
+	 * Gets the recommended progress title.
+	 *
+	 * @param withPercent the with percent
+	 * @return the recommended progress title
+	 */
+	public abstract String getRecommendedProgressTitle(boolean withPercent);
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationProvider.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationProvider.java
new file mode 100644
index 0000000..3abee92
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/IInitializationProvider.java
@@ -0,0 +1,30 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.initialization;
+
+public interface IInitializationProvider {
+
+	abstract public boolean hasInitializationToBeDone();
+
+	public abstract void addInitializationListener(
+			AbstractInitializationListener listener);
+
+	public abstract void removeInitializationListener(
+			IInitializationListener listener);
+
+	public abstract void notifyInitializationStep(
+			IInitializationNotification notification);
+
+	public abstract void notifyInitializationDone();
+
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationDoneNotification.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationDoneNotification.java
new file mode 100644
index 0000000..41b4e50
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationDoneNotification.java
@@ -0,0 +1,26 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.initialization;
+
+/**
+ * The Class InitializationDoneNotification.
+ */
+public final class InitializationDoneNotification extends InitializationNotification {
+	
+	/**
+	 * Instantiates a new initialization done notification.
+	 */
+	public InitializationDoneNotification(AbstractInitializationProvider initializationProvider) {
+		super(initializationProvider);
+	}
+}
diff --git a/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationNotification.java b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationNotification.java
new file mode 100644
index 0000000..94d99f1
--- /dev/null
+++ b/org.eclipse.osbp.ui.api/src/org/eclipse/osbp/ui/initialization/InitializationNotification.java
@@ -0,0 +1,155 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.ui.initialization;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Notification with information about the actual initialization.
+ */
+public class InitializationNotification implements IInitializationNotification {
+
+	/** The provider title. */
+	private final IInitializationProvider initializationProvider;
+
+	/** The provider title. */
+	private final String providerTitle;
+
+	/**  flag is the total initialization has been done. */
+	private final boolean done;
+	
+	/** The number of steps done. */
+	private final int stepsDone;
+	
+	/** The step title. */
+	private final String stepTitle;
+	
+	/** The total steps. */
+	private final int totalSteps;
+	
+	/** The progress of step. */
+	private final double progressOfStep;
+
+	/**
+	 * Instantiates a new initialization notification for a done.
+	 *
+	 * @param providerTitle the provider title
+	 * @param totalSteps the total steps
+	 */
+	protected InitializationNotification(AbstractInitializationProvider initializationProvider) {
+		this(initializationProvider, null, initializationProvider.getInitializationTotalSteps(), 1.0);
+	}
+	
+	/**
+	 * Instantiates a new initialization notification.
+	 *
+	 * @param providerTitle the provider title
+	 * @param totalSteps the total steps
+	 * @param stepTitle the step title
+	 * @param numberOfStep the number of step
+	 */
+	public InitializationNotification(AbstractInitializationProvider initializationProvider, String stepTitle, int stepsDone) {
+		this(initializationProvider, stepTitle, stepsDone, -1.0);
+	}
+	
+	/**
+	 * Instantiates a new initialization notification.
+	 *
+	 * @param providerTitle 	the provider title
+	 * @param totalSteps 		the count of total steps
+	 * @param stepTitle 		the actual steps title
+	 * @param numberOfStep 		the number of actual step
+	 * @param progressOfStep 	the progress of actual step
+	 */
+	public InitializationNotification(AbstractInitializationProvider initializationProvider, String stepTitle, int stepsDone, double progressOfStep) {
+		this.initializationProvider = initializationProvider;
+		this.providerTitle = initializationProvider.getInitializationProviderTitle().trim();
+		this.totalSteps = Math.max(1, initializationProvider.getInitializationTotalSteps());
+		if	(stepTitle == null || stepTitle.trim().isEmpty()) {
+			this.stepTitle = null;
+		}
+		else {
+			this.stepTitle = stepTitle.trim();
+		}
+		if	(stepsDone < 1) {
+			this.stepsDone = 1;
+		}
+		else if (stepsDone > totalSteps) {
+			this.stepsDone = totalSteps;
+		}
+		else {
+			this.stepsDone = stepsDone;
+		}
+		// --- if a negative value is set, no progress of the actual step is available
+		if	(progressOfStep < 0.0) {
+			this.progressOfStep = -1.0;
+		}
+		// --- otherwise the 
+		else {
+			this.progressOfStep = Math.min(1.0, progressOfStep);
+		}
+		this.done = ((this.stepsDone >= this.totalSteps) && (progressOfStep >= 1.0));
+	}
+	
+	public boolean isDone() {
+		return done;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationNotification#getInitializationProvider()
+	 */
+	@Override
+	public IInitializationProvider getInitializationProvider() {
+		return initializationProvider;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationNotification#getRecommendedProgressValue()
+	 */
+	@Override
+	public double getRecommendedProgressValue() {
+		// --- calculate the progress value depending on steps level ---
+		double progressValue = ((double)stepsDone - 1) / ((double)totalSteps);
+		// --- if available add the step specific progress value ---
+		if	(progressOfStep > 0.0) {
+			progressValue += progressOfStep / ((double)totalSteps);
+		}
+		// --- ensure a progress value between 0.0 and 1.0
+		return Math.min(1.0, Math.max(0.0, progressValue));
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.ui.initialization.IInitializationNotification#getRecommendedProgressTitle(boolean)
+	 */
+	@Override
+	public String getRecommendedProgressTitle(boolean withPercent) {
+		String progressTitle = providerTitle+" ("+stepsDone+"/"+totalSteps+")";
+		if	(done) {
+			progressTitle += " done";
+		}
+		else if	(stepTitle != null) {
+			progressTitle += " "+stepTitle;
+		}
+		if	(withPercent) {
+			double progressValue = getRecommendedProgressValue();
+			int percent = (int)(progressValue * 100.0);
+			if	((percent == 0) && (progressValue > 0.0)) {
+				percent = 1;
+			}
+			if	((percent == 100) && (progressValue < 1.0)) {
+				percent = 99;
+			}
+			progressTitle += " - "+percent+"%";
+		}
+		return progressTitle;
+	}
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..03f7b09
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--# Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation API and implementation -->
+<!--#======================================================================= -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.eclipse.osbp.releng.maven</groupId>
+        <artifactId>org.eclipse.osbp.releng.maven.parent.tycho</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.eclipse.osbp.ui.api</groupId>
+    <artifactId>org.eclipse.osbp.ui.api.aggregator</artifactId>
+    <version>0.9.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <url>${osbp.site.repository.url}</url>
+    <scm>
+        <url>${osbp.scm.url}</url>
+        <connection>${osbp.scm.connection}</connection>
+        <developerConnection>${osbp.scm.connection.dev}</developerConnection>
+        <tag>HEAD</tag>
+    </scm>
+    <distributionManagement>
+        <site>
+            <id>gh-pages</id>
+            <name>OSBP GitHub Pages</name>
+            <url>${distribution.site.url}</url>
+        </site>
+    </distributionManagement>
+
+	<properties>
+		<osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
+	</properties>
+
+    <modules>
+        <module>org.eclipse.osbp.ui.api</module>
+        <module>org.eclipse.osbp.ui.api.feature</module>
+    </modules>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-javadoc-plugin</artifactId>
+                    <configuration>
+                        <skip>true</skip>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.eclipse.tycho</groupId>
+                    <artifactId>target-platform-configuration</artifactId>
+                    <version>${tycho-version}</version>
+                    <configuration>
+                        <resolver>p2</resolver>
+                        <pomDependencies>consider</pomDependencies>
+                        <environments>
+                            <environment>
+                                <os>win32</os>
+                                <ws>win32</ws>
+                                <arch>x86_64</arch>
+                            </environment>
+                            <environment>
+                                <os>linux</os>
+                                <ws>gtk</ws>
+                                <arch>x86</arch>
+                            </environment>
+                            <environment>
+                                <os>linux</os>
+                                <ws>gtk</ws>
+                                <arch>x86_64</arch>
+                            </environment>
+                            <environment>
+                                <os>macosx</os>
+                                <ws>cocoa</ws>
+                                <arch>x86_64</arch>
+                            </environment>
+                        </environments>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>