You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by da...@apache.org on 2020/11/23 13:35:11 UTC

[sling-feature-converter-maven-plugin] 01/37: Rename the project and added docu

This is an automated email from the ASF dual-hosted git repository.

davidb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-feature-converter-maven-plugin.git

commit b2c7f09c8db73eeeecc92fbb54c3a4ce2ea123ae
Author: Andreas Schaefer <sc...@iMac.local>
AuthorDate: Tue Aug 13 17:40:48 2019 -0700

    Rename the project and added docu
---
 CODE_OF_CONDUCT.md                                 |  22 ++
 CONTRIBUTING.md                                    |  24 ++
 Jenkinsfile                                        |  20 +
 LICENSE                                            | 202 ++++++++++
 README.md                                          |  65 ++++
 pom.xml                                            | 356 +++++++++++++++++
 .../core/pom.xml                                   | 150 ++++++++
 .../test/cqconverter/SampleRequestModel.java       |  53 +++
 .../cpconverter/test/servlet/ByPathServlet.java    |  71 ++++
 .../test/servlet/ByResourceTypeServlet.java        |  77 ++++
 .../test/servlet/ByPathServletTest.java            |  33 ++
 .../invoker.properties                             |  17 +
 .../pom.xml                                        | 418 ++++++++++++++++++++
 .../ui.apps/pom.xml                                | 124 ++++++
 .../src/main/content/META-INF/vault/filter.xml     |  40 ++
 .../src/main/content/META-INF/vault/settings.xml   |  17 +
 .../content/jcr_root/apps/cqconverter/.content.xml |  24 ++
 .../jcr_root/apps/cqconverter/home/.content.xml    |  20 +
 .../jcr_root/apps/cqconverter/home/body.html       |  24 ++
 .../jcr_root/apps/cqconverter/home/head.html       |  23 ++
 .../jcr_root/apps/cqconverter/install/.content.xml |  23 ++
 .../jcr_root/apps/cqconverter/page/.content.xml    |  19 +
 .../jcr_root/apps/cqconverter/page/body.html       |  21 ++
 .../jcr_root/apps/cqconverter/page/footer.html     |  19 +
 .../jcr_root/apps/cqconverter/page/head.html       |  23 ++
 .../jcr_root/apps/cqconverter/page/page.html       |  35 ++
 .../jcr_root/content/cpconverter/.content.xml      |  18 +
 .../jcr_root/content/cpconverter/home/.content.xml |  20 +
 .../content/cpconverter/home/welcome/.content.xml  |  25 ++
 .../verify.bsh                                     |  93 +++++
 .../core/pom.xml                                   | 150 ++++++++
 .../test/cqconverter/SampleRequestModel.java       |  53 +++
 .../cpconverter/test/servlet/ByPathServlet.java    |  71 ++++
 .../test/servlet/ByResourceTypeServlet.java        |  77 ++++
 .../test/servlet/ByPathServletTest.java            |  33 ++
 .../fm.launcher/pom.xml                            |  98 +++++
 .../invoker.properties                             |  17 +
 .../package-with-single-bundle-target-mode/pom.xml | 419 +++++++++++++++++++++
 .../ui.apps/pom.xml                                | 108 ++++++
 .../src/main/content/META-INF/vault/filter.xml     |  40 ++
 .../src/main/content/META-INF/vault/settings.xml   |  17 +
 .../content/jcr_root/apps/cqconverter/.content.xml |  24 ++
 .../jcr_root/apps/cqconverter/home/.content.xml    |  20 +
 .../jcr_root/apps/cqconverter/home/body.html       |  24 ++
 .../jcr_root/apps/cqconverter/home/head.html       |  23 ++
 .../jcr_root/apps/cqconverter/install/.content.xml |  23 ++
 .../jcr_root/apps/cqconverter/page/.content.xml    |  19 +
 .../jcr_root/apps/cqconverter/page/body.html       |  21 ++
 .../jcr_root/apps/cqconverter/page/footer.html     |  19 +
 .../jcr_root/apps/cqconverter/page/head.html       |  23 ++
 .../jcr_root/apps/cqconverter/page/page.html       |  35 ++
 .../jcr_root/content/cpconverter/.content.xml      |  18 +
 .../jcr_root/content/cpconverter/home/.content.xml |  20 +
 .../content/cpconverter/home/welcome/.content.xml  |  25 ++
 .../verify.bsh                                     |  94 +++++
 .../core/pom.xml                                   | 150 ++++++++
 .../test/cqconverter/SampleRequestModel.java       |  53 +++
 .../cpconverter/test/servlet/ByPathServlet.java    |  71 ++++
 .../test/servlet/ByResourceTypeServlet.java        |  77 ++++
 .../test/servlet/ByPathServletTest.java            |  33 ++
 .../invoker.properties                             |  17 +
 .../pom.xml                                        | 418 ++++++++++++++++++++
 .../ui.apps/pom.xml                                | 129 +++++++
 .../src/main/content/META-INF/vault/filter.xml     |  40 ++
 .../src/main/content/META-INF/vault/settings.xml   |  17 +
 .../content/jcr_root/apps/cqconverter/.content.xml |  24 ++
 .../jcr_root/apps/cqconverter/home/.content.xml    |  20 +
 .../jcr_root/apps/cqconverter/home/body.html       |  24 ++
 .../jcr_root/apps/cqconverter/home/head.html       |  23 ++
 .../jcr_root/apps/cqconverter/install/.content.xml |  23 ++
 .../jcr_root/apps/cqconverter/page/.content.xml    |  19 +
 .../jcr_root/apps/cqconverter/page/body.html       |  21 ++
 .../jcr_root/apps/cqconverter/page/footer.html     |  19 +
 .../jcr_root/apps/cqconverter/page/head.html       |  23 ++
 .../jcr_root/apps/cqconverter/page/page.html       |  35 ++
 .../jcr_root/content/cpconverter/.content.xml      |  18 +
 .../jcr_root/content/cpconverter/home/.content.xml |  20 +
 .../content/cpconverter/home/welcome/.content.xml  |  25 ++
 .../verify.bsh                                     |  93 +++++
 .../cpconverter/maven/mojos/AbstractBaseMojo.java  |  45 +++
 .../cpconverter/maven/mojos/ContentPackage.java    | 114 ++++++
 .../cpconverter/maven/mojos/ConvertCPMojo.java     | 350 +++++++++++++++++
 .../cpconverter/maven/mojos/ConvertPMMojo.java     | 226 +++++++++++
 .../maven/mojos/FeatureLauncherMojo.java           |  57 +++
 src/site/markdown/index.md                         |  10 +
 src/site/markdown/usage.md.vm                      | 275 ++++++++++++++
 src/site/site.xml                                  |  41 ++
 87 files changed, 6057 insertions(+)

diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..0fa18e5
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,22 @@
+<!--/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you 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.
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/-->
+Apache Software Foundation Code of Conduct
+====
+
+Being an Apache project, Apache Sling adheres to the Apache Software Foundation's [Code of Conduct](https://www.apache.org/foundation/policies/conduct.html).
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..ac82a1a
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,24 @@
+<!--/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you 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.
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/-->
+Contributing
+====
+
+Thanks for choosing to contribute!
+
+You will find all the necessary details about how you can do this at https://sling.apache.org/contributing.html.
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..f582519
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+slingOsgiBundleBuild()
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/LICENSE
@@ -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/README.md b/README.md
new file mode 100644
index 0000000..8f46163
--- /dev/null
+++ b/README.md
@@ -0,0 +1,65 @@
+[<img src="https://sling.apache.org/res/logos/sling.png"/>](https://sling.apache.org)
+
+ [![Build Status](https://builds.apache.org/buildStatus/icon?job=Sling/sling-slingfeature-maven-plugin/master)](https://builds.apache.org/job/Sling/job/sling-slingfeature-maven-plugin/job/master) [![Test Status](https://img.shields.io/jenkins/t/https/builds.apache.org/job/Sling/job/sling-slingfeature-maven-plugin/job/master.svg)](https://builds.apache.org/job/Sling/job/sling-slingfeature-maven-plugin/job/master/test_results_analyzer/) [![Maven Central](https://maven-badges.herokuapp.com/ [...]
+
+# Apache Sling Content Package to Feature Model Plugin
+
+This module is part of the [Apache Sling](https://sling.apache.org) project.
+
+Maven Plugin for Content Package to Feature Model Conversion:
+
+# Introduction
+
+This plugin is intended for a content package to also provide a Feature Model
+and its converted package / bundle. This plugin will only work on Content
+Package ZIP files artifacts.
+
+This plugin is a wrapper for the Sling Feature Content Package Converter
+**org.apache.sling.feature.cpconverter** over a content package the
+POM defines.
+
+The idea is to convert a Content Package at built time into a Feature
+Module so that it can be used both a regular Content Package in a
+traditional Sling Instance (Lauchpad) or in a Sling Instance in a Feature
+Model.
+The plugin will do the conversion and so a Content Package cna be used
+in a Feature Model w/o any changes in the Content Package.
+
+## Supported goals
+
+This plugin has only one goal called **convert-cp** which takes a few
+parameters:
+
+* **strictValidation**:
+    if set to true this will force the plugin to do a strict
+    conversion. Checkout the Content Package 2 Feature
+    Model Converter tool. Default: **false**
+* **mergeConfigurations**:
+    if set to true if will merge configurations with
+    the same PID. Not sure if that makes sense in
+    this plugin. Default: **false**
+* **bundleStartOrder**:
+    The bundle start order of the generated Feature
+    Model. Default **20**
+* **artifactIdOverride**:
+    An FM Artifact Id that overrides the one that
+    is set by default. **Atttention**: to avoid the
+    variable substitution for **${}** please add
+    a zero-width whitespace (&#8203;) in between.
+* **featureModelsOutputDirectory**:
+    Output folder of the Feature Model. Default
+    **target/cp-conversion**
+* **convertedContentPackageOutputDirectory**:
+    Output folder folder of the converted Content Package. Default
+    **target**
+* **installConvertedContentPackage**:
+    Install the Converted Content Package into the local Maven
+    Repository so that it can be used by the Feature Model without
+    a manual copy. Default: **true**
+* **systemProperties**:
+    List of strings that represents System Properties like the Java
+    **-D** option
+
+In order for the plugin to work the Content Package must be already
+created so this plugin must be started in a lifecycle phase after
+**package**.
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..dcc0832
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>sling</artifactId>
+        <version>33</version>
+        <relativePath />
+    </parent>
+
+    <artifactId>sling-feature-converter-maven-plugin</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>maven-plugin</packaging>
+
+    <name>Apache Sling Feature Model Converter Plugin</name>
+    <description>
+        Maven Plugin to convert Configurations / Packages to Feature Model format
+    </description>
+    <url>https://sling.apache.org/components/sling-feature-converter-maven-plugin/</url>
+
+    <properties>
+        <sling.java.version>8</sling.java.version>
+        <maven.version>3.5.0</maven.version>
+        <maven.scm.version>1.11.1</maven.scm.version>
+        <maven.site.path>${project.artifactId}-archives/${project.artifactId}-LATEST</maven.site.path>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.plexus</groupId>
+                <artifactId>plexus-component-metadata</artifactId>
+                <version>1.7.1</version>
+                <executions>
+                    <execution>
+                        <id>generate-metadata</id>
+                        <goals>
+                            <goal>generate-metadata</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-plugin-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>mojo-descriptor</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>descriptor</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>generated-helpmojo</id>
+                        <goals>
+                            <goal>helpmojo</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-scm-publish-plugin</artifactId>
+                <configuration>
+                    <checkoutDirectory>${user.home}/maven-sites/${maven.site.path}</checkoutDirectory>
+                    <tryUpdate>true</tryUpdate>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>src/site/markdown/**</exclude>
+                        <exclude>src/test/resources/**/*.txt</exclude>
+                        <exclude>src/test/resources/**/*.feature</exclude>
+                        <exclude>src/test/resources/META-INF/services/*</exclude>
+                        <exclude>src/it/**/*.json</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-invoker-plugin</artifactId>
+                <configuration>
+                    <debug>true</debug>
+                    <projectsDirectory>src/it</projectsDirectory>
+                    <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
+<!-- TODO: it would great to install the test artifacts locally but this will only work if CP Converter is released -> Activate when it is released-->
+<!--                    <localRepositoryPath>${project.build.directory}/it-repo</localRepositoryPath>-->
+                    <pomIncludes>
+                        <pomInclude>**/pom.xml</pomInclude>
+                    </pomIncludes>
+                    <postBuildHookScript>verify</postBuildHookScript>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>integration-test</id>
+                        <goals>
+                            <goal>install</goal>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.core</artifactId>
+            <version>6.0.0</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-text</artifactId>
+            <version>1.6</version>
+        </dependency>
+         <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.converter</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.configurator</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.commons.johnzon</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.jcr</groupId>
+            <artifactId>jcr</artifactId>
+            <version>2.0</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-spi-commons</artifactId>
+            <version>2.19.1</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.cpconverter</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.launcher</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.modelconverter</artifactId>
+            <version>1.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature</artifactId>
+            <version>1.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.io</artifactId>
+            <version>1.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.analyser</artifactId>
+            <version>1.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.provisioning.model</artifactId>
+            <version>1.8.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-api</artifactId>
+            <version>2.19.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit.vault</groupId>
+            <artifactId>org.apache.jackrabbit.vault</artifactId>
+            <version>3.2.8</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-core</artifactId>
+            <version>${maven.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-plugin-api</artifactId>
+            <version>${maven.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact</artifactId>
+            <version>${maven.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.shared</groupId>
+            <artifactId>maven-artifact-transfer</artifactId>
+            <version>0.11.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-compat</artifactId>
+            <version>${maven.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-archiver</artifactId>
+            <version>3.3.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <version>3.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.shared</groupId>
+            <artifactId>maven-osgi</artifactId>
+            <version>0.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-interactivity-api</artifactId>
+            <version>1.0-alpha-6</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-archiver</artifactId>
+            <version>3.5</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-utils</artifactId>
+            <version>3.0.24</version>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.framework</artifactId>
+            <version>1.9.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>versions-maven-plugin</artifactId>
+            <version>2.7</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.5</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.shared</groupId>
+            <artifactId>maven-filtering</artifactId>
+            <version>3.1.1</version>
+        </dependency>
+        <!-- schema validation -->
+        <dependency>
+            <groupId>com.github.java-json-tools</groupId>
+            <artifactId>json-schema-validator</artifactId>
+            <version>2.2.10</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+            <version>2.2.3</version>
+        </dependency>
+        <!-- APIs JARs -->
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.utils</artifactId>
+            <version>1.11.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.scm</groupId>
+            <artifactId>maven-scm-api</artifactId>
+            <version>${maven.scm.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.scm</groupId>
+            <artifactId>maven-scm-manager-plexus</artifactId>
+            <version>${maven.scm.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.scm</groupId>
+            <artifactId>maven-scm-provider-gitexe</artifactId>
+            <version>${maven.scm.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.scm</groupId>
+            <artifactId>maven-scm-provider-svnexe</artifactId>
+            <version>${maven.scm.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-model-builder</artifactId>
+            <version>3.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-exec</artifactId>
+            <version>1.3</version>
+        </dependency>
+        <!-- testing -->
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <version>1.10.19</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+    </dependencies>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-plugin-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </reporting>
+
+</project>
diff --git a/src/it/package-with-single-bundle-no-parameters/core/pom.xml b/src/it/package-with-single-bundle-no-parameters/core/pom.xml
new file mode 100644
index 0000000..cc7f813
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/core/pom.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>sling-cpconverter-maven-plugin-test-no-param</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>sling-cpconverter-maven-plugin-test-no-param.core</artifactId>
+    <packaging>bundle</packaging>
+
+    <name>CQ Converter Test - Core</name>
+    <description>
+        This is an empty OSGi Bundle which can be used
+        to compile and deploy OSGi Services to Sling.
+
+        This Bundle can be deployed using the Profile
+        "autoInstallBundle" but that should not be used
+        together with the "ui.apps" Profile "autoInstallAll"
+        as they are not deployed the same way and can lead
+        to undesired issues during deployment (bundle not
+        updated or not working at all).
+    </description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Embed-Dependency>*;scope=compile;inline=true</Embed-Dependency>
+                        <Sling-Model-Packages>org.apache.sling.cpconverter.test.cqconverter</Sling-Model-Packages>
+                        <_dsannotations>*</_dsannotations>
+                        <_metatypeannotations>*</_metatypeannotations>
+                        <_removeheaders>
+                            Embed-Dependency,
+                            Private-Package,
+                            Include-Resource
+                        </_removeheaders>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>7</source>
+                    <target>7</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>maven-sling-plugin</artifactId>
+                <configuration>
+                    <slingUrl>http://${sling.host}:${sling.port}/system/console</slingUrl>
+                    <user>${sling.user}</user>
+                    <password>${sling.password}</password>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.annotation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.metatype.annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.jcr</groupId>
+            <artifactId>jcr</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.models.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+    </dependencies>
+
+    <!--
+        Attention: the autoInstallBundle was removed as deploying bundles directly and through a package is causing
+                   issues with updates and can prevent the latest code of a bundle being deployed.
+                   If you know what you are doing then you can use maven-sling-plugin directly from the Maven CLI.
+    -->
+</project>
diff --git a/src/it/package-with-single-bundle-no-parameters/core/src/main/java/org/apache/sling/cpconverter/test/cqconverter/SampleRequestModel.java b/src/it/package-with-single-bundle-no-parameters/core/src/main/java/org/apache/sling/cpconverter/test/cqconverter/SampleRequestModel.java
new file mode 100644
index 0000000..a015bb8
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/core/src/main/java/org/apache/sling/cpconverter/test/cqconverter/SampleRequestModel.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.cqconverter;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.models.annotations.Model;
+import org.apache.sling.models.annotations.injectorspecific.SlingObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.Session;
+
+@Model(adaptables = {Resource.class, SlingHttpServletRequest.class})
+public class SampleRequestModel {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SampleRequestModel.class);
+
+    @SlingObject
+    private ResourceResolver resourceResolver;
+
+    public SampleRequestModel() {
+        LOGGER.trace("Model Instance created");
+    }
+
+    /** @return User Name of the Current User **/
+    public String getCurrentUser() {
+        String answer = "No User";
+
+        // Adapt to a session and get the current User ID.
+        Session session = resourceResolver.adaptTo(Session.class);
+        LOGGER.trace("Found Session from Resolver: '{}'", session);
+        if(session != null) {
+            answer = session.getUserID();
+        }
+        return answer;
+    }
+}
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-no-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByPathServlet.java b/src/it/package-with-single-bundle-no-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByPathServlet.java
new file mode 100644
index 0000000..27db4f4
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByPathServlet.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.servlet;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Hello World Servlet registered by path
+ */
+@Component(
+    service = Servlet.class,
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Hello World Path Servlet",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        "sling.servlet.paths=/hello-world-servlet"
+    }
+)
+@SuppressWarnings("serial")
+public class ByPathServlet extends SlingSafeMethodsServlet {
+    
+    private final Logger log = LoggerFactory.getLogger(ByPathServlet.class);
+
+    @Override
+    protected void doGet(SlingHttpServletRequest request,
+            SlingHttpServletResponse response) throws ServletException,
+            IOException {
+        
+        Writer w = response.getWriter();
+        w.write("<!DOCTYPE html PUBLIC \"-//IETF//DTD HTML 2.0//EN\">");
+        w.write("<html>");
+        w.write("<head>");
+        w.write("<title>Hello World Servlet</title>");
+        w.write("</head>");
+        w.write("<body>");
+        w.write("<h1>Hello World!</h1>");
+        w.write("</body>");
+        w.write("</html>");
+        
+        log.info("Hello World Servlet");
+        
+    }
+
+}
+
diff --git a/src/it/package-with-single-bundle-no-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByResourceTypeServlet.java b/src/it/package-with-single-bundle-no-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByResourceTypeServlet.java
new file mode 100644
index 0000000..da24407
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByResourceTypeServlet.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.servlet;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Hello World Servlet registered by resource type
+ */
+@Component(
+    service = Servlet.class,
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Hello World Path Servlet",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        "sling.servlet.resourceTypes=sling/servlet/default",
+        "sling.servlet.selectors=hello",
+        "sling.servlet.extensions=html",
+    }
+)
+@SuppressWarnings("serial")
+public class ByResourceTypeServlet extends SlingSafeMethodsServlet {
+    
+    private final Logger log = LoggerFactory.getLogger(ByResourceTypeServlet.class);
+
+    @Override
+    protected void doGet(SlingHttpServletRequest request,
+            SlingHttpServletResponse response) throws ServletException,
+            IOException {
+        Resource resource = request.getResource();
+
+        Writer w = response.getWriter();
+        w.write("<!DOCTYPE html PUBLIC \"-//IETF//DTD HTML 2.0//EN\">");
+        w.write("<html>");
+        w.write("<head>");
+        w.write("<title>Hello World Servlet</title>");
+        w.write("</head>");
+        w.write("<body>");
+        w.write("<h1>Hello ");
+        w.write(resource.getPath());
+        w.write("</h1>");
+        w.write("</body>");
+        w.write("</html>");
+        
+        log.info("Hello World Servlet");
+        
+    }
+
+}
+
diff --git a/src/it/package-with-single-bundle-no-parameters/core/src/test/java/org/apache/sling/cpconverter/test/org/apache/sling/cpconverter/test/servlet/ByPathServletTest.java b/src/it/package-with-single-bundle-no-parameters/core/src/test/java/org/apache/sling/cpconverter/test/org/apache/sling/cpconverter/test/servlet/ByPathServletTest.java
new file mode 100644
index 0000000..f2f5286
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/core/src/test/java/org/apache/sling/cpconverter/test/org/apache/sling/cpconverter/test/servlet/ByPathServletTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.servlet;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit test for By Path Servlet.
+ */
+public class ByPathServletTest extends TestCase {
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testByPathServlet() {
+        assertTrue(true);
+    }
+    
+}
diff --git a/src/it/package-with-single-bundle-no-parameters/invoker.properties b/src/it/package-with-single-bundle-no-parameters/invoker.properties
new file mode 100644
index 0000000..209b6ef
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/invoker.properties
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+invoker.goals = clean install
+invoker.debug = true
diff --git a/src/it/package-with-single-bundle-no-parameters/pom.xml b/src/it/package-with-single-bundle-no-parameters/pom.xml
new file mode 100644
index 0000000..5ddd115
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/pom.xml
@@ -0,0 +1,418 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.sling</groupId>
+    <artifactId>sling-cpconverter-maven-plugin-test-no-param</artifactId>
+    <packaging>pom</packaging>
+    <version>1.0.0-SNAPSHOT</version>
+    <name>Apache Sling Features Maven plugin test - no parameter</name>
+    <description>This is just an Apache Sling Content Package Maven plugin test to convert a package with a single
+        bundle
+    </description>
+    <organization>
+        <name>The Apache Software Foundation</name>
+        <url>https://www.apache.org/</url>
+    </organization>
+    <licenses>
+        <license>
+            <name>Apache License, Version 2.0</name>
+            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+    <properties>
+        <interpolated_variable>true</interpolated_variable>
+        <osgi.framework.version>1.9.0</osgi.framework.version>
+        <sling.framework.install.incremental>true</sling.framework.install.incremental>
+        <sling.framework.install.startlevel>1</sling.framework.install.startlevel>
+        <sling.ignoreSystemProperties>true</sling.ignoreSystemProperties>
+
+        <sling.host>localhost</sling.host>
+        <sling.port>8080</sling.port>
+        <sling.user>admin</sling.user>
+
+        <sling.password>admin</sling.password>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+
+        <release.plugin.version>2.5.3</release.plugin.version>
+        <source.plugin.version>3.0.1</source.plugin.version>
+        <resource.plugin.version>3.1.0</resource.plugin.version>
+        <jar.plugin.version>3.1.1</jar.plugin.version>
+        <enforcer.plugin.version>3.0.0-M2</enforcer.plugin.version>
+        <compiler.plugin.version>3.8.0</compiler.plugin.version>
+        <bundle.plugin.version>4.2.0</bundle.plugin.version>
+        <clean.plugin.version>3.1.0</clean.plugin.version>
+        <installer.plugin.version>3.0.0-M1</installer.plugin.version>
+        <surfire.plugin.version>3.0.0-M3</surfire.plugin.version>
+        <failsafe.plugin.version>3.0.0-M3</failsafe.plugin.version>
+        <deploy.plugin.version>3.0.0-M1</deploy.plugin.version>
+        <sling.plugin.version>2.4.0</sling.plugin.version>
+        <dependency.plugin.version>3.1.1</dependency.plugin.version>
+        <build.helper.plugin.version>3.0.0</build.helper.plugin.version>
+        <wcmio.plugin.version>1.6.18</wcmio.plugin.version>
+        <filevault-package.plugin.version>1.0.3</filevault-package.plugin.version>
+
+        <osgi.core.version>7.0.0</osgi.core.version>
+        <osgi.annotation.version>7.0.0</osgi.annotation.version>
+        <org.osgi.service.component.annotations.version>1.4.0</org.osgi.service.component.annotations.version>
+        <org.osgi.service.metatype.annotations.version>1.4.0</org.osgi.service.metatype.annotations.version>
+        <org.osgi.compendium.version>5.0.0</org.osgi.compendium.version>
+        <javax.servlet-api.version>3.1.0</javax.servlet-api.version>
+        <javax.inject.version>1</javax.inject.version>
+        <jcr.version>2.0</jcr.version>
+        <sling.models.api.version>1.3.6</sling.models.api.version>
+        <jetbrains.annotations.version>16.0.2</jetbrains.annotations.version>
+        <sling.settings.version>1.3.10</sling.settings.version>
+        <sling.commons.osgi.version>2.4.0</sling.commons.osgi.version>
+        <jackrabbit-api.version>2.16.3</jackrabbit-api.version>
+        <commons-lang.version>2.6</commons-lang.version>
+        <jmock-junit4.version>2.8.2</jmock-junit4.version>
+    </properties>
+    <build>
+        <plugins>
+            <!-- Maven Release Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-release-plugin</artifactId>
+                <configuration>
+                    <scmCommentPrefix>[maven-scm] :</scmCommentPrefix>
+                    <preparationGoals>clean install</preparationGoals>
+                    <goals>install</goals>
+                    <releaseProfiles>release</releaseProfiles>
+                </configuration>
+            </plugin>
+            <!-- Maven Source Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <inherited>true</inherited>
+            </plugin>
+            <!-- Maven Resources Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <!-- Maven Jar Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+            </plugin>
+            <!-- Maven Enforcer Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>enforce-maven</id>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireMavenVersion>
+                                    <message>Project must be built with Maven 3.1.0 or higher</message>
+                                    <version>[3.1.0,)</version>
+                                </requireMavenVersion>
+                                <requireJavaVersion>
+                                    <message>Project must be compiled with Java 7 or higher</message>
+                                    <version>1.7.0</version>
+                                </requireJavaVersion>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Maven Compiler Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <!-- Maven Release Plugin -->
+                <plugin>
+                    <artifactId>maven-release-plugin</artifactId>
+                    <version>${release.plugin.version}</version>
+                </plugin>
+                <!-- Maven Source Plugin -->
+                <plugin>
+                    <artifactId>maven-source-plugin</artifactId>
+                    <version>${source.plugin.version}</version>
+                </plugin>
+                <!-- Maven Resources Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>${resource.plugin.version}</version>
+                </plugin>
+                <!-- Maven Jar Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>${jar.plugin.version}</version>
+                </plugin>
+                <!-- Maven Enforcer Plugin -->
+                <plugin>
+                    <artifactId>maven-enforcer-plugin</artifactId>
+                    <version>${enforcer.plugin.version}</version>
+                </plugin>
+                <!-- Maven Compiler Plugin -->
+                <plugin>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>${compiler.plugin.version}</version>
+                </plugin>
+
+                <!-- Maven Clean Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>${clean.plugin.version}</version>
+                </plugin>
+                <!-- Maven Installer Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-install-plugin</artifactId>
+                    <version>${installer.plugin.version}</version>
+                </plugin>
+                <!-- Maven Surefire Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>${surfire.plugin.version}</version>
+                </plugin>
+                <!-- Maven Failsafe Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-failsafe-plugin</artifactId>
+                    <version>${failsafe.plugin.version}</version>
+                </plugin>
+                <!-- Maven Deploy Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-deploy-plugin</artifactId>
+                    <version>${deploy.plugin.version}</version>
+                </plugin>
+                <!-- Apache Sling Plugin -->
+                <plugin>
+                    <groupId>org.apache.sling</groupId>
+                    <artifactId>maven-sling-plugin</artifactId>
+                    <version>${sling.plugin.version}</version>
+                </plugin>
+                <!-- Content Package Plugin -->
+                <plugin>
+                    <groupId>org.apache.jackrabbit</groupId>
+                    <artifactId>filevault-package-maven-plugin</artifactId>
+                    <version>${filevault-package.plugin.version}</version>
+                    <extensions>true</extensions>
+                    <configuration>
+                        <failOnMissingEmbed>true</failOnMissingEmbed>
+                        <force>true</force>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>io.wcm.maven.plugins</groupId>
+                    <artifactId>wcmio-content-package-maven-plugin</artifactId>
+                    <version>${wcmio.plugin.version}</version>
+                    <configuration>
+                        <serviceURL>http://${sling.host}:${sling.port}/bin/cpm/</serviceURL>
+                        <userId>${sling.user}</userId>
+                        <password>${sling.password}</password>
+                        <failOnMissingEmbed>true</failOnMissingEmbed>
+                        <force>true</force>
+                        <group>cpconverter</group>
+                    </configuration>
+                </plugin>
+                <!-- Apache Felix Bundle Plugin -->
+                <plugin>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>maven-bundle-plugin</artifactId>
+                    <version>${bundle.plugin.version}</version>
+                    <inherited>true</inherited>
+                </plugin>
+                <!-- Maven Dependency Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <version>${dependency.plugin.version}</version>
+                </plugin>
+                <!-- Build Helper Maven Plugin -->
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>build-helper-maven-plugin</artifactId>
+                    <version>${build.helper.plugin.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <!-- ====================================================================== -->
+    <!-- D E P E N D E N C I E S                                                -->
+    <!-- ====================================================================== -->
+    <dependencyManagement>
+        <dependencies>
+            <!-- OSGi Dependencies -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>osgi.core</artifactId>
+                <version>${osgi.core.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- OSGi annotations: @Version, @ProviderType, @ConsumerType -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>osgi.annotation</artifactId>
+                <version>${osgi.annotation.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- OSGi annotations for DS and metatype -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.service.component.annotations</artifactId>
+                <version>${org.osgi.service.component.annotations.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.service.metatype.annotations</artifactId>
+                <version>${org.osgi.service.metatype.annotations.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Needs to be placed after 'org.osgi.service.component.annotations' otherwise field @Reference will not work -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.compendium</artifactId>
+                <version>${org.osgi.compendium.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Web Application API -->
+            <dependency>
+                <groupId>javax.servlet</groupId>
+                <artifactId>javax.servlet-api</artifactId>
+                <version>${javax.servlet-api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- dependency injection annotations -->
+            <dependency>
+                <groupId>javax.inject</groupId>
+                <artifactId>javax.inject</artifactId>
+                <version>$[javax.inject.version</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- JCR API -->
+            <dependency>
+                <groupId>javax.jcr</groupId>
+                <artifactId>jcr</artifactId>
+                <version>${jcr.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Basic Logging -->
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>1.7.6</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.jetbrains</groupId>
+                <artifactId>annotations</artifactId>
+                <version>${jetbrains.annotations.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Apache Sling Dependencies -->
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.api</artifactId>
+                <version>2.9.0</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.settings</artifactId>
+                <version>${sling.settings.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.commons.osgi</artifactId>
+                <version>${sling.commons.osgi.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.models.api</artifactId>
+                <version>${sling.models.api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>jackrabbit-api</artifactId>
+                <version>${jackrabbit-api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Support -->
+            <dependency>
+                <groupId>commons-lang</groupId>
+                <artifactId>commons-lang</artifactId>
+                <version>${commons-lang.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Basic dependencies for Unit Tests -->
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>4.12</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.jmock</groupId>
+                <artifactId>jmock-junit4</artifactId>
+                <version>${jmock-junit4.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-simple</artifactId>
+                <version>1.7.6</version>
+                <scope>test</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    <modules>
+        <module>core</module>
+        <module>ui.apps</module>
+    </modules>
+</project>
+ 
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/pom.xml b/src/it/package-with-single-bundle-no-parameters/ui.apps/pom.xml
new file mode 100644
index 0000000..4ec8713
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/pom.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>sling-cpconverter-maven-plugin-test-no-param</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>sling-cpconverter-maven-plugin-test-no-param.ui.apps</artifactId>
+    <packaging>content-package</packaging>
+
+    <name>CQ Converter Test - UI Apps</name>
+    <description>
+        This is an empty JCR Package where the JCR Content
+        can be deployed with.
+    </description>
+    <!-- NOTE:
+        For a 'not all' package this JCR Package will embedd
+        the "core" bundle. It can be deployed with the
+        "autoInstallPackage" profile.
+
+        For an 'all' package this only provides the content
+        of the project which is deployed in the root with
+        the "autoInstallAll" profile.
+
+        It is advisable to deploy any bundles or packages
+        in one manner as deploying bundles inside a package
+        and through the System Console can lead to unexpected
+        and errorneous situations.
+    -->
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>sling-cpconverter-maven-plugin-test-no-param.core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.cpconverter</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>filevault-package-maven-plugin</artifactId>
+                <configuration>
+                    <filterSource>${basedir}/src/main/content/META-INF/vault/filter.xml</filterSource>
+                    <embeddedTarget>/apps/cqconverter/install</embeddedTarget>
+                    <embeddeds>
+                        <embedded>
+                            <groupId>${project.groupId}</groupId>
+                            <artifactId>sling-cpconverter-maven-plugin-test-no-param.core</artifactId>
+                            <filter>true</filter>
+                        </embedded>
+                    </embeddeds>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>@project.groupId@</groupId>
+                <artifactId>@project.artifactId@</artifactId>
+                <version>@project.version@</version>
+                <extensions>true</extensions>
+                <executions>
+                    <execution>
+                        <id>convert-cp</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>convert-cp</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <profiles>
+        <!-- ATTENTION: It is highly recomended not to deploy this with this Profile if this Package was or will be deployed with the All package -->
+        <profile>
+            <id>autoInstallPackage</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.wcm.maven.plugins</groupId>
+                        <artifactId>wcmio-content-package-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>install-package</id>
+                                <goals>
+                                    <goal>install</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/META-INF/vault/filter.xml b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/META-INF/vault/filter.xml
new file mode 100644
index 0000000..e022dcc
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/META-INF/vault/filter.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+
+<workspaceFilter version="1.0">
+    <!--
+        Any node that will contain customer data needs to be excluded
+        otherwise a Pacakge Installation will wipe them.
+
+        If there is a mix then all provided nodes must be included and
+        all custom nodes excluded.
+
+        If unsure what to do then go to the Composum Package Manager
+        (/bin/packages.html) and create a test package. To to the package
+        filter list and add filter entries until all of the app provides
+        nodes are included but none of the customer generatedd nodes.
+
+        Also any sub pckage of this module needs to exclude /apps/cqconverter/install
+        folder otherwise they wipe all installed bundles.
+    -->
+    <filter root="/content/cpconverter"/>
+    <!--
+        Need to exclude the Install folder otherwise the Bundle will be undeployed
+        as it is in the '/apps/cqconverter/install' folder (see the 'all'
+        package).
+    -->
+    <filter root="/apps/cqconverter">
+        <exclude pattern="/apps/cqconverter/install/.*"/>
+    </filter>
+</workspaceFilter>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/META-INF/vault/settings.xml b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/META-INF/vault/settings.xml
new file mode 100644
index 0000000..b70c9b9
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/META-INF/vault/settings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<vault version="1.0">
+  <ignore name=".svn"/>
+  <ignore name=".git"/>
+</vault>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/.content.xml b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/.content.xml
new file mode 100644
index 0000000..1a8424c
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/.content.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Root"
+          jcr:description="CQ Converter Test Apps Root folder"
+/>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/.content.xml b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/.content.xml
new file mode 100644
index 0000000..99124e4
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/.content.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Home Page Component"
+          jcr:description="CQ Converter Test Home Page Component with HTL"
+          sling:resourceSuperType="cqconverter/page"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/body.html b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/body.html
new file mode 100644
index 0000000..dd8f148
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/body.html
@@ -0,0 +1,24 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<h2>${properties.jcr:title}</h2>
+<p>CQ Converter Test Home Page from Sling Project Archetype</p>
+<p><b><i>Description: </i></b>${properties.jcr:description}</p>
+<div data-sly-use.sampleRequest="org.apache.sling.cpconverter.test.cqconverter.SampleRequestModel">
+	<p>Current User: ${sampleRequest.currentUser}</p>
+</div>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/head.html b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/head.html
new file mode 100644
index 0000000..67576c8
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/head.html
@@ -0,0 +1,23 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>CQ Converter Test Home Page</title>
+<!-- ${properties.jcr:title} -->
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/install/.content.xml b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/install/.content.xml
new file mode 100644
index 0000000..42debc9
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/install/.content.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="Install Folder"
+/>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/.content.xml b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/.content.xml
new file mode 100644
index 0000000..b822f2a
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/.content.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Page Component"
+          jcr:description="CQ Converter Test Page Component with HTL"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/body.html b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/body.html
new file mode 100644
index 0000000..35078a3
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/body.html
@@ -0,0 +1,21 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<h2>${properties.jcr:title}</h2>
+<p>CQ Converter Test Page from Sling Project Archetype</p>
+<p><b>Description: </b>${properties.jcr:description}</p>
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/footer.html b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/footer.html
new file mode 100644
index 0000000..33f7cba
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/footer.html
@@ -0,0 +1,19 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+CQ Converter Test Footer
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/head.html b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/head.html
new file mode 100644
index 0000000..1e72971
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/head.html
@@ -0,0 +1,23 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>CQ Converter Test Page</title>
+<!-- ${properties.jcr:title} -->
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/page.html b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/page.html
new file mode 100644
index 0000000..5dad451
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/page.html
@@ -0,0 +1,35 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<!DOCTYPE html>
+<html>
+<head>
+    <sly data-sly-include="${'head.html'}"/>
+</head>
+    <body>
+        <h3>Navigation</h3>
+        <div data-sly-list.child="${resource.listChildren}">
+            <a href="${child.path}.html">${child.name}</a>
+        </div>
+        <br/>
+        <sly data-sly-include="${'body.html'}"/>
+        <footer>
+            <sly data-sly-include="${'footer.html'}"/>
+        </footer>
+    </body>
+</html>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/.content.xml b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/.content.xml
new file mode 100644
index 0000000..61ba9d7
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/.content.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Content Root"
+          jcr:description="CQ Converter Test Content Root Page"
+/>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/.content.xml b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/.content.xml
new file mode 100644
index 0000000..821a340
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/.content.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Home"
+          jcr:description="CQ Converter Test Home Page"
+          sling:resourceType="cqconverter/home"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/welcome/.content.xml b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/welcome/.content.xml
new file mode 100644
index 0000000..48e6832
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/welcome/.content.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+--><jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Welcome"
+          jcr:description="CQ Converter Test Welcome Page"
+          sling:resourceType="cqconverter/page"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-no-parameters/verify.bsh b/src/it/package-with-single-bundle-no-parameters/verify.bsh
new file mode 100644
index 0000000..88da15c
--- /dev/null
+++ b/src/it/package-with-single-bundle-no-parameters/verify.bsh
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+import java.io.*;
+import java.util.*;
+import org.codehaus.plexus.util.*;
+
+    boolean check() {
+        String projectName = "sling-cpconverter-maven-plugin-test-no-param.ui.apps";
+        String projectCoreName = "sling-cpconverter-maven-plugin-test-no-param.core";
+        String projectVersion = "1.0.0-SNAPSHOT";
+        String projectGroup = "org.apache.sling";
+        String projectGroupPath = projectGroup.replaceAll("\\.", "/");
+
+        File targetFolder = new File(basedir, "ui.apps/target");
+        File packageFile = new File(targetFolder, projectName + "-" + projectVersion + ".zip");
+        if(!packageFile.exists()) {
+            System.out.println("Content Package was not created: " + packageFile);
+            return false;
+        }
+        File outputFolder = new File(targetFolder, "cp-conversion");
+        File featureModelFolder = new File(outputFolder, "fm.out");
+        if(!featureModelFolder.exists()) {
+            System.out.println("Feature Model Folder was not created" + featureModelFolder);
+            return false;
+        }
+        File featureModelFile = new File(featureModelFolder, projectName + ".json");
+        if(!featureModelFile.exists()) {
+            System.out.println("Feature Model File was not created: " + featureModelFile);
+            return false;
+        }
+        String log = FileUtils.fileRead(featureModelFile);
+        System.out.println("Feature Model File Content: " + log);
+        String[] values = {
+            "\"id\":\"" + projectGroup + ":" + projectName + ":slingosgifeature:" + projectVersion + "\"",
+            "\"bundles\":[",
+            "\"id\":\"" + projectGroup + ":" + projectCoreName + ":" + projectVersion + "\"",
+            "\"content-packages:ARTIFACTS|true\":[",
+            "\"" + projectGroup + ":" + projectName + ":zip:cp2fm-converted:" + projectVersion + "\""
+        };
+        for (String value : values) {
+            if (log.indexOf(value) < 0) {
+                System.out.println("Did not find line: " + value + " -> FAILED!");
+                return false;
+            }
+        }
+        File convertedPackageFolder = new File(outputFolder, projectGroupPath + "/" + projectName + "/" + projectVersion);
+        if(!convertedPackageFolder.exists()) {
+            System.out.println("Converted Package Folder was not created: " + convertedPackageFolder);
+            return false;
+        }
+        File convertedPackageFile = new File(convertedPackageFolder, projectName + "-" + projectVersion + "-cp2fm-converted.zip");
+        if(!convertedPackageFile.exists()) {
+            System.out.println("Converted Package File was not created: " + convertedPackageFile);
+            return false;
+        }
+        // TODO: Adjust the code here to also support local repositories when this is activated
+        File userHomeFolder = new File(System.getProperty("user.home"));
+        File localMavenRepo = new File(userHomeFolder, ".m2/repository");
+        File convertedPackageTargetFolder = new File(localMavenRepo, projectGroupPath + "/" + projectName + "/" + projectVersion);
+        if(!convertedPackageTargetFolder.exists()) {
+            System.out.println("Converted Package Target (Maven) Folder was not created: " + convertedPackageTargetFolder);
+            return false;
+        }
+        File convertedPackageTargetFile = new File(convertedPackageTargetFolder, projectName + "-" + projectVersion + "-cp2fm-converted.zip");
+        if(!convertedPackageTargetFile.exists()) {
+            System.out.println("Converted Package Target File was not created: " + convertedPackageTargetFile);
+            return false;
+        }
+
+        return true;
+    }
+    try {
+        return check();
+    }
+    catch(Throwable t) {
+        t.printStackTrace();
+        return false;
+    }
+    return true;
diff --git a/src/it/package-with-single-bundle-target-mode/core/pom.xml b/src/it/package-with-single-bundle-target-mode/core/pom.xml
new file mode 100644
index 0000000..e9a550d
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/core/pom.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>sling-cpconverter-maven-plugin-test-target-mode</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>sling-cpconverter-maven-plugin-test-target-mode.core</artifactId>
+    <packaging>bundle</packaging>
+
+    <name>CQ Converter Test - Core</name>
+    <description>
+        This is an empty OSGi Bundle which can be used
+        to compile and deploy OSGi Services to Sling.
+
+        This Bundle can be deployed using the Profile
+        "autoInstallBundle" but that should not be used
+        together with the "ui.apps" Profile "autoInstallAll"
+        as they are not deployed the same way and can lead
+        to undesired issues during deployment (bundle not
+        updated or not working at all).
+    </description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Embed-Dependency>*;scope=compile;inline=true</Embed-Dependency>
+                        <Sling-Model-Packages>org.apache.sling.cpconverter.test.cqconverter</Sling-Model-Packages>
+                        <_dsannotations>*</_dsannotations>
+                        <_metatypeannotations>*</_metatypeannotations>
+                        <_removeheaders>
+                            Embed-Dependency,
+                            Private-Package,
+                            Include-Resource
+                        </_removeheaders>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>7</source>
+                    <target>7</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>maven-sling-plugin</artifactId>
+                <configuration>
+                    <slingUrl>http://${sling.host}:${sling.port}/system/console</slingUrl>
+                    <user>${sling.user}</user>
+                    <password>${sling.password}</password>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.annotation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.metatype.annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.jcr</groupId>
+            <artifactId>jcr</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.models.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+    </dependencies>
+
+    <!--
+        Attention: the autoInstallBundle was removed as deploying bundles directly and through a package is causing
+                   issues with updates and can prevent the latest code of a bundle being deployed.
+                   If you know what you are doing then you can use maven-sling-plugin directly from the Maven CLI.
+    -->
+</project>
diff --git a/src/it/package-with-single-bundle-target-mode/core/src/main/java/org/apache/sling/cpconverter/test/cqconverter/SampleRequestModel.java b/src/it/package-with-single-bundle-target-mode/core/src/main/java/org/apache/sling/cpconverter/test/cqconverter/SampleRequestModel.java
new file mode 100644
index 0000000..a015bb8
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/core/src/main/java/org/apache/sling/cpconverter/test/cqconverter/SampleRequestModel.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.cqconverter;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.models.annotations.Model;
+import org.apache.sling.models.annotations.injectorspecific.SlingObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.Session;
+
+@Model(adaptables = {Resource.class, SlingHttpServletRequest.class})
+public class SampleRequestModel {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SampleRequestModel.class);
+
+    @SlingObject
+    private ResourceResolver resourceResolver;
+
+    public SampleRequestModel() {
+        LOGGER.trace("Model Instance created");
+    }
+
+    /** @return User Name of the Current User **/
+    public String getCurrentUser() {
+        String answer = "No User";
+
+        // Adapt to a session and get the current User ID.
+        Session session = resourceResolver.adaptTo(Session.class);
+        LOGGER.trace("Found Session from Resolver: '{}'", session);
+        if(session != null) {
+            answer = session.getUserID();
+        }
+        return answer;
+    }
+}
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-target-mode/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByPathServlet.java b/src/it/package-with-single-bundle-target-mode/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByPathServlet.java
new file mode 100644
index 0000000..27db4f4
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByPathServlet.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.servlet;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Hello World Servlet registered by path
+ */
+@Component(
+    service = Servlet.class,
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Hello World Path Servlet",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        "sling.servlet.paths=/hello-world-servlet"
+    }
+)
+@SuppressWarnings("serial")
+public class ByPathServlet extends SlingSafeMethodsServlet {
+    
+    private final Logger log = LoggerFactory.getLogger(ByPathServlet.class);
+
+    @Override
+    protected void doGet(SlingHttpServletRequest request,
+            SlingHttpServletResponse response) throws ServletException,
+            IOException {
+        
+        Writer w = response.getWriter();
+        w.write("<!DOCTYPE html PUBLIC \"-//IETF//DTD HTML 2.0//EN\">");
+        w.write("<html>");
+        w.write("<head>");
+        w.write("<title>Hello World Servlet</title>");
+        w.write("</head>");
+        w.write("<body>");
+        w.write("<h1>Hello World!</h1>");
+        w.write("</body>");
+        w.write("</html>");
+        
+        log.info("Hello World Servlet");
+        
+    }
+
+}
+
diff --git a/src/it/package-with-single-bundle-target-mode/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByResourceTypeServlet.java b/src/it/package-with-single-bundle-target-mode/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByResourceTypeServlet.java
new file mode 100644
index 0000000..da24407
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByResourceTypeServlet.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.servlet;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Hello World Servlet registered by resource type
+ */
+@Component(
+    service = Servlet.class,
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Hello World Path Servlet",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        "sling.servlet.resourceTypes=sling/servlet/default",
+        "sling.servlet.selectors=hello",
+        "sling.servlet.extensions=html",
+    }
+)
+@SuppressWarnings("serial")
+public class ByResourceTypeServlet extends SlingSafeMethodsServlet {
+    
+    private final Logger log = LoggerFactory.getLogger(ByResourceTypeServlet.class);
+
+    @Override
+    protected void doGet(SlingHttpServletRequest request,
+            SlingHttpServletResponse response) throws ServletException,
+            IOException {
+        Resource resource = request.getResource();
+
+        Writer w = response.getWriter();
+        w.write("<!DOCTYPE html PUBLIC \"-//IETF//DTD HTML 2.0//EN\">");
+        w.write("<html>");
+        w.write("<head>");
+        w.write("<title>Hello World Servlet</title>");
+        w.write("</head>");
+        w.write("<body>");
+        w.write("<h1>Hello ");
+        w.write(resource.getPath());
+        w.write("</h1>");
+        w.write("</body>");
+        w.write("</html>");
+        
+        log.info("Hello World Servlet");
+        
+    }
+
+}
+
diff --git a/src/it/package-with-single-bundle-target-mode/core/src/test/java/org/apache/sling/cpconverter/test/org/apache/sling/cpconverter/test/servlet/ByPathServletTest.java b/src/it/package-with-single-bundle-target-mode/core/src/test/java/org/apache/sling/cpconverter/test/org/apache/sling/cpconverter/test/servlet/ByPathServletTest.java
new file mode 100644
index 0000000..f2f5286
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/core/src/test/java/org/apache/sling/cpconverter/test/org/apache/sling/cpconverter/test/servlet/ByPathServletTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.servlet;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit test for By Path Servlet.
+ */
+public class ByPathServletTest extends TestCase {
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testByPathServlet() {
+        assertTrue(true);
+    }
+    
+}
diff --git a/src/it/package-with-single-bundle-target-mode/fm.launcher/pom.xml b/src/it/package-with-single-bundle-target-mode/fm.launcher/pom.xml
new file mode 100644
index 0000000..ee2a9c9
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/fm.launcher/pom.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>sling-cpconverter-maven-plugin-test-target-mode</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>sling-cpconverter-maven-plugin-test-target-mode.fm.launcher</artifactId>
+    <packaging>jar</packaging>
+
+    <name>CQ Converter Test - UI Apps</name>
+    <description>
+        This is an empty JCR Package where the JCR Content
+        can be deployed with.
+    </description>
+    <!-- NOTE:
+        For a 'not all' package this JCR Package will embedd
+        the "core" bundle. It can be deployed with the
+        "autoInstallPackage" profile.
+
+        For an 'all' package this only provides the content
+        of the project which is deployed in the root with
+        the "autoInstallAll" profile.
+
+        It is advisable to deploy any bundles or packages
+        in one manner as deploying bundles inside a package
+        and through the System Console can lead to unexpected
+        and errorneous situations.
+    -->
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>sling-cpconverter-maven-plugin-test-target-mode.ui.apps</artifactId>
+            <version>${project.version}</version>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.cpconverter</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>@project.groupId@</groupId>
+                <artifactId>@project.artifactId@</artifactId>
+                <version>@project.version@</version>
+                <extensions>true</extensions>
+                <executions>
+                    <execution>
+                        <id>convert-cp</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>convert-cp</goal>
+                        </goals>
+                        <configuration>
+                            <!-- NOTE: ${} is replaced no matter what so this trick seems to work by adding a zero-width-whitespace character (&#8203;)-->
+                            <artifactIdOverride>$&#8203;{project.groupId}:$&#8203;{project.artifactId}:slingosgifeature:@project.artifactId@:$&#8203;{project.version}</artifactIdOverride>
+                            <installConvertedPackage>true</installConvertedPackage>
+                            <contentPackages>
+                                <contentPackage>
+                                    <groupId>${project.groupId}</groupId>
+                                    <artifactId>sling-cpconverter-maven-plugin-test-target-mode.ui.apps</artifactId>
+                                </contentPackage>
+                            </contentPackages>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/src/it/package-with-single-bundle-target-mode/invoker.properties b/src/it/package-with-single-bundle-target-mode/invoker.properties
new file mode 100644
index 0000000..209b6ef
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/invoker.properties
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+invoker.goals = clean install
+invoker.debug = true
diff --git a/src/it/package-with-single-bundle-target-mode/pom.xml b/src/it/package-with-single-bundle-target-mode/pom.xml
new file mode 100644
index 0000000..c671441
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/pom.xml
@@ -0,0 +1,419 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.sling</groupId>
+    <artifactId>sling-cpconverter-maven-plugin-test-target-mode</artifactId>
+    <packaging>pom</packaging>
+    <version>1.0.0-SNAPSHOT</version>
+    <name>Apache Sling Features Maven plugin test - target mode</name>
+    <description>This is just an Apache Sling Content Package Maven plugin test to convert a package with a single
+        bundle
+    </description>
+    <organization>
+        <name>The Apache Software Foundation</name>
+        <url>https://www.apache.org/</url>
+    </organization>
+    <licenses>
+        <license>
+            <name>Apache License, Version 2.0</name>
+            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+    <properties>
+        <interpolated_variable>true</interpolated_variable>
+        <osgi.framework.version>1.9.0</osgi.framework.version>
+        <sling.framework.install.incremental>true</sling.framework.install.incremental>
+        <sling.framework.install.startlevel>1</sling.framework.install.startlevel>
+        <sling.ignoreSystemProperties>true</sling.ignoreSystemProperties>
+
+        <sling.host>localhost</sling.host>
+        <sling.port>8080</sling.port>
+        <sling.user>admin</sling.user>
+
+        <sling.password>admin</sling.password>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+
+        <release.plugin.version>2.5.3</release.plugin.version>
+        <source.plugin.version>3.0.1</source.plugin.version>
+        <resource.plugin.version>3.1.0</resource.plugin.version>
+        <jar.plugin.version>3.1.1</jar.plugin.version>
+        <enforcer.plugin.version>3.0.0-M2</enforcer.plugin.version>
+        <compiler.plugin.version>3.8.0</compiler.plugin.version>
+        <bundle.plugin.version>4.2.0</bundle.plugin.version>
+        <clean.plugin.version>3.1.0</clean.plugin.version>
+        <installer.plugin.version>3.0.0-M1</installer.plugin.version>
+        <surfire.plugin.version>3.0.0-M3</surfire.plugin.version>
+        <failsafe.plugin.version>3.0.0-M3</failsafe.plugin.version>
+        <deploy.plugin.version>3.0.0-M1</deploy.plugin.version>
+        <sling.plugin.version>2.4.0</sling.plugin.version>
+        <dependency.plugin.version>3.1.1</dependency.plugin.version>
+        <build.helper.plugin.version>3.0.0</build.helper.plugin.version>
+        <wcmio.plugin.version>1.6.18</wcmio.plugin.version>
+        <filevault-package.plugin.version>1.0.3</filevault-package.plugin.version>
+
+        <osgi.core.version>7.0.0</osgi.core.version>
+        <osgi.annotation.version>7.0.0</osgi.annotation.version>
+        <org.osgi.service.component.annotations.version>1.4.0</org.osgi.service.component.annotations.version>
+        <org.osgi.service.metatype.annotations.version>1.4.0</org.osgi.service.metatype.annotations.version>
+        <org.osgi.compendium.version>5.0.0</org.osgi.compendium.version>
+        <javax.servlet-api.version>3.1.0</javax.servlet-api.version>
+        <javax.inject.version>1</javax.inject.version>
+        <jcr.version>2.0</jcr.version>
+        <sling.models.api.version>1.3.6</sling.models.api.version>
+        <jetbrains.annotations.version>16.0.2</jetbrains.annotations.version>
+        <sling.settings.version>1.3.10</sling.settings.version>
+        <sling.commons.osgi.version>2.4.0</sling.commons.osgi.version>
+        <jackrabbit-api.version>2.16.3</jackrabbit-api.version>
+        <commons-lang.version>2.6</commons-lang.version>
+        <jmock-junit4.version>2.8.2</jmock-junit4.version>
+    </properties>
+    <build>
+        <plugins>
+            <!-- Maven Release Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-release-plugin</artifactId>
+                <configuration>
+                    <scmCommentPrefix>[maven-scm] :</scmCommentPrefix>
+                    <preparationGoals>clean install</preparationGoals>
+                    <goals>install</goals>
+                    <releaseProfiles>release</releaseProfiles>
+                </configuration>
+            </plugin>
+            <!-- Maven Source Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <inherited>true</inherited>
+            </plugin>
+            <!-- Maven Resources Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <!-- Maven Jar Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+            </plugin>
+            <!-- Maven Enforcer Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>enforce-maven</id>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireMavenVersion>
+                                    <message>Project must be built with Maven 3.1.0 or higher</message>
+                                    <version>[3.1.0,)</version>
+                                </requireMavenVersion>
+                                <requireJavaVersion>
+                                    <message>Project must be compiled with Java 7 or higher</message>
+                                    <version>1.7.0</version>
+                                </requireJavaVersion>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Maven Compiler Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <!-- Maven Release Plugin -->
+                <plugin>
+                    <artifactId>maven-release-plugin</artifactId>
+                    <version>${release.plugin.version}</version>
+                </plugin>
+                <!-- Maven Source Plugin -->
+                <plugin>
+                    <artifactId>maven-source-plugin</artifactId>
+                    <version>${source.plugin.version}</version>
+                </plugin>
+                <!-- Maven Resources Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>${resource.plugin.version}</version>
+                </plugin>
+                <!-- Maven Jar Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>${jar.plugin.version}</version>
+                </plugin>
+                <!-- Maven Enforcer Plugin -->
+                <plugin>
+                    <artifactId>maven-enforcer-plugin</artifactId>
+                    <version>${enforcer.plugin.version}</version>
+                </plugin>
+                <!-- Maven Compiler Plugin -->
+                <plugin>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>${compiler.plugin.version}</version>
+                </plugin>
+
+                <!-- Maven Clean Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>${clean.plugin.version}</version>
+                </plugin>
+                <!-- Maven Installer Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-install-plugin</artifactId>
+                    <version>${installer.plugin.version}</version>
+                </plugin>
+                <!-- Maven Surefire Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>${surfire.plugin.version}</version>
+                </plugin>
+                <!-- Maven Failsafe Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-failsafe-plugin</artifactId>
+                    <version>${failsafe.plugin.version}</version>
+                </plugin>
+                <!-- Maven Deploy Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-deploy-plugin</artifactId>
+                    <version>${deploy.plugin.version}</version>
+                </plugin>
+                <!-- Apache Sling Plugin -->
+                <plugin>
+                    <groupId>org.apache.sling</groupId>
+                    <artifactId>maven-sling-plugin</artifactId>
+                    <version>${sling.plugin.version}</version>
+                </plugin>
+                <!-- Content Package Plugin -->
+                <plugin>
+                    <groupId>org.apache.jackrabbit</groupId>
+                    <artifactId>filevault-package-maven-plugin</artifactId>
+                    <version>${filevault-package.plugin.version}</version>
+                    <extensions>true</extensions>
+                    <configuration>
+                        <failOnMissingEmbed>true</failOnMissingEmbed>
+                        <force>true</force>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>io.wcm.maven.plugins</groupId>
+                    <artifactId>wcmio-content-package-maven-plugin</artifactId>
+                    <version>${wcmio.plugin.version}</version>
+                    <configuration>
+                        <serviceURL>http://${sling.host}:${sling.port}/bin/cpm/</serviceURL>
+                        <userId>${sling.user}</userId>
+                        <password>${sling.password}</password>
+                        <failOnMissingEmbed>true</failOnMissingEmbed>
+                        <force>true</force>
+                        <group>cpconverter</group>
+                    </configuration>
+                </plugin>
+                <!-- Apache Felix Bundle Plugin -->
+                <plugin>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>maven-bundle-plugin</artifactId>
+                    <version>${bundle.plugin.version}</version>
+                    <inherited>true</inherited>
+                </plugin>
+                <!-- Maven Dependency Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <version>${dependency.plugin.version}</version>
+                </plugin>
+                <!-- Build Helper Maven Plugin -->
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>build-helper-maven-plugin</artifactId>
+                    <version>${build.helper.plugin.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <!-- ====================================================================== -->
+    <!-- D E P E N D E N C I E S                                                -->
+    <!-- ====================================================================== -->
+    <dependencyManagement>
+        <dependencies>
+            <!-- OSGi Dependencies -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>osgi.core</artifactId>
+                <version>${osgi.core.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- OSGi annotations: @Version, @ProviderType, @ConsumerType -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>osgi.annotation</artifactId>
+                <version>${osgi.annotation.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- OSGi annotations for DS and metatype -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.service.component.annotations</artifactId>
+                <version>${org.osgi.service.component.annotations.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.service.metatype.annotations</artifactId>
+                <version>${org.osgi.service.metatype.annotations.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Needs to be placed after 'org.osgi.service.component.annotations' otherwise field @Reference will not work -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.compendium</artifactId>
+                <version>${org.osgi.compendium.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Web Application API -->
+            <dependency>
+                <groupId>javax.servlet</groupId>
+                <artifactId>javax.servlet-api</artifactId>
+                <version>${javax.servlet-api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- dependency injection annotations -->
+            <dependency>
+                <groupId>javax.inject</groupId>
+                <artifactId>javax.inject</artifactId>
+                <version>$[javax.inject.version</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- JCR API -->
+            <dependency>
+                <groupId>javax.jcr</groupId>
+                <artifactId>jcr</artifactId>
+                <version>${jcr.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Basic Logging -->
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>1.7.6</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.jetbrains</groupId>
+                <artifactId>annotations</artifactId>
+                <version>${jetbrains.annotations.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Apache Sling Dependencies -->
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.api</artifactId>
+                <version>2.9.0</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.settings</artifactId>
+                <version>${sling.settings.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.commons.osgi</artifactId>
+                <version>${sling.commons.osgi.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.models.api</artifactId>
+                <version>${sling.models.api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>jackrabbit-api</artifactId>
+                <version>${jackrabbit-api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Support -->
+            <dependency>
+                <groupId>commons-lang</groupId>
+                <artifactId>commons-lang</artifactId>
+                <version>${commons-lang.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Basic dependencies for Unit Tests -->
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>4.12</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.jmock</groupId>
+                <artifactId>jmock-junit4</artifactId>
+                <version>${jmock-junit4.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-simple</artifactId>
+                <version>1.7.6</version>
+                <scope>test</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    <modules>
+        <module>core</module>
+        <module>ui.apps</module>
+        <module>fm.launcher</module>
+    </modules>
+</project>
+ 
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/pom.xml b/src/it/package-with-single-bundle-target-mode/ui.apps/pom.xml
new file mode 100644
index 0000000..393a432
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/pom.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>sling-cpconverter-maven-plugin-test-target-mode</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>sling-cpconverter-maven-plugin-test-target-mode.ui.apps</artifactId>
+    <packaging>content-package</packaging>
+
+    <name>CQ Converter Test - UI Apps</name>
+    <description>
+        This is an empty JCR Package where the JCR Content
+        can be deployed with.
+    </description>
+    <!-- NOTE:
+        For a 'not all' package this JCR Package will embedd
+        the "core" bundle. It can be deployed with the
+        "autoInstallPackage" profile.
+
+        For an 'all' package this only provides the content
+        of the project which is deployed in the root with
+        the "autoInstallAll" profile.
+
+        It is advisable to deploy any bundles or packages
+        in one manner as deploying bundles inside a package
+        and through the System Console can lead to unexpected
+        and errorneous situations.
+    -->
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>sling-cpconverter-maven-plugin-test-target-mode.core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.cpconverter</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>filevault-package-maven-plugin</artifactId>
+                <configuration>
+                    <filterSource>${basedir}/src/main/content/META-INF/vault/filter.xml</filterSource>
+                    <embeddedTarget>/apps/cqconverter/install</embeddedTarget>
+                    <embeddeds>
+                        <embedded>
+                            <groupId>${project.groupId}</groupId>
+                            <artifactId>sling-cpconverter-maven-plugin-test-target-mode.core</artifactId>
+                            <filter>true</filter>
+                        </embedded>
+                    </embeddeds>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <profiles>
+        <!-- ATTENTION: It is highly recomended not to deploy this with this Profile if this Package was or will be deployed with the All package -->
+        <profile>
+            <id>autoInstallPackage</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.wcm.maven.plugins</groupId>
+                        <artifactId>wcmio-content-package-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>install-package</id>
+                                <goals>
+                                    <goal>install</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/META-INF/vault/filter.xml b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/META-INF/vault/filter.xml
new file mode 100644
index 0000000..e022dcc
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/META-INF/vault/filter.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+
+<workspaceFilter version="1.0">
+    <!--
+        Any node that will contain customer data needs to be excluded
+        otherwise a Pacakge Installation will wipe them.
+
+        If there is a mix then all provided nodes must be included and
+        all custom nodes excluded.
+
+        If unsure what to do then go to the Composum Package Manager
+        (/bin/packages.html) and create a test package. To to the package
+        filter list and add filter entries until all of the app provides
+        nodes are included but none of the customer generatedd nodes.
+
+        Also any sub pckage of this module needs to exclude /apps/cqconverter/install
+        folder otherwise they wipe all installed bundles.
+    -->
+    <filter root="/content/cpconverter"/>
+    <!--
+        Need to exclude the Install folder otherwise the Bundle will be undeployed
+        as it is in the '/apps/cqconverter/install' folder (see the 'all'
+        package).
+    -->
+    <filter root="/apps/cqconverter">
+        <exclude pattern="/apps/cqconverter/install/.*"/>
+    </filter>
+</workspaceFilter>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/META-INF/vault/settings.xml b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/META-INF/vault/settings.xml
new file mode 100644
index 0000000..b70c9b9
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/META-INF/vault/settings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<vault version="1.0">
+  <ignore name=".svn"/>
+  <ignore name=".git"/>
+</vault>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/.content.xml b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/.content.xml
new file mode 100644
index 0000000..1a8424c
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/.content.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Root"
+          jcr:description="CQ Converter Test Apps Root folder"
+/>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/.content.xml b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/.content.xml
new file mode 100644
index 0000000..99124e4
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/.content.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Home Page Component"
+          jcr:description="CQ Converter Test Home Page Component with HTL"
+          sling:resourceSuperType="cqconverter/page"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/body.html b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/body.html
new file mode 100644
index 0000000..dd8f148
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/body.html
@@ -0,0 +1,24 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<h2>${properties.jcr:title}</h2>
+<p>CQ Converter Test Home Page from Sling Project Archetype</p>
+<p><b><i>Description: </i></b>${properties.jcr:description}</p>
+<div data-sly-use.sampleRequest="org.apache.sling.cpconverter.test.cqconverter.SampleRequestModel">
+	<p>Current User: ${sampleRequest.currentUser}</p>
+</div>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/head.html b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/head.html
new file mode 100644
index 0000000..67576c8
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/head.html
@@ -0,0 +1,23 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>CQ Converter Test Home Page</title>
+<!-- ${properties.jcr:title} -->
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/install/.content.xml b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/install/.content.xml
new file mode 100644
index 0000000..42debc9
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/install/.content.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="Install Folder"
+/>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/.content.xml b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/.content.xml
new file mode 100644
index 0000000..b822f2a
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/.content.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Page Component"
+          jcr:description="CQ Converter Test Page Component with HTL"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/body.html b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/body.html
new file mode 100644
index 0000000..35078a3
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/body.html
@@ -0,0 +1,21 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<h2>${properties.jcr:title}</h2>
+<p>CQ Converter Test Page from Sling Project Archetype</p>
+<p><b>Description: </b>${properties.jcr:description}</p>
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/footer.html b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/footer.html
new file mode 100644
index 0000000..33f7cba
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/footer.html
@@ -0,0 +1,19 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+CQ Converter Test Footer
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/head.html b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/head.html
new file mode 100644
index 0000000..1e72971
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/head.html
@@ -0,0 +1,23 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>CQ Converter Test Page</title>
+<!-- ${properties.jcr:title} -->
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/page.html b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/page.html
new file mode 100644
index 0000000..5dad451
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/page.html
@@ -0,0 +1,35 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<!DOCTYPE html>
+<html>
+<head>
+    <sly data-sly-include="${'head.html'}"/>
+</head>
+    <body>
+        <h3>Navigation</h3>
+        <div data-sly-list.child="${resource.listChildren}">
+            <a href="${child.path}.html">${child.name}</a>
+        </div>
+        <br/>
+        <sly data-sly-include="${'body.html'}"/>
+        <footer>
+            <sly data-sly-include="${'footer.html'}"/>
+        </footer>
+    </body>
+</html>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/content/cpconverter/.content.xml b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/content/cpconverter/.content.xml
new file mode 100644
index 0000000..61ba9d7
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/content/cpconverter/.content.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Content Root"
+          jcr:description="CQ Converter Test Content Root Page"
+/>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/content/cpconverter/home/.content.xml b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/content/cpconverter/home/.content.xml
new file mode 100644
index 0000000..821a340
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/content/cpconverter/home/.content.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Home"
+          jcr:description="CQ Converter Test Home Page"
+          sling:resourceType="cqconverter/home"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/content/cpconverter/home/welcome/.content.xml b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/content/cpconverter/home/welcome/.content.xml
new file mode 100644
index 0000000..48e6832
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/ui.apps/src/main/content/jcr_root/content/cpconverter/home/welcome/.content.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+--><jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Welcome"
+          jcr:description="CQ Converter Test Welcome Page"
+          sling:resourceType="cqconverter/page"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-target-mode/verify.bsh b/src/it/package-with-single-bundle-target-mode/verify.bsh
new file mode 100644
index 0000000..28993ab
--- /dev/null
+++ b/src/it/package-with-single-bundle-target-mode/verify.bsh
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+import java.io.*;
+import java.util.*;
+import org.codehaus.plexus.util.*;
+
+    boolean check() {
+        String projectName = "sling-cpconverter-maven-plugin-test-target-mode.ui.apps";
+        String projectCoreName = "sling-cpconverter-maven-plugin-test-target-mode.core";
+        String projectVersion = "1.0.0-SNAPSHOT";
+        String projectGroup = "org.apache.sling";
+        String projectGroupPath = projectGroup.replaceAll("\\.", "/");
+
+        File cpTargetFolder = new File(basedir, "ui.apps/target");
+        File packageFile = new File(cpTargetFolder, projectName + "-" + projectVersion + ".zip");
+        if(!packageFile.exists()) {
+            System.out.println("Content Package was not created: " + packageFile);
+            return false;
+        }
+        File targetFolder = new File(basedir, "fm.launcher/target");
+        File outputFolder = new File(targetFolder, "cp-conversion");
+        File featureModelFolder = new File(outputFolder, "fm.out");
+        if(!featureModelFolder.exists()) {
+            System.out.println("Feature Model Folder was not created" + featureModelFolder);
+            return false;
+        }
+        File featureModelFile = new File(featureModelFolder, projectName + ".json");
+        if(!featureModelFile.exists()) {
+            System.out.println("Feature Model File was not created: " + featureModelFile);
+            return false;
+        }
+        String log = FileUtils.fileRead(featureModelFile);
+        System.out.println("Feature Model File Content: " + log);
+        String[] values = {
+            "\"id\":\"$​{project.groupId}:$​{project.artifactId}:slingosgifeature:sling-feature-converter-maven-plugin:$​{project.version}\"",
+            "\"bundles\":[",
+            "\"id\":\"" + projectGroup + ":" + projectCoreName + ":" + projectVersion + "\"",
+            "\"content-packages:ARTIFACTS|true\":[",
+            "\"" + projectGroup + ":" + projectName + ":zip:cp2fm-converted:" + projectVersion + "\""
+        };
+        for (String value : values) {
+            if (log.indexOf(value) < 0) {
+                System.out.println("Did not find line: " + value + " -> FAILED!");
+                return false;
+            }
+        }
+        File convertedPackageFolder = new File(outputFolder, projectGroupPath + "/" + projectName + "/" + projectVersion);
+        if(!convertedPackageFolder.exists()) {
+            System.out.println("Converted Package Folder was not created: " + convertedPackageFolder);
+            return false;
+        }
+        File convertedPackageFile = new File(convertedPackageFolder, projectName + "-" + projectVersion + "-cp2fm-converted.zip");
+        if(!convertedPackageFile.exists()) {
+            System.out.println("Converted Package File was not created: " + convertedPackageFile);
+            return false;
+        }
+        // TODO: Adjust the code here to also support local repositories when this is activated
+        File userHomeFolder = new File(System.getProperty("user.home"));
+        File localMavenRepo = new File(userHomeFolder, ".m2/repository");
+        File convertedPackageTargetFolder = new File(localMavenRepo, projectGroupPath + "/" + projectName + "/" + projectVersion);
+        if(!convertedPackageTargetFolder.exists()) {
+            System.out.println("Converted Package Target (Maven) Folder was not created: " + convertedPackageTargetFolder);
+            return false;
+        }
+        File convertedPackageTargetFile = new File(convertedPackageTargetFolder, projectName + "-" + projectVersion + "-cp2fm-converted.zip");
+        if(!convertedPackageTargetFile.exists()) {
+            System.out.println("Converted Package Target File was not created: " + convertedPackageTargetFile);
+            return false;
+        }
+
+        return true;
+    }
+    try {
+        return check();
+    }
+    catch(Throwable t) {
+        t.printStackTrace();
+        return false;
+    }
+    return true;
diff --git a/src/it/package-with-single-bundle-with-parameters/core/pom.xml b/src/it/package-with-single-bundle-with-parameters/core/pom.xml
new file mode 100644
index 0000000..1fc3757
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/core/pom.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>sling-cpconverter-maven-plugin-test-with-param</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>sling-cpconverter-maven-plugin-test-with-param.core</artifactId>
+    <packaging>bundle</packaging>
+
+    <name>CQ Converter Test - Core</name>
+    <description>
+        This is an empty OSGi Bundle which can be used
+        to compile and deploy OSGi Services to Sling.
+
+        This Bundle can be deployed using the Profile
+        "autoInstallBundle" but that should not be used
+        together with the "ui.apps" Profile "autoInstallAll"
+        as they are not deployed the same way and can lead
+        to undesired issues during deployment (bundle not
+        updated or not working at all).
+    </description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Embed-Dependency>*;scope=compile;inline=true</Embed-Dependency>
+                        <Sling-Model-Packages>org.apache.sling.cpconverter.test.cqconverter</Sling-Model-Packages>
+                        <_dsannotations>*</_dsannotations>
+                        <_metatypeannotations>*</_metatypeannotations>
+                        <_removeheaders>
+                            Embed-Dependency,
+                            Private-Package,
+                            Include-Resource
+                        </_removeheaders>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>7</source>
+                    <target>7</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>maven-sling-plugin</artifactId>
+                <configuration>
+                    <slingUrl>http://${sling.host}:${sling.port}/system/console</slingUrl>
+                    <user>${sling.user}</user>
+                    <password>${sling.password}</password>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.annotation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.metatype.annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.jcr</groupId>
+            <artifactId>jcr</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.models.api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>jackrabbit-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+    </dependencies>
+
+    <!--
+        Attention: the autoInstallBundle was removed as deploying bundles directly and through a package is causing
+                   issues with updates and can prevent the latest code of a bundle being deployed.
+                   If you know what you are doing then you can use maven-sling-plugin directly from the Maven CLI.
+    -->
+</project>
diff --git a/src/it/package-with-single-bundle-with-parameters/core/src/main/java/org/apache/sling/cpconverter/test/cqconverter/SampleRequestModel.java b/src/it/package-with-single-bundle-with-parameters/core/src/main/java/org/apache/sling/cpconverter/test/cqconverter/SampleRequestModel.java
new file mode 100644
index 0000000..a015bb8
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/core/src/main/java/org/apache/sling/cpconverter/test/cqconverter/SampleRequestModel.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.cqconverter;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.models.annotations.Model;
+import org.apache.sling.models.annotations.injectorspecific.SlingObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jcr.Session;
+
+@Model(adaptables = {Resource.class, SlingHttpServletRequest.class})
+public class SampleRequestModel {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SampleRequestModel.class);
+
+    @SlingObject
+    private ResourceResolver resourceResolver;
+
+    public SampleRequestModel() {
+        LOGGER.trace("Model Instance created");
+    }
+
+    /** @return User Name of the Current User **/
+    public String getCurrentUser() {
+        String answer = "No User";
+
+        // Adapt to a session and get the current User ID.
+        Session session = resourceResolver.adaptTo(Session.class);
+        LOGGER.trace("Found Session from Resolver: '{}'", session);
+        if(session != null) {
+            answer = session.getUserID();
+        }
+        return answer;
+    }
+}
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-with-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByPathServlet.java b/src/it/package-with-single-bundle-with-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByPathServlet.java
new file mode 100644
index 0000000..27db4f4
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByPathServlet.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.servlet;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Hello World Servlet registered by path
+ */
+@Component(
+    service = Servlet.class,
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Hello World Path Servlet",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        "sling.servlet.paths=/hello-world-servlet"
+    }
+)
+@SuppressWarnings("serial")
+public class ByPathServlet extends SlingSafeMethodsServlet {
+    
+    private final Logger log = LoggerFactory.getLogger(ByPathServlet.class);
+
+    @Override
+    protected void doGet(SlingHttpServletRequest request,
+            SlingHttpServletResponse response) throws ServletException,
+            IOException {
+        
+        Writer w = response.getWriter();
+        w.write("<!DOCTYPE html PUBLIC \"-//IETF//DTD HTML 2.0//EN\">");
+        w.write("<html>");
+        w.write("<head>");
+        w.write("<title>Hello World Servlet</title>");
+        w.write("</head>");
+        w.write("<body>");
+        w.write("<h1>Hello World!</h1>");
+        w.write("</body>");
+        w.write("</html>");
+        
+        log.info("Hello World Servlet");
+        
+    }
+
+}
+
diff --git a/src/it/package-with-single-bundle-with-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByResourceTypeServlet.java b/src/it/package-with-single-bundle-with-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByResourceTypeServlet.java
new file mode 100644
index 0000000..da24407
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/core/src/main/java/org/apache/sling/cpconverter/test/servlet/ByResourceTypeServlet.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.servlet;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
+
+import org.osgi.framework.Constants;
+import org.osgi.service.component.annotations.Component;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Hello World Servlet registered by resource type
+ */
+@Component(
+    service = Servlet.class,
+    property = {
+        Constants.SERVICE_DESCRIPTION + "=Hello World Path Servlet",
+        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
+        "sling.servlet.resourceTypes=sling/servlet/default",
+        "sling.servlet.selectors=hello",
+        "sling.servlet.extensions=html",
+    }
+)
+@SuppressWarnings("serial")
+public class ByResourceTypeServlet extends SlingSafeMethodsServlet {
+    
+    private final Logger log = LoggerFactory.getLogger(ByResourceTypeServlet.class);
+
+    @Override
+    protected void doGet(SlingHttpServletRequest request,
+            SlingHttpServletResponse response) throws ServletException,
+            IOException {
+        Resource resource = request.getResource();
+
+        Writer w = response.getWriter();
+        w.write("<!DOCTYPE html PUBLIC \"-//IETF//DTD HTML 2.0//EN\">");
+        w.write("<html>");
+        w.write("<head>");
+        w.write("<title>Hello World Servlet</title>");
+        w.write("</head>");
+        w.write("<body>");
+        w.write("<h1>Hello ");
+        w.write(resource.getPath());
+        w.write("</h1>");
+        w.write("</body>");
+        w.write("</html>");
+        
+        log.info("Hello World Servlet");
+        
+    }
+
+}
+
diff --git a/src/it/package-with-single-bundle-with-parameters/core/src/test/java/org/apache/sling/cpconverter/test/org/apache/sling/cpconverter/test/servlet/ByPathServletTest.java b/src/it/package-with-single-bundle-with-parameters/core/src/test/java/org/apache/sling/cpconverter/test/org/apache/sling/cpconverter/test/servlet/ByPathServletTest.java
new file mode 100644
index 0000000..f2f5286
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/core/src/test/java/org/apache/sling/cpconverter/test/org/apache/sling/cpconverter/test/servlet/ByPathServletTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.test.servlet;
+
+import junit.framework.TestCase;
+
+/**
+ * Unit test for By Path Servlet.
+ */
+public class ByPathServletTest extends TestCase {
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testByPathServlet() {
+        assertTrue(true);
+    }
+    
+}
diff --git a/src/it/package-with-single-bundle-with-parameters/invoker.properties b/src/it/package-with-single-bundle-with-parameters/invoker.properties
new file mode 100644
index 0000000..209b6ef
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/invoker.properties
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+invoker.goals = clean install
+invoker.debug = true
diff --git a/src/it/package-with-single-bundle-with-parameters/pom.xml b/src/it/package-with-single-bundle-with-parameters/pom.xml
new file mode 100644
index 0000000..5df12ef
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/pom.xml
@@ -0,0 +1,418 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.sling</groupId>
+    <artifactId>sling-cpconverter-maven-plugin-test-with-param</artifactId>
+    <packaging>pom</packaging>
+    <version>1.0.0-SNAPSHOT</version>
+    <name>Apache Sling Features Maven plugin test - with parameter</name>
+    <description>This is just an Apache Sling Content Package Maven plugin test to convert a package with a single
+        bundle
+    </description>
+    <organization>
+        <name>The Apache Software Foundation</name>
+        <url>https://www.apache.org/</url>
+    </organization>
+    <licenses>
+        <license>
+            <name>Apache License, Version 2.0</name>
+            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+    <properties>
+        <interpolated_variable>true</interpolated_variable>
+        <osgi.framework.version>1.9.0</osgi.framework.version>
+        <sling.framework.install.incremental>true</sling.framework.install.incremental>
+        <sling.framework.install.startlevel>1</sling.framework.install.startlevel>
+        <sling.ignoreSystemProperties>true</sling.ignoreSystemProperties>
+
+        <sling.host>localhost</sling.host>
+        <sling.port>8080</sling.port>
+        <sling.user>admin</sling.user>
+
+        <sling.password>admin</sling.password>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+
+        <release.plugin.version>2.5.3</release.plugin.version>
+        <source.plugin.version>3.0.1</source.plugin.version>
+        <resource.plugin.version>3.1.0</resource.plugin.version>
+        <jar.plugin.version>3.1.1</jar.plugin.version>
+        <enforcer.plugin.version>3.0.0-M2</enforcer.plugin.version>
+        <compiler.plugin.version>3.8.0</compiler.plugin.version>
+        <bundle.plugin.version>4.2.0</bundle.plugin.version>
+        <clean.plugin.version>3.1.0</clean.plugin.version>
+        <installer.plugin.version>3.0.0-M1</installer.plugin.version>
+        <surfire.plugin.version>3.0.0-M3</surfire.plugin.version>
+        <failsafe.plugin.version>3.0.0-M3</failsafe.plugin.version>
+        <deploy.plugin.version>3.0.0-M1</deploy.plugin.version>
+        <sling.plugin.version>2.4.0</sling.plugin.version>
+        <dependency.plugin.version>3.1.1</dependency.plugin.version>
+        <build.helper.plugin.version>3.0.0</build.helper.plugin.version>
+        <wcmio.plugin.version>1.6.18</wcmio.plugin.version>
+        <filevault-package.plugin.version>1.0.3</filevault-package.plugin.version>
+
+        <osgi.core.version>7.0.0</osgi.core.version>
+        <osgi.annotation.version>7.0.0</osgi.annotation.version>
+        <org.osgi.service.component.annotations.version>1.4.0</org.osgi.service.component.annotations.version>
+        <org.osgi.service.metatype.annotations.version>1.4.0</org.osgi.service.metatype.annotations.version>
+        <org.osgi.compendium.version>5.0.0</org.osgi.compendium.version>
+        <javax.servlet-api.version>3.1.0</javax.servlet-api.version>
+        <javax.inject.version>1</javax.inject.version>
+        <jcr.version>2.0</jcr.version>
+        <sling.models.api.version>1.3.6</sling.models.api.version>
+        <jetbrains.annotations.version>16.0.2</jetbrains.annotations.version>
+        <sling.settings.version>1.3.10</sling.settings.version>
+        <sling.commons.osgi.version>2.4.0</sling.commons.osgi.version>
+        <jackrabbit-api.version>2.16.3</jackrabbit-api.version>
+        <commons-lang.version>2.6</commons-lang.version>
+        <jmock-junit4.version>2.8.2</jmock-junit4.version>
+    </properties>
+    <build>
+        <plugins>
+            <!-- Maven Release Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-release-plugin</artifactId>
+                <configuration>
+                    <scmCommentPrefix>[maven-scm] :</scmCommentPrefix>
+                    <preparationGoals>clean install</preparationGoals>
+                    <goals>install</goals>
+                    <releaseProfiles>release</releaseProfiles>
+                </configuration>
+            </plugin>
+            <!-- Maven Source Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <inherited>true</inherited>
+            </plugin>
+            <!-- Maven Resources Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+            <!-- Maven Jar Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+            </plugin>
+            <!-- Maven Enforcer Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>enforce-maven</id>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireMavenVersion>
+                                    <message>Project must be built with Maven 3.1.0 or higher</message>
+                                    <version>[3.1.0,)</version>
+                                </requireMavenVersion>
+                                <requireJavaVersion>
+                                    <message>Project must be compiled with Java 7 or higher</message>
+                                    <version>1.7.0</version>
+                                </requireJavaVersion>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Maven Compiler Plugin -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <!-- Maven Release Plugin -->
+                <plugin>
+                    <artifactId>maven-release-plugin</artifactId>
+                    <version>${release.plugin.version}</version>
+                </plugin>
+                <!-- Maven Source Plugin -->
+                <plugin>
+                    <artifactId>maven-source-plugin</artifactId>
+                    <version>${source.plugin.version}</version>
+                </plugin>
+                <!-- Maven Resources Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>${resource.plugin.version}</version>
+                </plugin>
+                <!-- Maven Jar Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>${jar.plugin.version}</version>
+                </plugin>
+                <!-- Maven Enforcer Plugin -->
+                <plugin>
+                    <artifactId>maven-enforcer-plugin</artifactId>
+                    <version>${enforcer.plugin.version}</version>
+                </plugin>
+                <!-- Maven Compiler Plugin -->
+                <plugin>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>${compiler.plugin.version}</version>
+                </plugin>
+
+                <!-- Maven Clean Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>${clean.plugin.version}</version>
+                </plugin>
+                <!-- Maven Installer Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-install-plugin</artifactId>
+                    <version>${installer.plugin.version}</version>
+                </plugin>
+                <!-- Maven Surefire Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>${surfire.plugin.version}</version>
+                </plugin>
+                <!-- Maven Failsafe Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-failsafe-plugin</artifactId>
+                    <version>${failsafe.plugin.version}</version>
+                </plugin>
+                <!-- Maven Deploy Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-deploy-plugin</artifactId>
+                    <version>${deploy.plugin.version}</version>
+                </plugin>
+                <!-- Apache Sling Plugin -->
+                <plugin>
+                    <groupId>org.apache.sling</groupId>
+                    <artifactId>maven-sling-plugin</artifactId>
+                    <version>${sling.plugin.version}</version>
+                </plugin>
+                <!-- Content Package Plugin -->
+                <plugin>
+                    <groupId>org.apache.jackrabbit</groupId>
+                    <artifactId>filevault-package-maven-plugin</artifactId>
+                    <version>${filevault-package.plugin.version}</version>
+                    <extensions>true</extensions>
+                    <configuration>
+                        <failOnMissingEmbed>true</failOnMissingEmbed>
+                        <force>true</force>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>io.wcm.maven.plugins</groupId>
+                    <artifactId>wcmio-content-package-maven-plugin</artifactId>
+                    <version>${wcmio.plugin.version}</version>
+                    <configuration>
+                        <serviceURL>http://${sling.host}:${sling.port}/bin/cpm/</serviceURL>
+                        <userId>${sling.user}</userId>
+                        <password>${sling.password}</password>
+                        <failOnMissingEmbed>true</failOnMissingEmbed>
+                        <force>true</force>
+                        <group>cpconverter</group>
+                    </configuration>
+                </plugin>
+                <!-- Apache Felix Bundle Plugin -->
+                <plugin>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>maven-bundle-plugin</artifactId>
+                    <version>${bundle.plugin.version}</version>
+                    <inherited>true</inherited>
+                </plugin>
+                <!-- Maven Dependency Plugin -->
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <version>${dependency.plugin.version}</version>
+                </plugin>
+                <!-- Build Helper Maven Plugin -->
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>build-helper-maven-plugin</artifactId>
+                    <version>${build.helper.plugin.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <!-- ====================================================================== -->
+    <!-- D E P E N D E N C I E S                                                -->
+    <!-- ====================================================================== -->
+    <dependencyManagement>
+        <dependencies>
+            <!-- OSGi Dependencies -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>osgi.core</artifactId>
+                <version>${osgi.core.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- OSGi annotations: @Version, @ProviderType, @ConsumerType -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>osgi.annotation</artifactId>
+                <version>${osgi.annotation.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- OSGi annotations for DS and metatype -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.service.component.annotations</artifactId>
+                <version>${org.osgi.service.component.annotations.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.service.metatype.annotations</artifactId>
+                <version>${org.osgi.service.metatype.annotations.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Needs to be placed after 'org.osgi.service.component.annotations' otherwise field @Reference will not work -->
+            <dependency>
+                <groupId>org.osgi</groupId>
+                <artifactId>org.osgi.compendium</artifactId>
+                <version>${org.osgi.compendium.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Web Application API -->
+            <dependency>
+                <groupId>javax.servlet</groupId>
+                <artifactId>javax.servlet-api</artifactId>
+                <version>${javax.servlet-api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- dependency injection annotations -->
+            <dependency>
+                <groupId>javax.inject</groupId>
+                <artifactId>javax.inject</artifactId>
+                <version>$[javax.inject.version</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- JCR API -->
+            <dependency>
+                <groupId>javax.jcr</groupId>
+                <artifactId>jcr</artifactId>
+                <version>${jcr.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Basic Logging -->
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>1.7.6</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>org.jetbrains</groupId>
+                <artifactId>annotations</artifactId>
+                <version>${jetbrains.annotations.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Apache Sling Dependencies -->
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.api</artifactId>
+                <version>2.9.0</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.settings</artifactId>
+                <version>${sling.settings.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.commons.osgi</artifactId>
+                <version>${sling.commons.osgi.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>org.apache.sling.models.api</artifactId>
+                <version>${sling.models.api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>jackrabbit-api</artifactId>
+                <version>${jackrabbit-api.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Support -->
+            <dependency>
+                <groupId>commons-lang</groupId>
+                <artifactId>commons-lang</artifactId>
+                <version>${commons-lang.version}</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <!-- Basic dependencies for Unit Tests -->
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>4.12</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.jmock</groupId>
+                <artifactId>jmock-junit4</artifactId>
+                <version>${jmock-junit4.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-simple</artifactId>
+                <version>1.7.6</version>
+                <scope>test</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    <modules>
+        <module>core</module>
+        <module>ui.apps</module>
+    </modules>
+</project>
+ 
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/pom.xml b/src/it/package-with-single-bundle-with-parameters/ui.apps/pom.xml
new file mode 100644
index 0000000..a3d1a68
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/pom.xml
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>sling-cpconverter-maven-plugin-test-with-param</artifactId>
+        <groupId>org.apache.sling</groupId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>sling-cpconverter-maven-plugin-test-with-param.ui.apps</artifactId>
+    <packaging>content-package</packaging>
+
+    <name>CQ Converter Test - UI Apps</name>
+    <description>
+        This is an empty JCR Package where the JCR Content
+        can be deployed with.
+    </description>
+    <!-- NOTE:
+        For a 'not all' package this JCR Package will embedd
+        the "core" bundle. It can be deployed with the
+        "autoInstallPackage" profile.
+
+        For an 'all' package this only provides the content
+        of the project which is deployed in the root with
+        the "autoInstallAll" profile.
+
+        It is advisable to deploy any bundles or packages
+        in one manner as deploying bundles inside a package
+        and through the System Console can lead to unexpected
+        and errorneous situations.
+    -->
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>sling-cpconverter-maven-plugin-test-with-param.core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.cpconverter</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.jackrabbit</groupId>
+                <artifactId>filevault-package-maven-plugin</artifactId>
+                <configuration>
+                    <filterSource>${basedir}/src/main/content/META-INF/vault/filter.xml</filterSource>
+                    <embeddedTarget>/apps/cqconverter/install</embeddedTarget>
+                    <embeddeds>
+                        <embedded>
+                            <groupId>${project.groupId}</groupId>
+                            <artifactId>sling-cpconverter-maven-plugin-test-with-param.core</artifactId>
+                            <filter>true</filter>
+                        </embedded>
+                    </embeddeds>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>@project.groupId@</groupId>
+                <artifactId>@project.artifactId@</artifactId>
+                <version>@project.version@</version>
+                <extensions>true</extensions>
+                <executions>
+                    <execution>
+                        <id>convert-cp</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>convert-cp</goal>
+                        </goals>
+                        <configuration>
+                            <!-- NOTE: ${} is replaced no matter what so this trick seems to work by adding a zero-width-whitespace character (&#8203;)-->
+                            <artifactIdOverride>$&#8203;{project.groupId}:$&#8203;{project.artifactId}:slingosgifeature:@project.artifactId@:$&#8203;{project.version}</artifactIdOverride>
+                            <installConvertedPackage>true</installConvertedPackage>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <profiles>
+        <!-- ATTENTION: It is highly recomended not to deploy this with this Profile if this Package was or will be deployed with the All package -->
+        <profile>
+            <id>autoInstallPackage</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.wcm.maven.plugins</groupId>
+                        <artifactId>wcmio-content-package-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>install-package</id>
+                                <goals>
+                                    <goal>install</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/META-INF/vault/filter.xml b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/META-INF/vault/filter.xml
new file mode 100644
index 0000000..e022dcc
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/META-INF/vault/filter.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+
+<workspaceFilter version="1.0">
+    <!--
+        Any node that will contain customer data needs to be excluded
+        otherwise a Pacakge Installation will wipe them.
+
+        If there is a mix then all provided nodes must be included and
+        all custom nodes excluded.
+
+        If unsure what to do then go to the Composum Package Manager
+        (/bin/packages.html) and create a test package. To to the package
+        filter list and add filter entries until all of the app provides
+        nodes are included but none of the customer generatedd nodes.
+
+        Also any sub pckage of this module needs to exclude /apps/cqconverter/install
+        folder otherwise they wipe all installed bundles.
+    -->
+    <filter root="/content/cpconverter"/>
+    <!--
+        Need to exclude the Install folder otherwise the Bundle will be undeployed
+        as it is in the '/apps/cqconverter/install' folder (see the 'all'
+        package).
+    -->
+    <filter root="/apps/cqconverter">
+        <exclude pattern="/apps/cqconverter/install/.*"/>
+    </filter>
+</workspaceFilter>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/META-INF/vault/settings.xml b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/META-INF/vault/settings.xml
new file mode 100644
index 0000000..b70c9b9
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/META-INF/vault/settings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<vault version="1.0">
+  <ignore name=".svn"/>
+  <ignore name=".git"/>
+</vault>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/.content.xml b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/.content.xml
new file mode 100644
index 0000000..1a8424c
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/.content.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Root"
+          jcr:description="CQ Converter Test Apps Root folder"
+/>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/.content.xml b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/.content.xml
new file mode 100644
index 0000000..99124e4
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/.content.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Home Page Component"
+          jcr:description="CQ Converter Test Home Page Component with HTL"
+          sling:resourceSuperType="cqconverter/page"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/body.html b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/body.html
new file mode 100644
index 0000000..dd8f148
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/body.html
@@ -0,0 +1,24 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<h2>${properties.jcr:title}</h2>
+<p>CQ Converter Test Home Page from Sling Project Archetype</p>
+<p><b><i>Description: </i></b>${properties.jcr:description}</p>
+<div data-sly-use.sampleRequest="org.apache.sling.cpconverter.test.cqconverter.SampleRequestModel">
+	<p>Current User: ${sampleRequest.currentUser}</p>
+</div>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/head.html b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/head.html
new file mode 100644
index 0000000..67576c8
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/home/head.html
@@ -0,0 +1,23 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>CQ Converter Test Home Page</title>
+<!-- ${properties.jcr:title} -->
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/install/.content.xml b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/install/.content.xml
new file mode 100644
index 0000000..42debc9
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/install/.content.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="Install Folder"
+/>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/.content.xml b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/.content.xml
new file mode 100644
index 0000000..b822f2a
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/.content.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Page Component"
+          jcr:description="CQ Converter Test Page Component with HTL"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/body.html b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/body.html
new file mode 100644
index 0000000..35078a3
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/body.html
@@ -0,0 +1,21 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<h2>${properties.jcr:title}</h2>
+<p>CQ Converter Test Page from Sling Project Archetype</p>
+<p><b>Description: </b>${properties.jcr:description}</p>
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/footer.html b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/footer.html
new file mode 100644
index 0000000..33f7cba
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/footer.html
@@ -0,0 +1,19 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+CQ Converter Test Footer
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/head.html b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/head.html
new file mode 100644
index 0000000..1e72971
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/head.html
@@ -0,0 +1,23 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<meta charset="utf-8">
+<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>CQ Converter Test Page</title>
+<!-- ${properties.jcr:title} -->
\ No newline at end of file
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/page.html b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/page.html
new file mode 100644
index 0000000..5dad451
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/apps/cqconverter/page/page.html
@@ -0,0 +1,35 @@
+<!-- /*
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+*/ -->
+<!DOCTYPE html>
+<html>
+<head>
+    <sly data-sly-include="${'head.html'}"/>
+</head>
+    <body>
+        <h3>Navigation</h3>
+        <div data-sly-list.child="${resource.listChildren}">
+            <a href="${child.path}.html">${child.name}</a>
+        </div>
+        <br/>
+        <sly data-sly-include="${'body.html'}"/>
+        <footer>
+            <sly data-sly-include="${'footer.html'}"/>
+        </footer>
+    </body>
+</html>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/.content.xml b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/.content.xml
new file mode 100644
index 0000000..61ba9d7
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/.content.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Content Root"
+          jcr:description="CQ Converter Test Content Root Page"
+/>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/.content.xml b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/.content.xml
new file mode 100644
index 0000000..821a340
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/.content.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+    agreements. See the NOTICE file distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file to you 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.
+-->
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Home"
+          jcr:description="CQ Converter Test Home Page"
+          sling:resourceType="cqconverter/home"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/welcome/.content.xml b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/welcome/.content.xml
new file mode 100644
index 0000000..48e6832
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/ui.apps/src/main/content/jcr_root/content/cpconverter/home/welcome/.content.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you 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.
+--><jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+          jcr:primaryType="sling:Folder"
+          jcr:title="CQ Converter Test Welcome"
+          jcr:description="CQ Converter Test Welcome Page"
+          sling:resourceType="cqconverter/page"
+>
+</jcr:root>
diff --git a/src/it/package-with-single-bundle-with-parameters/verify.bsh b/src/it/package-with-single-bundle-with-parameters/verify.bsh
new file mode 100644
index 0000000..fbac8ab
--- /dev/null
+++ b/src/it/package-with-single-bundle-with-parameters/verify.bsh
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+import java.io.*;
+import java.util.*;
+import org.codehaus.plexus.util.*;
+
+    boolean check() {
+        String projectName = "sling-cpconverter-maven-plugin-test-with-param.ui.apps";
+        String projectCoreName = "sling-cpconverter-maven-plugin-test-with-param.core";
+        String projectVersion = "1.0.0-SNAPSHOT";
+        String projectGroup = "org.apache.sling";
+        String projectGroupPath = projectGroup.replaceAll("\\.", "/");
+
+        File targetFolder = new File(basedir, "ui.apps/target");
+        File packageFile = new File(targetFolder, projectName + "-" + projectVersion + ".zip");
+        if(!packageFile.exists()) {
+            System.out.println("Content Package was not created: " + packageFile);
+            return false;
+        }
+        File outputFolder = new File(targetFolder, "cp-conversion");
+        File featureModelFolder = new File(outputFolder, "fm.out");
+        if(!featureModelFolder.exists()) {
+            System.out.println("Feature Model Folder was not created" + featureModelFolder);
+            return false;
+        }
+        File featureModelFile = new File(featureModelFolder, projectName + ".json");
+        if(!featureModelFile.exists()) {
+            System.out.println("Feature Model File was not created: " + featureModelFile);
+            return false;
+        }
+        String log = FileUtils.fileRead(featureModelFile);
+        System.out.println("Feature Model File Content: " + log);
+        String[] values = {
+            "\"id\":\"$​{project.groupId}:$​{project.artifactId}:slingosgifeature:sling-feature-converter-maven-plugin:$​{project.version}\"",
+            "\"bundles\":[",
+            "\"id\":\"" + projectGroup + ":" + projectCoreName + ":" + projectVersion + "\"",
+            "\"content-packages:ARTIFACTS|true\":[",
+            "\"" + projectGroup + ":" + projectName + ":zip:cp2fm-converted:" + projectVersion + "\""
+        };
+        for (String value : values) {
+            if (log.indexOf(value) < 0) {
+                System.out.println("Did not find line: " + value + " -> FAILED!");
+                return false;
+            }
+        }
+        File convertedPackageFolder = new File(outputFolder, projectGroupPath + "/" + projectName + "/" + projectVersion);
+        if(!convertedPackageFolder.exists()) {
+            System.out.println("Converted Package Folder was not created: " + convertedPackageFolder);
+            return false;
+        }
+        File convertedPackageFile = new File(convertedPackageFolder, projectName + "-" + projectVersion + "-cp2fm-converted.zip");
+        if(!convertedPackageFile.exists()) {
+            System.out.println("Converted Package File was not created: " + convertedPackageFile);
+            return false;
+        }
+        // TODO: Adjust the code here to also support local repositories when this is activated
+        File userHomeFolder = new File(System.getProperty("user.home"));
+        File localMavenRepo = new File(userHomeFolder, ".m2/repository");
+        File convertedPackageTargetFolder = new File(localMavenRepo, projectGroupPath + "/" + projectName + "/" + projectVersion);
+        if(!convertedPackageTargetFolder.exists()) {
+            System.out.println("Converted Package Target (Maven) Folder was not created: " + convertedPackageTargetFolder);
+            return false;
+        }
+        File convertedPackageTargetFile = new File(convertedPackageTargetFolder, projectName + "-" + projectVersion + "-cp2fm-converted.zip");
+        if(!convertedPackageTargetFile.exists()) {
+            System.out.println("Converted Package Target File was not created: " + convertedPackageTargetFile);
+            return false;
+        }
+
+        return true;
+    }
+    try {
+        return check();
+    }
+    catch(Throwable t) {
+        t.printStackTrace();
+        return false;
+    }
+    return true;
diff --git a/src/main/java/org/apache/sling/cpconverter/maven/mojos/AbstractBaseMojo.java b/src/main/java/org/apache/sling/cpconverter/maven/mojos/AbstractBaseMojo.java
new file mode 100644
index 0000000..b8af956
--- /dev/null
+++ b/src/main/java/org/apache/sling/cpconverter/maven/mojos/AbstractBaseMojo.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.maven.mojos;
+
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
+import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller;
+
+public abstract class AbstractBaseMojo
+    extends AbstractMojo
+{
+    @Parameter(property = "project", readonly = true, required = true)
+    protected MavenProject project;
+
+    @Parameter(property = "session", readonly = true, required = true)
+    protected MavenSession mavenSession;
+
+    @Component
+    protected ArtifactHandlerManager artifactHandlerManager;
+
+    @Component
+    protected MavenProjectHelper projectHelper;
+
+    @Component
+    protected ArtifactInstaller installer;
+}
diff --git a/src/main/java/org/apache/sling/cpconverter/maven/mojos/ContentPackage.java b/src/main/java/org/apache/sling/cpconverter/maven/mojos/ContentPackage.java
new file mode 100644
index 0000000..0b2b36c
--- /dev/null
+++ b/src/main/java/org/apache/sling/cpconverter/maven/mojos/ContentPackage.java
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.maven.mojos;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.project.MavenProject;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+public class ContentPackage {
+
+    /**
+     * The content package Group Id
+     */
+    private String groupId = "";
+
+    /**
+     * The content package Artifact Id
+     */
+    private String artifactId = "";
+
+    private String type = "zip";
+
+    // TODO: Classifier should not be set as we have the one from the converter
+    private String classifier = "";
+
+    private boolean excludeTransitive;
+    
+    public void setGroupId(String groupId) {
+        this.groupId = groupId == null ? "" : groupId;
+    }
+
+    public void setArtifactId(String artifactId) {
+        this.artifactId = artifactId == null ? "" : artifactId;
+    }
+
+    public void setExcludeTransitive(boolean excludeTransitive) {
+        this.excludeTransitive = excludeTransitive;
+    }
+
+    public boolean isExcludeTransitive() {
+        return excludeTransitive;
+    }
+    
+    public Collection<Artifact> getMatchingArtifacts(final MavenProject project) {
+        // get artifacts depending on whether we exclude transitives or not
+        final Set<Artifact> artifacts;
+        // TODO: when I ran the tests the artifacts where only available in the Dependency Artifacts and
+        //       getArtifacts() returned an empty set
+        if (excludeTransitive) {
+            // only direct dependencies, transitives excluded
+            artifacts = project.getDependencyArtifacts();
+        } else {
+            // all dependencies, transitives included
+            artifacts = project.getArtifacts();
+        }
+        return getMatchingArtifacts(artifacts);
+    }
+
+    public Collection<Artifact> getMatchingArtifacts(final Collection<Artifact> artifacts) {
+        final List<Artifact> matches = new ArrayList<Artifact>();
+        for (Artifact artifact : artifacts) {
+            if(groupId.equals(artifact.getGroupId())
+                && artifactId.equals(artifact.getArtifactId())
+                && type.equals(artifact.getType())
+                && (classifier.equals(artifact.getClassifier()) || (classifier.equals("") && artifact.getClassifier() == null))
+            ) {
+                matches.add(artifact);
+            }
+        }
+        return matches;
+    }
+
+    @Nonnull
+    public StringBuilder toString(@Nullable StringBuilder builder) {
+        if (builder == null) {
+            builder = new StringBuilder();
+        }
+        builder.append("groupId=").append(groupId).append(",");
+        builder.append("artifactId=").append(artifactId).append(",");
+
+        if (type != null) {
+            builder.append("type=").append(type).append(",");
+        }
+        if (classifier != null) {
+            builder.append("classifier=").append(classifier).append(",");
+        }
+        builder.append(",excludeTransitive=").append(excludeTransitive);
+        return builder;
+    }
+
+    public String toString() {
+        return toString(null).toString();
+    }
+}
diff --git a/src/main/java/org/apache/sling/cpconverter/maven/mojos/ConvertCPMojo.java b/src/main/java/org/apache/sling/cpconverter/maven/mojos/ConvertCPMojo.java
new file mode 100644
index 0000000..98c0ebd
--- /dev/null
+++ b/src/main/java/org/apache/sling/cpconverter/maven/mojos/ConvertCPMojo.java
@@ -0,0 +1,350 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.maven.mojos;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.transfer.artifact.install.ArtifactInstallerException;
+import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
+import org.apache.sling.feature.cpconverter.acl.DefaultAclManager;
+import org.apache.sling.feature.cpconverter.artifacts.DefaultArtifactsDeployer;
+import org.apache.sling.feature.cpconverter.features.DefaultFeaturesManager;
+import org.apache.sling.feature.cpconverter.handlers.DefaultEntryHandlersManager;
+import org.apache.sling.feature.cpconverter.vltpkg.DefaultPackagesEventsEmitter;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.StandardCopyOption;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter.PACKAGE_CLASSIFIER;
+import static org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter.ZIP_TYPE;
+
+/**
+ * Converts the given Content Packages into Feature Models
+ * and places the converted Content Package into the local
+ * Maven Repository
+ */
+@Mojo(
+    name = "convert-cp",
+    requiresProject = true,
+    threadSafe = true
+)
+public final class ConvertCPMojo
+    extends AbstractBaseMojo
+{
+    public static final String CFG_STRICT_VALIDATION = "strictValidation";
+
+    public static final String CFG_MERGE_CONFIGURATIONS = "mergeConfigurations";
+
+    public static final String CFG_BUNDLE_START_ORDER = "bundleStartOrder";
+
+    public static final String CFG_ARTIFACT_ID_OVERRIDE = "artifactIdOverride";
+
+    public static final String CFG_INSTALL_CONVERTED_PACKAGE = "installConvertedContentPackage";
+
+    public static final String CFG_FM_OUTPUT_DIRECTORY = "featureModelsOutputDirectory";
+
+    public static final String CFG_CONVERTED_CP_OUTPUT_DIRECTORY = "convertedContentPackageOutputDirectory";
+
+    public static final String CFG_CONVERTED_CP_FM_PREFIX = "fmPrefix";
+
+    public static final String CFG_SYSTEM_PROPERTIES = "cpSystemProperties";
+
+    public static final String CFG_CONTENT_PACKAGES = "packages";
+
+    public static final boolean DEFAULT_STRING_VALIDATION = false;
+
+    public static final boolean DEFAULT_MERGE_CONFIGURATIONS = false;
+
+    public static final int DEFAULT_BUNDLE_START_ORDER = 20;
+
+    public static final boolean DEFAULT_INSTALL_CONVERTED_PACKAGE = true;
+
+    public static final String DEFAULT_CONVERTED_CP_OUTPUT_DIRECTORY = "${project.build.directory}/cp-conversion";
+
+    public static final String DEFAULT_FM_OUTPUT_DIRECTORY = DEFAULT_CONVERTED_CP_OUTPUT_DIRECTORY + "/fm.out";
+
+    /**
+     * If set to {@code true} the Content Package is strictly validated.
+     */
+    @Parameter(property = CFG_STRICT_VALIDATION, defaultValue = DEFAULT_STRING_VALIDATION + "")
+    private boolean strictValidation;
+
+    //AS TODO: Is that applicable to a single CP ?
+    /**
+     * If set to {@code true} the OSGi Configurations with same PID are merged.
+     */
+    @Parameter(property = CFG_MERGE_CONFIGURATIONS, defaultValue = DEFAULT_MERGE_CONFIGURATIONS + "")
+    private boolean mergeConfigurations;
+
+    /**
+     * If set to {@code true} the Content Package is strictly validated.
+     */
+    @Parameter(property = CFG_BUNDLE_START_ORDER, defaultValue = DEFAULT_BUNDLE_START_ORDER + "")
+    private int bundleStartOrder;
+
+    /**
+     * If set to {@code true} the Content Package is strictly validated.
+     */
+    @Parameter(property = CFG_ARTIFACT_ID_OVERRIDE)
+    private String artifactIdOverride;
+
+    /**
+     * Target directory for the converted Content Package Feature Model file
+     */
+    @Parameter(property = CFG_FM_OUTPUT_DIRECTORY, defaultValue = DEFAULT_FM_OUTPUT_DIRECTORY)
+    private File fmOutput;
+
+    /**
+     * Target directory for the Converted Content Package file
+     */
+    @Parameter(property = CFG_CONVERTED_CP_OUTPUT_DIRECTORY, defaultValue = DEFAULT_CONVERTED_CP_OUTPUT_DIRECTORY)
+    private File convertedCPOutput;
+
+    /**
+     * If set to {@code true} the converted Content Package will be installed in the local Maven Repository
+     */
+    @Parameter(property = CFG_INSTALL_CONVERTED_PACKAGE, defaultValue = DEFAULT_INSTALL_CONVERTED_PACKAGE + "")
+    private boolean installConvertedCP;
+
+    /**
+     * System Properties to hand over to the Content Package Converter
+     */
+    @Parameter(property = CFG_CONVERTED_CP_FM_PREFIX)
+    private String fmPrefix;
+
+    /**
+     * System Properties to hand over to the Content Package Converter
+     */
+    @Parameter(property = CFG_SYSTEM_PROPERTIES)
+    private List<String> systemProperties;
+
+    /**
+     * List of Content Packages to be converted
+     */
+    @Parameter(property = CFG_CONTENT_PACKAGES)
+    private List<ContentPackage> contentPackages;
+
+    @Override
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        // Un-encode a given Artifact Override Id
+        if(artifactIdOverride != null) {
+            String old = artifactIdOverride;
+            artifactIdOverride = artifactIdOverride.replaceAll("\\$\\{\\{", "\\$\\{");
+            artifactIdOverride = artifactIdOverride.replaceAll("}}", "}");
+            getLog().info("Replaced Old Artifact Id Override: '" + old + "', with new one: '" + artifactIdOverride + "'");
+        }
+        // Parse the System Properties if provided
+        Map<String,String> properties = new HashMap<>();
+        if(systemProperties != null) {
+            for(String systemProperty: systemProperties) {
+                if(systemProperty != null) {
+                    int index = systemProperty.indexOf("=");
+                    if(index > 0 && index < systemProperty.length() - 1) {
+                        String key = systemProperty.substring(0, index);
+                        String value = systemProperty.substring(index + 1);
+                        properties.put(key, value);
+                    }
+                }
+            }
+        }
+        try {
+            ContentPackage2FeatureModelConverter converter = new ContentPackage2FeatureModelConverter(strictValidation)
+                .setFeaturesManager(
+                    new DefaultFeaturesManager(
+                        mergeConfigurations,
+                        bundleStartOrder,
+                        fmOutput,
+                        artifactIdOverride,
+//                        fmPrefix,
+                        properties
+                    )
+                )
+                .setBundlesDeployer(
+                    new DefaultArtifactsDeployer(
+                        convertedCPOutput
+                    )
+                )
+                .setEntryHandlersManager(
+                    new DefaultEntryHandlersManager()
+                )
+                .setAclManager(
+                    new DefaultAclManager()
+                )
+                .setEmitter(DefaultPackagesEventsEmitter.open(fmOutput));
+
+            if(contentPackages == null || contentPackages.isEmpty()) {
+                getLog().info("Project Artifact File: " + project.getArtifact());
+                String targetPath = project.getModel().getBuild().getDirectory() + "/"
+                    + project.getModel().getBuild().getFinalName()
+                    + "." + ZIP_TYPE;
+                File targetFile = new File(targetPath);
+                if (targetFile.exists() && targetFile.isFile() && targetFile.canRead()) {
+                    converter.convert(project.getArtifact().getFile());
+//                    Artifact convertedPackage = new DefaultArtifact(
+//                        project.getGroupId(), project.getArtifactId(), project.getVersion(),
+//                        "compile", ZIP_TYPE, PACKAGE_CLASSIFIER, artifactHandlerManager.getArtifactHandler(ZIP_TYPE)
+//                    );
+//                    installConvertedCP(convertedPackage);
+                } else {
+                    getLog().error("Artifact is not found: " + targetPath);
+                }
+            } else {
+                for(ContentPackage contentPackage: contentPackages) {
+                    getLog().info("Content Package Artifact File: " + contentPackage.toString());
+                    contentPackage.setExcludeTransitive(true);
+                    final Collection<Artifact> artifacts = contentPackage.getMatchingArtifacts(project);
+                    if (artifacts.isEmpty()) {
+                        getLog().warn("No matching artifacts for " + contentPackage);
+                        continue;
+                    }
+                    getLog().info("Target Convert CP of --- " + contentPackage + " ---");
+                    for (final Artifact artifact : artifacts) {
+                        final File source = artifact.getFile();
+                        if (source.exists() && source.isFile() && source.canRead()) {
+                            converter.convert(source);
+                            Artifact convertedPackage = new DefaultArtifact(
+                                artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(),
+                                "compile", ZIP_TYPE, PACKAGE_CLASSIFIER, artifactHandlerManager.getArtifactHandler(ZIP_TYPE)
+                            );
+//                            installConvertedCP(convertedPackage);
+                        } else {
+                            getLog().error("Artifact is not found: " + artifact);
+                        }
+                    }
+                }
+            }
+            installGeneratedArtifacts();
+        } catch (Throwable t) {
+            throw new MojoExecutionException("Content Package Converter Exception", t);
+        }
+
+    }
+
+    /**
+     * For now this is a hack to update the local Maven Repo (.m2/repository) correctly
+     * bypassing the Maven Installer as this is giving us grief
+     */
+    private void installGeneratedArtifacts() {
+        if(installConvertedCP) {
+            File userHome = new File(System.getProperty("user.home"));
+            if(userHome.isDirectory()) {
+                File destFolder = new File(userHome, ".m2/repository");
+                if(destFolder.isDirectory()) {
+                    copyFiles(convertedCPOutput, destFolder);
+                }
+            }
+        }
+    }
+
+    /**
+     * Copies the local generated Maven Artifacts into the local Maven Repo
+     * recursively one folder at the time.
+     * Folder are created on the local Maven Repo if not found, missing files
+     * are copied over but only CP2FM Converted CP files are replaced on the
+     * target folders
+     *
+     * @param source Folder with the source files / folders
+     * @param destination Destination folder (inside the local Maven repo). This is the corresponding folder to the source
+     */
+    private void copyFiles(File source, File destination) {
+        for(File file: source.listFiles()) {
+            String name = file.getName();
+            if(file.isDirectory()) {
+                File newDest = new File(destination, name);
+                if(!newDest.exists()) {
+                    newDest.mkdirs();
+                }
+                if(newDest.isDirectory()) {
+                    copyFiles(file, newDest);
+                } else {
+                    getLog().warn("Source File: '" + file.getAbsolutePath() + "' is a folder but its counterpart is a file: " + newDest.getAbsolutePath());
+                }
+            } else {
+                File newDest = new File(destination, name);
+                if(!newDest.exists()) {
+                    // Copy File over
+                    try {
+                        Files.copy(file.toPath(), newDest.toPath(), StandardCopyOption.COPY_ATTRIBUTES);
+                    } catch (IOException e) {
+                        getLog().warn("Failed to copy File: '" + file.getAbsolutePath() + "' to File: " + newDest.getAbsolutePath(), e);
+                    }
+                } else {
+                    // We only overwrite converted files
+                    if(name.endsWith(PACKAGE_CLASSIFIER + "." + ZIP_TYPE)) {
+                        // Copy File over
+                        try {
+                            Files.copy(file.toPath(), newDest.toPath(), StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING);
+                        } catch (IOException e) {
+                            getLog().warn("Failed to copy generated File: '" + file.getAbsolutePath() + "' to File: " + newDest.getAbsolutePath(), e);
+                        }
+                    } else {
+                        getLog().info("Ignore File: '" + file.getAbsolutePath());
+                    }
+                }
+            }
+        }
+    }
+
+    private void installConvertedCP(Artifact artifact) throws MojoFailureException, MojoExecutionException {
+        if(installConvertedCP) {
+            Collection<Artifact> artifacts = Collections.synchronizedCollection(new ArrayList<>());
+            // Rebuild the converted package path
+            String convertedPackagePath = artifact.getGroupId().replaceAll("\\.", "/")
+                + "/" + artifact.getArtifactId()
+                + "/" + artifact.getVersion()
+                + "/" + artifact.getArtifactId()
+                + "-" + artifact.getVersion()
+                + "-" + PACKAGE_CLASSIFIER
+                + "." + ZIP_TYPE;
+            File convertedPackageFile = new File(convertedCPOutput, convertedPackagePath);
+            if(convertedPackageFile.exists() && convertedPackageFile.canRead()) {
+                artifact.setFile(convertedPackageFile);
+                artifacts.add(artifact);
+                installArtifact(mavenSession.getProjectBuildingRequest(), artifacts);
+            } else {
+                getLog().error("xCould not find Converted Package: " + convertedPackageFile);
+            }
+        }
+    }
+
+    private void installArtifact(ProjectBuildingRequest pbr, Collection<Artifact> artifacts )
+        throws MojoFailureException, MojoExecutionException
+    {
+        try
+        {
+            installer.install(pbr, artifacts);
+        }
+        catch ( ArtifactInstallerException e )
+        {
+            throw new MojoExecutionException( "ArtifactInstallerException", e );
+        }
+    }
+
+}
diff --git a/src/main/java/org/apache/sling/cpconverter/maven/mojos/ConvertPMMojo.java b/src/main/java/org/apache/sling/cpconverter/maven/mojos/ConvertPMMojo.java
new file mode 100644
index 0000000..e4d93c9
--- /dev/null
+++ b/src/main/java/org/apache/sling/cpconverter/maven/mojos/ConvertPMMojo.java
@@ -0,0 +1,226 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.maven.mojos;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.sling.feature.modelconverter.ProvisioningToFeature;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Converts the given list of Provisioning Models into
+ * Feature Models
+ */
+@Mojo(
+    name = "convert-pm",
+    requiresProject = true,
+    threadSafe = true
+)
+public final class ConvertPMMojo
+    extends AbstractBaseMojo
+{
+    public static final String CFG_INPUT_FOLDER = "inputFolder";
+
+    public static final String CFG_OUTPUT_FOLDER = "outputFolder";
+
+    public static final String CFG_GROUP_ID = "groupId";
+
+    public static final String CFG_ARTIFACT_ID = "artifactId";
+
+    public static final String CFG_VERSION = "version";
+
+    public static final String CFG_FRAMEWORK_PROPERTIES = "frameworkProperties";
+
+    public static final String CFG_NO_PROVISIIONING_MODEL_NAME = "noProvisioningModelName";
+
+    public static final String CFG_EXCLUDE_BUNDLES = "excludeBundles";
+
+    public static final String CFG_RUN_MODES = "runModes";
+
+    public static final String DEFAULT_OUTPUT_FOLDER = "target/features";
+
+    /**
+     * The folder that contains the Provisioning Models
+     */
+    @Parameter(property = CFG_INPUT_FOLDER, required = true)
+    private File inputFolder;
+
+    /**
+     * The folder that will contain the created Feature Models relative to the Maven Basedir Folder
+     */
+    @Parameter(property = CFG_OUTPUT_FOLDER, defaultValue = DEFAULT_OUTPUT_FOLDER, required = true)
+    private String outputFolder;
+
+    /**
+     * If provided this becomes the Feature's Group Id
+     */
+    @Parameter(property = CFG_GROUP_ID)
+    private String groupId;
+
+    /**
+     * If provided this becomes the Feature's Artifact Id. Tis will also
+     * make the original name to become the classifier
+     */
+    @Parameter(property = CFG_ARTIFACT_ID)
+    private String artifactId;
+
+    /**
+     * If provided this becomes the Feature's Version
+     */
+    @Parameter(property = CFG_VERSION)
+    private String version;
+
+    /**
+     * Franework Properties to be added to a given Feature Model.
+     * The format looks like this:
+     * 'launchpad:felix.systempackages.substitution=true' where
+     * launchpad is the name of the PM
+     */
+    @Parameter(property = CFG_FRAMEWORK_PROPERTIES)
+    private List<String> frameworkProperties;
+
+    /**
+     * If set to {@code true} the converted Content Package will be installed in the local Maven Repository
+     */
+    @Parameter(property = CFG_NO_PROVISIIONING_MODEL_NAME, defaultValue = "true")
+    private boolean noProvisioningModelName;
+
+    /**
+     * List of Bundles to be excluded from the Feature Model files
+     */
+    @Parameter(property = CFG_EXCLUDE_BUNDLES)
+    private List<String> excludeBundles;
+
+    /**
+     * List of all Runmodes that are considered for this conversion
+     *
+     * The default and all parts of all runmodes listed are placed into
+     * the Feature Models, all others are excluded
+     */
+    @Parameter(property = CFG_RUN_MODES)
+    private List<String> runModes;
+
+    private Pattern pattern = Pattern.compile("^(.*?):(.*?)=(.*?)$");
+
+    private String checkForPlaceholder(String text) {
+        String answer = text;
+        if(answer != null) {
+            answer = answer.replaceAll("\\$\\{\\{", "\\$\\{");
+            answer = answer.replaceAll("}}", "}");
+            getLog().info("Replaced Old Artifact Id Override: '" + text + "', with new one: '" + answer + "'");
+        }
+        return answer;
+    }
+
+    @Override
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (!inputFolder.isDirectory()) {
+            throw new MojoFailureException("Input Folder is not a directory: " + inputFolder);
+        }
+        if (!inputFolder.canRead()) {
+            throw new MojoFailureException("Input Folder is not readable:" + inputFolder);
+        }
+        String outputFolderPath = project.getBasedir() + "/" + outputFolder;
+        File output = new File(outputFolderPath);
+        if (!output.exists()) {
+            if(!output.mkdirs()) {
+                throw new MojoFailureException("Could not create Output Folder: " + outputFolder);
+            }
+        }
+        if (!output.isDirectory()) {
+            throw new MojoFailureException("Output Folder is not a directory: " + output);
+        }
+        if (!output.canWrite()) {
+            throw new MojoFailureException("Output Folder is not writable: " + output);
+        }
+        List<File> provisioningFiles = Arrays.asList(inputFolder.listFiles());
+        Map<String, Object> options = new HashMap<>();
+        if (groupId != null && !groupId.isEmpty()) {
+            groupId = checkForPlaceholder(groupId);
+            options.put("groupId", groupId);
+        }
+        if (version != null && !version.isEmpty()) {
+            version = checkForPlaceholder(version);
+            options.put("version", version);
+        }
+        // Todo: do we have a way to check the name?
+        if (artifactId != null && !artifactId.isEmpty()) {
+            artifactId = checkForPlaceholder(artifactId);
+            options.put("name", artifactId);
+        }
+        options.put("useProvidedVersion", version != null && !version.isEmpty());
+        options.put("noProvisioningModelName", noProvisioningModelName);
+        frameworkProperties = trimList(frameworkProperties);
+        Map<String, Map<String, String>> frameworkPropertiesMap = new HashMap<>();
+        for (String value : frameworkProperties) {
+            // Separate Model from Property Name Value pair. Create Sub Map if needed and then add
+            getLog().info("Check Add Framework Properties Line: " + value);
+            Matcher matcher = pattern.matcher(value);
+            if (matcher.matches() && matcher.groupCount() == 3) {
+                String modelName = matcher.group(1);
+                String propName = matcher.group(2);
+                String propValue = matcher.group(3);
+                getLog().info("Model Name: " + modelName + ", Prop Name: " + propName + ", Value: " + propValue);
+                Map<String, String> modelMap = frameworkPropertiesMap.get(modelName);
+                if (modelMap == null) {
+                    modelMap = new HashMap<>();
+                    frameworkPropertiesMap.put(modelName, modelMap);
+                }
+                modelMap.put(propName, propValue);
+            }
+        }
+        options.put("addFrameworkProperties", frameworkPropertiesMap);
+        excludeBundles = trimList(excludeBundles);
+        options.put("excludeBundles", excludeBundles);
+        getLog().info("Excluded Bundles: " + excludeBundles);
+        runModes = trimList(runModes);
+        options.put("runModes", runModes);
+        getLog().info("Runmodes: " + runModes);
+
+        // Start the Conversion
+        for (File file : provisioningFiles) {
+            getLog().info("Handle File: " + file.getAbsolutePath());
+            ProvisioningToFeature.convert(file, output, options);
+        }
+    }
+
+    // Because of the XML structure run modes can have leading, trailing spaces so we need to trim them here
+    public List<String> trimList(List<String> list) {
+        List<String> answer = new ArrayList<>();
+        if(list != null) {
+            for(String entry: list) {
+                if(entry != null) {
+                    entry = entry.trim();
+                    if(!entry.isEmpty()) {
+                        answer.add(entry);
+                    }
+                }
+            }
+        }
+        return answer;
+    }
+}
diff --git a/src/main/java/org/apache/sling/cpconverter/maven/mojos/FeatureLauncherMojo.java b/src/main/java/org/apache/sling/cpconverter/maven/mojos/FeatureLauncherMojo.java
new file mode 100644
index 0000000..f29835d
--- /dev/null
+++ b/src/main/java/org/apache/sling/cpconverter/maven/mojos/FeatureLauncherMojo.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.cpconverter.maven.mojos;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.sling.feature.launcher.impl.Main;
+
+import java.io.File;
+
+/**
+ * Launches the given Feature File
+ */
+@Mojo(
+    name = "launch-features",
+    requiresProject = true,
+    threadSafe = true
+)
+public final class FeatureLauncherMojo
+    extends AbstractBaseMojo
+{
+
+    public static final String CFG_FEATURE_FILE = "featureFile";
+
+    /**
+     * The path of the file that is launched here
+     */
+    @Parameter(property = CFG_FEATURE_FILE, required = true)
+    private File featureFile;
+
+    @Override
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if(!featureFile.isFile()) {
+            throw new MojoFailureException("Feature File is not a file: " + featureFile);
+        }
+        if(!featureFile.canRead()) {
+            throw new MojoFailureException("Feature File is cannot be read: " + featureFile);
+        }
+        Main.main(new String[] {"-f", featureFile.getAbsolutePath()});
+    }
+}
diff --git a/src/site/markdown/index.md b/src/site/markdown/index.md
new file mode 100644
index 0000000..b03c8d2
--- /dev/null
+++ b/src/site/markdown/index.md
@@ -0,0 +1,10 @@
+Content Package to Feature Model Maven Plugin
+=============================================
+
+Maven Plugin to Convert Configuration Files and Packages to Feature Models
+
+See [Goals](plugin-info.html) for a list of supported goals.
+
+### Usage
+A nearly complete usage of conversion, building and launching a feature
+ model based project can be found at [usage](usage.html) page.
diff --git a/src/site/markdown/usage.md.vm b/src/site/markdown/usage.md.vm
new file mode 100644
index 0000000..9b3f34e
--- /dev/null
+++ b/src/site/markdown/usage.md.vm
@@ -0,0 +1,275 @@
+#set($h1 = '#')
+#set($h2 = '##')
+#set($h3 = '###')
+#set($h4 = '####')
+#set($sp = '${')
+#set($ep = '}')
+
+
+$h2 Usage
+
+$h3 Converting Sling, Project Content Packages and Lauch it
+
+**Note**: In this sample we use Maven variables like **project.groupId** instead of a static value assuming
+that the project is within the same project that creates the content packages. Adjust that as needed.
+**Note**: Because we generate Feature Model files here the feature model files are in **target/fm**. We use **fm**
+instead of **features** to avoid confusion with the default feature source of **src/main/features**.
+
+First we need to define the Content Packages that are converted
+
+```
+<dependencies>
+...
+    <dependency>
+        <groupId>${sp}project.groupId${ep}</groupId>
+        <artifactId>my-content-package</artifactId>
+        <version>${sp}project.version${ep}</version>
+        <type>zip</type>
+    </dependency>
+```
+
+Then we need to include the JCR Package Init to deploy the packages when
+the project is launched:
+
+```
+    <dependency>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>org.apache.sling.jcr.packageinit</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </dependency>
+...
+</dependencies>
+```
+
+Then we need to include the package init feature model file which must
+here is placed in the **src/main/resouces/fm** folder named **sling_packageinit.json**:
+
+```
+{
+    "id":"${sp}project.groupId${ep}:${sp}project.artifactId${ep}:slingfeature:sling_packageinit:${sp}project.version${ep}",
+    "variables":{
+    },
+    "bundles":[
+        {
+            "id":"org.apache.sling:org.apache.sling.jcr.packageinit:0.0.1-SNAPSHOT",
+            "start-level":"10"
+        }
+    ]
+}
+```
+
+We need to cpy this file into our target folder because this is not a regular JAR build
+and so the copy of the resources is not done automatically:
+
+```
+<build>
+...
+    <plugins>
+        <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-resources-plugin</artifactId>
+            <version>3.1.0</version>
+            <configuration>
+                <outputDirectory>${sp}project.build.directory}</outputDirectory>
+                <resources>
+                    <resource>
+                        <directory>src/main/resources</directory>
+                    </resource>
+                </resources>
+            </configuration>
+            <executions>
+                <execution>
+                    <id>copy-frm-resource</id>
+                    <phase>process-resources</phase>
+                    <goals>
+                        <goal>copy-resources</goal>
+                    </goals>
+                </execution>
+            </executions>
+        </plugin>
+```
+
+Now we setup this Plugin and set the features folder to **target/fm** (keep in mind this path has to
+be relative to the basedir and cannot be absolute):
+
+```
+        <plugin>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>slingfeature-maven-plugin</artifactId>
+            <version>1.0.5-SNAPSHOT</version>
+            <extensions>true</extensions>
+            <configuration>
+                <features>target/fm</features>
+            </configuration>
+```
+
+First we convert the Sling Provisioning Files to Feature Model files. For that the caller has to provide
+a property called **sling.starter.folder** with the absolute path to the Sling Starter Project:
+
+```
+            <executions>
+                <execution>
+                    <id>convert-pm</id>
+                    <phase>process-classes</phase>
+                    <goals>
+                        <goal>convert-pm</goal>
+                    </goals>
+                    <configuration>
+                        <!-- Absolute Path to the Sling Starter Project Provisioning Folder -->
+                        <inputFolder>${sp}sling.starter.folder${ep}/src/main/provisioning</inputFolder>
+                        <!-- Relative path (to basedir) to the output folder. It will be created if needed -->
+                        <outputFolder>target/fm</outputFolder>
+                        <!-- Instead of a fixed Feature Id we set placeholder here -->
+                        <groupId>${sp}{project.groupId}${ep}</groupId>
+                        <artifactId>${sp}{project.artifactId}${ep}</artifactId>
+                        <version>${sp}{project.version}${ep}</version>
+                        <!-- Add Framework Properties to the Launchpad FM to make JRE archives accessible -->
+                        <frameworkProperties>
+                            launchpad:felix.systempackages.substitution=true,
+                            launchpad:felix.systempackages.calculate.uses=true
+                        </frameworkProperties>
+                        <!-- Exclude certain bundles that conflict with the Launch of Feature Models -->
+                        <excludeBundles>
+                            org.apache.sling.launchpad.installer,
+                            org.apache.sling.jcr.repoinit.impl.RepositoryInitializer
+                        </excludeBundles>
+                        <!-- Only add run modes of type 'oak_tar' and 'standalone'. Feature Model Projects do
+                             not support runmodes anymore as each of them represents one particular set -->
+                        <runModes>
+                            oak_tar,
+                            :standalone
+                        </runModes>
+                    </configuration>
+                </execution>
+```
+
+Convert the Content Packages of this project and prefix the files names to avoid conflicts and make it easier to indentify them:
+
+```
+                <execution>
+                    <id>convert-cp</id>
+                    <phase>process-classes</phase>
+                    <goals>
+                        <goal>convert-cp</goal>
+                    </goals>
+                    <configuration>
+                        <!-- NOTE: ${{ / }} is a way to encode placeholders that should not be interpolated in Maven in this call
+                                   and ${{{ / }}} is used to make it a CP Conversion Placeholder }-->
+                        <artifactIdOverride>${sp}{project.groupId}${ep}:${sp}{project.artifactId}${ep}:slingosgifeature:${sp}{{filename}}${ep}:${sp}{project.version}${ep}</artifactIdOverride>
+                        <!-- Install the Converted Content Package into the local Maven Repositorires. Without the launch
+                             will fail -->
+                        <installConvertedCP>true</installConvertedCP>
+                        <!-- Set the output folder for the converted packages -->
+                        <convertedCPOutput>${sp}project.build.directory${ep}/fm.out</convertedCPOutput>
+                        <!-- Set the output folder for the converted Feature Model files -->
+                        <fmOutput>${sp}project.build.directory${ep}/fm</fmOutput>
+                        <!-- Prefix the files to easily identify them -->
+                        <fmPrefix>my-project-</fmPrefix>
+                        <contentPackages>
+                            <!-- each of these entries must have a dependency listed above -->
+                            <contentPackage>
+                                <groupId>${sp}project.groupId${ep}</groupId>
+                                <artifactId>my-content-package</artifactId>
+                            </contentPackage>
+...
+                        </contentPackages>
+                    </configuration>
+                </execution>
+```
+
+Now we aggregate, collect them into a single FM file (attach) and verify all the generated Feature Model files:
+
+```
+                <execution>
+                    <id>aggregate-base-feature</id>
+                    <phase>generate-test-sources</phase>
+                    <goals>
+                        <goal>aggregate-features</goal>
+                    </goals>
+                    <configuration>
+                        <aggregates>
+                            <aggregate>
+                                <classifier>example-runtime</classifier>
+                                <filesInclude>**/*.json</filesInclude>
+                            </aggregate>
+                        </aggregates>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>attach-base-feature</id>
+                    <phase>process-test-sources</phase>
+                    <goals>
+                        <goal>attach-features</goal>
+                    </goals>
+                </execution>
+                <execution>
+                    <id>verify-analyze</id>
+                    <phase>generate-test-resources</phase>
+                    <goals>
+                        <goal>analyse-features</goal>
+                    </goals>
+                    <configuration>
+                        <framework>
+                            <groupId>org.apache.felix</groupId>
+                            <artifactId>org.apache.felix.framework</artifactId>
+                            <version>6.0.1</version>
+                        </framework>
+                        <scans>
+                            <scan>
+                                <includeClassifier>example-runtime</includeClassifier>
+                                <includeTasks>
+                                    <includeTask>bundle-packages</includeTask>
+                                </includeTasks>
+                            </scan>
+                        </scans>
+                    </configuration>
+                </execution>
+            </executions>
+        </plugin>
+...
+    </plugins>
+</build>
+```
+
+Finally we can define a profile to launch the Feature Model based project. With that the launch is only done
+if the project is buil with goal **install** and profile **launch** (mvn install -P launch):
+
+```
+<profiles>
+    <profile>
+        <id>launch</id>
+        <build>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.sling</groupId>
+                    <artifactId>slingfeature-maven-plugin</artifactId>
+                    <version>${project.version}</version>
+                    <extensions>true</extensions>
+                    <executions>
+                        <execution>
+                            <id>launch-it</id>
+                            <phase>install</phase>
+                            <goals>
+                                <goal>launch-features</goal>
+                            </goals>
+                            <configuration>
+                                <featureFile>${sp}project.build.directory${ep}/slingfeature-tmp/feature-example-runtime.json</featureFile>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </build>
+    </profile>
+</profiles>
+```
+
+The execution of a conversion and launch would look like this:
+
+```
+mvn \
+    clean \
+    install \
+    -P launch \
+    -Dsling.starter.folder=/sling.dev/sling-org-apache-sling-starter
+```
diff --git a/src/site/site.xml b/src/site/site.xml
new file mode 100644
index 0000000..2594b86
--- /dev/null
+++ b/src/site/site.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you 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.
+-->
+
+<project>
+  <skin>
+    <groupId>org.apache.maven.skins</groupId>
+    <artifactId>maven-fluido-skin</artifactId>
+    <version>1.6</version>
+  </skin>
+  <body>
+    <menu name="Overview">
+      <item name="Introduction" href="index.html"/>
+      <item name="Goals" href="plugin-info.html"/>
+      <item name="Usage" href="usage.html"/>
+    </menu>
+    <menu ref="reports"/>
+  </body>
+  <custom>
+    <fluidoSkin>
+      <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
+    </fluidoSkin>
+  </custom>
+</project>