diff --git a/src/main/java/it/inaf/oats/vospace/JobService.java b/src/main/java/it/inaf/oats/vospace/JobService.java
index 938fbee1462b45ddde14206af8663321d47eea69..852b05fb1dc58529a3f1874b9ca792eb88392cab 100644
--- a/src/main/java/it/inaf/oats/vospace/JobService.java
+++ b/src/main/java/it/inaf/oats/vospace/JobService.java
@@ -203,7 +203,7 @@ public class JobService {
                 List<String> sourceAndDestination = copyService.processCopyNodes(transfer, jobId, user);
                 // Call file service and command copy
                 try{                
-                fileServiceClient.startFileCopyJob(sourceAndDestination.get(0), sourceAndDestination.get(1), jobId, user);
+                    fileServiceClient.startFileCopyJob(sourceAndDestination.get(0), sourceAndDestination.get(1), jobId, user);
                 } catch (Exception e) {
                     // We decided not to purge metadata in case of failure
                     // just release busy nodes setting job_id = null
diff --git a/src/test/java/it/inaf/oats/vospace/JobServiceTest.java b/src/test/java/it/inaf/oats/vospace/JobServiceTest.java
index ee017edcda9962af8959c83a3774a482027113a5..7c824f3d789bce4c80b00c008e8a6befd2388b94 100644
--- a/src/test/java/it/inaf/oats/vospace/JobServiceTest.java
+++ b/src/test/java/it/inaf/oats/vospace/JobServiceTest.java
@@ -55,6 +55,12 @@ public class JobServiceTest {
 
     @Mock
     private MoveService moveService;
+    
+    @Mock
+    private CopyService copyService;
+    
+    @Mock
+    private FileServiceClient fileServiceClient;
 
     @InjectMocks
     private JobService jobService;
@@ -217,6 +223,43 @@ public class JobServiceTest {
         assertEquals(ExecutionPhase.COMPLETED, phases.get(2));
     }
 
+    @Test
+    public void testStartJobCopyNode() {
+
+        Transfer copyNode = new Transfer();
+        copyNode.setDirection("vos://example.com!vospace/myfile");
+        copyNode.setKeepBytes(true);
+
+        JobSummary job = new JobSummary();
+        setJobInfo(job, copyNode);
+
+        when(uriService.getTransfer(any())).thenReturn(copyNode);
+
+        List<ExecutionPhase> phases = new ArrayList<>();
+        doAnswer(invocation -> {
+            JobSummary j = invocation.getArgument(0);
+            phases.add(j.getPhase());
+            return null;
+        }).when(jobDAO).updateJob(any(), any());
+
+        when(copyService.processCopyNodes(any(), any(), any())).thenReturn(List.of("source", "dest"));
+        
+        jobService.setJobPhase(job, "RUN");
+
+        verify(fileServiceClient, timeout(1000).times(1)).startFileCopyJob(eq("source"), eq("dest"), any(), any());
+
+        verify(jobDAO, timeout(1000).times(3)).updateJob(any(), any());
+
+        try {
+            Thread.sleep(500);
+        } catch (InterruptedException ex) {
+        }
+
+        assertEquals(ExecutionPhase.EXECUTING, phases.get(0));
+        assertEquals(ExecutionPhase.EXECUTING, phases.get(1));
+        assertEquals(ExecutionPhase.EXECUTING, phases.get(2));
+    }
+
     private Transfer getPullFromVoSpaceHttpTransfer() {
         Transfer transfer = new Transfer();
         transfer.setTarget("vos://example.com!vospace/myfile");