diff --git a/src/main/java/it/inaf/ia2/transfer/service/ArchiveService.java b/src/main/java/it/inaf/ia2/transfer/service/ArchiveService.java
index 748e2ef43f2b7be09221064624781117098a6bd1..ec99bfc6c449c08cd38782be14ac7079f88feda9 100644
--- a/src/main/java/it/inaf/ia2/transfer/service/ArchiveService.java
+++ b/src/main/java/it/inaf/ia2/transfer/service/ArchiveService.java
@@ -146,7 +146,7 @@ public class ArchiveService {
         if (!vosPaths.isEmpty()) {
             for (FileInfo fileInfo : fileDAO.getArchiveFileInfos(vosPaths)) {
 
-                String relPath = fileInfo.getVirtualPath().substring(commonParent.length());
+                String relPath = fileInfo.getVirtualPath().substring(commonParent.length());                
 
                 this.insertEntryIntoArchive(fileInfo, supportDir, relPath, tokenPrincipal, portalLocationUrls, servletRequest, handler);
 
@@ -173,7 +173,7 @@ public class ArchiveService {
                         
                 
                 String relPath = vosPath.substring(commonParent.length());
-
+                
                 this.insertEntryIntoArchive(fileInfo, supportDir, relPath, tokenPrincipal, portalLocationUrls, servletRequest, handler);
 
             }
@@ -254,6 +254,11 @@ public class ArchiveService {
 
         List<String> vosPaths = entryDescriptors.stream().map(ed -> ed.getVosPath())
                 .collect(Collectors.toList());
+        
+        if(vosPaths.size() == 1) {            
+            String vosPath = vosPaths.get(0);                        
+            return vosPath.substring(0, vosPath.lastIndexOf("/"));
+        }
 
         String commonParent = null;
         for (String vosPath : vosPaths) {
@@ -312,7 +317,7 @@ public class ArchiveService {
         }
 
         @Override
-        public TarEntry getEntry(File file, String path) {
+        public TarEntry getEntry(File file, String path) {            
             return new TarEntry(file, path);
         }