diff --git a/package-lock.json b/package-lock.json
index cae920f6599d66f3622d4dd37df98a5826af73a2..b2e686311a738cab51fbc97947eb63ac3aadca09 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -480,6 +480,7 @@
       "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
       "dev": true
     },
+    
     "buffer-from": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -772,10 +773,19 @@
       "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
       "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
       "requires": {
-        "buffer-from": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^2.2.2",
-        "typedarray": "^0.0.6"
+        "buffer-from": "1.1.1",
+        "inherits": "2.0.3",
+        "readable-stream": "2.3.5",
+        "typedarray": "0.0.6"
+      }
+    },
+    "config": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/config/-/config-3.2.4.tgz",
+      "integrity": "sha512-H1XIGfnU1EAkfjSLn9ZvYDRx9lOezDViuzLDgiJ/lMeqjYe3q6iQfpcLt2NInckJgpAeekbNhQkmnnbdEDs9rw==",
+      "optional": true,
+      "requires": {
+        "json5": "1.0.1"
       },
       "dependencies": {
         "isarray": {
@@ -813,7 +823,7 @@
       "integrity": "sha512-H1XIGfnU1EAkfjSLn9ZvYDRx9lOezDViuzLDgiJ/lMeqjYe3q6iQfpcLt2NInckJgpAeekbNhQkmnnbdEDs9rw==",
       "optional": true,
       "requires": {
-        "json5": "^1.0.1"
+        "json5": "1.0.1"
       }
     },
     "configstore": {
@@ -882,7 +892,8 @@
     "core-util-is": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+      "dev": true
     },
     "create-error-class": {
       "version": "3.0.2",
@@ -6575,6 +6586,8 @@
       "dev": true
     },
     "process-nextick-args": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
       "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
diff --git a/src/controllers/MachineController.js b/src/controllers/MachineController.js
index 2b2f7227bf2c530aecfc1dd44d189fc3bc431991..aa8e6b69acd5c1b49740d8bf6db1bc02a66c4f3d 100644
--- a/src/controllers/MachineController.js
+++ b/src/controllers/MachineController.js
@@ -23,7 +23,9 @@
 var qb = require("../db/query_builder.js");
 var db = require("../db/db.js");
 var squel = require("squel").useFlavour('postgres');
-  
+const fs = require('fs');
+const path = require('path');
+
 /**
  * Execute a query on DB and return a response to client
  * If the table specified on query was a table that refers 
@@ -153,7 +155,7 @@ module.exports = {
                     file: filename
                     };
 
-    q = qb.select(table,{"id": req.params['id'] });
+    q = qb.select(table,{"id" : req.params['id']});
 
     db.query(req, q, function(err, data) {
   
@@ -177,5 +179,43 @@ module.exports = {
         return res.status(200).json(machine); 
 
       });
-    }
+    },
+  
+  delete: function(req,res) {
+    const table = "machines";
+    selectQuery = qb.select_id(table,req.params.id);
+    
+    db.query(req, selectQuery, function(err, data) {
+  
+      if (err) {
+        req.log.error(err);
+        return res.status(500).json({error: 'db_connection_failed'});
+      }
+      else if (data.rowCount !== 0) {
+
+        file_to_exclude = data.rows[0].file;
+        const path_to_file = path.join(__dirname, `/../../images/uploads/${file_to_exclude}`);
+          
+        try {
+          fs.unlinkSync(path_to_file);
+        } catch (err) {
+          console.log(err);
+        }
+      }
+     
+    });
+
+    deleteQuery = qb.delete(table, req.params.id);
+
+    db.query(req,deleteQuery, function(err, data) {
+      if (err) {
+        req.log.error(err);
+        return res.status(500).json({error:'db_connection_failed'});
+      }
+      if (data.rowCount === 0) {
+        return res.status(404).json({error:'machine with this id not found'});
+      }
+      return res.status(200).json({status: 'machine deleted with success'});
+    });
+  },
 }
diff --git a/src/db/query_builder.js b/src/db/query_builder.js
index 28307190566ec708c10c5547d6b82f61b638fc1a..db2ff6af16b378b2f6332ba2ab31ba631a3d1d3e 100644
--- a/src/db/query_builder.js
+++ b/src/db/query_builder.js
@@ -119,5 +119,32 @@ module.exports =  {
     var q = squel.update().table(table).where("id = ?", id );
     this.set_from_attr(q, obj);
     return q;
+  },
+   /**
+   * Delete an object in a table
+   * The object must contains the required values to be deleted on table
+   *
+   * @param {String} table Name of table
+   * @param {Number} number Numeric reference to id of tuple 
+   * @returns {Object} Squel query
+   * @public
+   */
+  delete: function (table, id){
+    var q = squel.delete().from(table).where("id = ?", id );
+    return q;
+  },
+
+  /**
+   * Select an object in a table 
+   * The object must contains the required values to be selected on table
+   *
+   * @param {String} table Name of table
+   * @param {Number} number Numeric reference to id of tuple 
+   * @returns {Object} Squel query
+   * @public
+   */
+  select_id: function (table, id){
+    var q = squel.select().from(table).where("id = ?", id );
+    return q;
   }
 };
diff --git a/src/router.js b/src/router.js
index 1b4fe2d8f2d454633f50dd6a90aebdcbbe902b3c..210066defc174a2a98873b8a66e82d1e90a2c645 100644
--- a/src/router.js
+++ b/src/router.js
@@ -152,10 +152,11 @@ module.exports = function(app, config) {
       app.get('/api/data/agentusesyear', function(req, res) {
         data.agentUses(req,res,"agentusesyear");
       });
-
+      
       app.get('/api/machines', MachineController.index);
       app.post('/api/machines',upload.single('file'), MachineController.store);
       app.put('/api/machines/:id',upload.single('file'), MachineController.update);
+      app.delete('/api/machines/:id', MachineController.delete);
     },
 
     /**