You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by an...@apache.org on 2019/07/17 14:53:20 UTC

[sling-slingfeature-maven-plugin] 01/01: Integrated the Convert Content Package Maven Plugin into this plugin

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

andysch pushed a commit to branch merge-cpconverter-plugin
in repository https://gitbox.apache.org/repos/asf/sling-slingfeature-maven-plugin.git

commit 144db5d188dac0f88e5835314900566e64a11a5f
Author: Andreas Schaefer <sc...@iMac.local>
AuthorDate: Wed Jul 17 07:51:25 2019 -0700

    Integrated the Convert Content Package Maven Plugin into this plugin
    
    Akso created another Mojo that deals with Convert Provisioning to Feature Model.
    The Dependency Lifecycle Participant was removed and its tests moved to each Mojo as needed.
---
 pom.xml                                            |  25 ++
 .../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 +++++
 .../apache/sling/feature/maven/Preprocessor.java   |  11 +-
 .../feature/maven/mojos/AbstractFeatureMojo.java   |  57 ++-
 .../maven/mojos/AbstractIncludingFeatureMojo.java  |   6 -
 .../feature/maven/mojos/AggregateFeaturesMojo.java |  10 +
 .../feature/maven/mojos/AnalyseFeaturesMojo.java   |   1 +
 .../sling/feature/maven/mojos/ApisJarMojo.java     |   1 +
 .../feature/maven/mojos/AttachFeaturesMojo.java    |   1 +
 .../sling/feature/maven/mojos/ContentPackage.java  | 114 ++++++
 .../sling/feature/maven/mojos/ConvertCPMojo.java   | 297 +++++++++++++++
 .../sling/feature/maven/mojos/ConvertPMMojo.java   | 247 ++++++++++++
 .../mojos/DependencyLifecycleParticipant.java      |  81 ----
 .../feature/maven/mojos/EmbedFeaturesMojo.java     |   1 +
 .../feature/maven/mojos/FeaturesDiffMojo.java      |   1 +
 .../sling/feature/maven/mojos/ReportingMojo.java   |   1 +
 .../sling/feature/maven/mojos/RepositoryMojo.java  |   1 +
 .../feature/maven/mojos/UpdateVersionsMojo.java    |   1 +
 .../META-INF/m2e/lifecycle-mapping-metadata.xml    |   2 +
 91 files changed, 5011 insertions(+), 97 deletions(-)

diff --git a/pom.xml b/pom.xml
index 51dd951..7c39398 100644
--- a/pom.xml
+++ b/pom.xml
@@ -196,6 +196,26 @@
             <version>0.0.2</version>
         </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.jackrabbit</groupId>
+            <artifactId>jackrabbit-api</artifactId>
+            <version>2.19.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.feature.modelconverter</artifactId>
+            <version>1.0.3-SNAPSHOT</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.maven</groupId>
             <artifactId>maven-core</artifactId>
             <version>${maven.version}</version>
@@ -279,6 +299,11 @@
             <version>1.11.0</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.scm</groupId>
             <artifactId>maven-scm-api</artifactId>
             <version>${maven.scm.version}</version>
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..2626614
--- /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:slingfeature-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..c02ec8b
--- /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:slingfeature-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/feature/maven/Preprocessor.java b/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
index 80666cc..68389fa 100644
--- a/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
+++ b/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
@@ -408,17 +408,22 @@ public class Preprocessor {
 
     private void checkFeatureId(final MavenProject project, final Feature feature) {
         // check feature id
-        if ( !project.getGroupId().equals(feature.getId().getGroupId()) ) {
+        if ( !isPlaceholder(feature.getId().getGroupId()) && !project.getGroupId().equals(feature.getId().getGroupId()) ) {
             throw new RuntimeException("Wrong group id for feature. It should be " + project.getGroupId() + " but is " + feature.getId().getGroupId());
         }
-        if ( !project.getArtifactId().equals(feature.getId().getArtifactId()) ) {
+        if ( !isPlaceholder(feature.getId().getArtifactId()) && !project.getArtifactId().equals(feature.getId().getArtifactId()) ) {
             throw new RuntimeException("Wrong artifact id for feature. It should be " + project.getArtifactId() + " but is " + feature.getId().getArtifactId());
         }
-        if ( !project.getVersion().equals(feature.getId().getVersion()) ) {
+        if ( !isPlaceholder(feature.getId().getVersion()) && !project.getVersion().equals(feature.getId().getVersion()) ) {
             throw new RuntimeException("Wrong version for feature. It should be " + project.getVersion() + " but is " + feature.getId().getVersion());
         }
     }
 
+    private boolean isPlaceholder(String name) {
+        System.out.println("Place Holder Name: '" + name + ", test: " + (name != null && name.startsWith("${")));
+        return name != null && name.startsWith("${");
+    }
+
     /**
      * Hook to post process the local feature
      * @param result The read feature
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java
index beb77c0..4fffa0e 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java
@@ -18,26 +18,35 @@ package org.apache.sling.feature.maven.mojos;
 
 import java.io.File;
 
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Plugin;
 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.sling.feature.maven.Environment;
 import org.apache.sling.feature.maven.FeatureProjectConfig;
+import org.apache.sling.feature.maven.FeatureProjectInfo;
+import org.apache.sling.feature.maven.Preprocessor;
+import org.codehaus.plexus.logging.Logger;
 
 /**
  * Base class for all mojos.
  */
 public abstract class AbstractFeatureMojo extends AbstractMojo {
 
-	/**
-	 * All of the below configurations are handled by the Preprocessor.
-	 * Mojos should only use them for informational purposes but not
-	 * for processing!
-	 * The read features and test features are available through the
-	 * ProjectHelper.
-	 */
+    private static final String PLUGIN_ID = "org.apache.sling:slingfeature-maven-plugin";
+
+    /**
+     * All of the below configurations are handled by the Preprocessor.
+     * Mojos should only use them for informational purposes but not
+     * for processing!
+     * The read features and test features are available through the
+     * ProjectHelper.
+     */
 
     /**
      * Directory containing feature files
@@ -135,9 +144,43 @@ public abstract class AbstractFeatureMojo extends AbstractMojo {
     @Component
     protected MavenProjectHelper projectHelper;
 
+    @Component
+    ArtifactHandlerManager artifactHandlerManager;
+
+    @Component
+    ArtifactResolver artifactResolver;
+
+    @Component
+    private Logger logger;
+
     protected File getTmpDir() {
         final File dir = new File(this.project.getBuild().getDirectory(), "slingfeature-tmp");
         dir.mkdirs();
         return dir;
     }
+
+    protected void prepareProject() {
+        // Rerun the initial test
+        final Environment env = new Environment();
+        env.artifactHandlerManager = artifactHandlerManager;
+        env.resolver = artifactResolver;
+        env.logger = logger;
+        env.session = mavenSession;
+
+        getLog().debug("Searching for project using plugin '" + PLUGIN_ID + "'...");
+
+        for (final MavenProject project : mavenSession.getProjects()) {
+            // consider all projects where this plugin is configured
+            Plugin plugin = project.getPlugin(PLUGIN_ID);
+            if (plugin != null) {
+                getLog().debug("Found project " + project.getId() + " using " + PLUGIN_ID);
+                final FeatureProjectInfo info = new FeatureProjectInfo();
+                info.plugin = plugin;
+                info.project = project;
+                env.modelProjects.put(project.getGroupId() + ":" + project.getArtifactId(), info);
+            }
+        }
+        getLog().info("Call Preprocessor Process on Env: " + env);
+        new Preprocessor().process(env);
+    }
 }
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/AbstractIncludingFeatureMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/AbstractIncludingFeatureMojo.java
index d094706..383670e 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/AbstractIncludingFeatureMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/AbstractIncludingFeatureMojo.java
@@ -35,12 +35,6 @@ import org.codehaus.plexus.util.AbstractScanner;
 
 public abstract class AbstractIncludingFeatureMojo extends AbstractFeatureMojo {
 
-    @Component
-    ArtifactHandlerManager artifactHandlerManager;
-
-    @Component
-    ArtifactResolver artifactResolver;
-
     protected Map<String, Feature> getSelectedFeatures(final FeatureSelectionConfig config)
             throws MojoExecutionException {
         final Map<String, Feature> result = new LinkedHashMap<>();
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesMojo.java
index e6f83e0..0ef213e 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/AggregateFeaturesMojo.java
@@ -28,12 +28,16 @@ import java.util.Spliterator;
 import java.util.Spliterators;
 import java.util.stream.StreamSupport;
 
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.builder.ArtifactProvider;
@@ -42,8 +46,13 @@ import org.apache.sling.feature.builder.FeatureBuilder;
 import org.apache.sling.feature.builder.FeatureProvider;
 import org.apache.sling.feature.builder.MergeHandler;
 import org.apache.sling.feature.builder.PostProcessHandler;
+import org.apache.sling.feature.maven.Environment;
 import org.apache.sling.feature.maven.FeatureConstants;
+import org.apache.sling.feature.maven.FeatureProjectInfo;
+import org.apache.sling.feature.maven.Preprocessor;
 import org.apache.sling.feature.maven.ProjectHelper;
+import org.codehaus.plexus.component.annotations.Requirement;
+import org.codehaus.plexus.logging.Logger;
 
 /**
  * Aggregate multiple features into a single one.
@@ -68,6 +77,7 @@ public class AggregateFeaturesMojo extends AbstractIncludingFeatureMojo {
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        prepareProject();
         ProjectHelper.checkPreprocessorRun(this.project);
         for (final Aggregate aggregate : aggregates) {
             // check classifier
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/AnalyseFeaturesMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/AnalyseFeaturesMojo.java
index a0f6bb2..c1256c8 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/AnalyseFeaturesMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/AnalyseFeaturesMojo.java
@@ -63,6 +63,7 @@ public class AnalyseFeaturesMojo extends AbstractIncludingFeatureMojo {
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        prepareProject();
         ProjectHelper.checkPreprocessorRun(this.project);
         List<Scan> list = scans;
         if (list == null || list.isEmpty()) {
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
index 1d382bc..f625799 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
@@ -165,6 +165,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo implements Artifac
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        prepareProject();
         ProjectHelper.checkPreprocessorRun(this.project);
 
         artifactProvider = new ArtifactProvider() {
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/AttachFeaturesMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/AttachFeaturesMojo.java
index 85040a0..fd8d7f2 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/AttachFeaturesMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/AttachFeaturesMojo.java
@@ -96,6 +96,7 @@ public class AttachFeaturesMojo extends AbstractFeatureMojo {
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        prepareProject();
         ProjectHelper.checkPreprocessorRun(this.project);
         final List<String> featureUrls = new ArrayList<>();
         this.attachClassifierFeatures(ProjectHelper.getFeatures(this.project), featureUrls, this.attachMainFeatures);
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/ContentPackage.java b/src/main/java/org/apache/sling/feature/maven/mojos/ContentPackage.java
new file mode 100644
index 0000000..55073ee
--- /dev/null
+++ b/src/main/java/org/apache/sling/feature/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.feature.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/feature/maven/mojos/ConvertCPMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/ConvertCPMojo.java
new file mode 100644
index 0000000..7460b93
--- /dev/null
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/ConvertCPMojo.java
@@ -0,0 +1,297 @@
+/*
+ * 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.feature.maven.mojos;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
+import org.apache.maven.project.ProjectBuildingRequest;
+import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller;
+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 java.io.File;
+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;
+
+@Mojo(
+    name = "convert-cp",
+    requiresProject = true,
+    threadSafe = true
+)
+public final class ConvertCPMojo extends AbstractMojo {
+    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;
+
+    /**
+     * The Maven project.
+     */
+    @Parameter( defaultValue = "${project}", readonly = true )
+    private MavenProject project;
+
+    @Parameter(property = "session", readonly = true, required = true)
+    protected MavenSession mavenSession;
+
+    @Component
+    protected MavenProjectHelper projectHelper;
+
+    @Component
+    private ArtifactInstaller installer;
+
+    @Component
+    private ArtifactHandlerManager artifactHandlerManager;
+
+    @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()
+                );
+
+            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);
+                        }
+                    }
+                }
+            }
+        } catch (Throwable t) {
+            throw new MojoExecutionException("Content Package Converter Exception", t);
+        }
+
+    }
+
+    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("Could 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/feature/maven/mojos/ConvertPMMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/ConvertPMMojo.java
new file mode 100644
index 0000000..4a02e11
--- /dev/null
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/ConvertPMMojo.java
@@ -0,0 +1,247 @@
+/*
+ * 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.feature.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.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+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;
+import org.apache.sling.cpconverter.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;
+
+@Mojo(
+    name = "convert-pm",
+    requiresProject = true,
+    threadSafe = true
+)
+public final class ConvertPMMojo extends AbstractMojo {
+    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 = "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 Build Output 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;
+
+    /**
+     * The Maven project.
+     */
+    @Parameter( defaultValue = "${project}", readonly = true )
+    private MavenProject project;
+
+    @Parameter(property = "session", readonly = true, required = true)
+    protected MavenSession mavenSession;
+
+    @Component
+    protected MavenProjectHelper projectHelper;
+
+    @Component
+    private ArtifactInstaller installer;
+
+    @Component
+    private ArtifactHandlerManager artifactHandlerManager;
+
+    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.getBuild().getDirectory() + "/" + 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);
+        }
+//            getLog().info("Use Provided Version Flag: '{}'", useProvidedVersion);
+        options.put("useProvidedVersion", version != null && !version.isEmpty());
+        options.put("noProvisioningModelName", noProvisioningModelName);
+//            options.put("dropVariables", dropVariables);
+        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/feature/maven/mojos/DependencyLifecycleParticipant.java b/src/main/java/org/apache/sling/feature/maven/mojos/DependencyLifecycleParticipant.java
deleted file mode 100644
index 48b6123..0000000
--- a/src/main/java/org/apache/sling/feature/maven/mojos/DependencyLifecycleParticipant.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.feature.maven.mojos;
-
-import org.apache.maven.AbstractMavenLifecycleParticipant;
-import org.apache.maven.MavenExecutionException;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.project.MavenProject;
-import org.apache.sling.feature.maven.Environment;
-import org.apache.sling.feature.maven.FeatureProjectInfo;
-import org.apache.sling.feature.maven.Preprocessor;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.Logger;
-
-/**
- * Maven lifecycle participant which adds the artifacts of the model to the dependencies.
- */
-@Component(role = AbstractMavenLifecycleParticipant.class, hint = "featureparticipant")
-public class DependencyLifecycleParticipant extends AbstractMavenLifecycleParticipant {
-
-    /**
-     * The plugin ID consists of <code>groupId:artifactId</code>, see {@link Plugin#constructKey(String, String)}
-     */
-    private static final String PLUGIN_ID = "org.apache.sling:slingfeature-maven-plugin";
-
-    @Requirement
-    private Logger logger;
-
-    @Requirement
-    private ArtifactHandlerManager artifactHandlerManager;
-
-    /**
-     * Used to look up Artifacts in the remote repository.
-     *
-     */
-    @Requirement
-    private ArtifactResolver resolver;
-
-    @Override
-    public void afterProjectsRead(final MavenSession session) throws MavenExecutionException {
-        final Environment env = new Environment();
-        env.artifactHandlerManager = artifactHandlerManager;
-        env.resolver = resolver;
-        env.logger = logger;
-        env.session = session;
-
-        logger.debug("Searching for project using plugin '" + PLUGIN_ID + "'...");
-
-        for (final MavenProject project : session.getProjects()) {
-            // consider all projects where this plugin is configured
-            Plugin plugin = project.getPlugin(PLUGIN_ID);
-            if (plugin != null) {
-                logger.debug("Found project " + project.getId() + " using " + PLUGIN_ID);
-                final FeatureProjectInfo info = new FeatureProjectInfo();
-                info.plugin = plugin;
-                info.project = project;
-                env.modelProjects.put(project.getGroupId() + ":" + project.getArtifactId(), info);
-            }
-        }
-
-        new Preprocessor().process(env);
-    }
-}
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/EmbedFeaturesMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/EmbedFeaturesMojo.java
index 8a12a42..81cea50 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/EmbedFeaturesMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/EmbedFeaturesMojo.java
@@ -75,6 +75,7 @@ public class EmbedFeaturesMojo extends AbstractIncludingFeatureMojo {
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        prepareProject();
         ProjectHelper.checkPreprocessorRun(this.project);
 
         final Map<String, Feature> features = embed == null ? this.selectAllFeatureFilesAndAggregates()
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/FeaturesDiffMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/FeaturesDiffMojo.java
index 97e4683..dcd5f60 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/FeaturesDiffMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/FeaturesDiffMojo.java
@@ -81,6 +81,7 @@ public final class FeaturesDiffMojo extends AbstractIncludingFeatureMojo {
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        prepareProject();
         getLog().debug("Retrieving Feature files...");
         final Collection<Feature> features = getSelectedFeatures(selection).values();
 
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/ReportingMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/ReportingMojo.java
index 2f60074..fb04381 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/ReportingMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/ReportingMojo.java
@@ -43,6 +43,7 @@ public class ReportingMojo extends AbstractIncludingFeatureMojo {
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        prepareProject();
         ProjectHelper.checkPreprocessorRun(this.project);
         // get the features
         final Map<String, Feature> features = this.selectAllFeatureFiles();
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/RepositoryMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/RepositoryMojo.java
index 7102b50..5c664c0 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/RepositoryMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/RepositoryMojo.java
@@ -45,6 +45,7 @@ public class RepositoryMojo extends AbstractRepositoryMojo {
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        prepareProject();
         ProjectHelper.checkPreprocessorRun(this.project);
         if (repositories == null || repositories.isEmpty()) {
             final File artifactDir = new File(this.project.getBuild().getDirectory(), this.repositoryDir);
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/UpdateVersionsMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/UpdateVersionsMojo.java
index 0e53b86..2f1059f 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/UpdateVersionsMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/UpdateVersionsMojo.java
@@ -163,6 +163,7 @@ public class UpdateVersionsMojo extends AbstractIncludingFeatureMojo {
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        prepareProject();
         ProjectHelper.checkPreprocessorRun(this.project);
         // get the features
         final Map<String, Feature> assembledFeatures = this.getFeatures();
diff --git a/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml b/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
index f8d6a20..bccfa88 100644
--- a/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
+++ b/src/main/resources/META-INF/m2e/lifecycle-mapping-metadata.xml
@@ -25,6 +25,8 @@
                     <goal>analyse-features</goal>
                     <goal>attach-features</goal>
                     <goal>process-resources</goal>
+                    <goal>convert-cp</goal>
+                    <goal>convert-pm</goal>
                 </goals>
             </pluginExecutionFilter>
             <action>