diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.classpath b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.classpath
new file mode 100644
index 0000000..dbde515
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.classpath
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.gitignore b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.project b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.project
new file mode 100644
index 0000000..f2d6b47
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dependencies.bundle.mondrian.osgi</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..714351a
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.pde.core.prefs b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..ba582c2
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,2 @@
+BUNDLE_ROOT_PATH=target/classes
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/LICENSE.txt b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/LICENSE.txt
new file mode 100644
index 0000000..fc5938d
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/LICENSE.txt
@@ -0,0 +1,140 @@
+Eclipse Foundation Software User Agreement
+
+November 22, 2017
+
+Usage Of Content
+
+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.
+
+Applicable Licenses
+
+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 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
+
+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").
+
+-   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").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   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.
+-   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.
+
+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:
+
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
+
+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.
+
+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):
+
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
+
+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.
+
+Use of Provisioning Technology
+
+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
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
+
+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:
+
+1.  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.
+2.  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.
+3.  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.
+
+Cryptography
+
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
+
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about.html b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about.html
new file mode 100644
index 0000000..888e727
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about.html
@@ -0,0 +1,32 @@
+<!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>November 30, 2017</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 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</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>
+
+<p>
+The bundle contains software licensed under the <a href="about_files/Apache-license-2.0.txt">Apache License 2.0</a><br>
+
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about.ini b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/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.dependencies.bundle.mondrian.3.14.0.osgi/about.mappings b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/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.dependencies.bundle.mondrian.3.14.0.osgi/about.properties b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about.properties
new file mode 100644
index 0000000..e1212cf
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about.properties
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0 
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+################ 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 2.0 \n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n\
+\n\
+\n\
+The bundle contains software licensed under the Apache License 2.0\n\
+\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about_files/Apache-license-2.0.txt b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about_files/Apache-license-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/about_files/Apache-license-2.0.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) 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. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/mondrian.properties b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/mondrian.properties
new file mode 100644
index 0000000..9089310
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/mondrian.properties
@@ -0,0 +1,1099 @@
+# This software is subject to the terms of the Eclipse Public License 2.0 
+# Agreement, available at the following URL:
+# https://www.eclipse.org/legal/epl-2.0/.
+#.
+# SPDX-License-Identifier: EPL-2.0.
+# You must accept the terms of that agreement to use this software.
+#
+# Copyright (C) 2001-2005 Julian Hyde
+# Copyright (C) 2005-2017 Hitachi Vantara and others
+# All Rights Reserved.
+
+###############################################################################
+# String property that is the AggRule element's tag value.
+#
+# Normally, this property is not set by a user.
+#
+#mondrian.rolap.aggregates.rule.tag=default
+
+###############################################################################
+# String property containing the name of the file which defines the
+# rules for recognizing an aggregate table. Can be either a resource in
+# the Mondrian jar or a URL.
+#
+# The default value is "/DefaultRules.xml", which is in the
+# mondrian.rolap.aggmatcher package in Mondrian.jar.
+#
+# Normally, this property is not set by a user.
+#
+#mondrian.rolap.aggregates.rules=/DefaultRules.xml
+
+###############################################################################
+# Alerting action to take in case native evaluation of a function is
+# enabled but not supported for that function's usage in a particular
+# query.  (No alert is ever raised in cases where native evaluation would
+# definitely have been wasted effort.)
+#
+# Recognized actions:
+#
+#
+# * OFF:  do nothing (default action, also used if
+# unrecognized action is specified)
+# * WARN:  log a warning to RolapUtil logger
+# * ERROR:  throw an instance of
+# NativeEvaluationUnsupportedException
+#
+#mondrian.native.unsupported.alert=OFF
+
+###############################################################################
+# Boolean property that controls whether the MDX parser resolves uses
+# case-sensitive matching when looking up identifiers. The default is
+# false.
+#
+#mondrian.olap.case.sensitive=false
+
+###############################################################################
+# Property that contains the URL of the catalog to be used by
+# mondrian.tui.CmdRunner and XML/A Test.
+#
+#mondrian.catalogURL=
+
+###############################################################################
+# Integer property that, if set to a value greater than zero, sets a hard limit on the
+# number of cells that are batched together when building segments.
+#
+#mondrian.rolap.cellBatchSize=-1
+
+###############################################################################
+# Positive integer property that determines loop iterations number between checks for whether the current mdx query has been cancelled or timeout was exceeded.
+# Setting the interval too small may result in a performance degradation when reading large result sets;
+# setting it too high can cause a big delay between the query being marked as cancelled or timeout was exceeded and system resources associated to it being released.
+#
+#mondrian.util.checkCancelOrTimeoutInterval=1000
+
+###############################################################################
+# Boolean property that controls whether aggregate tables
+# are ordered by their volume or row count.
+#
+# If true, Mondrian uses the aggregate table with the smallest volume
+# (number of rows multiplied by number of columns); if false, Mondrian
+# uses the aggregate table with the fewest rows.
+#
+#mondrian.rolap.aggregates.ChooseByVolume=false
+
+###############################################################################
+# Boolean property that controls whether sibling members are
+# compared according to order key value fetched from their ordinal
+# expression.  The default is false (only database ORDER BY is used).
+#
+#mondrian.rolap.compareSiblingsByOrderKey=false
+
+###############################################################################
+# Property that defines
+# when to apply the crossjoin optimization algorithm.
+#
+# If a crossjoin input list's size is larger than this property's
+# value and the axis has the "NON EMPTY" qualifier, then
+# the crossjoin non-empty optimizer is applied.
+# Setting this value to '0' means that for all crossjoin
+# input lists in non-empty axes will have the optimizer applied.
+# On the other hand, if the value is set larger than any possible
+# list, say Integer.MAX_VALUE, then the optimizer
+# will never be applied.
+#
+#mondrian.olap.fun.crossjoin.optimizer.size=0
+
+###############################################################################
+# Property that defines
+# the name of the plugin class that resolves data source names to
+# javax.sql.DataSource objects. The class must implement the
+# mondrian.spi.DataSourceResolver interface. If not specified,
+# the default implementation uses JNDI to perform resolution.
+#
+# Example:
+# mondrian.spi.dataSourceResolverClass=mondrian.spi.impl.JndiDataSourceResolver
+#
+#mondrian.spi.dataSourceResolverClass=
+
+###############################################################################
+# Boolean property that controls whether a RolapStar's
+# aggregate data cache is cleared after each query.
+# If true, no RolapStar will cache aggregate data from one
+# query to the next (the cache is cleared after each query).
+#
+#mondrian.rolap.star.disableCaching=false
+
+###############################################################################
+# Boolean property that controls whether the data from segments
+# is cached locally. To create custom caches, look for the
+# SegmentCache SPI.
+#
+#mondrian.rolap.star.disableLocalSegmentCache=false
+
+###############################################################################
+# Property that controls whether aggregation cache hit / miss
+# counters will be enabled.
+#
+# Note that this will affect performance due to existence of sync
+# blocks.
+#
+# @deprecated This property is no longer used, and will be removed in
+# mondrian-4.0.
+#
+#mondrian.rolap.agg.enableCacheHitCounters=false
+
+###############################################################################
+# If disabled, Mondrian will throw an exception if someone attempts to
+# perform a drillthrough of any kind.
+#
+#mondrian.drillthrough.enable=true
+
+###############################################################################
+# Boolean property that controls whether to use a cache for frequently
+# evaluated expressions. With the cache disabled, an expression like
+# Rank([Product].CurrentMember,
+# Order([Product].MEMBERS, [Measures].[Unit Sales])) would perform
+# many redundant sorts. The default is true.
+#
+#mondrian.expCache.enable=true
+
+###############################################################################
+# Property that defines
+# whether to generate SQL queries using the GROUPING SETS
+# construct for rollup. By default it is not enabled.
+#
+# Ignored on databases which do not support the
+# GROUPING SETS construct (see
+# mondrian.spi.Dialect#supportsGroupingSets).
+#
+#mondrian.rolap.groupingsets.enable=false
+
+###############################################################################
+# Property which turns on or off the in-memory rollup
+# of segment data. Defaults to true.
+#
+#mondrian.rolap.EnableInMemoryRollup=true
+
+###############################################################################
+# If enabled some NON EMPTY CrossJoin will be computed in SQL.
+#
+#mondrian.native.crossjoin.enable=true
+
+###############################################################################
+# If enabled some Filter() will be computed in SQL.
+#
+#mondrian.native.filter.enable=true
+
+###############################################################################
+# If enabled some NON EMPTY set operations like member.children,
+# level.members and member descendants will be computed in SQL.
+#
+#mondrian.native.nonempty.enable=true
+
+###############################################################################
+# If enabled some TopCount will be computed in SQL.
+#
+#mondrian.native.topcount.enable=true
+
+###############################################################################
+# Boolean property that controls whether each query axis implicit has the
+# NON EMPTY option set. The default is false.
+#
+#mondrian.rolap.nonempty=false
+
+###############################################################################
+# Property that determines whether to cache RolapCubeMember objects,
+# each of which associates a member of a shared hierarchy with a
+# particular cube in which it is being used.
+#
+# The default is true, that is, use a cache. If you wish to use
+# the member cache control aspects of mondrian.olap.CacheControl,
+# you must set this property to false.
+#
+# RolapCubeMember has recently become more lightweight to
+# construct, and we may obsolete this cache and this
+# property.
+#
+#mondrian.rolap.EnableRolapCubeMemberCache=true
+
+###############################################################################
+# If enabled, first row in the result of an XML/A drill-through request
+# will be filled with the total count of rows in underlying database.
+#
+#mondrian.xmla.drillthroughTotalCount.enable=true
+
+###############################################################################
+# Boolean property that controls whether to notify the Mondrian system
+# when a MondrianProperties property value changes.
+#
+# This allows objects dependent on Mondrian properties to react (that
+# is, reload), when a given property changes via, say,
+# MondrianProperties.instance().populate(null) or
+# MondrianProperties.instance().QueryLimit.set(50).
+#
+#mondrian.olap.triggers.enable=true
+
+###############################################################################
+# Property that defines how many previous execution instances the
+# Monitor keeps in its history so that it can send the events
+# which happen after the fact. Setting this property too high will make the
+# JVM run out of memory. Setting it too low might prevent some events from
+# reaching the listeners of the monitor.
+# This property is for internal use only and should not be changed
+# unless required. Defaults to 1,000.
+#
+#mondrian.server.monitor.executionHistorySize=1000
+
+###############################################################################
+# Property that defines
+# the name of the class used to compile scalar expressions.
+#
+# If the value is
+# non-null, it is used by the ExpCompiler.Factory
+# to create the implementation.
+#
+# To test that for all test MDX queries that all functions can
+# handle requests for ITERABLE, LIST and MUTABLE_LIST evaluation
+# results, use the following:
+#
+# mondrian.calc.ExpCompiler.class=mondrian.olap.fun.ResultStyleCompiler
+#
+#mondrian.calc.ExpCompiler.class=
+
+###############################################################################
+# If this property is true, when looking for native evaluation of an
+# expression, Mondrian will expand non-native sub-expressions into
+# lists of members.
+#
+#mondrian.native.ExpandNonNative=false
+
+###############################################################################
+# Property that defines
+# whether to generate joins to filter out members in a snowflake
+# dimension that do not have any children.
+#
+# If true (the default), some queries to query members of high
+# levels snowflake dimensions will be more expensive. If false, and if
+# there are rows in an outer snowflake table that are not referenced by
+# a row in an inner snowflake table, then some queries will return members
+# that have no children.
+#
+# Our recommendation, for best performance, is to remove rows outer
+# snowflake tables are not referenced by any row in an inner snowflake
+# table, during your ETL process, and to set this property to
+# false.
+#
+#mondrian.rolap.FilterChildlessSnowflakeMembers=true
+
+###############################################################################
+# Property containing the JDBC URL of the FoodMart database.
+# The default value is to connect to an ODBC data source called
+# "MondrianFoodMart".
+#
+# To run the test suite, first load the FoodMart data set into the
+# database of your choice. Then set the driver.classpath,
+# mondrian.foodmart.jdbcURL and mondrian.jdbcDrivers properties, by
+# un-commenting and modifying one of the sections below.
+# Put the JDBC driver jar into mondrian/testlib.
+#
+# Here are example property settings for various databases.
+#
+# ### Derby: needs user and password ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:derby:demo/derby/foodmart
+# mondrian.foodmart.jdbcUser=sa
+# mondrian.foodmart.jdbcPassword=sa
+# mondrian.jdbcDrivers=org.apache.derby.jdbc.EmbeddedDriver
+# driver.classpath=testlib/derby.jar
+#
+# ### FireBirdSQL ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:firebirdsql:localhost/3050:/mondrian/foodmart.gdb
+# mondrian.jdbcDrivers=org.firebirdsql.jdbc.FBDriver
+# driver.classpath=/jdbc/fb/firebirdsql-full.jar
+#
+# ### Greenplum (similar to Postgres) ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:postgresql://localhost/foodmart?user=gpadmin&password=xxxx
+# mondrian.foodmart.jdbcUser=foodmart
+# mondrian.foodmart.jdbcPassword=foodmart
+# mondrian.jdbcDrivers=org.postgresql.Driver
+# driver.classpath=lib/postgresql-8.2-504.jdbc3.jar
+#
+# ### LucidDB (see <a>instructions</a>) ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:luciddb:http://localhost
+# mondrian.foodmart.jdbcUser=foodmart
+# mondrian.jdbcDrivers=org.luciddb.jdbc.LucidDbClientDriver
+# driver.classpath=/path/to/luciddb/plugin/LucidDbClient.jar
+#
+# ### Oracle (needs user and password) ###
+#
+# oracle.home=G:/oracle/product/10.1.0/Db_1
+# mondrian.foodmart.jdbcURL.oracle=jdbc:oracle:thin:@//host:port/service_name
+# mondrian.foodmart.jdbcURL=jdbc:oracle:thin:foodmart/foodmart@//stilton:1521/orcl
+# mondrian.foodmart.jdbcURL=jdbc:oracle:oci8:foodmart/foodmart@orcl
+# mondrian.foodmart.jdbcUser=FOODMART
+# mondrian.foodmart.jdbcPassword=oracle
+# mondrian.jdbcDrivers=oracle.jdbc.OracleDriver
+# driver.classpath=/home/jhyde/open/mondrian/lib/ojdbc14.jar
+#
+# ### ODBC (Microsoft Access) ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:odbc:MondrianFoodMart
+# mondrian.jdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver
+# driver.classpath=
+#
+# ###  Hypersonic ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:hsqldb:demo/hsql/FoodMart
+# mondrian.jdbcDrivers=org.hsqldb.jdbcDriver
+# driver.classpath=xx
+#
+# ###  MySQL: can have user and password set in JDBC URL ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:mysql://localhost/foodmart?user=foodmart&password=foodmart
+# mondrian.foodmart.jdbcURL=jdbc:mysql://localhost/foodmart
+# mondrian.foodmart.jdbcUser=foodmart
+# mondrian.foodmart.jdbcPassword=foodmart
+# mondrian.jdbcDrivers=com.mysql.jdbc.Driver
+# driver.classpath=D:/mysql-connector-3.1.12
+#
+# mariadb: needs user and password set in JDBC URL
+# mondrian.foodmart.jdbcURL=jdbc:mariadb://localhost:3307/foodmart3?user=root&password=mypassword
+# mondrian.jdbcDrivers=org.mariadb.jdbc.Driver
+#driver.classpath=D:/mariadb-java-client-1.4.6.jar
+#
+# ###  NuoDB ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:com.nuodb://localhost/foodmart?schema=mondrian
+# mondrian.foodmart.jdbcUser=foodmart
+# mondrian.foodmart.jdbcPassword=foodmart
+# mondrian.jdbcDrivers=com.nuodb.jdbc.Driver
+# mondrian.foodmart.jdbcSchema=mondrian
+# driver.classpath=/opt/nuodb/jar/nuodbjdbc.jar
+#
+# ### Infobright ###
+# As MySQL. (Infobright uses a MySQL driver, version 5.1 and later.)
+#
+# ### Ingres ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:ingres://192.168.200.129:II7/MondrianFoodMart;LOOP=on;AUTO=multi;UID=ingres;PWD=sergni
+# mondrian.jdbcDrivers=com.ingres.jdbc.IngresDriver
+# driver.classpath=c:/ingres2006/ingres/lib/iijdbc.jar
+#
+# ### Postgres: needs user and password ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:postgresql://localhost/FM3
+# mondrian.foodmart.jdbcUser=postgres
+# mondrian.foodmart.jdbcPassword=pgAdmin
+# mondrian.jdbcDrivers=org.postgresql.Driver
+#
+# ### Neoview ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:hpt4jdbc://localhost:18650/:schema=PENTAHO;serverDataSource=PENTAHO_DataSource
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=com.hp.t4jdbc.HPT4Driver
+# driver.classpath=/some/path/hpt4jdbc.jar
+#
+# ### Netezza: mimics Postgres ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:netezza://127.0.1.10/foodmart
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=org.netezza.Driver
+# driver.classpath=/some/path/nzjdbc.jar
+#
+# ### Sybase ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:jtds:sybase://xxx.xxx.xxx.xxx:port/dbName
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=net.sourceforge.jtds.jdbc.Driver
+# driver.classpath=/some/path/jtds-1.2.jar
+#
+# ### Teradata ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:teradata://DatabaseServerName/DATABASE=FoodMart
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=com.ncr.teradata.TeraDriver
+# driver.classpath=/some/path/terajdbc/classes/terajdbc4.jar
+#
+# ### Vertica ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:vertica://xxx.xxx.xxx.xxx:port/dbName
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=com.vertica.Driver
+# driver.classpath=/some/path/vertica.jar
+#
+# ### Vectorwise ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:ingres://xxx.xxx.xxx.xxxport/dbName
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=com.ingres.jdbc.IngresDriver 
+# driver.classpath=/some/path/iijdbc.jar
+#
+#mondrian.foodmart.jdbcURL=jdbc:odbc:MondrianFoodMart
+
+###############################################################################
+# Boolean property that controls whether to print the SQL code
+# generated for aggregate tables.
+#
+# If set, then as each aggregate request is processed, both the lost
+# and collapsed dimension create and insert sql code is printed.
+# This is for use in the CmdRunner allowing one to create aggregate table
+# generation sql.
+#
+mondrian.rolap.aggregates.generateSql=true
+
+###############################################################################
+# Boolean property that controls pretty-print mode.
+#
+# If true, the all SqlQuery SQL strings will be generated in
+# pretty-print mode, formatted for ease of reading.
+#
+mondrian.rolap.generate.formatted.sql=true
+
+###############################################################################
+# Property that establishes the amount of chunks for querying cells
+# involving high-cardinality dimensions.
+# Should prime with #ResultLimit mondrian.result.limit.
+#
+#mondrian.result.highCardChunkSize=1
+
+###############################################################################
+# Property that defines whether non-existent member errors should be
+# ignored during schema load. If so, the non-existent member is treated
+# as a null member.
+#
+#mondrian.rolap.ignoreInvalidMembers=false
+
+###############################################################################
+# Property that defines whether non-existent member errors should be
+# ignored during query validation. If so, the non-existent member is
+# treated as a null member.
+#
+#mondrian.rolap.ignoreInvalidMembersDuringQuery=false
+
+###############################################################################
+# Property that defines whether to ignore measure when non joining
+# dimension is in the tuple during aggregation.
+#
+# If there are unrelated dimensions to a measure in context during
+# aggregation, the measure is ignored in the evaluation context. This
+# behaviour kicks in only if the CubeUsage for this measure has
+# IgnoreUnrelatedDimensions attribute set to false.
+#
+# For example, Gender doesn't join with [Warehouse Sales] measure.
+#
+# With mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=true
+# Warehouse Sales gets eliminated and is ignored in the aggregate
+# value.
+#
+#                                     [Store Sales] + [Warehouse Sales]
+# SUM({Product.members * Gender.members})    7,913,333.82
+#
+# With mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=false
+# Warehouse Sales with Gender All level member contributes to the aggregate
+# value.
+#
+#                                      [Store Sales] + [Warehouse Sales]
+# SUM({Product.members * Gender.members})    9,290,730.03
+#
+# On a report where Gender M, F and All members exist a user will see a
+# large aggregated value compared to the aggregated value that can be
+# arrived at by summing up values against Gender M and F. This can be
+# confusing to the user. This feature can be used to eliminate such a
+# situation.
+#
+#mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=false
+
+###############################################################################
+# Integer property indicating the maximum number of iterations
+# allowed when iterating over members to compute aggregates.  A value of
+# 0 (the default) indicates no limit.
+#
+#mondrian.rolap.iterationLimit=0
+
+###############################################################################
+# Not documented.
+#
+#mondrian.test.Iterations=1
+
+###############################################################################
+# Property containing a list of JDBC drivers to load automatically.
+# Must be a comma-separated list of class names, and the classes must be
+# on the class path.
+#
+#mondrian.jdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver,org.hsqldb.jdbcDriver,oracle.jdbc.OracleDriver,com.mysql.jdbc.Driver
+
+###############################################################################
+# Property that defines the JdbcSchema factory class which
+# determines the list of tables and columns of a specific datasource.
+#
+# @see mondrian.rolap.aggmatcher.JdbcSchema
+#
+#mondrian.rolap.aggregates.jdbcFactoryClass=
+
+###############################################################################
+# Property which governs whether child members or members of a level are precached
+#                 when child or level members are requested within a
+#                 query expression.  For example,
+#                 if an expression references two child members in the store dimension,
+#                 like { [Store].[USA].[CA], [Store].[USA].[OR] }, precaching will
+#                 load *all* children under [USA] rather than just the 2 requested.
+#                 The threshold value is
+#                 compared against the cardinality of the level to determine
+#                 whether or not precaching should be performed.  If cardinality is
+#                 lower than the threshold value Mondrian will precache.  Setting
+#                 this property to 0 effectively disables precaching.
+#
+#mondrian.rolap.precache.threshold=300
+
+###############################################################################
+# String property that holds the
+# name of the class whose resource bundle is to be used to for this
+# schema. For example, if the class is com.acme.MyResource,
+# mondrian will look for a resource bundle called
+# com/acme/MyResource_locale.properties on the class path.
+# (This property has a confusing name because in a previous release it
+# actually held a file name.)
+#
+# Used for the mondrian.i18n.LocalizingDynamicSchemaProcessor;
+# see <a>Internationalization</a>
+# for more details.
+#
+# Default value is null.
+#
+#mondrian.rolap.localePropFile=
+
+###############################################################################
+# Set mondrian logging information if not provided by containing application.
+#
+# Examples:
+#
+#
+# log4j.configuration=file://full/path/log4j.xml
+# log4j.configuration=file:log4j.properties
+#
+#log4j.configuration=
+
+###############################################################################
+# Max number of constraints in a single 'IN' SQL clause.
+#
+# This value may be variant among database products and their runtime
+# settings. Oracle, for example, gives the error "ORA-01795: maximum
+# number of expressions in a list is 1000".
+#
+# Recommended values:
+#
+# * Oracle: 1,000
+# * DB2: 2,500
+# * Other: 10,000
+#
+#mondrian.rolap.maxConstraints=1000
+
+###############################################################################
+# Boolean property that defines the maximum number of passes
+# allowable while evaluating an MDX expression.
+#
+# If evaluation exceeds this depth (for example, while evaluating a
+# very complex calculated member), Mondrian will throw an error.
+#
+#mondrian.rolap.evaluate.MaxEvalDepth=10
+
+###############################################################################
+# Property that defines
+# limit on the number of rows returned by XML/A drill through request.
+#
+#mondrian.xmla.drillthroughMaxRows=1000
+
+###############################################################################
+# Property that defines whether the MemoryMonitor should
+# be enabled. By default it is disabled; memory monitor is not available
+# before Java version 1.5.
+#
+#mondrian.util.memoryMonitor.enable=false
+
+###############################################################################
+# Property that defines
+# the name of the class used as a memory monitor.
+#
+# If the value is
+# non-null, it is used by the MemoryMonitorFactory
+# to create the implementation.
+#
+#mondrian.util.MemoryMonitor.class=
+
+###############################################################################
+# Property that defines the default MemoryMonitor
+# percentage threshold. If enabled, when Java's memory monitor detects
+# that post-garbage collection is above this value, notifications are
+# generated.
+#
+#mondrian.util.memoryMonitor.percentage.threshold=90
+
+###############################################################################
+# Property that controls the maximum number of results contained in a
+# NativizeSet result set.
+#
+# If the number of tuples contained in the result set exceeds this
+# value Mondrian throws a LimitExceededDuringCrossjoin error.
+#
+#mondrian.native.NativizeMaxResults=150000
+
+###############################################################################
+# Property that controls minimum expected cardinality required in
+# order for NativizeSet to natively evaluate a query.
+#
+# If the expected cardinality falls below this level the query is
+# executed non-natively.
+#
+# It is possible for the actual cardinality to fall below this
+# threshold even though the expected cardinality falls above this
+# threshold.  In this case the query will be natively evaluated.
+#
+#mondrian.native.NativizeMinThreshold=100000
+
+###############################################################################
+# Property determines if elements of dimension (levels, hierarchies,
+# members) need to be prefixed with dimension name in MDX query.
+#
+# For example when the property is true, the following queries
+# will error out. The same queries will work when this property
+# is set to false.
+#
+# select {[M]} on 0 from sales
+# select {[USA]} on 0 from sales
+# select {[USA].[CA].[Santa Monica]}  on 0 from sales
+#
+# When the property is set to true, any query where elements are
+# prefixed with dimension name as below will work
+#
+# select {[Gender].[F]} on 0 from sales
+# select {[Customers].[Santa Monica]} on 0 from sales
+#
+# Please note that this property does not govern the behaviour
+# wherein
+#
+# [Gender].[M]
+#
+# is resolved into a fully qualified
+#
+# [Gender].[M]
+#
+#  In a scenario where the schema is very large and dimensions have
+# large number of members a MDX query that has a invalid member in it will
+# cause mondrian to to go through all the dimensions, levels, hierarchies,
+# members and properties trying to resolve the element name. This behavior
+# consumes considerable time and resources on the server. Setting this
+# property to true will make it fail fast in a scenario where it is
+# desirable.
+#
+#mondrian.olap.elements.NeedDimensionPrefix=false
+
+###############################################################################
+# Property that defines
+# the behavior of division if the denominator evaluates to zero.
+#
+# If false (the default), if a division has a non-null numerator and
+# a null denominator, it evaluates to "Infinity", which conforms to SSAS
+# behavior.
+#
+# If true, the result is null if the denominator is null. Setting to
+# true enables the old semantics of evaluating this to null; this does
+# not conform to SSAS, but is useful in some applications.
+#
+#mondrian.olap.NullDenominatorProducesNull=false
+
+###############################################################################
+# Property that determines how a null member value is represented in the
+# result output.
+# AS 2000 shows this as empty value
+# AS 2005 shows this as "(null)" value
+#
+#mondrian.olap.NullMemberRepresentation=#null
+
+###############################################################################
+# Boolean property that determines whether Mondrian optimizes predicates.
+#
+# If true, Mondrian may retrieve a little more data than specified in
+# MDX query and cache it for future use.  For example, if you ask for
+# data on 48 states of the United States for 3 quarters of 2011,
+# Mondrian will round out to all 50 states and all 4 quarters.  If
+# false, Mondrian still optimizes queries that involve all members of a
+# dimension.
+#
+#mondrian.rolap.aggregates.optimizePredicates=true
+
+###############################################################################
+# Property that defines the name of the factory class used
+# to create maps of member properties to their respective values.
+#
+# If the value is
+# non-null, it is used by the PropertyValueFactory
+# to create the implementation.  If unset,
+# mondrian.rolap.RolapMemberBase.DefaultPropertyValueMapFactory
+# will be used.
+#
+#mondrian.rolap.RolapMember.PropertyValueMapFactory.class=
+
+###############################################################################
+# Property defining
+# where the test XML files are.
+#
+#mondrian.test.QueryFileDirectory=
+
+###############################################################################
+# Property that defines
+# a pattern for which test XML files to run.  Pattern has to
+# match a file name of the form:
+# querywhatever.xml in the directory.
+#
+# Example:
+#
+#
+# mondrian.test.QueryFilePattern=queryTest_fec[A-Za-z0-9_]*.xml
+#
+#mondrian.test.QueryFilePattern=
+
+###############################################################################
+# Maximum number of simultaneous queries the system will allow.
+#
+# Oracle fails if you try to run more than the 'processes' parameter in
+# init.ora, typically 150. The throughput of Oracle and other databases
+# will probably reduce long before you get to their limit.
+#
+#mondrian.query.limit=40
+
+###############################################################################
+# Property that defines the timeout value (in seconds) for queries. A
+# value of 0 (the default) indicates no timeout.
+#
+#mondrian.rolap.queryTimeout=0
+
+###############################################################################
+# Boolean property that determines whether Mondrian should read
+# aggregate tables.
+#
+# If set to true, then Mondrian scans the database for aggregate tables.
+# Unless mondrian.rolap.aggregates.Use is set to true, the aggregates
+# found will not be used.
+#
+#mondrian.rolap.aggregates.Read=false
+
+###############################################################################
+# Integer property that, if set to a value greater than zero, limits the
+# maximum size of a result set.
+#
+#mondrian.result.limit=0
+
+###############################################################################
+# Maximum number of MDX query threads per Mondrian server instance.
+# Defaults to 20.
+#
+#mondrian.rolap.maxQueryThreads=20
+
+###############################################################################
+# Property that defines the interval value between
+# polling operations performed by the RolapConnection shepherd thread.
+# This controls query timeouts and cancellation, so a small value
+# (a few milliseconds) is best. Setting this to a value higher than
+# mondrian.rolap.queryTimeout will result the timeout not being enforced
+# as expected.
+#
+# Default value is "1000ms". Default time unit is "ms".
+#
+#mondrian.rolap.shepherdThreadPollingInterval=1000ms
+
+###############################################################################
+# Property which defines which SegmentCache implementation to use.
+# Specify the value as a fully qualified class name, such as
+# org.example.SegmentCacheImpl where SegmentCacheImpl
+# is an implementation of mondrian.spi.SegmentCache.
+#
+#mondrian.rolap.SegmentCache=
+
+###############################################################################
+# Maximum number of threads per Mondrian server instance that
+# are used to run perform operations on the external caches.
+# Defaults to 100.
+#
+#mondrian.rolap.maxCacheThreads=100
+
+###############################################################################
+# Maximum number of threads per Mondrian server instance that
+# are used to run SQL queries when populating segments.
+# Defaults to 100.
+#
+#mondrian.rolap.maxSqlThreads=100
+
+###############################################################################
+# Property that controls the behavior of
+# Property#SOLVE_ORDER solve order of calculated members and sets.
+#
+# Valid values are "scoped" and "absolute" (the default). See
+# mondrian.olap.SolveOrderMode for details.
+#
+#mondrian.rolap.SolveOrderMode=ABSOLUTE
+
+###############################################################################
+# Property that, with #SparseSegmentDensityThreshold, determines
+# whether to choose a sparse or dense representation when storing
+# collections of cell values in memory.
+#
+# When storing collections of cell values, Mondrian has to choose
+# between a sparse and a dense representation, based upon the
+# possible and actual number of values.
+# The density is actual / possible.
+#
+# We use a sparse representation if
+# (possible -
+# #SparseSegmentCountThreshold countThreshold) *
+# #SparseSegmentDensityThreshold densityThreshold >
+# actual
+#
+# For example, at the default values
+# (#SparseSegmentCountThreshold countThreshold = 1000,
+# #SparseSegmentDensityThreshold = 0.5),
+# we use a dense representation for
+#
+#
+# * (1000 possible, 0 actual), or
+# * (2000 possible, 500 actual), or
+# * (3000 possible, 1000 actual).
+#
+#
+# Any fewer actual values, or any more
+# possible values, and Mondrian will use a sparse representation.
+#
+#mondrian.rolap.SparseSegmentValueThreshold=1000
+
+###############################################################################
+# Property that, with #SparseSegmentCountThreshold,
+# determines whether to choose a sparse or dense representation when
+# storing collections of cell values in memory.
+#
+#mondrian.rolap.SparseSegmentDensityThreshold=0.5
+
+###############################################################################
+# Property that defines the name of the class used in SqlMemberSource
+# to pool common values.
+#
+# If the value is non-null, it is used by the
+# SqlMemberSource.ValueMapFactory
+# to create the implementation.  If it is not set, then
+# mondrian.rolap.SqlMemberSource.NullValuePoolFactory
+# will be used, meaning common values will not be pooled.
+#
+#mondrian.rolap.SqlMemberSource.ValuePoolFactory.class=
+
+###############################################################################
+# Property that defines
+# whether to enable new naming behavior.
+#
+# If true, hierarchies are named [Dimension].[Hierarchy]; if false,
+# [Dimension.Hierarchy].
+#
+#mondrian.olap.SsasCompatibleNaming=false
+
+###############################################################################
+# Comma-separated list of classes to be used to get statistics about the
+# number of rows in a table, or the number of distinct values in a column.
+#
+# If there is a value for mondrian.statistics.providers.DATABASE, where
+# DAtABASE is the current database name (e.g. MYSQL or ORACLE), then that
+# property overrides.
+#
+# Example:
+#
+#
+# mondrian.statistics.providers=mondrian.spi.impl.JdbcStatisticsProvider
+# mondrian.statistics.providers.MYSQL=mondrian.spi.impl.JdbcStatisticsProvider,mondrian.spi.impl.JdbcStatisticsProvider
+#
+# This would use JDBC's statistics (via the
+# java.sql.DatabaseMetaData.getIndexInfo method) for most
+# databases, but for connections to a MySQL database, would use
+# external statistics first, and fall back to JDBC statistics
+# only if external statistics were not available.
+#
+#mondrian.statistics.providers=
+
+###############################################################################
+# String property that determines which test class to run.
+#
+# This is the name of the class. It must either implement
+# junit.framework.Test or have a method
+# public [static] junit.framework.Test suite().
+#
+# Example:
+#
+# mondrian.test.Class=mondrian.test.FoodMartTestCase
+#
+# @see #TestName
+#
+#mondrian.test.Class=
+
+###############################################################################
+# Property containing the connect string which regression tests should
+# use to connect to the database.
+#
+# Format is specified in Util#parseConnectString(String).
+#
+#mondrian.test.connectString=
+
+###############################################################################
+# Integer property that controls whether to test operators'
+# dependencies, and how much time to spend doing it.
+#
+# If this property is positive, Mondrian's test framework allocates an
+# expression evaluator which evaluates each expression several times, and
+# makes sure that the results of the expression are independent of
+# dimensions which the expression claims to be independent of.
+#
+# The default is 0.
+#
+#mondrian.test.ExpDependencies=0
+
+###############################################################################
+# Property containing a list of dimensions in the Sales cube that should
+# be treated as high-cardinality dimensions by the testing infrastructure.
+# This allows us to run the full suite of tests with high-cardinality
+# functionality enabled.
+#
+#mondrian.test.highCardDimensions=
+
+###############################################################################
+# Property containing the JDBC password of a test database.
+# The default value is null, to cope with DBMSs that don't need this.
+#
+#mondrian.foodmart.jdbcPassword=
+
+###############################################################################
+# Property containing the JDBC user of a test database.
+# The default value is null, to cope with DBMSs that don't need this.
+#
+#mondrian.foodmart.jdbcUser=
+
+###############################################################################
+# String property that determines which tests are run.
+#
+# This is a regular expression as defined by
+# java.util.regex.Pattern.
+# If this property is specified, only tests whose names match the pattern
+# in its entirety will be run.
+#
+# @see #TestClass
+#
+#mondrian.test.Name=
+
+###############################################################################
+# Seed for random number generator used by some of the tests.
+#
+# Any value besides 0 or -1 gives deterministic behavior.
+# The default value is 1234: most users should use this.
+# Setting the seed to a different value can increase coverage, and
+# therefore may uncover new bugs.
+#
+# If you set the value to 0, the system will generate its own
+# pseudo-random seed.
+#
+# If you set the value to -1, Mondrian uses the next seed from an
+# internal random-number generator. This is a little more deterministic
+# than setting the value to 0.
+#
+#mondrian.test.random.seed=1234
+
+###############################################################################
+# Property that returns the time limit for the test run in seconds.
+# If the test is running after that time, it is terminated.
+#
+#mondrian.test.TimeLimit=0
+
+###############################################################################
+# Boolean property that controls whether Mondrian uses aggregate
+# tables.
+#
+# If true, then Mondrian uses aggregate tables. This property is
+# queried prior to each aggregate query so that changing the value of this
+# property dynamically (not just at startup) is meaningful.
+#
+# Aggregates can be read from the database using the
+# #ReadAggregates property but will not be used unless this
+# property is set to true.
+#
+#mondrian.rolap.aggregates.Use=false
+
+###############################################################################
+# Not documented.
+#
+#mondrian.test.VUsers=1
+
+###############################################################################
+# Property that indicates whether this is a "warmup test".
+#
+#mondrian.test.Warmup=false
+
+###############################################################################
+# Property that controls whether warning messages should be printed if a SQL
+# comparison test does not contain expected SQL statements for the specified
+# dialect. The tests are skipped if no expected SQL statements are
+# found for the current dialect.
+#
+# Possible values are the following:
+#
+#
+# * "NONE": no warning (default)
+# * "ANY": any dialect
+# * "ACCESS"
+# * "DERBY"
+# * "LUCIDDB"
+# * "MYSQL"
+# * ... and any Dialect enum in SqlPattern.Dialect
+#
+#
+# Specific tests can overwrite the default setting. The priority is:
+# * Settings besides "ANY" in mondrian.properties file
+# * < Any setting in the test
+# * < "ANY"
+#
+#mondrian.test.WarnIfNoPatternForDialect=NONE
+
+###############################################################################
+# Connect string for the webapp. (Used by the webapp only.)
+#
+# To achieve access control, append say ;Role='California
+# manager' to the connect string.
+#
+#mondrian.webapp.connectString=Provider=mondrian;Jdbc=jdbc:odbc:MondrianFoodMart;Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver
+
+###############################################################################
+# Where mondrian.war will be deployed to. (Used by mondrian's build.xml ant file only.)
+#
+# Example: mondrian.webapp.deploy=C:/jboss-4.0.2/server/default/deploy
+#
+#mondrian.webapp.deploy=
+
+###############################################################################
+# Interval at which to refresh the
+# list of XML/A catalogs. (Usually known as the
+# datasources.xml file.)
+#
+# It is not an active process; no threads will be created. It only
+# serves as a rate limiter. The refresh process is triggered by requests
+# to the doPost() servlet method.
+#
+# Values may have time unit suffixes such as 's' (second) or 'ms'
+# (milliseconds). Default value is 3000 milliseconds (3 seconds).
+# Default time unit is milliseconds.
+#
+# See also
+# mondrian.xmla.impl.DynamicDatasourceXmlaServlet.
+#
+#mondrian.xmla.SchemaRefreshInterval=3000ms
+
+# End mondrian.properties
\ No newline at end of file
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/pom.xml b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/pom.xml
new file mode 100644
index 0000000..0e0f34a
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi/pom.xml
@@ -0,0 +1,224 @@
+<?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 2.0  -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# https://www.eclipse.org/legal/epl-2.0/    -->
+<!--#                                           -->
+<!--# SPDX-License-Identifier: EPL-2.0          -->
+<!--# -->
+<!--# 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>
+    <parent>
+        <groupId>org.eclipse.osbp.releng.maven</groupId>
+        <artifactId>org.eclipse.osbp.releng.maven.parent.mbp2</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.eclipse.osbp.dependencies</groupId>
+    <artifactId>org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi</artifactId>
+    <packaging>bundle</packaging>
+
+    <properties>
+        <osbp.build.ignore.baseline>true</osbp.build.ignore.baseline>
+        <mondrian.version>3.14.0.19-174</mondrian.version>
+    </properties>
+
+    <scm>
+        <connection>${osbp.scm.connection}</connection>
+        <developerConnection>${osbp.scm.connection.dev}</developerConnection>
+        <tag>HEAD</tag>
+    </scm>
+    <repositories>
+        <repository>
+            <id>pentaho-releases</id>
+            <url>http://nexus.pentaho.org/content/groups/omni</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=12661 -->
+        <dependency>
+            <groupId>commons-discovery</groupId>
+            <artifactId>commons-discovery</artifactId>
+            <version>0.2</version>
+        </dependency>
+        	
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=12688 -->
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.2</version>
+        </dependency>
+        	
+		<!-- https://mvnrepository.com/artifact/commons-math/commons-math -->
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=15197 -->
+		<dependency>
+		    <groupId>commons-math</groupId>
+		    <artifactId>commons-math</artifactId>
+		    <version>1.2</version>
+		</dependency>
+
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=12683 -->
+		<!-- 
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-math3</artifactId>
+            <version>3.4.0</version>
+        </dependency>
+        -->	
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=18144 -->
+        <dependency>
+            <groupId>pentaho</groupId>
+            <artifactId>mondrian</artifactId>
+            <version>${mondrian.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>pentaho</groupId>
+            <artifactId>mondrian</artifactId>
+            <version>${mondrian.version}</version>
+			 <classifier>sources</classifier>
+        </dependency>
+
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=15065 -->
+        <dependency>
+            <groupId>eigenbase</groupId>
+            <artifactId>eigenbase-properties</artifactId>
+            <version>1.1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>eigenbase</groupId>
+            <artifactId>eigenbase-properties</artifactId>
+            <version>1.1.2</version>
+			<classifier>sources</classifier>
+		</dependency>
+ 
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=15066 -->
+        <dependency>
+            <groupId>eigenbase</groupId>
+            <artifactId>eigenbase-resgen</artifactId>
+            <version>1.3.1</version>
+        </dependency>
+        <dependency>
+            <groupId>eigenbase</groupId>
+            <artifactId>eigenbase-resgen</artifactId>
+            <version>1.3.1</version>
+			<classifier>sources</classifier>
+        </dependency>
+
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=15067 -->
+        <dependency>
+            <groupId>eigenbase</groupId>
+            <artifactId>eigenbase-xom</artifactId>
+            <version>1.3.1</version>
+        </dependency>
+        <dependency>
+            <groupId>eigenbase</groupId>
+            <artifactId>eigenbase-xom</artifactId>
+            <version>1.3.1</version>
+			<classifier>sources</classifier>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.osbp.dependencies</groupId>
+            <artifactId>
+                org.eclipse.osbp.dependencies.bundle.olap4j.osgi
+            </artifactId>
+            <version>1.2.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.osbp.dependencies</groupId>
+            <artifactId>
+                org.eclipse.osbp.dependencies.bundle.commons.vfs.osgi
+            </artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.osbp.dependencies</groupId>
+            <artifactId>
+                org.eclipse.osbp.dependencies.bundle.jackrabbit.jcr.commons.osgi
+            </artifactId>
+            <version>2.1.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.osbp.dependencies</groupId>
+            <artifactId>
+                org.eclipse.osbp.dependencies.bundle.jackrabbit.webdav.osgi
+            </artifactId>
+            <version>2.3.3-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.osbp.dependencies</groupId>
+            <artifactId>
+                org.eclipse.osbp.dependencies.bundle.java-cup.osgi
+            </artifactId>
+            <version>0.11a-SNAPSHOT</version>
+        </dependency>
+
+	</dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>${mbp.version}</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-Name>mondrian.osgi</Bundle-Name>
+                        <!-- do not build a .qualifier version org.eclipse.gemini.dbaccess.oracle requires the RELEASE -->
+                        <Bundle-Version>${mondrian.version}-${osgi-version-qualifier}</Bundle-Version>
+                        <Bundle-SymbolicName>mondrian.osgi</Bundle-SymbolicName>
+                        <Embed-Dependency>
+                            groupId=pentaho;artifactId=mondrian;version=${mondrian.version};classifier=sources;scope=compile;inline=true,
+                            groupId=eigenbase;artifactId=eigenbase-properties;classifier=sources;scope=compile;inline=true,
+                            groupId=eigenbase;artifactId=eigenbase-resgen;classifier=sources;scope=compile;inline=true,
+                            groupId=eigenbase;artifactId=eigenbase-xom;classifier=sources;scope=compile;inline=true,
+                            groupId=pentaho;artifactId=mondrian;version=${mondrian.version};scope=compile;inline=true,
+                            groupId=eigenbase;artifactId=eigenbase-properties;scope=compile;inline=true,
+                            groupId=eigenbase;artifactId=eigenbase-resgen;scope=compile;inline=true,
+                            groupId=eigenbase;artifactId=eigenbase-xom;scope=compile;inline=true,
+                            groupId=commons-math;artifactId=commons-math;version=1.2;scope=compile;inline=true,
+                            groupId=commons-logging;artifactId=commons-logging;version=1.2;scope=compile;inline=true,
+                            groupId=commons-discovery;artifactId=commons-discovery;version=0.2;scope=compile;inline=true
+                        </Embed-Dependency>
+                        <Import-Package>
+                            org.osgi.framework;version="1.3.0",
+                        </Import-Package>
+                        <Export-Package>
+                            mondrian*;version="3.14.0",
+                            org.eigenbase*;version="1.3.1"
+                        </Export-Package>
+                        <Require-Bundle>
+                            olap4j.osgi;bundle-version="1.2.0",
+                            org.apache.log4j;bundle-version="1.2.15",
+                            org.apache.commons.collections;bundle-version="3.2.2", 
+                            org.apache.commons.dbcp;bundle-version="1.4.0",
+                            org.apache.commons.pool;bundle-version="1.6.0",
+                            org.apache.commons.io;bundle-version="2.1.0",
+                            commons-vfs-osgi;bundle-version="1.0.0",
+                            org.apache.commons.vfs;bundle-version="2.0.0",
+                            org.apache.commons.net;bundle-version="3.2.0",
+                            jackrabbit-jcr-commons-osgi;bundle-version="2.1.0",
+                            org.apache.commons.math3;bundle-version="3.4.0",
+                            jackrabbit-webdav-osgi;bundle-version="2.1.0"
+                        </Require-Bundle>
+						<Include-Resource>{maven-resources},LICENSE.txt,mondrian.properties,about_files/=about_files,META-INF/=META-INF/,about.html,about.ini,about.mappings,about.properties</Include-Resource>
+                        <_nouses>true</_nouses>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.classpath b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.classpath
new file mode 100644
index 0000000..dbde515
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.classpath
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.gitignore b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.project b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.project
new file mode 100644
index 0000000..b5e3f9a
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..714351a
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.pde.core.prefs b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..ba582c2
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,2 @@
+BUNDLE_ROOT_PATH=target/classes
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/LICENSE.txt b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/LICENSE.txt
new file mode 100644
index 0000000..fc5938d
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/LICENSE.txt
@@ -0,0 +1,140 @@
+Eclipse Foundation Software User Agreement
+
+November 22, 2017
+
+Usage Of Content
+
+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.
+
+Applicable Licenses
+
+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 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
+
+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").
+
+-   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").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   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.
+-   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.
+
+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:
+
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
+
+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.
+
+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):
+
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
+
+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.
+
+Use of Provisioning Technology
+
+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
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
+
+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:
+
+1.  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.
+2.  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.
+3.  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.
+
+Cryptography
+
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
+
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about.html b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about.html
new file mode 100644
index 0000000..888e727
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about.html
@@ -0,0 +1,32 @@
+<!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>November 30, 2017</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 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</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>
+
+<p>
+The bundle contains software licensed under the <a href="about_files/Apache-license-2.0.txt">Apache License 2.0</a><br>
+
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about.ini b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/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.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about.mappings b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/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.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about.properties b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about.properties
new file mode 100644
index 0000000..e1212cf
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about.properties
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0 
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+################ 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 2.0 \n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n\
+\n\
+\n\
+The bundle contains software licensed under the Apache License 2.0\n\
+\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about_files/Apache-license-2.0.txt b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about_files/Apache-license-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/about_files/Apache-license-2.0.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) 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. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/mondrian.properties b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/mondrian.properties
new file mode 100644
index 0000000..9089310
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/mondrian.properties
@@ -0,0 +1,1099 @@
+# This software is subject to the terms of the Eclipse Public License 2.0 
+# Agreement, available at the following URL:
+# https://www.eclipse.org/legal/epl-2.0/.
+#.
+# SPDX-License-Identifier: EPL-2.0.
+# You must accept the terms of that agreement to use this software.
+#
+# Copyright (C) 2001-2005 Julian Hyde
+# Copyright (C) 2005-2017 Hitachi Vantara and others
+# All Rights Reserved.
+
+###############################################################################
+# String property that is the AggRule element's tag value.
+#
+# Normally, this property is not set by a user.
+#
+#mondrian.rolap.aggregates.rule.tag=default
+
+###############################################################################
+# String property containing the name of the file which defines the
+# rules for recognizing an aggregate table. Can be either a resource in
+# the Mondrian jar or a URL.
+#
+# The default value is "/DefaultRules.xml", which is in the
+# mondrian.rolap.aggmatcher package in Mondrian.jar.
+#
+# Normally, this property is not set by a user.
+#
+#mondrian.rolap.aggregates.rules=/DefaultRules.xml
+
+###############################################################################
+# Alerting action to take in case native evaluation of a function is
+# enabled but not supported for that function's usage in a particular
+# query.  (No alert is ever raised in cases where native evaluation would
+# definitely have been wasted effort.)
+#
+# Recognized actions:
+#
+#
+# * OFF:  do nothing (default action, also used if
+# unrecognized action is specified)
+# * WARN:  log a warning to RolapUtil logger
+# * ERROR:  throw an instance of
+# NativeEvaluationUnsupportedException
+#
+#mondrian.native.unsupported.alert=OFF
+
+###############################################################################
+# Boolean property that controls whether the MDX parser resolves uses
+# case-sensitive matching when looking up identifiers. The default is
+# false.
+#
+#mondrian.olap.case.sensitive=false
+
+###############################################################################
+# Property that contains the URL of the catalog to be used by
+# mondrian.tui.CmdRunner and XML/A Test.
+#
+#mondrian.catalogURL=
+
+###############################################################################
+# Integer property that, if set to a value greater than zero, sets a hard limit on the
+# number of cells that are batched together when building segments.
+#
+#mondrian.rolap.cellBatchSize=-1
+
+###############################################################################
+# Positive integer property that determines loop iterations number between checks for whether the current mdx query has been cancelled or timeout was exceeded.
+# Setting the interval too small may result in a performance degradation when reading large result sets;
+# setting it too high can cause a big delay between the query being marked as cancelled or timeout was exceeded and system resources associated to it being released.
+#
+#mondrian.util.checkCancelOrTimeoutInterval=1000
+
+###############################################################################
+# Boolean property that controls whether aggregate tables
+# are ordered by their volume or row count.
+#
+# If true, Mondrian uses the aggregate table with the smallest volume
+# (number of rows multiplied by number of columns); if false, Mondrian
+# uses the aggregate table with the fewest rows.
+#
+#mondrian.rolap.aggregates.ChooseByVolume=false
+
+###############################################################################
+# Boolean property that controls whether sibling members are
+# compared according to order key value fetched from their ordinal
+# expression.  The default is false (only database ORDER BY is used).
+#
+#mondrian.rolap.compareSiblingsByOrderKey=false
+
+###############################################################################
+# Property that defines
+# when to apply the crossjoin optimization algorithm.
+#
+# If a crossjoin input list's size is larger than this property's
+# value and the axis has the "NON EMPTY" qualifier, then
+# the crossjoin non-empty optimizer is applied.
+# Setting this value to '0' means that for all crossjoin
+# input lists in non-empty axes will have the optimizer applied.
+# On the other hand, if the value is set larger than any possible
+# list, say Integer.MAX_VALUE, then the optimizer
+# will never be applied.
+#
+#mondrian.olap.fun.crossjoin.optimizer.size=0
+
+###############################################################################
+# Property that defines
+# the name of the plugin class that resolves data source names to
+# javax.sql.DataSource objects. The class must implement the
+# mondrian.spi.DataSourceResolver interface. If not specified,
+# the default implementation uses JNDI to perform resolution.
+#
+# Example:
+# mondrian.spi.dataSourceResolverClass=mondrian.spi.impl.JndiDataSourceResolver
+#
+#mondrian.spi.dataSourceResolverClass=
+
+###############################################################################
+# Boolean property that controls whether a RolapStar's
+# aggregate data cache is cleared after each query.
+# If true, no RolapStar will cache aggregate data from one
+# query to the next (the cache is cleared after each query).
+#
+#mondrian.rolap.star.disableCaching=false
+
+###############################################################################
+# Boolean property that controls whether the data from segments
+# is cached locally. To create custom caches, look for the
+# SegmentCache SPI.
+#
+#mondrian.rolap.star.disableLocalSegmentCache=false
+
+###############################################################################
+# Property that controls whether aggregation cache hit / miss
+# counters will be enabled.
+#
+# Note that this will affect performance due to existence of sync
+# blocks.
+#
+# @deprecated This property is no longer used, and will be removed in
+# mondrian-4.0.
+#
+#mondrian.rolap.agg.enableCacheHitCounters=false
+
+###############################################################################
+# If disabled, Mondrian will throw an exception if someone attempts to
+# perform a drillthrough of any kind.
+#
+#mondrian.drillthrough.enable=true
+
+###############################################################################
+# Boolean property that controls whether to use a cache for frequently
+# evaluated expressions. With the cache disabled, an expression like
+# Rank([Product].CurrentMember,
+# Order([Product].MEMBERS, [Measures].[Unit Sales])) would perform
+# many redundant sorts. The default is true.
+#
+#mondrian.expCache.enable=true
+
+###############################################################################
+# Property that defines
+# whether to generate SQL queries using the GROUPING SETS
+# construct for rollup. By default it is not enabled.
+#
+# Ignored on databases which do not support the
+# GROUPING SETS construct (see
+# mondrian.spi.Dialect#supportsGroupingSets).
+#
+#mondrian.rolap.groupingsets.enable=false
+
+###############################################################################
+# Property which turns on or off the in-memory rollup
+# of segment data. Defaults to true.
+#
+#mondrian.rolap.EnableInMemoryRollup=true
+
+###############################################################################
+# If enabled some NON EMPTY CrossJoin will be computed in SQL.
+#
+#mondrian.native.crossjoin.enable=true
+
+###############################################################################
+# If enabled some Filter() will be computed in SQL.
+#
+#mondrian.native.filter.enable=true
+
+###############################################################################
+# If enabled some NON EMPTY set operations like member.children,
+# level.members and member descendants will be computed in SQL.
+#
+#mondrian.native.nonempty.enable=true
+
+###############################################################################
+# If enabled some TopCount will be computed in SQL.
+#
+#mondrian.native.topcount.enable=true
+
+###############################################################################
+# Boolean property that controls whether each query axis implicit has the
+# NON EMPTY option set. The default is false.
+#
+#mondrian.rolap.nonempty=false
+
+###############################################################################
+# Property that determines whether to cache RolapCubeMember objects,
+# each of which associates a member of a shared hierarchy with a
+# particular cube in which it is being used.
+#
+# The default is true, that is, use a cache. If you wish to use
+# the member cache control aspects of mondrian.olap.CacheControl,
+# you must set this property to false.
+#
+# RolapCubeMember has recently become more lightweight to
+# construct, and we may obsolete this cache and this
+# property.
+#
+#mondrian.rolap.EnableRolapCubeMemberCache=true
+
+###############################################################################
+# If enabled, first row in the result of an XML/A drill-through request
+# will be filled with the total count of rows in underlying database.
+#
+#mondrian.xmla.drillthroughTotalCount.enable=true
+
+###############################################################################
+# Boolean property that controls whether to notify the Mondrian system
+# when a MondrianProperties property value changes.
+#
+# This allows objects dependent on Mondrian properties to react (that
+# is, reload), when a given property changes via, say,
+# MondrianProperties.instance().populate(null) or
+# MondrianProperties.instance().QueryLimit.set(50).
+#
+#mondrian.olap.triggers.enable=true
+
+###############################################################################
+# Property that defines how many previous execution instances the
+# Monitor keeps in its history so that it can send the events
+# which happen after the fact. Setting this property too high will make the
+# JVM run out of memory. Setting it too low might prevent some events from
+# reaching the listeners of the monitor.
+# This property is for internal use only and should not be changed
+# unless required. Defaults to 1,000.
+#
+#mondrian.server.monitor.executionHistorySize=1000
+
+###############################################################################
+# Property that defines
+# the name of the class used to compile scalar expressions.
+#
+# If the value is
+# non-null, it is used by the ExpCompiler.Factory
+# to create the implementation.
+#
+# To test that for all test MDX queries that all functions can
+# handle requests for ITERABLE, LIST and MUTABLE_LIST evaluation
+# results, use the following:
+#
+# mondrian.calc.ExpCompiler.class=mondrian.olap.fun.ResultStyleCompiler
+#
+#mondrian.calc.ExpCompiler.class=
+
+###############################################################################
+# If this property is true, when looking for native evaluation of an
+# expression, Mondrian will expand non-native sub-expressions into
+# lists of members.
+#
+#mondrian.native.ExpandNonNative=false
+
+###############################################################################
+# Property that defines
+# whether to generate joins to filter out members in a snowflake
+# dimension that do not have any children.
+#
+# If true (the default), some queries to query members of high
+# levels snowflake dimensions will be more expensive. If false, and if
+# there are rows in an outer snowflake table that are not referenced by
+# a row in an inner snowflake table, then some queries will return members
+# that have no children.
+#
+# Our recommendation, for best performance, is to remove rows outer
+# snowflake tables are not referenced by any row in an inner snowflake
+# table, during your ETL process, and to set this property to
+# false.
+#
+#mondrian.rolap.FilterChildlessSnowflakeMembers=true
+
+###############################################################################
+# Property containing the JDBC URL of the FoodMart database.
+# The default value is to connect to an ODBC data source called
+# "MondrianFoodMart".
+#
+# To run the test suite, first load the FoodMart data set into the
+# database of your choice. Then set the driver.classpath,
+# mondrian.foodmart.jdbcURL and mondrian.jdbcDrivers properties, by
+# un-commenting and modifying one of the sections below.
+# Put the JDBC driver jar into mondrian/testlib.
+#
+# Here are example property settings for various databases.
+#
+# ### Derby: needs user and password ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:derby:demo/derby/foodmart
+# mondrian.foodmart.jdbcUser=sa
+# mondrian.foodmart.jdbcPassword=sa
+# mondrian.jdbcDrivers=org.apache.derby.jdbc.EmbeddedDriver
+# driver.classpath=testlib/derby.jar
+#
+# ### FireBirdSQL ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:firebirdsql:localhost/3050:/mondrian/foodmart.gdb
+# mondrian.jdbcDrivers=org.firebirdsql.jdbc.FBDriver
+# driver.classpath=/jdbc/fb/firebirdsql-full.jar
+#
+# ### Greenplum (similar to Postgres) ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:postgresql://localhost/foodmart?user=gpadmin&password=xxxx
+# mondrian.foodmart.jdbcUser=foodmart
+# mondrian.foodmart.jdbcPassword=foodmart
+# mondrian.jdbcDrivers=org.postgresql.Driver
+# driver.classpath=lib/postgresql-8.2-504.jdbc3.jar
+#
+# ### LucidDB (see <a>instructions</a>) ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:luciddb:http://localhost
+# mondrian.foodmart.jdbcUser=foodmart
+# mondrian.jdbcDrivers=org.luciddb.jdbc.LucidDbClientDriver
+# driver.classpath=/path/to/luciddb/plugin/LucidDbClient.jar
+#
+# ### Oracle (needs user and password) ###
+#
+# oracle.home=G:/oracle/product/10.1.0/Db_1
+# mondrian.foodmart.jdbcURL.oracle=jdbc:oracle:thin:@//host:port/service_name
+# mondrian.foodmart.jdbcURL=jdbc:oracle:thin:foodmart/foodmart@//stilton:1521/orcl
+# mondrian.foodmart.jdbcURL=jdbc:oracle:oci8:foodmart/foodmart@orcl
+# mondrian.foodmart.jdbcUser=FOODMART
+# mondrian.foodmart.jdbcPassword=oracle
+# mondrian.jdbcDrivers=oracle.jdbc.OracleDriver
+# driver.classpath=/home/jhyde/open/mondrian/lib/ojdbc14.jar
+#
+# ### ODBC (Microsoft Access) ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:odbc:MondrianFoodMart
+# mondrian.jdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver
+# driver.classpath=
+#
+# ###  Hypersonic ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:hsqldb:demo/hsql/FoodMart
+# mondrian.jdbcDrivers=org.hsqldb.jdbcDriver
+# driver.classpath=xx
+#
+# ###  MySQL: can have user and password set in JDBC URL ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:mysql://localhost/foodmart?user=foodmart&password=foodmart
+# mondrian.foodmart.jdbcURL=jdbc:mysql://localhost/foodmart
+# mondrian.foodmart.jdbcUser=foodmart
+# mondrian.foodmart.jdbcPassword=foodmart
+# mondrian.jdbcDrivers=com.mysql.jdbc.Driver
+# driver.classpath=D:/mysql-connector-3.1.12
+#
+# mariadb: needs user and password set in JDBC URL
+# mondrian.foodmart.jdbcURL=jdbc:mariadb://localhost:3307/foodmart3?user=root&password=mypassword
+# mondrian.jdbcDrivers=org.mariadb.jdbc.Driver
+#driver.classpath=D:/mariadb-java-client-1.4.6.jar
+#
+# ###  NuoDB ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:com.nuodb://localhost/foodmart?schema=mondrian
+# mondrian.foodmart.jdbcUser=foodmart
+# mondrian.foodmart.jdbcPassword=foodmart
+# mondrian.jdbcDrivers=com.nuodb.jdbc.Driver
+# mondrian.foodmart.jdbcSchema=mondrian
+# driver.classpath=/opt/nuodb/jar/nuodbjdbc.jar
+#
+# ### Infobright ###
+# As MySQL. (Infobright uses a MySQL driver, version 5.1 and later.)
+#
+# ### Ingres ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:ingres://192.168.200.129:II7/MondrianFoodMart;LOOP=on;AUTO=multi;UID=ingres;PWD=sergni
+# mondrian.jdbcDrivers=com.ingres.jdbc.IngresDriver
+# driver.classpath=c:/ingres2006/ingres/lib/iijdbc.jar
+#
+# ### Postgres: needs user and password ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:postgresql://localhost/FM3
+# mondrian.foodmart.jdbcUser=postgres
+# mondrian.foodmart.jdbcPassword=pgAdmin
+# mondrian.jdbcDrivers=org.postgresql.Driver
+#
+# ### Neoview ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:hpt4jdbc://localhost:18650/:schema=PENTAHO;serverDataSource=PENTAHO_DataSource
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=com.hp.t4jdbc.HPT4Driver
+# driver.classpath=/some/path/hpt4jdbc.jar
+#
+# ### Netezza: mimics Postgres ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:netezza://127.0.1.10/foodmart
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=org.netezza.Driver
+# driver.classpath=/some/path/nzjdbc.jar
+#
+# ### Sybase ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:jtds:sybase://xxx.xxx.xxx.xxx:port/dbName
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=net.sourceforge.jtds.jdbc.Driver
+# driver.classpath=/some/path/jtds-1.2.jar
+#
+# ### Teradata ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:teradata://DatabaseServerName/DATABASE=FoodMart
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=com.ncr.teradata.TeraDriver
+# driver.classpath=/some/path/terajdbc/classes/terajdbc4.jar
+#
+# ### Vertica ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:vertica://xxx.xxx.xxx.xxx:port/dbName
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=com.vertica.Driver
+# driver.classpath=/some/path/vertica.jar
+#
+# ### Vectorwise ###
+#
+# mondrian.foodmart.jdbcURL=jdbc:ingres://xxx.xxx.xxx.xxxport/dbName
+# mondrian.foodmart.jdbcUser=user
+# mondrian.foodmart.jdbcPassword=password
+# mondrian.jdbcDrivers=com.ingres.jdbc.IngresDriver 
+# driver.classpath=/some/path/iijdbc.jar
+#
+#mondrian.foodmart.jdbcURL=jdbc:odbc:MondrianFoodMart
+
+###############################################################################
+# Boolean property that controls whether to print the SQL code
+# generated for aggregate tables.
+#
+# If set, then as each aggregate request is processed, both the lost
+# and collapsed dimension create and insert sql code is printed.
+# This is for use in the CmdRunner allowing one to create aggregate table
+# generation sql.
+#
+mondrian.rolap.aggregates.generateSql=true
+
+###############################################################################
+# Boolean property that controls pretty-print mode.
+#
+# If true, the all SqlQuery SQL strings will be generated in
+# pretty-print mode, formatted for ease of reading.
+#
+mondrian.rolap.generate.formatted.sql=true
+
+###############################################################################
+# Property that establishes the amount of chunks for querying cells
+# involving high-cardinality dimensions.
+# Should prime with #ResultLimit mondrian.result.limit.
+#
+#mondrian.result.highCardChunkSize=1
+
+###############################################################################
+# Property that defines whether non-existent member errors should be
+# ignored during schema load. If so, the non-existent member is treated
+# as a null member.
+#
+#mondrian.rolap.ignoreInvalidMembers=false
+
+###############################################################################
+# Property that defines whether non-existent member errors should be
+# ignored during query validation. If so, the non-existent member is
+# treated as a null member.
+#
+#mondrian.rolap.ignoreInvalidMembersDuringQuery=false
+
+###############################################################################
+# Property that defines whether to ignore measure when non joining
+# dimension is in the tuple during aggregation.
+#
+# If there are unrelated dimensions to a measure in context during
+# aggregation, the measure is ignored in the evaluation context. This
+# behaviour kicks in only if the CubeUsage for this measure has
+# IgnoreUnrelatedDimensions attribute set to false.
+#
+# For example, Gender doesn't join with [Warehouse Sales] measure.
+#
+# With mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=true
+# Warehouse Sales gets eliminated and is ignored in the aggregate
+# value.
+#
+#                                     [Store Sales] + [Warehouse Sales]
+# SUM({Product.members * Gender.members})    7,913,333.82
+#
+# With mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=false
+# Warehouse Sales with Gender All level member contributes to the aggregate
+# value.
+#
+#                                      [Store Sales] + [Warehouse Sales]
+# SUM({Product.members * Gender.members})    9,290,730.03
+#
+# On a report where Gender M, F and All members exist a user will see a
+# large aggregated value compared to the aggregated value that can be
+# arrived at by summing up values against Gender M and F. This can be
+# confusing to the user. This feature can be used to eliminate such a
+# situation.
+#
+#mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=false
+
+###############################################################################
+# Integer property indicating the maximum number of iterations
+# allowed when iterating over members to compute aggregates.  A value of
+# 0 (the default) indicates no limit.
+#
+#mondrian.rolap.iterationLimit=0
+
+###############################################################################
+# Not documented.
+#
+#mondrian.test.Iterations=1
+
+###############################################################################
+# Property containing a list of JDBC drivers to load automatically.
+# Must be a comma-separated list of class names, and the classes must be
+# on the class path.
+#
+#mondrian.jdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver,org.hsqldb.jdbcDriver,oracle.jdbc.OracleDriver,com.mysql.jdbc.Driver
+
+###############################################################################
+# Property that defines the JdbcSchema factory class which
+# determines the list of tables and columns of a specific datasource.
+#
+# @see mondrian.rolap.aggmatcher.JdbcSchema
+#
+#mondrian.rolap.aggregates.jdbcFactoryClass=
+
+###############################################################################
+# Property which governs whether child members or members of a level are precached
+#                 when child or level members are requested within a
+#                 query expression.  For example,
+#                 if an expression references two child members in the store dimension,
+#                 like { [Store].[USA].[CA], [Store].[USA].[OR] }, precaching will
+#                 load *all* children under [USA] rather than just the 2 requested.
+#                 The threshold value is
+#                 compared against the cardinality of the level to determine
+#                 whether or not precaching should be performed.  If cardinality is
+#                 lower than the threshold value Mondrian will precache.  Setting
+#                 this property to 0 effectively disables precaching.
+#
+#mondrian.rolap.precache.threshold=300
+
+###############################################################################
+# String property that holds the
+# name of the class whose resource bundle is to be used to for this
+# schema. For example, if the class is com.acme.MyResource,
+# mondrian will look for a resource bundle called
+# com/acme/MyResource_locale.properties on the class path.
+# (This property has a confusing name because in a previous release it
+# actually held a file name.)
+#
+# Used for the mondrian.i18n.LocalizingDynamicSchemaProcessor;
+# see <a>Internationalization</a>
+# for more details.
+#
+# Default value is null.
+#
+#mondrian.rolap.localePropFile=
+
+###############################################################################
+# Set mondrian logging information if not provided by containing application.
+#
+# Examples:
+#
+#
+# log4j.configuration=file://full/path/log4j.xml
+# log4j.configuration=file:log4j.properties
+#
+#log4j.configuration=
+
+###############################################################################
+# Max number of constraints in a single 'IN' SQL clause.
+#
+# This value may be variant among database products and their runtime
+# settings. Oracle, for example, gives the error "ORA-01795: maximum
+# number of expressions in a list is 1000".
+#
+# Recommended values:
+#
+# * Oracle: 1,000
+# * DB2: 2,500
+# * Other: 10,000
+#
+#mondrian.rolap.maxConstraints=1000
+
+###############################################################################
+# Boolean property that defines the maximum number of passes
+# allowable while evaluating an MDX expression.
+#
+# If evaluation exceeds this depth (for example, while evaluating a
+# very complex calculated member), Mondrian will throw an error.
+#
+#mondrian.rolap.evaluate.MaxEvalDepth=10
+
+###############################################################################
+# Property that defines
+# limit on the number of rows returned by XML/A drill through request.
+#
+#mondrian.xmla.drillthroughMaxRows=1000
+
+###############################################################################
+# Property that defines whether the MemoryMonitor should
+# be enabled. By default it is disabled; memory monitor is not available
+# before Java version 1.5.
+#
+#mondrian.util.memoryMonitor.enable=false
+
+###############################################################################
+# Property that defines
+# the name of the class used as a memory monitor.
+#
+# If the value is
+# non-null, it is used by the MemoryMonitorFactory
+# to create the implementation.
+#
+#mondrian.util.MemoryMonitor.class=
+
+###############################################################################
+# Property that defines the default MemoryMonitor
+# percentage threshold. If enabled, when Java's memory monitor detects
+# that post-garbage collection is above this value, notifications are
+# generated.
+#
+#mondrian.util.memoryMonitor.percentage.threshold=90
+
+###############################################################################
+# Property that controls the maximum number of results contained in a
+# NativizeSet result set.
+#
+# If the number of tuples contained in the result set exceeds this
+# value Mondrian throws a LimitExceededDuringCrossjoin error.
+#
+#mondrian.native.NativizeMaxResults=150000
+
+###############################################################################
+# Property that controls minimum expected cardinality required in
+# order for NativizeSet to natively evaluate a query.
+#
+# If the expected cardinality falls below this level the query is
+# executed non-natively.
+#
+# It is possible for the actual cardinality to fall below this
+# threshold even though the expected cardinality falls above this
+# threshold.  In this case the query will be natively evaluated.
+#
+#mondrian.native.NativizeMinThreshold=100000
+
+###############################################################################
+# Property determines if elements of dimension (levels, hierarchies,
+# members) need to be prefixed with dimension name in MDX query.
+#
+# For example when the property is true, the following queries
+# will error out. The same queries will work when this property
+# is set to false.
+#
+# select {[M]} on 0 from sales
+# select {[USA]} on 0 from sales
+# select {[USA].[CA].[Santa Monica]}  on 0 from sales
+#
+# When the property is set to true, any query where elements are
+# prefixed with dimension name as below will work
+#
+# select {[Gender].[F]} on 0 from sales
+# select {[Customers].[Santa Monica]} on 0 from sales
+#
+# Please note that this property does not govern the behaviour
+# wherein
+#
+# [Gender].[M]
+#
+# is resolved into a fully qualified
+#
+# [Gender].[M]
+#
+#  In a scenario where the schema is very large and dimensions have
+# large number of members a MDX query that has a invalid member in it will
+# cause mondrian to to go through all the dimensions, levels, hierarchies,
+# members and properties trying to resolve the element name. This behavior
+# consumes considerable time and resources on the server. Setting this
+# property to true will make it fail fast in a scenario where it is
+# desirable.
+#
+#mondrian.olap.elements.NeedDimensionPrefix=false
+
+###############################################################################
+# Property that defines
+# the behavior of division if the denominator evaluates to zero.
+#
+# If false (the default), if a division has a non-null numerator and
+# a null denominator, it evaluates to "Infinity", which conforms to SSAS
+# behavior.
+#
+# If true, the result is null if the denominator is null. Setting to
+# true enables the old semantics of evaluating this to null; this does
+# not conform to SSAS, but is useful in some applications.
+#
+#mondrian.olap.NullDenominatorProducesNull=false
+
+###############################################################################
+# Property that determines how a null member value is represented in the
+# result output.
+# AS 2000 shows this as empty value
+# AS 2005 shows this as "(null)" value
+#
+#mondrian.olap.NullMemberRepresentation=#null
+
+###############################################################################
+# Boolean property that determines whether Mondrian optimizes predicates.
+#
+# If true, Mondrian may retrieve a little more data than specified in
+# MDX query and cache it for future use.  For example, if you ask for
+# data on 48 states of the United States for 3 quarters of 2011,
+# Mondrian will round out to all 50 states and all 4 quarters.  If
+# false, Mondrian still optimizes queries that involve all members of a
+# dimension.
+#
+#mondrian.rolap.aggregates.optimizePredicates=true
+
+###############################################################################
+# Property that defines the name of the factory class used
+# to create maps of member properties to their respective values.
+#
+# If the value is
+# non-null, it is used by the PropertyValueFactory
+# to create the implementation.  If unset,
+# mondrian.rolap.RolapMemberBase.DefaultPropertyValueMapFactory
+# will be used.
+#
+#mondrian.rolap.RolapMember.PropertyValueMapFactory.class=
+
+###############################################################################
+# Property defining
+# where the test XML files are.
+#
+#mondrian.test.QueryFileDirectory=
+
+###############################################################################
+# Property that defines
+# a pattern for which test XML files to run.  Pattern has to
+# match a file name of the form:
+# querywhatever.xml in the directory.
+#
+# Example:
+#
+#
+# mondrian.test.QueryFilePattern=queryTest_fec[A-Za-z0-9_]*.xml
+#
+#mondrian.test.QueryFilePattern=
+
+###############################################################################
+# Maximum number of simultaneous queries the system will allow.
+#
+# Oracle fails if you try to run more than the 'processes' parameter in
+# init.ora, typically 150. The throughput of Oracle and other databases
+# will probably reduce long before you get to their limit.
+#
+#mondrian.query.limit=40
+
+###############################################################################
+# Property that defines the timeout value (in seconds) for queries. A
+# value of 0 (the default) indicates no timeout.
+#
+#mondrian.rolap.queryTimeout=0
+
+###############################################################################
+# Boolean property that determines whether Mondrian should read
+# aggregate tables.
+#
+# If set to true, then Mondrian scans the database for aggregate tables.
+# Unless mondrian.rolap.aggregates.Use is set to true, the aggregates
+# found will not be used.
+#
+#mondrian.rolap.aggregates.Read=false
+
+###############################################################################
+# Integer property that, if set to a value greater than zero, limits the
+# maximum size of a result set.
+#
+#mondrian.result.limit=0
+
+###############################################################################
+# Maximum number of MDX query threads per Mondrian server instance.
+# Defaults to 20.
+#
+#mondrian.rolap.maxQueryThreads=20
+
+###############################################################################
+# Property that defines the interval value between
+# polling operations performed by the RolapConnection shepherd thread.
+# This controls query timeouts and cancellation, so a small value
+# (a few milliseconds) is best. Setting this to a value higher than
+# mondrian.rolap.queryTimeout will result the timeout not being enforced
+# as expected.
+#
+# Default value is "1000ms". Default time unit is "ms".
+#
+#mondrian.rolap.shepherdThreadPollingInterval=1000ms
+
+###############################################################################
+# Property which defines which SegmentCache implementation to use.
+# Specify the value as a fully qualified class name, such as
+# org.example.SegmentCacheImpl where SegmentCacheImpl
+# is an implementation of mondrian.spi.SegmentCache.
+#
+#mondrian.rolap.SegmentCache=
+
+###############################################################################
+# Maximum number of threads per Mondrian server instance that
+# are used to run perform operations on the external caches.
+# Defaults to 100.
+#
+#mondrian.rolap.maxCacheThreads=100
+
+###############################################################################
+# Maximum number of threads per Mondrian server instance that
+# are used to run SQL queries when populating segments.
+# Defaults to 100.
+#
+#mondrian.rolap.maxSqlThreads=100
+
+###############################################################################
+# Property that controls the behavior of
+# Property#SOLVE_ORDER solve order of calculated members and sets.
+#
+# Valid values are "scoped" and "absolute" (the default). See
+# mondrian.olap.SolveOrderMode for details.
+#
+#mondrian.rolap.SolveOrderMode=ABSOLUTE
+
+###############################################################################
+# Property that, with #SparseSegmentDensityThreshold, determines
+# whether to choose a sparse or dense representation when storing
+# collections of cell values in memory.
+#
+# When storing collections of cell values, Mondrian has to choose
+# between a sparse and a dense representation, based upon the
+# possible and actual number of values.
+# The density is actual / possible.
+#
+# We use a sparse representation if
+# (possible -
+# #SparseSegmentCountThreshold countThreshold) *
+# #SparseSegmentDensityThreshold densityThreshold >
+# actual
+#
+# For example, at the default values
+# (#SparseSegmentCountThreshold countThreshold = 1000,
+# #SparseSegmentDensityThreshold = 0.5),
+# we use a dense representation for
+#
+#
+# * (1000 possible, 0 actual), or
+# * (2000 possible, 500 actual), or
+# * (3000 possible, 1000 actual).
+#
+#
+# Any fewer actual values, or any more
+# possible values, and Mondrian will use a sparse representation.
+#
+#mondrian.rolap.SparseSegmentValueThreshold=1000
+
+###############################################################################
+# Property that, with #SparseSegmentCountThreshold,
+# determines whether to choose a sparse or dense representation when
+# storing collections of cell values in memory.
+#
+#mondrian.rolap.SparseSegmentDensityThreshold=0.5
+
+###############################################################################
+# Property that defines the name of the class used in SqlMemberSource
+# to pool common values.
+#
+# If the value is non-null, it is used by the
+# SqlMemberSource.ValueMapFactory
+# to create the implementation.  If it is not set, then
+# mondrian.rolap.SqlMemberSource.NullValuePoolFactory
+# will be used, meaning common values will not be pooled.
+#
+#mondrian.rolap.SqlMemberSource.ValuePoolFactory.class=
+
+###############################################################################
+# Property that defines
+# whether to enable new naming behavior.
+#
+# If true, hierarchies are named [Dimension].[Hierarchy]; if false,
+# [Dimension.Hierarchy].
+#
+#mondrian.olap.SsasCompatibleNaming=false
+
+###############################################################################
+# Comma-separated list of classes to be used to get statistics about the
+# number of rows in a table, or the number of distinct values in a column.
+#
+# If there is a value for mondrian.statistics.providers.DATABASE, where
+# DAtABASE is the current database name (e.g. MYSQL or ORACLE), then that
+# property overrides.
+#
+# Example:
+#
+#
+# mondrian.statistics.providers=mondrian.spi.impl.JdbcStatisticsProvider
+# mondrian.statistics.providers.MYSQL=mondrian.spi.impl.JdbcStatisticsProvider,mondrian.spi.impl.JdbcStatisticsProvider
+#
+# This would use JDBC's statistics (via the
+# java.sql.DatabaseMetaData.getIndexInfo method) for most
+# databases, but for connections to a MySQL database, would use
+# external statistics first, and fall back to JDBC statistics
+# only if external statistics were not available.
+#
+#mondrian.statistics.providers=
+
+###############################################################################
+# String property that determines which test class to run.
+#
+# This is the name of the class. It must either implement
+# junit.framework.Test or have a method
+# public [static] junit.framework.Test suite().
+#
+# Example:
+#
+# mondrian.test.Class=mondrian.test.FoodMartTestCase
+#
+# @see #TestName
+#
+#mondrian.test.Class=
+
+###############################################################################
+# Property containing the connect string which regression tests should
+# use to connect to the database.
+#
+# Format is specified in Util#parseConnectString(String).
+#
+#mondrian.test.connectString=
+
+###############################################################################
+# Integer property that controls whether to test operators'
+# dependencies, and how much time to spend doing it.
+#
+# If this property is positive, Mondrian's test framework allocates an
+# expression evaluator which evaluates each expression several times, and
+# makes sure that the results of the expression are independent of
+# dimensions which the expression claims to be independent of.
+#
+# The default is 0.
+#
+#mondrian.test.ExpDependencies=0
+
+###############################################################################
+# Property containing a list of dimensions in the Sales cube that should
+# be treated as high-cardinality dimensions by the testing infrastructure.
+# This allows us to run the full suite of tests with high-cardinality
+# functionality enabled.
+#
+#mondrian.test.highCardDimensions=
+
+###############################################################################
+# Property containing the JDBC password of a test database.
+# The default value is null, to cope with DBMSs that don't need this.
+#
+#mondrian.foodmart.jdbcPassword=
+
+###############################################################################
+# Property containing the JDBC user of a test database.
+# The default value is null, to cope with DBMSs that don't need this.
+#
+#mondrian.foodmart.jdbcUser=
+
+###############################################################################
+# String property that determines which tests are run.
+#
+# This is a regular expression as defined by
+# java.util.regex.Pattern.
+# If this property is specified, only tests whose names match the pattern
+# in its entirety will be run.
+#
+# @see #TestClass
+#
+#mondrian.test.Name=
+
+###############################################################################
+# Seed for random number generator used by some of the tests.
+#
+# Any value besides 0 or -1 gives deterministic behavior.
+# The default value is 1234: most users should use this.
+# Setting the seed to a different value can increase coverage, and
+# therefore may uncover new bugs.
+#
+# If you set the value to 0, the system will generate its own
+# pseudo-random seed.
+#
+# If you set the value to -1, Mondrian uses the next seed from an
+# internal random-number generator. This is a little more deterministic
+# than setting the value to 0.
+#
+#mondrian.test.random.seed=1234
+
+###############################################################################
+# Property that returns the time limit for the test run in seconds.
+# If the test is running after that time, it is terminated.
+#
+#mondrian.test.TimeLimit=0
+
+###############################################################################
+# Boolean property that controls whether Mondrian uses aggregate
+# tables.
+#
+# If true, then Mondrian uses aggregate tables. This property is
+# queried prior to each aggregate query so that changing the value of this
+# property dynamically (not just at startup) is meaningful.
+#
+# Aggregates can be read from the database using the
+# #ReadAggregates property but will not be used unless this
+# property is set to true.
+#
+#mondrian.rolap.aggregates.Use=false
+
+###############################################################################
+# Not documented.
+#
+#mondrian.test.VUsers=1
+
+###############################################################################
+# Property that indicates whether this is a "warmup test".
+#
+#mondrian.test.Warmup=false
+
+###############################################################################
+# Property that controls whether warning messages should be printed if a SQL
+# comparison test does not contain expected SQL statements for the specified
+# dialect. The tests are skipped if no expected SQL statements are
+# found for the current dialect.
+#
+# Possible values are the following:
+#
+#
+# * "NONE": no warning (default)
+# * "ANY": any dialect
+# * "ACCESS"
+# * "DERBY"
+# * "LUCIDDB"
+# * "MYSQL"
+# * ... and any Dialect enum in SqlPattern.Dialect
+#
+#
+# Specific tests can overwrite the default setting. The priority is:
+# * Settings besides "ANY" in mondrian.properties file
+# * < Any setting in the test
+# * < "ANY"
+#
+#mondrian.test.WarnIfNoPatternForDialect=NONE
+
+###############################################################################
+# Connect string for the webapp. (Used by the webapp only.)
+#
+# To achieve access control, append say ;Role='California
+# manager' to the connect string.
+#
+#mondrian.webapp.connectString=Provider=mondrian;Jdbc=jdbc:odbc:MondrianFoodMart;Catalog=/WEB-INF/queries/FoodMart.xml;JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver
+
+###############################################################################
+# Where mondrian.war will be deployed to. (Used by mondrian's build.xml ant file only.)
+#
+# Example: mondrian.webapp.deploy=C:/jboss-4.0.2/server/default/deploy
+#
+#mondrian.webapp.deploy=
+
+###############################################################################
+# Interval at which to refresh the
+# list of XML/A catalogs. (Usually known as the
+# datasources.xml file.)
+#
+# It is not an active process; no threads will be created. It only
+# serves as a rate limiter. The refresh process is triggered by requests
+# to the doPost() servlet method.
+#
+# Values may have time unit suffixes such as 's' (second) or 'ms'
+# (milliseconds). Default value is 3000 milliseconds (3 seconds).
+# Default time unit is milliseconds.
+#
+# See also
+# mondrian.xmla.impl.DynamicDatasourceXmlaServlet.
+#
+#mondrian.xmla.SchemaRefreshInterval=3000ms
+
+# End mondrian.properties
\ No newline at end of file
diff --git a/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/pom.xml b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/pom.xml
new file mode 100644
index 0000000..35002c1
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi/pom.xml
@@ -0,0 +1,227 @@
+<?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 2.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# https://www.eclipse.org/legal/epl-2.0/ -->
+<!--# -->
+<!--# SPDX-License-Identifier: EPL-2.0 -->
+<!--# -->
+<!--# 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>
+	<parent>
+		<groupId>org.eclipse.osbp.releng.maven</groupId>
+		<artifactId>org.eclipse.osbp.releng.maven.parent.mbp2</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath />
+	</parent>
+
+	<groupId>org.eclipse.osbp.dependencies</groupId>
+	<artifactId>org.eclipse.osbp.dependencies.bundle.mondrian.4.3.1.8-209.osgi</artifactId>
+	<packaging>bundle</packaging>
+
+	<properties>
+		<osbp.build.ignore.baseline>true</osbp.build.ignore.baseline>
+	</properties>
+
+	<scm>
+		<connection>${osbp.scm.connection}</connection>
+		<developerConnection>${osbp.scm.connection.dev}</developerConnection>
+		<tag>HEAD</tag>
+	</scm>
+	<repositories>
+		<repository>
+			<id>pentaho-releases</id>
+			<url>http://nexus.pentaho.org/content/groups/omni</url>
+		</repository>
+	</repositories>
+
+	<dependencies>
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=12661 -->
+		<dependency>
+			<groupId>commons-discovery</groupId>
+			<artifactId>commons-discovery</artifactId>
+			<version>0.2</version>
+		</dependency>
+
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=12688 -->
+		<dependency>
+			<groupId>commons-logging</groupId>
+			<artifactId>commons-logging</artifactId>
+			<version>1.2</version>
+		</dependency>
+
+		<!-- https://mvnrepository.com/artifact/commons-math/commons-math -->
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=15197 -->
+		<dependency>
+			<groupId>commons-math</groupId>
+			<artifactId>commons-math</artifactId>
+			<version>1.2</version>
+		</dependency>
+
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=12683 -->
+		<!-- <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> 
+			<version>3.4.0</version> </dependency> -->
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=?????? -->
+		<dependency>
+			<groupId>pentaho</groupId>
+			<artifactId>mondrian</artifactId>
+			<version>4.3.1.8-209</version>
+		</dependency>
+		<dependency>
+			<groupId>pentaho</groupId>
+			<artifactId>mondrian</artifactId>
+			<version>4.3.1.8-209</version>
+			<classifier>sources</classifier>
+		</dependency>
+
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=15065 -->
+		<dependency>
+			<groupId>eigenbase</groupId>
+			<artifactId>eigenbase-properties</artifactId>
+			<version>1.1.2</version>
+		</dependency>
+		<dependency>
+			<groupId>eigenbase</groupId>
+			<artifactId>eigenbase-properties</artifactId>
+			<version>1.1.2</version>
+			<classifier>sources</classifier>
+		</dependency>
+
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=15066 -->
+		<dependency>
+			<groupId>eigenbase</groupId>
+			<artifactId>eigenbase-resgen</artifactId>
+			<version>1.3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>eigenbase</groupId>
+			<artifactId>eigenbase-resgen</artifactId>
+			<version>1.3.1</version>
+			<classifier>sources</classifier>
+		</dependency>
+
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=15067 -->
+		<dependency>
+			<groupId>eigenbase</groupId>
+			<artifactId>eigenbase-xom</artifactId>
+			<version>1.3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>eigenbase</groupId>
+			<artifactId>eigenbase-xom</artifactId>
+			<version>1.3.1</version>
+			<classifier>sources</classifier>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>
+                org.eclipse.osbp.dependencies.bundle.olap4j.osgi
+            </artifactId>
+			<version>1.2.0-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.olap4j</groupId>
+			<artifactId>olap4j-xmlaserver</artifactId>
+			<version>1.2.0</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>
+                org.eclipse.osbp.dependencies.bundle.commons.vfs.osgi
+            </artifactId>
+			<version>1.0.0-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>
+                org.eclipse.osbp.dependencies.bundle.jackrabbit.jcr.commons.osgi
+            </artifactId>
+			<version>2.1.0-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>
+                org.eclipse.osbp.dependencies.bundle.jackrabbit.webdav.osgi
+            </artifactId>
+			<version>2.3.3-SNAPSHOT</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.eclipse.osbp.dependencies</groupId>
+			<artifactId>
+                org.eclipse.osbp.dependencies.bundle.java-cup.osgi
+            </artifactId>
+			<version>0.11a-SNAPSHOT</version>
+		</dependency>
+
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<version>${mbp.version}</version>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Bundle-Name>mondrian.osgi</Bundle-Name>
+						<!-- do not build a .qualifier version org.eclipse.gemini.dbaccess.oracle 
+							requires the RELEASE -->
+						<Bundle-Version>3.999.999.${osgi-version-qualifier}</Bundle-Version>
+						<Bundle-SymbolicName>mondrian.osgi</Bundle-SymbolicName>
+						<Embed-Dependency>
+							groupId=pentaho;artifactId=mondrian;version=4.3.1.8-209;classifier=sources;scope=compile;inline=true,
+							groupId=eigenbase;artifactId=eigenbase-properties;classifier=sources;scope=compile;inline=true,
+							groupId=eigenbase;artifactId=eigenbase-resgen;classifier=sources;scope=compile;inline=true,
+							groupId=eigenbase;artifactId=eigenbase-xom;classifier=sources;scope=compile;inline=true,
+							groupId=pentaho;artifactId=mondrian;version=4.3.1.8-209;scope=compile;inline=true,
+							groupId=eigenbase;artifactId=eigenbase-properties;scope=compile;inline=true,
+							groupId=eigenbase;artifactId=eigenbase-resgen;scope=compile;inline=true,
+							groupId=eigenbase;artifactId=eigenbase-xom;scope=compile;inline=true,
+							groupId=commons-math;artifactId=commons-math;version=1.2;scope=compile;inline=true,
+							groupId=commons-logging;artifactId=commons-logging;version=1.2;scope=compile;inline=true,
+							groupId=commons-discovery;artifactId=commons-discovery;version=0.2;scope=compile;inline=true
+						</Embed-Dependency>
+						<Import-Package>
+							org.osgi.framework;version="1.3.0",
+						</Import-Package>
+						<Export-Package>
+							mondrian*;version="3.999.999",
+							org.eigenbase*;version="1.3.1"
+						</Export-Package>
+						<Require-Bundle>
+							olap4j.osgi;bundle-version="1.2.0",
+							org.olap4j.xmlaserver;bundle-version="1.2.0",
+							org.apache.log4j;bundle-version="1.2.15",
+							org.apache.commons.collections;bundle-version="3.2.2",
+							org.apache.commons.dbcp;bundle-version="1.4.0",
+							org.apache.commons.pool;bundle-version="1.6.0",
+							org.apache.commons.io;bundle-version="2.1.0",
+							commons-vfs-osgi;bundle-version="1.0.0",
+							org.apache.commons.vfs;bundle-version="2.0.0",
+							org.apache.commons.net;bundle-version="3.2.0",
+							jackrabbit-jcr-commons-osgi;bundle-version="2.1.0",
+							org.apache.commons.math3;bundle-version="3.4.0",
+							jackrabbit-webdav-osgi;bundle-version="2.1.0"
+						</Require-Bundle>
+						<Include-Resource>{maven-resources},LICENSE.txt,mondrian.properties,about_files/=about_files,META-INF/=META-INF/,about.html,about.ini,about.mappings,about.properties</Include-Resource>
+						<_nouses>true</_nouses>
+					</instructions>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.grid-renderers-collection/about.properties b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.grid-renderers-collection/about.properties
index 32840da..c69953b 100644
--- a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.grid-renderers-collection/about.properties
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.grid-renderers-collection/about.properties
@@ -14,7 +14,7 @@
 # NLS_MESSAGEFORMAT_VAR
 
 ################ blurb property ####################################
-featureText=\
+blurb=\
 Copyright (c) 2018 - 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 2.0 \n\
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.grid-renderers-collection/pom.xml b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.grid-renderers-collection/pom.xml
index c43c62a..cf43b59 100644
--- a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.grid-renderers-collection/pom.xml
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.grid-renderers-collection/pom.xml
@@ -47,7 +47,7 @@
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
-                        <Bundle-Name>OSBP: grid-renderers-collection Addon for Vaadin</Bundle-Name>
+                        <Bundle-Name>OSBP: grid-renderers-collection Addon for Vaadin (incl. required sparklines, gwt-graphics and ratingstars)</Bundle-Name>
                         <Bundle-Version>1.2.4.${osgi-version-qualifier}</Bundle-Version>
                         <Bundle-SymbolicName>grid-renderers-collection.osgi</Bundle-SymbolicName>
                         <Embed-Dependency>
@@ -57,7 +57,10 @@
                             groupId=org.vaadin.addons;artifactId=ratingstars;version=2.1;scope=compile;inline=true
                         </Embed-Dependency>
                         <Export-Package>
-                            org.vaadin.grid.*;version=1.2.4
+                            org.vaadin.grid.*;version=1.2.4,
+                            org.vaadin.teemu.*;version=2.1,
+                            org.vaadin.gwtgraphics.*;version=1.0.0,
+                            org.vaadin.sparklines.*;version=7.0.2
                         </Export-Package>
                         <Require-Bundle>
                             com.vaadin.client;bundle-version="[7.7.6,7.8.0)",
@@ -70,7 +73,7 @@
                         <Import-Package>
                         </Import-Package>
                         <Vaadin-Package-Version>1</Vaadin-Package-Version>
-                        <Vaadin-Widgetsets>org.vaadin.grid.cellrenderers.RenderersCollectionWidgetSet</Vaadin-Widgetsets>
+                        <Vaadin-Widgetsets>org.vaadin.grid.cellrenderers.RenderersCollectionWidgetSet, org.vaadin.sparklines.SparklinesWidgetset, org.vaadin.teemu.ratingstars.gwt.RatingStarsWidgetset</Vaadin-Widgetsets>
 						<Include-Resource>{maven-resources},LICENSE.txt,about_files/=about_files,META-INF/=META-INF/,about.html,about.ini,about.mappings,about.properties</Include-Resource>
                         <_nouses>true</_nouses>
                     </instructions>
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.classpath b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.classpath
new file mode 100644
index 0000000..dbde515
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.classpath
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry exported="true" kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.gitignore b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.project b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.project
new file mode 100644
index 0000000..d29d133
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dependencies.bundle.vaadin.addon.refresher</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..714351a
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.pde.core.prefs b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000..ba582c2
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,2 @@
+BUNDLE_ROOT_PATH=target/classes
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/LICENSE.txt b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/LICENSE.txt
new file mode 100644
index 0000000..fc5938d
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/LICENSE.txt
@@ -0,0 +1,140 @@
+Eclipse Foundation Software User Agreement
+
+November 22, 2017
+
+Usage Of Content
+
+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.
+
+Applicable Licenses
+
+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 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
+
+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").
+
+-   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").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   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.
+-   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.
+
+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:
+
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
+
+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.
+
+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):
+
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
+
+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.
+
+Use of Provisioning Technology
+
+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
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
+
+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:
+
+1.  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.
+2.  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.
+3.  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.
+
+Cryptography
+
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
+
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about.html b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about.html
new file mode 100644
index 0000000..888e727
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about.html
@@ -0,0 +1,32 @@
+<!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>November 30, 2017</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 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</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>
+
+<p>
+The bundle contains software licensed under the <a href="about_files/Apache-license-2.0.txt">Apache License 2.0</a><br>
+
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about.ini b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/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.dependencies.bundle.vaadin.addon.treegrid/about.mappings b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/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.dependencies.bundle.vaadin.addon.treegrid/about.properties b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about.properties
new file mode 100644
index 0000000..e1212cf
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about.properties
@@ -0,0 +1,32 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0 
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+################ 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 2.0 \n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
+\n\
+Contributors:\n\
+    Loetz GmbH&Co.KG - implementation\n\
+\n\
+\n\
+The bundle contains software licensed under the Apache License 2.0\n\
+\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about_files/Apache-license-2.0.txt b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about_files/Apache-license-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/about_files/Apache-license-2.0.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) 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. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/pom.xml b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/pom.xml
new file mode 100644
index 0000000..91d6139
--- /dev/null
+++ b/org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid/pom.xml
@@ -0,0 +1,97 @@
+<?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 2.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# https://www.eclipse.org/legal/epl-2.0/ -->
+<!--# -->
+<!--# SPDX-License-Identifier: EPL-2.0 -->
+<!--# -->
+<!--# 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>
+	<parent>
+		<groupId>org.eclipse.osbp.releng.maven</groupId>
+		<artifactId>org.eclipse.osbp.releng.maven.parent.mbp2</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath />
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid</artifactId>
+
+	<packaging>bundle</packaging>
+
+	<version>0.7.7-SNAPSHOT</version>
+
+	<properties>
+		<osbp.build.ignore.baseline>true</osbp.build.ignore.baseline>
+	</properties>
+
+	<scm>
+		<connection>${osbp.scm.connection}</connection>
+		<developerConnection>${osbp.scm.connection.dev}</developerConnection>
+		<tag>HEAD</tag>
+	</scm>
+
+	<dependencies>
+		<!-- CQ: https://dev.eclipse.org/ipzilla/show_bug.cgi?id=???? -->
+		<dependency>
+			<groupId>com.vaadin</groupId>
+			<artifactId>vaadin-treegrid</artifactId>
+			<version>0.7.7</version>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<version>${mbp.version}</version>
+				<extensions>true</extensions>
+				<configuration>
+				<archive> </archive>
+					<instructions>
+						<Bundle-Name>OSBP: Treegrid Addon for Vaadin</Bundle-Name>
+						<Bundle-Version>0.7.7.${osgi-version-qualifier}</Bundle-Version>
+						<Bundle-SymbolicName>vaadin-treegrid.osgi</Bundle-SymbolicName>
+						<Embed-Dependency>
+							groupId=com.vaadin;artifactId=vaadin-treegrid;version=0.7.7;scope=compile;inline=true,
+							groupId=com.vaadin;artifactId=vaadin-treegrid;version=0.7.7;classifier=sources;scope=compile;inline=true
+						</Embed-Dependency>
+						<Export-Package>
+							org.vaadin.treegrid.*;version=0.7.7
+						</Export-Package>
+						<Require-Bundle>
+							com.vaadin.client;bundle-version="[7.7.6,7.8.0)",
+							com.vaadin.client-compiled;bundle-version="[7.7.6,7.8.0)",
+							com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
+							com.vaadin.shared;bundle-version="[7.7.6,7.8.0)"
+						</Require-Bundle>
+						<Import-Package>
+						</Import-Package>
+						<Vaadin-License-Title>Apache License 2.0</Vaadin-License-Title>
+						<Vaadin-License-File>http://www.apache.org/licenses/LICENSE-2.0.html</Vaadin-License-File>
+						<Vaadin-Package-Version>1</Vaadin-Package-Version>
+						<Vaadin-Widgetsets>org.vaadin.treegrid.WidgetSet</Vaadin-Widgetsets>
+						<Vaadin-Stylesheets>VAADIN/addons/treegrid/treegrid.scss</Vaadin-Stylesheets>						
+						<Include-Resource>{maven-resources},LICENSE.txt,about_files/=about_files,META-INF/=META-INF/,about.html,about.ini,about.mappings,about.properties</Include-Resource>
+						<_nouses>true</_nouses>
+					</instructions>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<repositories>
+		<repository>
+			<id>vaadin-addons</id>
+			<url>http://maven.vaadin.com/vaadin-addons</url>
+		</repository>
+	</repositories>
+	<groupId>org.eclipse.osbp.dependencies</groupId>
+</project>
diff --git a/pom.xml b/pom.xml
index bb2e215..d78b8a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,7 +61,8 @@
         <module>org.eclipse.osbp.dependencies.bundle.knowhowlab.osgi.testing.assertions</module> 
         <module>org.eclipse.osbp.dependencies.bundle.kxml2.osgi</module>
         <module>org.eclipse.osbp.dependencies.bundle.mdx4j</module>
-        <module>org.eclipse.osbp.dependencies.bundle.mondrian.osgi</module>
+        <!-- module>org.eclipse.osbp.dependencies.bundle.mondrian.osgi</module -->
+        <module>org.eclipse.osbp.dependencies.bundle.mondrian.3.14.0.osgi</module>
         <module>org.eclipse.osbp.dependencies.bundle.olap4j.osgi</module>
         <module>org.eclipse.osbp.dependencies.bundle.olap4j-xmla.osgi</module>
         <module>org.eclipse.osbp.dependencies.bundle.opencsv</module>
@@ -75,6 +76,7 @@
         <module>org.eclipse.osbp.dependencies.bundle.vaadin.addon.popupbutton</module>
         <module>org.eclipse.osbp.dependencies.bundle.vaadin.addon.refresher</module>
         <module>org.eclipse.osbp.dependencies.bundle.vaadin.addon.sizereporter</module>
+        <module>org.eclipse.osbp.dependencies.bundle.vaadin.addon.treegrid</module>
         <module>org.eclipse.osbp.dependencies.bundle.vaadin.external.gwt</module>
     </modules>
 
