diff --git a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/AbstractJbiMojo.java b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/AbstractJbiMojo.java
index e94c955..86e5251 100644
--- a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/AbstractJbiMojo.java
+++ b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/AbstractJbiMojo.java
@@ -42,6 +42,7 @@
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.project.MavenProject;
@@ -51,6 +52,7 @@
 import org.apache.servicemix.maven.plugin.jbi.JbiResolutionListener.Node;
 import org.codehaus.plexus.archiver.jar.Manifest;
 import org.codehaus.plexus.archiver.jar.ManifestException;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 public abstract class AbstractJbiMojo extends AbstractMojo {
 
@@ -349,5 +351,26 @@
         sb.append(version.substring(matcher.end(), version.length()));
         return sb.toString();
     }
+    
+    protected String getServiceUnitName(MavenProject project) {
+		for (Object elem : project.getBuildPlugins()) {
+			if (elem instanceof Plugin) {
+				Plugin plugin = (Plugin)elem;
+				if (plugin.getGroupId().equals("org.apache.servicemix.tooling")
+						&& plugin.getArtifactId().equals("jbi-maven-plugin")) {
+					Xpp3Dom configuration = (Xpp3Dom) plugin.getConfiguration();
+					if (configuration != null) {
+						Xpp3Dom serviceUnitName = configuration.getChild("serviceUnitName");
+						if (serviceUnitName != null) {
+							return serviceUnitName.getValue();
+						}
+					}
+					break;
+				}
+			}
+		}
+		return null;
+	}
+
 
 }
diff --git a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyDescriptorMojo.java b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyDescriptorMojo.java
index f1285ec..ef07ba9 100644
--- a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyDescriptorMojo.java
+++ b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyDescriptorMojo.java
@@ -220,7 +220,12 @@
                     if (fileName.equals("classes")) {
                     	fileName = artifact.getArtifactId() + "-" + artifact.getVersion() + ".jar";
                     }
-                    fileName = fileName.substring(0, fileName.lastIndexOf('.')) + ".zip";
+                    String suName = getServiceUnitName(project);
+                    if (suName != null && suName.length() > 0) {
+                    	fileName = suName;
+                    } else {
+                    	fileName = fileName.substring(0, fileName.lastIndexOf('.')) + ".zip";
+                    }
                     info.setFilename(fileName);
                     info.setComponent(getComponentName(project, artifacts, artifact));
                     info.setDescription(project.getDescription());
diff --git a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyMojo.java b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyMojo.java
index 3f2a8ec..cdbfc6b 100644
--- a/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyMojo.java
+++ b/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyMojo.java
@@ -22,6 +22,7 @@
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProject;
@@ -30,6 +31,7 @@
 import org.codehaus.plexus.archiver.jar.Manifest;
 import org.codehaus.plexus.util.DirectoryScanner;
 import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 import java.io.File;
 import java.io.IOException;
@@ -133,9 +135,14 @@
                 }
                 if (project != null && project.getPackaging().equals("jbi-service-unit")) {
                     try {
-                        String path = artifact.getFile().getAbsolutePath();
-                        path = path.substring(0, path.lastIndexOf('.')) + ".zip";
-                        FileUtils.copyFileToDirectory(new File(path), workDirectory);
+                    	String suName = getServiceUnitName(project);
+                    	String path = artifact.getFile().getAbsolutePath();
+                    	if (suName != null && suName.length() > 0) {
+                    		path = path.substring(0, path.lastIndexOf(File.separator)) + File.separator + suName;
+                    	} else {
+                    		path = path.substring(0, path.lastIndexOf('.')) + ".zip";
+                    	}
+                    	FileUtils.copyFileToDirectory(new File(path), workDirectory);
                     } catch (IOException e) {
                         throw new JbiPluginException(e);
                     }
@@ -143,5 +150,4 @@
             }
         }
     }
-
 }
