diff --git a/src/main/java/it/inaf/oats/vospace/persistence/JobDAO.java b/src/main/java/it/inaf/oats/vospace/persistence/JobDAO.java
index 58a47e33ecfc732f9d8e049cd47ff822a969902a..0fee2b19b91a2f57f983848297e37adc5697cdf0 100644
--- a/src/main/java/it/inaf/oats/vospace/persistence/JobDAO.java
+++ b/src/main/java/it/inaf/oats/vospace/persistence/JobDAO.java
@@ -25,11 +25,14 @@ import org.springframework.stereotype.Repository;
 import java.util.ArrayList;
 import java.time.LocalDateTime;
 import java.math.BigDecimal;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Repository
 public class JobDAO {
 
+    private static final Logger LOG = LoggerFactory.getLogger(JobDAO.class);
+    
     private static final ObjectMapper MAPPER = new ObjectMapper();
 
     private final JdbcTemplate jdbcTemplate;
@@ -41,21 +44,19 @@ public class JobDAO {
 
     public void createJob(JobSummary jobSummary) {
 
-        Object jobPayload = getJobPayload(jobSummary);
-
         String sql = "INSERT INTO job(job_id, owner_id, job_type, phase, job_info) VALUES (?, ?, ?, ?, ?)";
 
         jdbcTemplate.update(sql, ps -> {
             int i = 0;
             ps.setString(++i, jobSummary.getJobId());
             ps.setString(++i, jobSummary.getOwnerId());
-            ps.setObject(++i, getJobType(jobPayload), Types.OTHER);
+            ps.setObject(++i, getJobType(jobSummary), Types.OTHER);
             ps.setObject(++i, jobSummary.getPhase().value(), Types.OTHER);
-            ps.setObject(++i, toJson(jobPayload), Types.OTHER);
+            ps.setObject(++i, toJson(jobSummary.getJobInfo()), Types.OTHER);
         });
     }
 
-    private Object getJobPayload(JobSummary jobSummary) {
+    private String getJobType(JobSummary jobSummary) {
 
         List<Object> payload = jobSummary.getJobInfo().getAny();
         if (payload.isEmpty()) {
@@ -65,10 +66,7 @@ public class JobDAO {
             throw new UnsupportedOperationException("JobInfo as list not supported");
         }
 
-        return payload.get(0);
-    }
-
-    private String getJobType(Object jobPayload) {
+        Object jobPayload = payload.get(0);
 
         if (jobPayload instanceof Transfer) {
             Transfer transfer = (Transfer) jobPayload;
@@ -102,14 +100,7 @@ public class JobDAO {
         jobSummary.setJobId(rs.getString("job_id"));
         jobSummary.setOwnerId(rs.getString("owner_id"));
         jobSummary.setPhase(ExecutionPhase.fromValue(rs.getString("phase")));
-
-        String jobType = rs.getString("job_type");
-
-        Object jobPayload = getJobPayload(jobType, rs.getString("job_info"));
-        JobSummary.JobInfo jobInfo = new JobSummary.JobInfo();
-        jobInfo.getAny().add(jobPayload);
-        jobSummary.setJobInfo(jobInfo);
-
+        jobSummary.setJobInfo(getJobPayload(rs.getString("job_info")));
         jobSummary.setResults(getResults(rs.getString("results")));
 
         return jobSummary;
@@ -215,10 +206,9 @@ public class JobDAO {
         return sjd;
     }
 
-    private Object getJobPayload(String jobType, String json) {
+    private JobSummary.JobInfo getJobPayload(String json) {
         try {
-            // TODO: switch on jobType
-            return MAPPER.readValue(json, Transfer.class);
+            return MAPPER.readValue(json, JobSummary.JobInfo.class);
         } catch (JsonProcessingException ex) {
             throw new RuntimeException(ex);
         }
@@ -255,27 +245,26 @@ public class JobDAO {
             throw new RuntimeException(ex);
         }
     }
-    
-    public static XMLGregorianCalendar toXMLGregorianCalendar(Timestamp t)
-    {
+
+    public static XMLGregorianCalendar toXMLGregorianCalendar(Timestamp t) {
         XMLGregorianCalendar cal = null;
-        try{         
+        try {
             cal = DatatypeFactory.newInstance().newXMLGregorianCalendar();
-        
-        LocalDateTime ldt = t.toLocalDateTime();
-        
-        cal.setYear(ldt.getYear());
-        cal.setMonth(ldt.getMonthValue());
-        cal.setDay(ldt.getDayOfMonth());
-        cal.setHour(ldt.getHour());
-        cal.setMinute(ldt.getMinute());
-        cal.setSecond(ldt.getSecond());
-        cal.setFractionalSecond(new BigDecimal("0." + ldt.getNano()));
-                
-        } catch(Exception e) {
-           e.printStackTrace();
+
+            LocalDateTime ldt = t.toLocalDateTime();
+
+            cal.setYear(ldt.getYear());
+            cal.setMonth(ldt.getMonthValue());
+            cal.setDay(ldt.getDayOfMonth());
+            cal.setHour(ldt.getHour());
+            cal.setMinute(ldt.getMinute());
+            cal.setSecond(ldt.getSecond());
+            cal.setFractionalSecond(new BigDecimal("0." + ldt.getNano()));
+
+        } catch (Exception e) {
+            LOG.error("Error while generating XMLGregorianCalendar", e);
         }
-        
-        return cal;       
+
+        return cal;
     }
 }