diff --git a/packages/rocketchat-lib/server/models/Messages.coffee b/packages/rocketchat-lib/server/models/Messages.coffee
index c7e7bf5ba00811df1d543f3ac89af416065e67b1..bd556564aac0415fc9c22ac960e0c554d52b0be4 100644
--- a/packages/rocketchat-lib/server/models/Messages.coffee
+++ b/packages/rocketchat-lib/server/models/Messages.coffee
@@ -8,6 +8,7 @@ RocketChat.models.Messages = new class extends RocketChat.models._Base
 		@tryEnsureIndex { 'rid': 1, 't': 1, 'u._id': 1 }
 		@tryEnsureIndex { 'expireAt': 1 }, { expireAfterSeconds: 0 }
 		@tryEnsureIndex { 'msg': 'text' }
+		@tryEnsureIndex { 'file._id': 1 }, { sparse: 1 }
 
 
 	# FIND ONE
@@ -328,3 +329,6 @@ RocketChat.models.Messages = new class extends RocketChat.models._Base
 			"u._id": userId
 
 		return @remove query
+
+	getMessageByFileId: (fileID) ->
+		return @findOne { 'file._id': fileID }
diff --git a/server/methods/deleteFileMessage.js b/server/methods/deleteFileMessage.js
new file mode 100644
index 0000000000000000000000000000000000000000..0fd4125b6753d0a0e4303f2f402017928bfbfbb0
--- /dev/null
+++ b/server/methods/deleteFileMessage.js
@@ -0,0 +1,5 @@
+Meteor.methods({
+	deleteFileMessage: function(fileID) {
+		return Meteor.call('deleteMessage', RocketChat.models.Messages.getMessageByFileId(fileID));
+	}
+});
diff --git a/server/methods/deleteMessage.coffee b/server/methods/deleteMessage.coffee
index d51985e786b930f5953bd9488f72375024805576..271e5d4fec9fed4522f695de41322169e6d70d8a 100644
--- a/server/methods/deleteMessage.coffee
+++ b/server/methods/deleteMessage.coffee
@@ -39,7 +39,3 @@ Meteor.methods
 			RocketChat.models.Messages.setAsDeletedById originalMessage._id
 		else
 			RocketChat.Notifications.notifyRoom originalMessage.rid, 'deleteMessage', {_id: originalMessage._id}
-
-	,
-	deleteFileMessage: (fileID) ->
-		Meteor.call 'deleteMessage', RocketChat.models.Messages.findOne { file: { _id: fileID } }