diff --git a/src/main/java/net/ivoa/xml/vospace/v2/Transfer.java b/src/main/java/net/ivoa/xml/vospace/v2/Transfer.java
index 1e91484bbaab1b9140dc60775d335e25f1eedf95..b156cb4ee416a382b987779c58124f631528780e 100644
--- a/src/main/java/net/ivoa/xml/vospace/v2/Transfer.java
+++ b/src/main/java/net/ivoa/xml/vospace/v2/Transfer.java
@@ -68,7 +68,7 @@ import javax.xml.bind.annotation.XmlType;
     "target",
     "direction",
     "view",
-    "protocol",
+    "protocols",
     "keepBytes"
 })
 // <edit>
@@ -81,7 +81,8 @@ public class Transfer {
     protected String target;
     protected String direction;
     protected View view;
-    protected List<Protocol> protocol;
+    @XmlElement(name = "protocol")
+    protected List<Protocol> protocols;
     protected Boolean keepBytes;
     // <edit> Fix: version is missing in VOSpace XSD
     @XmlAttribute
@@ -182,11 +183,11 @@ public class Transfer {
      * 
      * 
      */
-    public List<Protocol> getProtocol() {
-        if (protocol == null) {
-            protocol = new ArrayList<Protocol>();
+    public List<Protocol> getProtocols() {
+        if (protocols == null) {
+            protocols = new ArrayList<>();
         }
-        return this.protocol;
+        return this.protocols;
     }
 
     /**
diff --git a/src/test/java/net/ivoa/xml/uws/v1/JobSummaryTest.java b/src/test/java/net/ivoa/xml/uws/v1/JobSummaryTest.java
index 35513b68ba990c1c49cc407c2efee25c64f19634..56f351aea1844159d156b3a9d960f55320c23fd9 100644
--- a/src/test/java/net/ivoa/xml/uws/v1/JobSummaryTest.java
+++ b/src/test/java/net/ivoa/xml/uws/v1/JobSummaryTest.java
@@ -65,9 +65,12 @@ public class JobSummaryTest {
         transfer.setVersion("2.1");
         transfer.setTarget("vos://example.com!vospace/mydata1");
         transfer.setDirection("pullFromVoSpace");
-        Protocol protocol = new Protocol();
-        protocol.setUri("ivo://ivoa.net/vospace/core#httpget");
-        transfer.getProtocol().add(protocol);
+        Protocol protocol1 = new Protocol();
+        protocol1.setUri("ivo://ivoa.net/vospace/core#httpget");
+        Protocol protocol2= new Protocol();
+        protocol2.setUri("ivo://ivoa.net/vospace/core#httpsget");
+        transfer.getProtocols().add(protocol1);
+        transfer.getProtocols().add(protocol2);
 
         jobInfo.getAny().add(transfer);
 
@@ -94,7 +97,7 @@ public class JobSummaryTest {
         assertEquals("pullFromVoSpace", transfer.getDirection());
         assertEquals("vos://example.com!vospace/mydata1", transfer.getTarget());
 
-        Protocol protocol = transfer.getProtocol().get(0);
+        Protocol protocol = transfer.getProtocols().get(0);
         assertEquals("ivo://ivoa.net/vospace/core#httpget", protocol.getUri());
     }
 }
diff --git a/src/test/java/net/ivoa/xml/vospace/v2/TransferTest.java b/src/test/java/net/ivoa/xml/vospace/v2/TransferTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..740f6b0538a2c35b612d58c7866641f3896932eb
--- /dev/null
+++ b/src/test/java/net/ivoa/xml/vospace/v2/TransferTest.java
@@ -0,0 +1,58 @@
+package net.ivoa.xml.vospace.v2;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.StringReader;
+import java.io.StringWriter;
+import javax.xml.bind.JAXB;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
+
+public class TransferTest {
+
+    private static final ObjectMapper MAPPER = new ObjectMapper();
+
+    private static final String URI_PREFIX = "vos://example.com!vospace";
+
+    @Test
+    public void testXmlSerialization() throws Exception {
+
+        Transfer transfer = getTransfer();
+
+        String xml;
+        try ( StringWriter sw = new StringWriter()) {
+            JAXB.marshal(transfer, sw);
+            xml = sw.toString();
+            System.out.println(xml);
+        }
+
+        Transfer deserialized;
+        try ( StringReader sr = new StringReader(xml)) {
+            deserialized = JAXB.unmarshal(sr, Transfer.class);
+        }
+
+        verifyTransfersAreEquals(transfer, deserialized);
+    }
+
+    private Transfer getTransfer() {
+        Transfer transfer = new Transfer();
+
+        transfer.setTarget(URI_PREFIX + "/mynode");
+        transfer.setDirection("pullFromVoSpace");
+
+        Protocol protocol = new Protocol();
+        protocol.setUri("ivo://ivoa.net/vospace/core#httpget");
+        protocol.setEndpoint("http://ia2.inaf.it/data?param1=value1&param2=value2");
+
+        transfer.getProtocols().add(protocol);
+
+        return transfer;
+    }
+
+    private void verifyTransfersAreEquals(Transfer serialized, Transfer deserialized) {
+
+        assertEquals(serialized.getTarget(), deserialized.getTarget());
+        assertEquals(serialized.getDirection(), deserialized.getDirection());
+        assertEquals(serialized.getProtocols().size(), deserialized.getProtocols().size());
+        assertEquals(serialized.getProtocols().get(0).getEndpoint(), deserialized.getProtocols().get(0).getEndpoint());
+    }
+}