diff --git a/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java b/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java
index 958a77076803eb5b77d334829355cafaca06a9cf..ecce23e81e9842a76c39a4adbb2561759a0747f5 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/AbstractDao.java
@@ -5,7 +5,9 @@ import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 import net.jami.datastore.main.DataStore;
 import net.jami.jams.common.dao.SelectStatementBuilder;
+import net.jami.jams.common.dao.StatementElement;
 import net.jami.jams.common.dao.StatementList;
+import net.jami.jams.common.dao.UpdateStatementBuilder;
 import net.jami.jams.common.dao.connectivity.SQLConnection;
 
 import java.sql.PreparedStatement;
@@ -22,11 +24,14 @@ public abstract class AbstractDao<T> {
     @Getter @Setter
     private Class<T> tClass;
 
+    public abstract boolean storeObject(T object);
+    public abstract boolean deleteObject(LinkedHashMap<String,String> constraints);
+
     public List<T> getObjects(StatementList constraints){
         List<T> result = new ArrayList<>();
         SQLConnection connection = DataStore.connectionPool.getConnection();
         try{
-            PreparedStatement ps = SelectStatementBuilder.buildStatement(tableName,constraints.getStatements(),connection);
+            PreparedStatement ps = SelectStatementBuilder.buildStatement(tableName,constraints,connection);
             ResultSet rs = ps.executeQuery();
             while(rs.next()){
                 result.add(tClass.getConstructor(ResultSet.class).newInstance(rs));
@@ -42,7 +47,18 @@ public abstract class AbstractDao<T> {
         }
     }
 
-
-    public abstract boolean storeObject(T object);
-    public abstract boolean deleteObject(LinkedHashMap<String,String> constraints);
+    public boolean updateObject(StatementList update, StatementList constraints){
+        SQLConnection connection = DataStore.connectionPool.getConnection();
+        try{
+            PreparedStatement ps = UpdateStatementBuilder.buildStatement(tableName,update,constraints,connection);
+            return ps.execute();
+        }
+        catch (Exception e){
+            log.error("An error has occurred while trying to fetch a device: " + e.toString());
+            return false;
+        }
+        finally {
+            DataStore.connectionPool.returnConnection(connection);
+        }
+    }
 }
diff --git a/datastore/src/main/java/net/jami/datastore/dao/ContactDao.java b/datastore/src/main/java/net/jami/datastore/dao/ContactDao.java
index f5074bbdb513901ed2a9140eca489514c4fdaa95..c3e9ad42b9ad07870f437669ccad458bc26a2094 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/ContactDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/ContactDao.java
@@ -1,5 +1,6 @@
 package net.jami.datastore.dao;
 
+import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.objects.contacts.Contact;
 
 import java.util.LinkedHashMap;
@@ -15,4 +16,9 @@ public class ContactDao extends AbstractDao<Contact> {
     public boolean deleteObject(LinkedHashMap<String, String> constraints) {
         return false;
     }
+
+    @Override
+    public boolean updateObject(StatementList update, StatementList constraints) {
+        return false;
+    }
 }
diff --git a/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java b/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java
index 9f7db3e553425bc8af3fdce2945c59446534c6c1..94e2fc99ea3c729b2501370e12527ab0be0593e9 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/DeviceDao.java
@@ -2,6 +2,7 @@ package net.jami.datastore.dao;
 
 import lombok.extern.slf4j.Slf4j;
 import net.jami.datastore.main.DataStore;
+import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.dao.connectivity.SQLConnection;
 import net.jami.jams.common.objects.devices.Device;
 
@@ -59,4 +60,9 @@ public class DeviceDao extends AbstractDao<Device> {
     public boolean deleteObject(LinkedHashMap<String, String> constraints) {
         return false;
     }
+
+    @Override
+    public boolean updateObject(StatementList update, StatementList constraints) {
+        return false;
+    }
 }
diff --git a/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java b/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java
index 63545e5070ff15a148dd846b8df305fc13eeed82..35591e2a6f76f86bb6ba0d733f967dd682596fe8 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/SystemDao.java
@@ -2,6 +2,7 @@ package net.jami.datastore.dao;
 
 import lombok.extern.slf4j.Slf4j;
 import net.jami.datastore.main.DataStore;
+import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.dao.connectivity.SQLConnection;
 import net.jami.jams.common.objects.system.SystemAccount;
 
@@ -57,4 +58,9 @@ public class SystemDao extends AbstractDao<SystemAccount> {
     public boolean deleteObject(LinkedHashMap<String, String> constraints) {
         return false;
     }
+
+    @Override
+    public boolean updateObject(StatementList update, StatementList constraints) {
+        return false;
+    }
 }
diff --git a/datastore/src/main/java/net/jami/datastore/dao/UserDao.java b/datastore/src/main/java/net/jami/datastore/dao/UserDao.java
index 8573b444a9c8f28b27b2b611d77b7090b5bddc55..1c203436e7c371089775ea1c6f320a96454c852a 100644
--- a/datastore/src/main/java/net/jami/datastore/dao/UserDao.java
+++ b/datastore/src/main/java/net/jami/datastore/dao/UserDao.java
@@ -2,6 +2,7 @@ package net.jami.datastore.dao;
 
 import lombok.extern.slf4j.Slf4j;
 import net.jami.datastore.main.DataStore;
+import net.jami.jams.common.dao.StatementList;
 import net.jami.jams.common.dao.connectivity.SQLConnection;
 import net.jami.jams.common.objects.user.User;
 
diff --git a/jams-common/src/main/java/net/jami/jams/common/dao/SelectStatementBuilder.java b/jams-common/src/main/java/net/jami/jams/common/dao/SelectStatementBuilder.java
index d5d53104dbda41eeb4b04e4ce6aae7d9189cfa9c..8c840f19cb97c016a31e43ad8cf6c75ea3abaa79 100644
--- a/jams-common/src/main/java/net/jami/jams/common/dao/SelectStatementBuilder.java
+++ b/jams-common/src/main/java/net/jami/jams/common/dao/SelectStatementBuilder.java
@@ -7,7 +7,7 @@ import java.util.List;
 
 public class SelectStatementBuilder {
 
-    public static PreparedStatement buildStatement(String table, List<StatementElement> statementElements,
+    public static PreparedStatement buildStatement(String table, StatementList statementElements,
                                         SQLConnection connection) throws Exception
     {
         PreparedStatement ps = null;
@@ -15,7 +15,7 @@ public class SelectStatementBuilder {
         stringBuilder.append("SELECT * FROM ").append(table);
         if(statementElements != null) {
             stringBuilder.append(" WHERE ");
-            for (StatementElement statementElement : statementElements) {
+            for (StatementElement statementElement : statementElements.getStatements()) {
                 stringBuilder
                         .append(statementElement.getColumn())
                         .append(" ")
@@ -27,7 +27,7 @@ public class SelectStatementBuilder {
             }
             ps = connection.getConnection().prepareStatement(stringBuilder.toString());
             int i = 1;
-            for (StatementElement statementElement : statementElements) {
+            for (StatementElement statementElement : statementElements.getStatements()) {
                 ps.setString(i, statementElement.getValue());
                 i++;
             }
diff --git a/jams-common/src/main/java/net/jami/jams/common/dao/UpdateStatementBuilder.java b/jams-common/src/main/java/net/jami/jams/common/dao/UpdateStatementBuilder.java
index d67273725f6635649bad1b7e382bd1101b74f8da..c0efc337f02bf290503d797aa246fd74cbc33ac6 100644
--- a/jams-common/src/main/java/net/jami/jams/common/dao/UpdateStatementBuilder.java
+++ b/jams-common/src/main/java/net/jami/jams/common/dao/UpdateStatementBuilder.java
@@ -6,22 +6,22 @@ import java.sql.PreparedStatement;
 import java.util.List;
 
 public class UpdateStatementBuilder {
-    public static PreparedStatement buildStatement(String table, List<StatementElement> updateElements,
-                                                   List<StatementElement> conditionalElements,
+    public static PreparedStatement buildStatement(String table, StatementList updateElements,
+                                                   StatementList conditionalElements,
                                                    SQLConnection connection) throws Exception {
         PreparedStatement ps = null;
         StringBuilder stringBuilder = new StringBuilder();
         stringBuilder.append("UPDATE ").append(table).append(" SET ");
-        for (int i = 0; i < updateElements.size(); i++) {
-            StatementElement statementElement = updateElements.get(i);
+        for (int i = 0; i < updateElements.getStatements().size(); i++) {
+            StatementElement statementElement = updateElements.getStatements().get(i);
             stringBuilder
                     .append(statementElement.getColumn())
                     .append(" = ")
                     .append("?");
-            if (i != updateElements.size() - 1) stringBuilder.append(",");
+            if (i != updateElements.getStatements().size() - 1) stringBuilder.append(",");
         }
         stringBuilder.append(" WHERE ");
-        for (StatementElement statementElement : conditionalElements) {
+        for (StatementElement statementElement : conditionalElements.getStatements()) {
             stringBuilder
                     .append(statementElement.getColumn())
                     .append(" ")
@@ -32,10 +32,10 @@ public class UpdateStatementBuilder {
                     .append(statementElement.getNextStatementRelation());
         }
         ps = connection.getConnection().prepareStatement(stringBuilder.toString());
-        //Now we have to feed this all the elements it hsould have.
-        updateElements.addAll(conditionalElements);
+        //Now we have to feed this all the elements it should have.
+        updateElements.getStatements().addAll(conditionalElements.getStatements());
         int i = 1;
-        for (StatementElement statementElement : updateElements) {
+        for (StatementElement statementElement : updateElements.getStatements()) {
             ps.setString(i, statementElement.getValue());
             i++;
         }
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/devices/DeviceServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/devices/DeviceServlet.java
index f6ccf37b3749e6b6e18ae6168b9ec2025bd5a56b..6dbeb31e396443afd4619ec2ff3b13afcacd8c0a 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/devices/DeviceServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/devices/DeviceServlet.java
@@ -34,7 +34,12 @@ public class DeviceServlet extends HttpServlet {
     //Update device data.
     @Override
     protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
+        String username = req.getParameter("username");
+        String deviceId = req.getParameter("deviceId");
+        StatementList statementList = new StatementList();
+        StatementElement st0 = new StatementElement()
+        StatementElement st1 = new StatementElement("owner","=",username,"AND");
+        StatementElement st2 = new StatementElement("deviceId","=",deviceId,"");
     }
 
     //Revoke/delete a device.