diff --git a/archivingmanager/src/main/java/org/tango/archiving/server/manager/ArchivingManager.java b/archivingmanager/src/main/java/org/tango/archiving/server/manager/ArchivingManager.java
index e4eb8e763cfbd1b843537e1397f846fe309118ef..56dda4290c19eae4b57a5926c707c6358d31e91c 100644
--- a/archivingmanager/src/main/java/org/tango/archiving/server/manager/ArchivingManager.java
+++ b/archivingmanager/src/main/java/org/tango/archiving/server/manager/ArchivingManager.java
@@ -1,17 +1,8 @@
 package org.tango.archiving.server.manager;
 
 import fr.esrf.Tango.DevFailed;
-import fr.soleil.archiving.common.api.ConnectionFactory;
-import fr.soleil.archiving.common.api.exception.ArchivingException;
 import fr.soleil.archiving.hdbtdb.api.ConfigConst;
-import fr.soleil.archiving.hdbtdb.api.manager.ArchivingManagerApiRefFactory;
-import fr.soleil.archiving.hdbtdb.api.manager.IArchivingManagerApiRef;
-import fr.soleil.archiving.hdbtdb.api.tools.ArchivingMessConfig;
-import fr.soleil.archiving.hdbtdb.api.tools.mode.Mode;
-import fr.soleil.database.connection.AbstractDataBaseConnector;
 import fr.soleil.database.connection.DataBaseParameters;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.tango.DeviceState;
 import org.tango.server.ServerManager;
 import org.tango.server.annotation.Attribute;
@@ -23,6 +14,7 @@ import org.tango.server.annotation.State;
 import org.tango.server.annotation.Status;
 
 import java.util.Arrays;
+import java.util.Objects;
 import java.util.ResourceBundle;
 
 /**
@@ -86,10 +78,11 @@ import java.util.ResourceBundle;
 @Device
 public class ArchivingManager {
 
+    public static final boolean IS_HDB_TIMESERIES = System.getProperty("fr.soleil.tango.archiving.hdb.timeseries") != null
+            && Objects.equals(System.getProperty("fr.soleil.tango.archiving.hdb.timeseries"), "true");
+    public static final boolean IS_TDB_TIMESERIES = System.getProperty("fr.soleil.tango.archiving.tdb.timeseries") != null
+            && Objects.equals(System.getProperty("fr.soleil.tango.archiving.tdb.timeseries"), "true");
     private static String VERSION;
-    private Logger logger = LoggerFactory.getLogger(ArchivingManager.class);
-    private IArchivingManagerApiRef hdbManager;
-    private IArchivingManagerApiRef tdbManager;
     /**
      * Computer identifier on wich is settled the database DB. The identifier
      * can be the computer name or its IP address. <br>
@@ -153,6 +146,8 @@ public class ArchivingManager {
     private DeviceState state;
     @Status
     private String status;
+    private IArchivingAccess databaseAccessHDB;
+    private IArchivingAccess databaseAccessTDB;
 
     public static void main(final String[] args) {
         VERSION = ResourceBundle.getBundle("application").getString("project.version");
@@ -172,6 +167,34 @@ public class ArchivingManager {
         this.state = state;
     }
 
+    @Init(lazyLoading = true)
+    public void init() {
+        connect();
+    }
+
+    private void connect() {
+        StringBuilder statusBuilder = new StringBuilder();
+        try {
+            connectHdb();
+            statusBuilder.append("- HDB Archivers: ")
+                    .append(Arrays.toString(databaseAccessHDB.getMExportedArchiverList()))
+                    .append("\n");
+        } catch (Throwable e) {
+            statusBuilder.append("- HDB is not available").append("\n");
+        }
+        try {
+            connectTdb();
+            statusBuilder.append("- TDB Archivers: ")
+                    .append(Arrays.toString(databaseAccessTDB.getMExportedArchiverList()))
+                    .append("\n");
+        } catch (Throwable e) {
+            e.printStackTrace();
+            statusBuilder.append("- TDB is not available").append("\n");
+        }
+        state = DeviceState.ON;
+        status = statusBuilder.toString();
+    }
+
     private void connectHdb() throws DevFailed {
 
         final DataBaseParameters params = new DataBaseParameters();
@@ -187,12 +210,12 @@ public class ArchivingManager {
             params.setName(hdbName);
         if (!hdbSchema.isEmpty())
             params.setSchema(hdbSchema);
-        try {
-            final AbstractDataBaseConnector hdbConnector = ConnectionFactory.connect(params);
-            hdbManager = ArchivingManagerApiRefFactory.getInstance(true, hdbConnector);
-            hdbManager.archivingConfigure();
-        } catch (ArchivingException e) {
-            throw e.toTangoException();
+        if (!IS_HDB_TIMESERIES) {
+            databaseAccessHDB = new HDBTDBAccess();
+            databaseAccessHDB.connect(params, true);
+        } else {
+            databaseAccessHDB = new TimeseriesAccess();
+            databaseAccessHDB.connect(params, true);
         }
     }
 
@@ -209,42 +232,15 @@ public class ArchivingManager {
             params.setName(tdbName);
         if (!tdbSchema.isEmpty())
             params.setSchema(tdbSchema);
-        try {
-            final AbstractDataBaseConnector connector = ConnectionFactory.connect(params);
-            tdbManager = ArchivingManagerApiRefFactory.getInstance(false, connector);
-            tdbManager.archivingConfigure();
-        } catch (ArchivingException e) {
-            throw e.toTangoException();
+        if (!IS_TDB_TIMESERIES) {
+            databaseAccessTDB = new HDBTDBAccess();
+            databaseAccessTDB.connect(params, false);
+        } else {
+            databaseAccessTDB = new TimeseriesAccess();
+            databaseAccessTDB.connect(params, false);
         }
     }
 
-    private void connect() {
-        StringBuilder statusBuilder = new StringBuilder();
-        try {
-            connectHdb();
-            statusBuilder.append("- HDB Archivers: ")
-                    .append(Arrays.toString(hdbManager.getMExportedArchiverList()))
-                    .append("\n");
-        } catch (Throwable e) {
-            statusBuilder.append("- HDB is not available").append("\n");
-        }
-        try {
-            connectTdb();
-            statusBuilder.append("- TDB Archivers: ")
-                    .append(Arrays.toString(tdbManager.getMExportedArchiverList()))
-                    .append("\n");
-        } catch (Throwable e) {
-            statusBuilder.append("- TDB is not available").append("\n");
-        }
-        state = DeviceState.ON;
-        status = statusBuilder.toString();
-    }
-
-    @Init(lazyLoading = true)
-    public void init() {
-        connect();
-    }
-
     public String getStatus() {
         return status;
     }
@@ -254,16 +250,38 @@ public class ArchivingManager {
     }
 
     /**
-     * Execute command "ArchivingStartHdb" on device. Start an historical
-     * archiving for the specified attributes, and following the specified mode.
+     * Execute command "ArchivingStopHdb" on device. Stops the historical
+     * archiving for the given attributes.
      *
-     * @param argin Archiving arguments... <BR>
+     * @param argin The attribute list.
+     */
+    @Command(name = "ArchivingStopHdb", inTypeDesc = "The attribute list")
+    public void archivingStopHdb(final String[] argin) throws DevFailed {
+        databaseAccessHDB.archivingStop(argin);
+    }
+
+    /**
+     * Execute command "ArchivingStopTdb" on device. Stops the temporary
+     * archiving for the given attributes.
+     *
+     * @param argin The attribute list.
+     */
+    @Command(name = "ArchivingStopTdb")
+    public void archivingStopTdb(final String[] argin) throws DevFailed {
+        databaseAccessTDB.archivingStop(argin);
+    }
+
+    /**
+     * Execute command "ArchivingModifHdb" on device. Change the mode of an
+     * historical archiving.
+     *
+     * @param argin The configuration to switch to... <br>
      *              <blockquote>
      *              <ul>
      *              <li><strong>The first part :</strong>
      *              <ul>
      *              <li><var>argin</var>[0]<b> =</b> the load balancing type of the archiving<br>
-     *              &quot;1&quot;, if all the attribute are archived together in the same HdbArchiver device, <br>
+     *              &quot;1&quot;, if all the attribute are archived together in the same TdbArchiver device, <br>
      *              &quot;0&quot; otherwise.
      *              <li><var>argin</var>[1]<b> =</b> the number of attributes to archive<br>
      *              <li><var>argin</var>[2] to <var>argin</var> [2 + <var>argin</var>[1] - 1] = the name of each attribute
@@ -314,28 +332,13 @@ public class ArchivingManager {
      *              </blockquote>
      * @see fr.soleil.archiving.hdbtdb.api.tools.ArchivingMessConfig
      */
-    @Command(name = "ArchivingStartHdb")
-    public void archivingStartHdb(final String[] argin) throws DevFailed {
-        logger.info("Entering archiving_start_hdb()");
-        if (hdbManager == null) {
-            connectHdb();
-        }
-        if (hdbManager != null) {
-            try {
-                final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig
-                        .creationWithoutFullInformation(argin);
-                hdbManager.archivingStart(archivingMessConfig);
-            } catch (ArchivingException e) {
-                e.printStackTrace();
-                logger.warn(e.toString(), e);
-                throw e.toTangoException();
-            }
-        }
-        logger.info("Exiting archiving_start_hdb()");
+    @Command(name = "ArchivingModifHdb")
+    public void archivingModifHdb(final String[] argin) throws DevFailed {
+        databaseAccessHDB.archivingModif(argin);
     }
 
     /**
-     * Execute command "ArchivingStartTdb" on device. Start an temporary
+     * Execute command "ArchivingStartHdb" on device. Start an historical
      * archiving for the specified attributes, and following the specified mode.
      *
      * @param argin Archiving arguments... <BR>
@@ -390,79 +393,21 @@ public class ArchivingManager {
      *              <li><strong>If the Mode is composed of an <i>External Mode</i></strong><br>
      *              <var>argin</var>[<var>index</var>+ 1] = <code>MODE_E</code><br>
      *              <var>index</var> = <var>index</var> + 1<br>
-     *              <li><strong>The Temporary (<i>Intermediate Archiving</i>) archiving specific informations </strong><br>
-     *              <var>argin</var>[<var>index</var>+ 1] = <code>TDB_SPEC</code><br>
-     *              <var>argin</var>[<var>index</var>+ 2] = the <i>export frequency </i>(ms)<br>
-     *              <var>argin</var>[<var>index</var>+ 3] = the <i>keeping window duration </i>in (ms)<br>
-     *              <var>index</var> = <var>index</var> + 3<br>
      *              </ul>
      *              </ul>
      *              </blockquote>
      * @see fr.soleil.archiving.hdbtdb.api.tools.ArchivingMessConfig
      */
-    @Command(name = "ArchivingStartTdb")
-    public void archivingStartTdb(final String[] argin) throws DevFailed {
-        logger.info("Entering archiving_start_tdb()");
-        if (tdbManager == null) {
-            connectTdb();
-        }
-        final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig
-                .creationWithoutFullInformation(argin);
-        try {
-            tdbManager.archivingStart(archivingMessConfig);
-        } catch (final ArchivingException e) {
-            logger.warn(e.toString(), e);
-            throw e.toTangoException();
-        }
-        logger.info("Exiting archiving_start_tdb()");
-    }
-
-    /**
-     * Execute command "ArchivingStopHdb" on device. Stops the historical
-     * archiving for the given attributes.
-     *
-     * @param argin The attribute list.
-     */
-    @Command(name = "ArchivingStopHdb", inTypeDesc = "The attribute list")
-    public void archivingStopHdb(final String[] argin) throws DevFailed {
-        logger.info("Entering archiving_stop_hdb()");
-        if (hdbManager == null) {
-            connectHdb();
-        }
-        try {
-            hdbManager.archivingStopConf(argin);
-        } catch (final ArchivingException e) {
-            logger.warn(e.toString(), e);
-            throw e.toTangoException();
-        }
-    }
-
-    /**
-     * Execute command "ArchivingStopTdb" on device. Stops the temporary
-     * archiving for the given attributes.
-     *
-     * @param argin The attribute list.
-     */
-    @Command(name = "ArchivingStopTdb")
-    public void archivingStopTdb(final String[] argin) throws DevFailed {
-        logger.info("Entering archiving_stop_tdb()");
-        if (tdbManager == null) {
-            connectTdb();
-        }
-        try {
-            tdbManager.archivingStopConf(argin);
-        } catch (final ArchivingException e) {
-            logger.warn(e.toString(), e);
-            throw e.toTangoException();
-        }
-        logger.info("Exiting archiving_stop_tdb()");
+    @Command(name = "ArchivingStartHdb")
+    public void archivingStartHdb(final String[] argin) throws DevFailed {
+        databaseAccessHDB.archivingStart(argin);
     }
 
     /**
-     * Execute command "ArchivingModifHdb" on device. Change the mode of an
-     * historical archiving.
+     * Execute command "ArchivingModifTdb" on device. Change the mode of a
+     * temporary archiving.
      *
-     * @param argin The configuration to switch to... <br>
+     * @param argin The configuration to switch to...... <br>
      *              <blockquote>
      *              <ul>
      *              <li><strong>The first part :</strong>
@@ -514,40 +459,32 @@ public class ArchivingManager {
      *              <li><strong>If the Mode is composed of an <i>External Mode</i></strong><br>
      *              <var>argin</var>[<var>index</var>+ 1] = <code>MODE_E</code><br>
      *              <var>index</var> = <var>index</var> + 1<br>
+     *              <li><strong>The Temporary (<i>Intermediate Archiving</i>) archiving specific informations </strong><br>
+     *              <var>argin</var>[<var>index</var>+ 1] = <code>TDB_SPEC</code><br>
+     *              <var>argin</var>[<var>index</var>+ 2] = the <i>export frequency </i>(ms)<br>
+     *              <var>argin</var>[<var>index</var>+ 3] = the <i>keeping window duration </i>in (ms)<br>
+     *              <var>index</var> = <var>index</var> + 3<br>
      *              </ul>
      *              </ul>
      *              </blockquote>
      * @see fr.soleil.archiving.hdbtdb.api.tools.ArchivingMessConfig
      */
-    @Command(name = "ArchivingModifHdb")
-    public void archivingModifHdb(final String[] argin) throws DevFailed {
-        logger.info("Entering archiving_modif_hdb()");
-        if (hdbManager == null) {
-            connectHdb();
-        }
-        final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig
-                .creationWithoutFullInformation(argin);
-        try {
-            hdbManager.archivingStopConf(archivingMessConfig.getAttributeList());
-            archivingStartHdb(argin);
-        } catch (final ArchivingException e) {
-            logger.warn(e.toString(), e);
-            throw e.toTangoException();
-        }
-        logger.info("Exiting archiving_modif_hdb()");
+    @Command(name = "ArchivingModifTdb")
+    public void archivingModifTdb(final String[] argin) throws DevFailed {
+        databaseAccessTDB.archivingModif(argin);
     }
 
     /**
-     * Execute command "ArchivingModifTdb" on device. Change the mode of a
-     * temporary archiving.
+     * Execute command "ArchivingStartTdb" on device. Start an temporary
+     * archiving for the specified attributes, and following the specified mode.
      *
-     * @param argin The configuration to switch to...... <br>
+     * @param argin Archiving arguments... <BR>
      *              <blockquote>
      *              <ul>
      *              <li><strong>The first part :</strong>
      *              <ul>
      *              <li><var>argin</var>[0]<b> =</b> the load balancing type of the archiving<br>
-     *              &quot;1&quot;, if all the attribute are archived together in the same TdbArchiver device, <br>
+     *              &quot;1&quot;, if all the attribute are archived together in the same HdbArchiver device, <br>
      *              &quot;0&quot; otherwise.
      *              <li><var>argin</var>[1]<b> =</b> the number of attributes to archive<br>
      *              <li><var>argin</var>[2] to <var>argin</var> [2 + <var>argin</var>[1] - 1] = the name of each attribute
@@ -603,22 +540,9 @@ public class ArchivingManager {
      *              </blockquote>
      * @see fr.soleil.archiving.hdbtdb.api.tools.ArchivingMessConfig
      */
-    @Command(name = "ArchivingModifTdb")
-    public void archivingModifTdb(final String[] argin) throws DevFailed {
-        logger.info("Entering archiving_modif_tdb()");
-        if (tdbManager == null) {
-            connectTdb();
-        }
-        final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig
-                .creationWithoutFullInformation(argin);
-        try {
-            tdbManager.archivingStopConf(archivingMessConfig.getAttributeList());
-            archivingStartTdb(argin);
-        } catch (final ArchivingException e) {
-            logger.warn(e.toString(), e);
-            throw e.toTangoException();
-        }
-        logger.info("Exiting archiving_modif_tdb()");
+    @Command(name = "ArchivingStartTdb")
+    public void archivingStartTdb(final String[] argin) throws DevFailed {
+        databaseAccessTDB.archivingStart(argin);
     }
 
     /**
@@ -634,29 +558,7 @@ public class ArchivingManager {
      */
     @Command(name = "IsArchivedHdb")
     public short[] isArchivedHdb(final String[] argin) throws DevFailed {
-        logger.info("Entering is_archived_hdb()");
-        if (hdbManager == null) {
-            connectHdb();
-        }
-        short[] argout = new short[argin.length];
-
-        boolean result = false;
-        for (int i = 0; i < argin.length; i++) {
-            try {
-                result = hdbManager.isArchived(argin[i]);
-            } catch (final ArchivingException e) {
-                logger.warn(e.toString(), e);
-                throw e.toTangoException();
-            }
-            if (result) {
-                argout[i] = 1;
-            } else {
-                argout[i] = 0;
-            }
-        }
-
-        logger.info("Exiting is_archived_hdb()");
-        return argout;
+        return databaseAccessHDB.isArchived(argin);
     }
 
     /**
@@ -672,27 +574,7 @@ public class ArchivingManager {
      */
     @Command(name = "IsArchivedTdb")
     public short[] isArchivedTdb(final String[] argin) throws DevFailed {
-        logger.info("Entering is_archived_tdb()");
-        short[] argout = new short[argin.length];
-        if (tdbManager == null) {
-            connectTdb();
-        }
-        boolean result = false;
-        for (int i = 0; i < argin.length; i++) {
-            try {
-                result = tdbManager.isArchived(argin[i]);
-            } catch (final ArchivingException e) {
-                logger.warn(e.toString(), e);
-                throw e.toTangoException();
-            }
-            if (result) {
-                argout[i] = 1;
-            } else {
-                argout[i] = 0;
-            }
-        }
-        logger.info("Exiting is_archived_tdb()");
-        return argout;
+        return databaseAccessTDB.isArchived(argin);
     }
 
     /**
@@ -746,20 +628,7 @@ public class ArchivingManager {
      */
     @Command(name = "GetArchivingModeHdb")
     public String[] getArchivingModeHdb(final String argin) throws DevFailed {
-        logger.info("Entering get_archiving_mode_hdb()");
-        if (hdbManager == null) {
-            connectHdb();
-        }
-        String[] argout;
-        try {
-            final Mode mode = hdbManager.getArchivingMode(argin);
-            argout = mode.toArray();
-        } catch (final ArchivingException e) {
-            logger.error(e.getMessage());
-            throw e.toTangoException();
-        }
-        logger.info("Exiting get_archiving_mode_hdb()");
-        return argout;
+        return databaseAccessHDB.getArchivingMode(argin);
     }
 
     /**
@@ -818,21 +687,7 @@ public class ArchivingManager {
      */
     @Command(name = "GetArchivingModeTdb")
     public String[] getArchivingModeTdb(final String argin) throws DevFailed {
-        logger.info("Entering get_archiving_mode_tdb()");
-        String[] argout;
-        if (tdbManager == null) {
-            connectTdb();
-        }
-        try {
-            final Mode mode = tdbManager.getArchivingMode(argin);
-            argout = mode.toArray();
-        } catch (final ArchivingException e) {
-            logger.error(e.getMessage());
-            throw e.toTangoException();
-        }
-
-        logger.info("Exiting get_archiving_mode_tdb()");
-        return argout;
+        return databaseAccessTDB.getArchivingMode(argin);
     }
 
     /**
@@ -844,21 +699,7 @@ public class ArchivingManager {
      */
     @Command(name = "GetStatusHdb")
     public String[] getStatusHdb(final String[] argin) throws DevFailed {
-        logger.info("Entering get_status_hdb()");
-        if (hdbManager == null) {
-            connectHdb();
-        }
-        String[] argout = new String[argin.length];
-
-        for (int i = 0; i < argin.length; i++) {
-            try {
-                argout[i] = hdbManager.getStatus(argin[i]);
-            } catch (final ArchivingException e) {
-                throw e.toTangoException();
-            }
-        }
-        logger.info("Exiting get_status_hdb()");
-        return argout;
+        return databaseAccessHDB.getStatus(argin);
     }
 
     /**
@@ -870,20 +711,7 @@ public class ArchivingManager {
      */
     @Command(name = "GetStatusTdb")
     public String[] getStatusTdb(final String[] argin) throws DevFailed {
-        logger.info("Entering get_status_tdb()");
-        String[] argout = new String[argin.length];
-        if (tdbManager == null) {
-            connectTdb();
-        }
-        for (int i = 0; i < argin.length; i++) {
-            try {
-                argout[i] = tdbManager.getStatus(argin[i]);
-            } catch (final ArchivingException e) {
-                throw e.toTangoException();
-            }
-        }
-        logger.info("Exiting get_status_tdb()");
-        return argout;
+        return databaseAccessTDB.getStatus(argin);
     }
 
     public void setHdbHost(String hdbHost) {
diff --git a/archivingmanager/src/main/java/org/tango/archiving/server/manager/HDBTDBAccess.java b/archivingmanager/src/main/java/org/tango/archiving/server/manager/HDBTDBAccess.java
new file mode 100644
index 0000000000000000000000000000000000000000..693d3d49fc1810012cf3f256c20187771e996c73
--- /dev/null
+++ b/archivingmanager/src/main/java/org/tango/archiving/server/manager/HDBTDBAccess.java
@@ -0,0 +1,144 @@
+package org.tango.archiving.server.manager;
+
+import fr.esrf.Tango.DevFailed;
+import fr.soleil.archiving.common.api.ConnectionFactory;
+import fr.soleil.archiving.common.api.exception.ArchivingException;
+import fr.soleil.archiving.hdbtdb.api.manager.ArchivingManagerApiRefFactory;
+import fr.soleil.archiving.hdbtdb.api.manager.IArchivingManagerApiRef;
+import fr.soleil.archiving.hdbtdb.api.tools.ArchivingMessConfig;
+import fr.soleil.archiving.hdbtdb.api.tools.mode.Mode;
+import fr.soleil.database.connection.AbstractDataBaseConnector;
+import fr.soleil.database.connection.DataBaseParameters;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.tango.server.annotation.Command;
+
+public class HDBTDBAccess implements IArchivingAccess{
+
+    private final Logger logger = LoggerFactory.getLogger(HDBTDBAccess.class);
+    private IArchivingManagerApiRef hdbManager;
+
+    @Override
+    public void connect(final DataBaseParameters params, boolean isHistoric) throws DevFailed {
+        try {
+            logger.info("connecting to {}", params);
+            final AbstractDataBaseConnector connector = ConnectionFactory.connect(params);
+            hdbManager = ArchivingManagerApiRefFactory.getInstance(isHistoric, connector);
+            hdbManager.archivingConfigure();
+        } catch (ArchivingException e) {
+            logger.error("cannot connect to DB",e);
+            throw e.toTangoException();
+        }
+    }
+
+
+    @Override
+    public void archivingStop(final String[] argin) throws DevFailed {
+        logger.info("Entering archiving_stop_hdb()");
+        try {
+            hdbManager.archivingStopConf(argin);
+        } catch (final ArchivingException e) {
+            logger.warn(e.toString(), e);
+            throw e.toTangoException();
+        }
+    }
+
+
+
+    @Override
+    public void archivingModif(final String[] argin) throws DevFailed {
+        logger.info("Entering archiving_modif_hdb()");
+        final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig
+                .creationWithoutFullInformation(argin);
+        try {
+            hdbManager.archivingStopConf(archivingMessConfig.getAttributeList());
+            archivingStart(argin);
+        } catch (final ArchivingException e) {
+            logger.warn(e.toString(), e);
+            throw e.toTangoException();
+        }
+        logger.info("Exiting archiving_modif_hdb()");
+    }
+
+
+
+    @Override
+    public void archivingStart(final String[] argin) throws DevFailed {
+        logger.info("Entering archiving_start_hdb()");
+        try {
+            final ArchivingMessConfig archivingMessConfig = ArchivingMessConfig
+                    .creationWithoutFullInformation(argin);
+            hdbManager.archivingStart(archivingMessConfig);
+        } catch (ArchivingException e) {
+            e.printStackTrace();
+            logger.warn(e.toString(), e);
+            throw e.toTangoException();
+        }
+        logger.info("Exiting archiving_start_hdb()");
+    }
+
+
+    @Override
+    public short[] isArchived(final String[] argin) throws DevFailed {
+        logger.info("Entering is_archived_hdb()");
+        short[] argout = new short[argin.length];
+
+        boolean result = false;
+        for (int i = 0; i < argin.length; i++) {
+            try {
+                result = hdbManager.isArchived(argin[i]);
+            } catch (final ArchivingException e) {
+                logger.warn(e.toString(), e);
+                throw e.toTangoException();
+            }
+            if (result) {
+                argout[i] = 1;
+            } else {
+                argout[i] = 0;
+            }
+        }
+
+        logger.info("Exiting is_archived_hdb()");
+        return argout;
+    }
+
+
+
+
+    @Override
+    public String[] getArchivingMode(final String argin) throws DevFailed {
+        logger.info("Entering get_archiving_mode_hdb()");
+        String[] argout;
+        try {
+            final Mode mode = hdbManager.getArchivingMode(argin);
+            argout = mode.toArray();
+        } catch (final ArchivingException e) {
+            logger.error(e.getMessage());
+            throw e.toTangoException();
+        }
+        logger.info("Exiting get_archiving_mode_hdb()");
+        return argout;
+    }
+
+    @Override
+    public String[] getStatus(final String[] argin) throws DevFailed {
+        logger.info("Entering get_status_hdb()");
+        String[] argout = new String[argin.length];
+
+        for (int i = 0; i < argin.length; i++) {
+            try {
+                argout[i] = hdbManager.getStatus(argin[i]);
+            } catch (final ArchivingException e) {
+                throw e.toTangoException();
+            }
+        }
+        logger.info("Exiting get_status_hdb()");
+        return argout;
+    }
+
+    @Override
+    public String[] getMExportedArchiverList() {
+        return hdbManager.getMExportedArchiverList();
+    }
+}
+
diff --git a/archivingmanager/src/main/java/org/tango/archiving/server/manager/IArchivingAccess.java b/archivingmanager/src/main/java/org/tango/archiving/server/manager/IArchivingAccess.java
new file mode 100644
index 0000000000000000000000000000000000000000..3b42bdd1c816a6b2b0e3095f1f2c5557bb703f98
--- /dev/null
+++ b/archivingmanager/src/main/java/org/tango/archiving/server/manager/IArchivingAccess.java
@@ -0,0 +1,31 @@
+package org.tango.archiving.server.manager;
+
+import fr.esrf.Tango.DevFailed;
+import fr.soleil.database.connection.DataBaseParameters;
+
+public interface IArchivingAccess {
+
+
+    void connect(final DataBaseParameters params, boolean isHistoric) throws DevFailed;
+
+
+    void archivingStop(final String[] argin) throws DevFailed;
+
+    void archivingModif(final String[] argin) throws DevFailed;
+
+
+    void archivingStart(final String[] argin) throws DevFailed;
+
+
+    short[] isArchived(final String[] argin) throws DevFailed;
+
+
+    String[] getArchivingMode(final String argin) throws DevFailed;
+
+
+    String[] getStatus(final String[] argin) throws DevFailed;
+
+    String[] getMExportedArchiverList();
+
+}
+
diff --git a/archivingmanager/src/main/java/org/tango/archiving/server/manager/TimeseriesAccess.java b/archivingmanager/src/main/java/org/tango/archiving/server/manager/TimeseriesAccess.java
new file mode 100644
index 0000000000000000000000000000000000000000..b00f7d9b30b597b435f24dfa03a222a67ffdf220
--- /dev/null
+++ b/archivingmanager/src/main/java/org/tango/archiving/server/manager/TimeseriesAccess.java
@@ -0,0 +1,131 @@
+package org.tango.archiving.server.manager;
+
+import com.zaxxer.hikari.HikariConfig;
+import fr.esrf.Tango.DevFailed;
+import fr.soleil.database.connection.DataBaseParameters;
+import fr.soleil.tango.archiving.TangoArchivingConfigService;
+import fr.soleil.tango.archiving.TangoArchivingServicesBuilder;
+import fr.soleil.tango.archiving.TangoArchivingSystemConfigurationBuilder;
+import fr.soleil.tango.archiving.TangoArchivingSystemConfigurationService;
+import fr.soleil.tango.archiving.infra.tango.ArchivingConfigs;
+import fr.soleil.tango.archiving.infra.tango.TangoArchiverProperties;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.tango.utils.DevFailedUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.OptionalInt;
+
+public class TimeseriesAccess implements IArchivingAccess {
+
+    private final static String IS_DEDICATED = "IsDedicated";
+    private final static String RESERVED_ATTRIBUTES = "ReservedAttributes";
+    private final static String STOP_ARCHIVE_CONF = "StopArchiveConf";
+    private final static String TRIGGER_ARCHIVE_CONF = "TriggerArchiveConf";
+    private final static String SCALAR_CHARGE = "scalarCharge";
+    private final static String SPECTRUM_CHARGE = "spectrumCharge";
+    private final static String IMAGE_CHARGE = "imageCharge";
+    private final static String INSERTION_RATE = "insertionRate";
+    protected TangoArchivingConfigService configService;
+    private Logger logger = LoggerFactory.getLogger(TimeseriesAccess.class);
+    private TangoArchivingSystemConfigurationService service;
+
+    @Override
+    public void connect(final DataBaseParameters params, final boolean isHistoric) throws DevFailed {
+        HikariConfig config = new HikariConfig();
+        config.setJdbcUrl("jdbc:postgresql://" + params.getHost() + ":5432/" + params.getName());
+        config.setUsername(params.getUser());
+        config.setPassword(params.getPassword());
+        config.setPoolName("timescale-pool");
+        TangoArchiverProperties properties = new TangoArchiverProperties();
+        if (isHistoric) {
+            properties.setArchiverClassName("HdbArchiver");
+        } else {
+            properties.setArchiverClassName("TdbArchiver");
+        }
+        properties.setIsDedicatedProperty(IS_DEDICATED);
+        properties.setReservedAttributesProperty(RESERVED_ATTRIBUTES);
+        properties.setImageLoadAttributeName(IMAGE_CHARGE);
+        properties.setSpectrumLoadAttributeName(SPECTRUM_CHARGE);
+        properties.setScalarLoadAttributeName(SCALAR_CHARGE);
+        properties.setStartArchivingCommandName(TRIGGER_ARCHIVE_CONF);
+        properties.setInsertionRateAttributeName(INSERTION_RATE);
+        properties.setStopArchivingCommandName(STOP_ARCHIVE_CONF);
+        logger.debug("connecting to {}", ToStringBuilder.reflectionToString(config));
+        service = new TangoArchivingSystemConfigurationBuilder().build(config, properties);
+        service.updateArchiversList();
+        configService = new TangoArchivingServicesBuilder().buildConfigFetcher(config);
+    }
+
+    @Override
+    public void archivingStop(final String[] argin) throws DevFailed {
+        logger.info("stopping archiving of {}", Arrays.toString(argin));
+        final Map<String, List<String>> result = service.stopArchiving(argin);
+        logger.info("stopping result is {}", result);
+    }
+
+    @Override
+    public void archivingModif(final String[] argin) throws DevFailed {
+        archivingStop(argin);
+        archivingStart(argin);
+    }
+
+    @Override
+    public void archivingStart(final String[] argin) throws DevFailed {
+        logger.info("starting archiving of {}", Arrays.toString(argin));
+        final Map<String, ArchivingConfigs> result = service.startArchiving(new ArchivingConfigs(argin, false));
+        logger.info("starting result is {}", result);
+    }
+
+    @Override
+    public short[] isArchived(final String[] argin) throws DevFailed {
+        short[] result = new short[argin.length];
+        for (int i = 0; i < result.length; i++) {
+            if (configService.isArchived(argin[i]))
+                result[i] = 1;
+            else
+                result[i] = 0;
+        }
+        return result;
+    }
+
+    @Override
+    public String[] getArchivingMode(final String argin) throws DevFailed {
+        OptionalInt id = configService.getAttributeID(argin);
+        if (!id.isPresent()) {
+            throw DevFailedUtils.newDevFailed("no id found for " + argin);
+        }
+        return toStringArray(configService.getCurrentInsertionModes(id.getAsInt()));
+    }
+
+    private String[] toStringArray(Object toConvert) {
+        List<String> array = new ArrayList<>();
+        Arrays.stream(toConvert.getClass().getDeclaredFields())
+                .forEach(f -> {
+                    try {
+                        f.setAccessible(true);
+                        Object value = f.get(toConvert);
+                        if (value != null) {
+                            array.add(f.getName() + ": " + f.get(toConvert));
+                        }
+                    } catch (IllegalAccessException e) {
+                        array.add(f.getName() + ": error");
+                    }
+                });
+        return array.toArray(new String[0]);
+    }
+
+    @Override
+    public String[] getStatus(final String[] argin) throws DevFailed {
+        throw DevFailedUtils.newDevFailed("not supported function");
+    }
+
+    @Override
+    public String[] getMExportedArchiverList() {
+        return  service.getArchivers().toArray(new String[0]);
+    }
+}