diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java
index e0c7df7830d87b149fd8248cfa506e74ecf7cfee..09b4536ca1e706c9418a775aa40de5d46e986bc4 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/BenchmarkJobManager.java
@@ -1,6 +1,7 @@
 package cz.it4i.fiji.haas;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.nio.file.Path;
 import java.util.Arrays;
 import java.util.Collection;
@@ -9,6 +10,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import org.yaml.snakeyaml.Yaml;
+
 import cz.it4i.fiji.haas.JobManager.JobInfo;
 import cz.it4i.fiji.haas.JobManager.JobSynchronizableFile;
 import cz.it4i.fiji.haas_java_client.HaaSClient;
@@ -32,10 +35,12 @@ public class BenchmarkJobManager {
 		return indexJob(jobInfo);
 	}
 
-	public void startJob(long jobId) {
+	public void startJob(long jobId) throws IOException {
 		JobInfo jobInfo = jobs.get(jobId);
 		jobInfo.uploadFilesByName(() -> Arrays.asList(CONFIG_YAML).stream());
+		String outputName = getOutputName(jobInfo.openLocalFile(CONFIG_YAML));
 		jobInfo.submit();
+		jobInfo.setProperty("spim.outputFilenamePattern", outputName);
 	}
 
 	
@@ -66,6 +71,21 @@ public class BenchmarkJobManager {
 		return jobInfo.getId();
 	}
 
+	@SuppressWarnings("rawtypes")
+	private String getOutputName(InputStream openLocalFile) throws IOException {
+		try(InputStream is = openLocalFile){
+			Yaml yaml = new Yaml();
+			
+			Map map = yaml.load(is);
+			String result = (String) ((Map)map.get("common")).get("hdf5_xml_filename");
+			if(result == null) {
+				throw new IllegalArgumentException("hdf5_xml_filename not found");
+			}
+			return result;
+		}
+		
+	}
+
 	
 
 	
diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java
index 335bbd0eea2a6d2cb10b4477d5c5cd747c3f35a4..b00c1e70ffcbc6e8609b40f6cad25e8be12f84d2 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/Job.java
@@ -23,7 +23,6 @@ import cz.it4i.fiji.haas_java_client.HaaSClient.UploadingFile;
 import cz.it4i.fiji.haas_java_client.JobInfo;
 import cz.it4i.fiji.haas_java_client.JobState;
 import cz.it4i.fiji.haas_java_client.ProgressNotifier;
-import cz.it4i.fiji.haas_java_client.SynchronizableFileType;
 import net.imagej.updater.util.Progress;
 
 public class Job {
@@ -176,27 +175,56 @@ public class Job {
 		return jobInfo.getEndTime();
 	}
 
+	public Iterable<String> getOutput(Iterable<JobSynchronizableFile> output) {
+		HaaSClient.SynchronizableFiles taskFileOffset = new HaaSClient.SynchronizableFiles();
+		long taskId = (Long) getJobInfo().getTasks().toArray()[0];
+		output.forEach(file->taskFileOffset.addFile(taskId, file.getType(), file.getOffset()));
+		return haasClientSupplier.get().downloadPartsOfJobFiles(jobId, taskFileOffset).stream().map(f -> f.getContent())
+				.collect(Collectors.toList());
+	}
+
+	public InputStream openLocalFile(String name) throws IOException {
+		return Files.newInputStream(jobDir.resolve(name));
+	}
+
+	public void setProperty(String name, String value) throws IOException {
+		Properties prop = loadPropertiesIfExists();
+		prop.setProperty(name, value);
+		
+	}
+
 	private synchronized void saveJobinfo() throws IOException {
+		Properties prop = loadPropertiesIfExists();
+		if (needsDownload != null) {
+			prop.setProperty(JOB_HAS_DATA_TO_DOWNLOAD_PROPERTY, needsDownload.toString());
+		}
+		prop.setProperty(JOB_NAME, name);
+		storeProperties(prop);
+	}
+
+	private void storeProperties(Properties prop) throws IOException {
 		try (OutputStream ow = Files.newOutputStream(jobDir.resolve(JOB_INFO_FILE),
 				StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE)) {
-			Properties prop = new Properties();
-			if (needsDownload != null) {
-				prop.setProperty(JOB_HAS_DATA_TO_DOWNLOAD_PROPERTY, needsDownload.toString());
-			}
-			prop.setProperty(JOB_NAME, name);
 			prop.store(ow, null);
 		}
 	}
 
 	private synchronized void loadJobInfo() throws IOException {
-		try (InputStream is = Files.newInputStream(jobDir.resolve(JOB_INFO_FILE))) {
-			Properties prop = new Properties();
-			prop.load(is);
-			if (prop.containsKey(JOB_HAS_DATA_TO_DOWNLOAD_PROPERTY)) {
-				needsDownload = Boolean.parseBoolean(prop.getProperty(JOB_HAS_DATA_TO_DOWNLOAD_PROPERTY));
-				name = prop.getProperty(JOB_NAME);
+		Properties prop = loadPropertiesIfExists();
+		if (prop.containsKey(JOB_HAS_DATA_TO_DOWNLOAD_PROPERTY)) {
+			needsDownload = Boolean.parseBoolean(prop.getProperty(JOB_HAS_DATA_TO_DOWNLOAD_PROPERTY));
+			name = prop.getProperty(JOB_NAME);
+		}
+	}
+
+	private Properties loadPropertiesIfExists() throws IOException {
+		Properties prop = new Properties();
+		if(Files.exists(jobDir.resolve(JOB_INFO_FILE))) {
+			try (InputStream is = Files.newInputStream(jobDir.resolve(JOB_INFO_FILE))) {
+				prop.load(is);
 			}
 		}
+		return prop;
 	}
 
 	private JobInfo getJobInfo() {
@@ -258,12 +286,4 @@ public class Job {
 
 	}
 
-	public Iterable<String> getOutput(Iterable<JobSynchronizableFile> output) {
-		HaaSClient.SynchronizableFiles taskFileOffset = new HaaSClient.SynchronizableFiles();
-		long taskId = (Long) getJobInfo().getTasks().toArray()[0];
-		output.forEach(file->taskFileOffset.addFile(taskId, file.getType(), file.getOffset()));
-		return haasClientSupplier.get().downloadPartsOfJobFiles(jobId, taskFileOffset).stream().map(f -> f.getContent())
-				.collect(Collectors.toList());
-	}
-
 }
diff --git a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java
index c03da2bfa1e64cf0916a6ea71949ed09470bdff7..0853d60e9c784f2fb3700e2f5ccd50ce72f55850 100644
--- a/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java
+++ b/haas-imagej-client/src/main/java/cz/it4i/fiji/haas/JobManager.java
@@ -1,6 +1,7 @@
 package cz.it4i.fiji.haas;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Calendar;
@@ -189,6 +190,15 @@ public class JobManager {
 			return time != null ? time.getTime().toString() : "N/A";
 		}
 
+		public InputStream openLocalFile(String name) throws IOException {
+			return job.openLocalFile(name);
+		}
+
+		public void setProperty(String name, String value) throws IOException {
+			job.setProperty(name, value);
+			
+		}
+
 	}
 
 }