diff --git a/pom.xml b/pom.xml
index 3e82e5a..a0d365c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -198,10 +198,11 @@
             <version>3.4</version>
             <scope>provided</scope>
         </dependency>
+        <!-- for converting Maven to OSGi versions -->
         <dependency>
-            <groupId>org.apache.maven.shared</groupId>
-            <artifactId>maven-osgi</artifactId>
-            <version>0.2.0</version>
+            <groupId>biz.aQute.bnd</groupId>
+            <artifactId>biz.aQute.bndlib</artifactId>
+            <version>4.2.0</version>
         </dependency>
         <dependency>
             <groupId>org.codehaus.plexus</groupId>
diff --git a/src/main/java/org/apache/sling/maven/slingstart/FeatureModelConverter.java b/src/main/java/org/apache/sling/maven/slingstart/FeatureModelConverter.java
index bbb2d19..67e7d92 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/FeatureModelConverter.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/FeatureModelConverter.java
@@ -16,22 +16,6 @@
  */
 package org.apache.sling.maven.slingstart;
 
-import org.apache.maven.MavenExecutionException;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.osgi.DefaultMaven2OsgiConverter;
-import org.apache.maven.shared.osgi.Maven2OsgiConverter;
-import org.apache.sling.feature.ArtifactId;
-import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.builder.FeatureProvider;
-import org.apache.sling.feature.io.json.FeatureJSONReader;
-import org.apache.sling.feature.modelconverter.FeatureToProvisioning;
-import org.apache.sling.maven.slingstart.ModelPreprocessor.Environment;
-import org.apache.sling.maven.slingstart.ModelPreprocessor.ProjectInfo;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileWriter;
@@ -44,6 +28,22 @@
 import java.util.Map;
 import java.util.Properties;
 
+import org.apache.maven.MavenExecutionException;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.project.MavenProject;
+import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.builder.FeatureProvider;
+import org.apache.sling.feature.io.json.FeatureJSONReader;
+import org.apache.sling.feature.modelconverter.FeatureToProvisioning;
+import org.apache.sling.maven.slingstart.ModelPreprocessor.Environment;
+import org.apache.sling.maven.slingstart.ModelPreprocessor.ProjectInfo;
+
+import aQute.bnd.version.MavenVersion;
+
 public class FeatureModelConverter {
     static final String BUILD_DIR = "provisioning/converted";
 
@@ -196,7 +196,7 @@
             sb.append('.');
             sb.append(dav.getQualifier());
         }
-        final Maven2OsgiConverter converter = new DefaultMaven2OsgiConverter();
-        return converter.getVersion(sb.toString());
+        final MavenVersion mavenVersion = new MavenVersion(sb.toString());
+        return mavenVersion.getOSGiVersion().toString();
     }
 }
