diff --git a/src/main/java/it/inaf/oats/vospace/FileServiceClient.java b/src/main/java/it/inaf/oats/vospace/FileServiceClient.java
index d593893059e022ae67e8c2e639ee97ef4ffcb9f4..5c8d7463e02db055a03d728aa0a3d5e20f473972 100644
--- a/src/main/java/it/inaf/oats/vospace/FileServiceClient.java
+++ b/src/main/java/it/inaf/oats/vospace/FileServiceClient.java
@@ -54,7 +54,7 @@ public class FileServiceClient {
 
     public String startArchiveJob(Transfer transfer, String jobId) {
 
-        String target = transfer.getTarget().substring("vos://".length() + authority.length());
+        String target = NodeUtils.getVosPath(transfer.getTarget());
 
         String viewUri = transfer.getView().getUri();
 
diff --git a/src/main/java/it/inaf/oats/vospace/UriService.java b/src/main/java/it/inaf/oats/vospace/UriService.java
index 03162bbc8fcdd0742252cc203c8bba32524acb03..3b7186424a48dc8649a22820d2465f18c0c2a107 100644
--- a/src/main/java/it/inaf/oats/vospace/UriService.java
+++ b/src/main/java/it/inaf/oats/vospace/UriService.java
@@ -181,8 +181,7 @@ public class UriService {
 
     private String getEndpoint(JobSummary job, Transfer transfer) {
 
-        String relativePath = StringUtils.uriDecode(URIUtils
-                .returnVosPathFromNodeURI(transfer.getTarget(), authority), StandardCharsets.UTF_8);
+        String relativePath = NodeUtils.getVosPath(transfer.getTarget());
 
         User user = (User) servletRequest.getUserPrincipal();
         String creator = user.getName();
@@ -204,7 +203,6 @@ public class UriService {
             case pullFromVoSpace:
                 // Refresh relative path: it can differ in case of links followed 
                 relativePath = NodeUtils.getVosPath(node);
-                relativePath = StringUtils.uriDecode(relativePath, StandardCharsets.UTF_8);
                 if (!NodeUtils.checkIfReadable(node, creator, groups)) {
                     throw PermissionDeniedException.forPath(relativePath);
                 }
diff --git a/src/main/resources/auth.properties b/src/main/resources/auth.properties
index 875059c3b764b9216778e072cef3ddd6d004bda6..ace50d1f59202b4c222b8a0952715276e1fb8153 100644
--- a/src/main/resources/auth.properties
+++ b/src/main/resources/auth.properties
@@ -2,4 +2,4 @@ rap_uri=https://sso.ia2.inaf.it/rap-ia2
 gms_uri=https://sso.ia2.inaf.it/gms/
 groups_autoload=true
 client_id=vospace_test
-client_secret=***REMOVED***
\ No newline at end of file
+client_secret=***REMOVED***
diff --git a/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java b/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java
index 9ec78b9fb679cb4250975eb692873f656978d8e2..7664b945d0808ef55f7b9f80cbe154569ec11709 100644
--- a/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java
+++ b/src/test/java/it/inaf/oats/vospace/FileServiceClientTest.java
@@ -101,23 +101,23 @@ public class FileServiceClientTest {
 
         Transfer transfer = new Transfer();
         transfer.setDirection("pullFromVoSpace");
-        transfer.setTarget("vos://example.com!vospace/mydir");
+        transfer.setTarget("vos://example.com!vospace/mydir(%20+%20)x");
         View view = new View();
         view.setUri(Views.ZIP_VIEW_URI);
         transfer.setView(view);
         
         ContainerNode node = Mockito.mock(ContainerNode.class);
         when(node.getNodes()).thenReturn(List.of());
-        when(node.getUri()).thenReturn("vos://example.com!vospace/mydir");
-        when(nodeDAO.listNode(eq("/mydir"))).thenReturn(Optional.of(node));
+        when(node.getUri()).thenReturn("vos://example.com!vospace/mydir(%20+%20)x");
+        when(nodeDAO.listNode(eq("/mydir( + )x"))).thenReturn(Optional.of(node));
         
         when(linkService.followLinksForArchiveService(any()))
-                .thenReturn(List.of(new ArchiveEntryDescriptor("/mydir")));
+                .thenReturn(List.of(new ArchiveEntryDescriptor("/mydir( + )x")));
 
         ArchiveRequest archiveRequest = testStartArchiveJob(transfer);
 
         assertEquals(1, archiveRequest.getEntryDescriptors().size());
-        assertEquals("/mydir", archiveRequest.getEntryDescriptors().get(0).getTargetNodeVosPath());
+        assertEquals("/mydir( + )x", archiveRequest.getEntryDescriptors().get(0).getTargetNodeVosPath());
     }
 
     @Test