diff --git a/.classpath b/.classpath
index 3f8b7611192bb9a494ade0d2bcc1d358f4d49ba4..bfbe1725010acc11dfee02824a4f84833ba28177 100644
--- a/.classpath
+++ b/.classpath
@@ -2,7 +2,6 @@
 <classpath>
 	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
 	<classpathentry excluding="**" including="**/*.java" kind="src" output="target/classes" path="src/main/resources"/>
-	<classpathentry kind="src" path="src/test/resources"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>
diff --git a/.project b/.project
index 8449a4332a46e89bafbf7654ef9fa21db72860c6..a4743907b8b54a7b2a121b98404e3a97a2bb4107 100644
--- a/.project
+++ b/.project
@@ -27,11 +27,4 @@
 		<nature>org.devzuz.q.maven.jdt.core.mavenNature</nature>
 		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
 	</natures>
-	<linkedResources>
-		<link>
-			<name>ArchivingConf</name>
-			<type>2</type>
-			<location>C:/SOLEIL_ROOT/tango-soleil-win32-5.5.8RC3/tango/bin/ArchivingConf</location>
-		</link>
-	</linkedResources>
 </projectDescription>
diff --git a/pom.xml b/pom.xml
index 25b09b537784a089addb167d69b167818b4daf2c..da8c0944c3ecff75c1e107b91f4d19caa8414740 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
 	<artifactId>hdbtdbArchivingServers</artifactId>
 	<name>hdbtdbArchivingServers</name>
 
-	<version>2.2.15</version>
+	<version>2.2.16</version>
 
 	<scm>
 		<connection>${scm.connection.svn.tango-cs}:archiving/server/hdbtdbArchivingServers</connection>
diff --git a/src/main/java/HdbArchiver/HdbArchiver.java b/src/main/java/HdbArchiver/HdbArchiver.java
index 101d3ffe0bc4c58a19b72bf11b4e90a9f00dff53..5e89914784dffab134335cb390c01a0753e0a09b 100644
--- a/src/main/java/HdbArchiver/HdbArchiver.java
+++ b/src/main/java/HdbArchiver/HdbArchiver.java
@@ -365,6 +365,7 @@ import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Map;
 import java.util.Vector;
+import java.util.concurrent.Executors;
 
 import org.omg.CORBA.SystemException;
 import org.omg.CORBA.UserException;
@@ -640,26 +641,8 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 	    get_logger().error("ERROR : Database unconnected !!");
 	} else {
 	    setControlMode(safetyPeriod);
-	    try {
-		final Vector<AttributeLightMode> myCurrentTasks = dbProxy.getArchiverCurrentTasks(device_name);
-		if (myCurrentTasks.size() > 0) {
-		    final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig.basicObjectCreation();
-		    for (final AttributeLightMode attributeLightMode : myCurrentTasks) {
-			archivingMessConfig.add(attributeLightMode);
-		    }
-		    launchStartArchivingTask(archivingMessConfig, false, false);
-		} else {
-		    TangoStateUtils.setOn(this, archivingStatus);
-		}
-	    } catch (final ArchivingException e) {
-		TangoStateUtils.setFault(this, e.getMessage());
-		get_logger().error(e.toString());
-		Util.out2.println(e.toString());
-	    } catch (final DevFailed devFailed) {
-		final String message = DBTools.getCompleteMessage(devFailed);
-		get_logger().error(message);
-		TangoStateUtils.setFault(this, message);
-	    }
+	    // start archiving in a thread
+	    Executors.newSingleThreadExecutor().submit(new InitDeviceTask());
 	}
     }
 
@@ -683,6 +666,29 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
 	}
     }
 
+    private class InitDeviceTask implements Runnable {
+	@Override
+	public void run() {
+	    try {
+		final Vector<AttributeLightMode> myCurrentTasks = dbProxy.getArchiverCurrentTasks(device_name);
+		if (myCurrentTasks.size() > 0) {
+		    final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig.basicObjectCreation();
+		    for (final AttributeLightMode attributeLightMode : myCurrentTasks) {
+			archivingMessConfig.add(attributeLightMode);
+		    }
+		    triggerArchiving(archivingMessConfig.toArray(), false);
+		} else {
+		    TangoStateUtils.setOn(HdbArchiver.this, archivingStatus);
+		}
+	    } catch (final DevFailed devFailed) {
+		// triggerArchiving has thrown
+		TangoStateUtils.setDisable(HdbArchiver.this, archivingStatus);
+	    } catch (ArchivingException e) {
+		TangoStateUtils.setFault(HdbArchiver.this, e.getMessage());
+	    }
+	}
+    }
+
     private class StartArchivingRunnable implements Runnable {
 
 	private final ArchivingMessConfig archivingMessConfig;
@@ -704,8 +710,8 @@ public class HdbArchiver extends DeviceImpl implements TangoConst {
     }
 
     /**
-     * @param safetyPeriod2
-     */
+    * @param safetyPeriod2
+    */
     private void setControlMode(final String _safetyPeriod) throws DevFailed {
 	get_logger().info("setControlMode/safetyPeriod/" + _safetyPeriod);
 	final ISaferPeriodCalculator saferPeriodCalculator = SaferPeriodCalculatorFactory.getImpl(_safetyPeriod);
diff --git a/src/main/java/TdbArchiver/Collector/DbProxy.java b/src/main/java/TdbArchiver/Collector/DbProxy.java
index 6a48b6b67b0920aa4f1b818cfec85df34606cb8b..9af4c7a217ec5ef7cb317f918df79c14b982fca6 100644
--- a/src/main/java/TdbArchiver/Collector/DbProxy.java
+++ b/src/main/java/TdbArchiver/Collector/DbProxy.java
@@ -69,6 +69,7 @@ package TdbArchiver.Collector;
 
 import java.util.Vector;
 
+import fr.esrf.Tango.DevFailed;
 import fr.esrf.TangoApi.Database;
 import fr.esrf.TangoDs.Util;
 import fr.soleil.commonarchivingapi.ArchivingTools.Diary.ILogger;
@@ -166,44 +167,21 @@ public class DbProxy {
 		tableName, writable);
     }
 
-    public Vector<AttributeLightMode> getArchiverCurrentTasks(final String archiverName) // throws
-    // ArchivingException
-    // , DevFailed
-    {
+    public Vector<AttributeLightMode> getArchiverCurrentTasks(final String archiverName) throws DevFailed,
+	    ArchivingException {
 	// System.out.println("DbProxy.getArchiverCurrentTasks");
 	Vector<AttributeLightMode> archiverCurrentTasks;
 	final boolean facility = manager.getFacility();
-	try {
-	    archiverCurrentTasks = manager
-		    .getDataBase()
-		    .getMode()
-		    .getArchiverCurrentTasks(
-			    (facility ? "//" + new Database().get_tango_host() + "/" : "") + archiverName);
-	    System.out.println("Current Tasks (" + archiverCurrentTasks.size() + "): .... \n\r\t");
-	    for (int i = 0; i < archiverCurrentTasks.size(); i++) {
-		final AttributeLightMode attributeLightMode = archiverCurrentTasks.elementAt(i);
-		System.out.println(">>>>>>>>>>>>\t" + i + "\t<<<<<<<<<<<<");
-		System.out.println("attributeLightMode.toString() : \r\n" + attributeLightMode.toString() + "\r\n");
-	    }
-	    return archiverCurrentTasks;
-	}
-	/*
-	 * catch ( ArchivingException e ) { System.err.println("ERROR !! " +
-	 * "\r\n" + "\t Origin : \t " + "DbProxy.getArchiverCurrentTasks" +
-	 * "\r\n" + "\t Reason : \t " + e.getClass().getName() + "\r\n" +
-	 * "\t Description : \t " + e.getMessage() + "\r\n" +
-	 * "\t Additional information : \t " + "Unable to get current tasks..."
-	 * + "\r\n"); throw e; } catch ( DevFailed devFailed ) {
-	 * Util.out2.println("ERROR !! " + "\r\n" + "\t Origin : \t " +
-	 * "DbProxy.getArchiverCurrentTasks" + "\r\n" + "\t Reason : \t " +
-	 * "UNKNOWN_ERROR" + "\r\n" + "\t Description : \t " +
-	 * devFailed.getMessage() + "\r\n" + "\t Additional information : \t " +
-	 * "" + "\r\n"); throw devFailed; }
-	 */
-	catch (final Exception e) {
-	    e.printStackTrace();
-	    return null;
+	archiverCurrentTasks = manager.getDataBase().getMode()
+		.getArchiverCurrentTasks((facility ? "//" + new Database().get_tango_host() + "/" : "") + archiverName);
+	System.out.println("Current Tasks (" + archiverCurrentTasks.size() + "): .... \n\r\t");
+	for (int i = 0; i < archiverCurrentTasks.size(); i++) {
+	    final AttributeLightMode attributeLightMode = archiverCurrentTasks.elementAt(i);
+	    System.out.println(">>>>>>>>>>>>\t" + i + "\t<<<<<<<<<<<<");
+	    System.out.println("attributeLightMode.toString() : \r\n" + attributeLightMode.toString() + "\r\n");
 	}
+	return archiverCurrentTasks;
+
     }
 
     public void deleteOldRecords(final long time, final String[] attributeList) throws ArchivingException {
diff --git a/src/main/java/TdbArchiver/TdbArchiver.java b/src/main/java/TdbArchiver/TdbArchiver.java
index 745373804b2d0b4b78539e69ad29b68092fcbbe4..83788a076598b1a1025a2e393f068258477ec99f 100644
--- a/src/main/java/TdbArchiver/TdbArchiver.java
+++ b/src/main/java/TdbArchiver/TdbArchiver.java
@@ -392,6 +392,7 @@ import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Map;
 import java.util.Vector;
+import java.util.concurrent.Executors;
 
 import org.omg.CORBA.SystemException;
 import org.omg.CORBA.UserException;
@@ -652,24 +653,7 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 	    TangoStateUtils.setFault(this, "database connection error");
 	    get_logger().error("ERROR : Database unconnected !!");
 	} else {
-	    try {
-		final Vector<AttributeLightMode> myCurrentTasks = dbProxy.getArchiverCurrentTasks(device_name);
-		if (myCurrentTasks != null && myCurrentTasks.size() > 0) {
-		    final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig.basicObjectCreation();
-		    for (int i = 0; i < myCurrentTasks.size(); i++) {
-			archivingMessConfig.add(myCurrentTasks.elementAt(i));
-		    }
-
-		    final boolean forceThreadedMode = false;
-		    startArchiving(archivingMessConfig, forceThreadedMode, false);
-		} else {
-		    TangoStateUtils.setOn(this, archivingStatus);
-		}
-	    } catch (final DevFailed devFailed) {
-		final String message = DBTools.getCompleteMessage(devFailed);
-		get_logger().error(message);
-		TangoStateUtils.setFault(this, message);
-	    }
+	    Executors.newSingleThreadExecutor().submit(new InitDeviceTask());
 	}
     }
 
@@ -708,6 +692,29 @@ public class TdbArchiver extends DeviceImpl implements TangoConst {
 	}
     }
 
+    private class InitDeviceTask implements Runnable {
+	@Override
+	public void run() {
+	    try {
+		final Vector<AttributeLightMode> myCurrentTasks = dbProxy.getArchiverCurrentTasks(device_name);
+		if (myCurrentTasks.size() > 0) {
+		    final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig.basicObjectCreation();
+		    for (final AttributeLightMode attributeLightMode : myCurrentTasks) {
+			archivingMessConfig.add(attributeLightMode);
+		    }
+		    triggerArchiving(archivingMessConfig.toArray(), false);
+		} else {
+		    TangoStateUtils.setOn(TdbArchiver.this, archivingStatus);
+		}
+	    } catch (final DevFailed devFailed) {
+		// triggerArchiving has thrown
+		TangoStateUtils.setDisable(TdbArchiver.this, archivingStatus);
+	    } catch (ArchivingException e) {
+		TangoStateUtils.setFault(TdbArchiver.this, e.getMessage());
+	    }
+	}
+    }
+
     private class StartArchivingRunnable implements Runnable {
 	private final ArchivingMessConfig archivingMessConfig;
 	private final boolean updateAMTTable;
diff --git a/src/test/resources/log4j.xml b/src/test/resources/log4j.xml
deleted file mode 100644
index 89b5ee06f20b4ddccc50bd5fe1182d96a67c88a8..0000000000000000000000000000000000000000
--- a/src/test/resources/log4j.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-
-<!-- An example log4j configuration xml file for log4jdbc -->
-<!-- Logging levels are:                                  -->
-<!-- DEBUG < INFO < WARN < ERROR < FATAL                  -->
-
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
-
-  <appender name="stdout-appender" class="org.apache.log4j.ConsoleAppender">
-    <layout class="org.apache.log4j.PatternLayout">
-      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %c{1}: %m%n"/>
-    </layout>
-  </appender>
-
-  <appender name="sql-appender" class="org.apache.log4j.FileAppender">
-    <param name="File" value="./logs/sql.log"/>
-    <param name="Append" value="false"/>
-    <layout class="org.apache.log4j.PatternLayout">
-      <param name="ConversionPattern" value="-----&gt; %d{yyyy-MM-dd HH:mm:ss.SSS} &lt;%t&gt; %m%n%n"/>
-    </layout>
-  </appender>
-
-  <appender name="sql-timing-appender" class="org.apache.log4j.FileAppender">
-    <param name="File" value="./logs/sqltiming.log"/>
-    <param name="Append" value="false"/>
-    <layout class="org.apache.log4j.PatternLayout">
-      <param name="ConversionPattern" value="-----&gt; %d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n"/>
-    </layout>
-  </appender>
-
-  <appender name="jdbc-appender" class="org.apache.log4j.FileAppender">
-    <param name="File" value="./logs/jdbc.log"/>
-    <param name="Append" value="false"/>
-    <layout class="org.apache.log4j.PatternLayout">
-      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n"/>
-    </layout>
-  </appender>
-
-  <appender name="jdbc-connection" class="org.apache.log4j.FileAppender">
-    <param name="File" value="./logs/connection.log"/>
-    <param name="Append" value="false"/>
-    <layout class="org.apache.log4j.PatternLayout">
-      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n"/>
-    </layout>
-  </appender>
-
-  <!--
-       The Following 5 logs can be turned on and off while the server is running
-       LIVE in order to trace the SQL and/or all JDBC coming out of the application.
-
-       To turn a log on, set the level value to INFO or DEBUG (to see class name and
-       line number information in the log)  The DEBUG setting is much more inefficient
-       but the output is much more useful.
-
-       To turn off JDBC logging completely, you must set all 5 logs to a level higher 
-       than ERROR (FATAL is suggested.)
-  -->
-
-  <!-- log SQL (pre-execution) plus exceptions caused by SQL -->
-  <logger name="jdbc.sqlonly" additivity="false">
-    <level value="debug"/>
-    <appender-ref ref="stdout-appender"/>
-  </logger>
-
-  <!-- log SQL with timing information, post execution -->
-  <logger name="jdbc.sqltiming" additivity="false">
-    <level value="error"/>
-    <appender-ref ref="stdout-appender"/>
-  </logger>
-
-  <!-- only use the two logs below to trace ALL JDBC information,
-       NOTE:  This can be very voluminous!  -->
-
-  <!-- log all jdbc calls except ResultSet calls -->
-  <logger name="jdbc.audit" additivity="false">
-    <level value="error"/>
-    <appender-ref ref="stdout-appender"/>
-  </logger>
-
-  <!-- log the jdbc ResultSet calls -->
-  <logger name="jdbc.resultset" additivity="false">
-    <level value="error"/>
-    <appender-ref ref="stdout-appender"/>
-  </logger>
-  
-  <!-- log connection open/close events and dump of all open connection numbers -->
-  <logger name="jdbc.connection" additivity="false">
-    <level value="error"/>
-    <appender-ref ref="stdout-appender"/>
-  </logger>
-
-  <!-- this log is for internal debugging of log4jdbc, itself -->
-  <!-- debug logging for log4jdbc itself -->
-  <logger name="log4jdbc.debug" additivity="false">
-    <level value="error"/>
-    <appender-ref ref="stdout-appender"/>
-  </logger>
-
-  <!-- by default, log everything to the console with a level of WARN or higher -->
-  <root>
-    <level value="error"/>
-    <appender-ref ref="stdout-appender"/>
-  </root>
-</log4j:configuration>
\ No newline at end of file