diff --git a/src/InputOutput/IHMImpl/Process/IHMInputOutputDeleteProcessClass.php b/src/InputOutput/IHMImpl/Process/IHMInputOutputDeleteProcessClass.php
index 1174866..2ef0821 100644
--- a/src/InputOutput/IHMImpl/Process/IHMInputOutputDeleteProcessClass.php
+++ b/src/InputOutput/IHMImpl/Process/IHMInputOutputDeleteProcessClass.php
@@ -7,7 +7,7 @@
  */
 class IHMInputOutputDeleteProcessClass implements InputOutputInterface
 {
-	private $jobsManager       = null;
+	protected $jobsManager       = null;
 	private $paramsData        = null;
 
 	/*
diff --git a/src/InputOutput/WSImpl/Config/WSConfigClass.php b/src/InputOutput/WSImpl/Config/WSConfigClass.php
index e7476bc..2fcd18f 100644
--- a/src/InputOutput/WSImpl/Config/WSConfigClass.php
+++ b/src/InputOutput/WSImpl/Config/WSConfigClass.php
@@ -18,6 +18,13 @@ class WSConfigClass
 	private static $wsResultDir = "WSRESULT";
 	private static $jobsFile = "WSresults.xml";
 	
+	private static $WebUrl = "http://apus.irap.omp.eu/NEWAMDA/data/";
+	
+	public static function getUrl()
+	{
+			return self::$WebUrl.self::$wsResultDir.'/';
+	}
+	
 	public static function getWsResultDir()
 	{
 			return IHMConfigClass::getDataDir().self::$wsResultDir.'/';
diff --git a/src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php b/src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php
index 83ad972..00c5124 100644
--- a/src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php
+++ b/src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php
@@ -66,8 +66,12 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass
 		}
 
 		//add params to output
+		$resultFile = "download";
+		
 		foreach ($input->list as $param)
 		{
+			$resultFile .= "_".$param->paramid;
+			
 			$paramInfo = $this->paramManager->addExistingParam($param->paramid, $this->paramsData, $param->template_args);
 			switch ($param->type) {
 				case 0:
@@ -127,29 +131,30 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass
 		else {
 				$downloadNode->setStructure(RequestOutputDownloadStructureEnum::ONE_FILE_PER_PARAMETER_PER_INTERVAL);
 		}
-	
-		$extension = "";
-		$resultFilePrefix = "output-";
+		
 		switch ($input->compression)
 		{
 			case "1" :
 				$extension = $formatExtension.".gz";
 				$downloadNode->addPostProcessing(RequestOutputPostProcessingEnumClass::GZIP);
+				$resultFilePrefix = "download_";
 				break;
 			case "0" :
 			default :
 				$extension = $formatExtension;
+				$resultFilePrefix = "output-";
 		}
-
-
-		$resultFile = "result_".$this->requestID;
 		
-		$this->paramsData->addWaitingResult(WSInputOutputClass::getService(), $resultFile);
+		$resultFile .= "_".strtotime($input->startDate)."_".strtotime($input->stopDate);
+
+		$this->paramsData->addWaitingResult(WSInputOutputClass::getService(), $resultFile.$extension);
 		
+		// internal kernel output
 		$postProcessCmd  = "mv ".$resultFilePrefix."*";
 		
 		$postProcessCmd .= $extension;
-		$postProcessCmd .= " ".$resultFile.$extension;
+		$postProcessCmd .= " ".WSConfigClass::getWsResultDir().$resultFile.$extension;
+	
 		$this->paramsData->setPostCmd($postProcessCmd);
 		
 		
@@ -180,7 +185,7 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass
 	protected function addToJobsFile($data,$resultKey)
 	{
 		$waitingResult = $data->getWaitingResult($resultKey);
-	
+		
 		return $this->jobsManager->addJob(
 				$this->input,
 				$data->getId(),
@@ -188,7 +193,7 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass
 				$data->getStatus() == ProcessStatusEnumClass::RUNNING,
 				$data->getStart(),
 				$waitingResult,
-				$data->getErrorCode());
+				$data->getErrorCode()); 
 	}
 	
 	/*
@@ -207,11 +212,6 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass
 			case ProcessStatusEnumClass::RUNNING :
 			case ProcessStatusEnumClass::DONE :
 				return $this->addToJobsFile($data, WSInputOutputClass::getService());
-// 				return array(
-// 				'success' => true,
-// 				'status' => $data->getStatus(),
-// 				'result' => 'result_'.$this->requestID,
-// 				'folder' => $this->getWorkingDirName());
 			default :
 				return array(
 				'success' => false,
diff --git a/src/InputOutput/WSImpl/Process/WSInputOutputDeleteProcessClass.php b/src/InputOutput/WSImpl/Process/WSInputOutputDeleteProcessClass.php
new file mode 100644
index 0000000..903a790
--- /dev/null
+++ b/src/InputOutput/WSImpl/Process/WSInputOutputDeleteProcessClass.php
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * @class WSInputOutputDeleteProcessClass
+ * @brief Class that's implement an InputOutputInterface used to treat a delete process request
+ * @details
+ */
+class WSInputOutputDeleteProcessClass extends IHMInputOutputDeleteProcessClass implements InputOutputInterface
+{
+	protected $jobsManager       = null;
+	// private $paramsData        = null;
+
+	/*
+	 * @brief Constructor
+	*/
+	function __construct()
+	{
+		$this->jobsManager      = new WSJobsManagerClass();
+	}
+
+	/*
+	 * @brief translate input data from WS client to AMDA_Integration module for a delete process request
+	*/
+// 	public function getInputData($input,$function,$requestId="")
+// 	{
+// 		if (isset($this->paramsData))
+// 			unset($this->paramsData);
+// 
+// 		$this->paramsData = new ProcessRequestDataClass();
+// 
+// 		$this->paramsData->setManagerFilePath(IHMConfigClass::getProcessManagerFilePath());
+// 		$this->paramsData->setType(ProcessTypeEnumClass::DELETE);
+// 
+// 		$this->paramsData->setId($input->id);
+// 
+// 		return $this->paramsData;
+// 	}
+
+	/*
+	 * @brief translate output data from AMDA_Integration module to IHM client for a delete process request
+	*/
+// 	public function getOutput($data)
+// 	{
+// 		if (!$data->getSuccess())
+// 		{
+// 			return array(
+// 					'success' => false,
+// 					'message' => $data->getLastErrorMessage());
+// 		}
+// 
+// 		$res = $this->jobsManager->deleteJob($this->paramsData->getId());
+// 
+// 		/*if (!$res['success'])
+// 		{
+// 			return array(
+// 					'success' => false,
+// 					'message' => $res['message']);
+// 		}*/
+// 
+// 		return array(
+// 				'success' => true,
+// 				'id'      => $this->paramsData->getId());
+// 	}
+}
+
+?>
\ No newline at end of file
diff --git a/src/InputOutput/WSImpl/Process/WSInputOutputGetInfoProcessClass.php b/src/InputOutput/WSImpl/Process/WSInputOutputGetInfoProcessClass.php
index d6091ce..9150b9a 100644
--- a/src/InputOutput/WSImpl/Process/WSInputOutputGetInfoProcessClass.php
+++ b/src/InputOutput/WSImpl/Process/WSInputOutputGetInfoProcessClass.php
@@ -63,9 +63,6 @@ class WSInputOutputGetInfoProcessClass extends IHMInputOutputGetInfoProcessClass
 					'success' => false,
 					'message' => $data->getLastErrorMessage());
 		}	 
-		
-		$r = print_r($jobInfo,true);
-		error_log($r,1,email);
 		return $jobInfo;
 	}
 }
diff --git a/src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php b/src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php
index e06b48d..bc356a7 100644
--- a/src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php
+++ b/src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php
@@ -72,12 +72,14 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
 			$request_obj = $this->getRequestObjectFile($id);
 			if (isset($request_obj))
 			{
-				if (isset($request_obj->format))
+				if (isset($request_obj->fileformat))
 				{
 					$format = strtolower($request_obj->format);
 					if (($format == "pdf") || ($format == "ps"))
 						//auto compression for plot request
 						$compression = ".tar.gz";
+						
+					// if ($format == "ascii") $format = 'txt';
 				}
 				if (isset($request_obj->compression))
 					$compression = strtolower($request_obj->compression);
@@ -106,8 +108,10 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
 			$running, $start, $result, $exitcode)
 	{
 		$res = $this->init();
+		
 		if (!$res['success'])
 			return $res;
+			
 		$key = WSInputOutputClass::getService();
 		
 		$newJob = $this->jobXml->createElement('job');
@@ -118,13 +122,13 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
 		switch ($key)
 		{
 			case 'download' :
-					$name = "download_".time();
-					$info = '';
-					foreach ($obj->list as $param)
-					{
-						$info = $info.' '.$param->paramid; //data
-					}
-					break;
+				$name = "download_".time();
+				$info = '';
+				foreach ($obj->list as $param)
+				{
+					$info .= ' '.$param->paramid; //data
+				}
+				break;
 			case 'plot'	 :
 				$name = "request_".time();
 				$info = '';
@@ -140,16 +144,11 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
 		}
 
 		$newJob->setAttribute('name', $name);
-		$newJob->setAttribute('info', $info);
-
-		$newJob->setAttribute('folder', $folder);
-
+	 	$newJob->setAttribute('info', $info);
 		$newJob->setAttribute('result', $result);
-
+		$newJob->setAttribute('folder', $folder);
 		$newJob->setAttribute('start', date('d-m-Y H:i:s', $start));
 
-		$newJob->setAttribute('result', $result);
-
 		//to know if know if it's an immediate job or not
 		$newJob->setAttribute('immediate', !$running);
 
@@ -183,9 +182,7 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
 
 		$this->saveRequestObjectFile($obj, $id);
 
-		$this->updateJobStatus($id, $running, $exitcode);
-
-		return  $this->getJobInfo($id);
+		return  $this->updateJobStatus($id, $running, $exitcode);
 	}
 
 	/*
@@ -222,7 +219,61 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
 			
 		return $this->getJobInfo($id);
 	}
+	
+	/*
+	 * @brief delete a job
+	*/
+	public function deleteJob($id)
+	{
+		$res = $this->init();
+		if (!$res['success'])
+			return $res;
+
+		$job = $this->jobXml->getElementById($id);
+
+		//delete job
+		if (!$job)
+			return array('success' => false, 'message' => "Job not reachable");
+
+		$folder = $job->getAttribute('folder');
+
+		//be sure that it's an AMDA working dir before deletion...
+		$fullFolderPath = IHMConfigClass::getRequestPath().$folder.'/';
+ 
+		if ((isset($folder)) &&
+		($folder != "") &&
+		is_dir($fullFolderPath) &&
+		(preg_match("/DD[0-9A-Za-z]*_/",$folder) ||
+		 preg_match("/Plot[0-9]*_/",$folder)))
+		{
+			foreach (glob($fullFolderPath.'*') as $filename)
+			{
+				if (is_dir($filename) && (basename($filename) == 'params'))
+				{
+					//recursive deletion only for "params" dir (a full recursive deletion is probably too dangerous...)
+					foreach (glob($filename.'/*') as $paramname)
+						unlink($paramname);
+					rmdir($filename);
+				}
+				else
+					unlink($filename);
+			}
+			rmdir($fullFolderPath);
+		}
+
+		$this->deleteRequestObjectFile($id);
+
+// 		$job->parentNode->removeChild($job);
+// 		$res = $this->jobXml->save($this->jobXmlName);
 
+		if (!$res)
+			return array(
+					'success' => false,
+					'message' => "Cannot save jobs file");
+			
+		return array('success' => true, 'id' => $id);
+	}
+	
 	/*
 	 * @brief Get all jobs to clean (immediate result jobs)
 	*/
diff --git a/src/InputOutput/WSImpl/WSInputOutputClass.php b/src/InputOutput/WSImpl/WSInputOutputClass.php
index 65b798a..66d1014 100644
--- a/src/InputOutput/WSImpl/WSInputOutputClass.php
+++ b/src/InputOutput/WSImpl/WSInputOutputClass.php
@@ -40,7 +40,7 @@ class  WSInputOutputClass extends IHMInputOutputClass
 				}
 				break;
 			case FunctionTypeEnumClass::PROCESSDELETE :
-				$this->inputOutput = new IHMInputOutputDeleteProcessClass();
+				$this->inputOutput = new WSInputOutputDeleteProcessClass();
 				break;
 			case FunctionTypeEnumClass::PROCESSRUNNINGINFO :
 				$this->inputOutput = new IHMInputOutputRunningInfoProcessClass();
--
libgit2 0.21.2