diff --git a/services/IssueService.js b/services/IssueService.js
index fb53c2a..183959b 100755
--- a/services/IssueService.js
+++ b/services/IssueService.js
@@ -68,11 +68,7 @@ async function ensureChallengeExists(event, issue, create = true) {
   logger.debug(`Enter ensureChallengeExists. provider: ${issue.provider}`);
   logger.debug(`Enter ensureChallengeExists. repositoryId: ${issue.repositoryId}`);
 
-  let dbIssue = await dbHelper.queryOne(models.Issue, {
-    number: issue.number,
-    provider: issue.provider,
-    repositoryId: issue.repositoryId
-  });
+  let dbIssue = await dbHelper.queryOneIssue(models.Issue, issue.repositoryId, issue.number, issue.provider);
   logger.debug(`DB Issue number: ${issue.number}`);
   logger.debug(`DB Issue provider: ${issue.provider}`);
   logger.debug(`DB Issue repository: ${issue.repositoryId}`);
@@ -82,11 +78,7 @@ async function ensureChallengeExists(event, issue, create = true) {
   }
   if (dbIssue && dbIssue.status === 'challenge_creation_failed') {
     // remove issue from db
-    await dbHelper.remove(models.Issue, {
-      number: issue.number,
-      provider: issue.provider,
-      repositoryId: issue.repositoryId
-    }, true);
+    await dbHelper.removeIssue(models.Issue, issue.repositoryId, issue.number, issue.provider);
     dbIssue = null;
   }
 
@@ -94,11 +86,7 @@ async function ensureChallengeExists(event, issue, create = true) {
     logger.debug('dbIssue is NULL, process to create new record and challenge');
 
     await handleIssueCreate(event, issue);
-    dbIssue = await dbHelper.queryOne(models.Issue, {
-      number: issue.number,
-      provider: issue.provider,
-      repositoryId: issue.repositoryId
-    });
+    dbIssue = await dbHelper.queryOneIssue(models.Issue, issue.repositoryId, issue.number, issue.provider);
     logger.debug(`dbIssue is CREATED ${dbIssue ? 'Succesfully' : 'Failed'}`);
   }
   return dbIssue;
@@ -551,11 +539,7 @@ async function handleIssueCreate(event, issue, recreate = false) {
   }// if existing found don't create a project
 
   // Check if duplicated
-  let dbIssue = await dbHelper.queryOne(models.Issue, {
-    number: issue.number,
-    provider: issue.provider,
-    repositoryId: issue.repositoryId
-  });
+  let dbIssue = await dbHelper.queryOneIssue(models.Issue, issue.repositoryId, issue.number, issue.provider);
 
   if (dbIssue) {
     throw new Error(
@@ -599,11 +583,7 @@ async function handleIssueCreate(event, issue, recreate = false) {
     });
   } catch (e) {
     logger.error(`Challenge creation failure: ${e}`);
-    await dbHelper.remove(models.Issue, {
-      number: issue.number,
-      provider: issue.provider,
-      repositoryId: issue.repositoryId
-    }, true);
+    await dbHelper.removeIssue(models.Issue, issue.repositoryId, issue.number, issue.provider);
     await eventService.handleEventGracefully(event, issue, e);
     return;
   }
@@ -745,11 +725,7 @@ async function handleIssueUnAssignment(event, issue) {
  * @private
  */
 async function handleIssueRecreate(event, issue) {
-  const dbIssue = await dbHelper.queryOne(models.Issue, {
-    number: issue.number,
-    provider: issue.provider,
-    repositoryId: issue.repositoryId
-  });
+  const dbIssue = await dbHelper.queryOneIssue(models.Issue, issue.repositoryId, issue.number, issue.provider);
 
   try {
     await dbIssue.delete();
diff --git a/utils/db-helper.js b/utils/db-helper.js
index 6785b5b..816dafa 100644
--- a/utils/db-helper.js
+++ b/utils/db-helper.js
@@ -2,7 +2,6 @@
  * Copyright (c) 2018 TopCoder, Inc. All rights reserved.
  */
 'use strict';
-const _ = require('lodash');
 const logger = require('./logger');
 
 /**
@@ -50,21 +49,25 @@ async function scan(model, scanParams) {
 /**
  * Get single data by query parameters
  * @param {Object} model The dynamoose model to query
- * @param {Object} params The parameters object
+ * @param {String} repositoryId The repository id to query
+ * @param {Number} number The number id to query
+ * @param {String} provider The provider id to query
  * @returns {Promise<void>}
  */
-async function queryOne(model, params) {
+async function queryOneIssue(model, repositoryId, number, provider) {
   logger.debug('Enter queryOne.');
 
   return await new Promise((resolve, reject) => {
-    const queryParams = {};
-
-    _.forOwn(params, (value, key) => {
-      queryParams[key] = {eq: value};
-    });
-
-    logger.debug(`${JSON.stringify(queryParams)}`);
-    model.queryOne(queryParams).exec((err, result) => {
+    logger.debug(`repositoryId : ${repositoryId}`);
+    logger.debug(`number : ${number}`);
+    logger.debug(`provider : ${provider}`);
+    model.query('repositoryId').eq(repositoryId)
+    .filter('number')
+    .eq(number)
+    .filter('provider')
+    .eq(provider)
+    .all()
+    .exec((err, result) => {
       if (err) {
         logger.debug(`queryOne. Error. ${err}`);
         return reject(err);
@@ -72,7 +75,7 @@ async function queryOne(model, params) {
       logger.debug('queryOne. Result.');
       logger.debug(result);
 
-      return resolve(result);
+      return resolve(result.count === 0 ? null : result[0]);
     });
   });
 }
@@ -163,15 +166,31 @@ async function update(Model, id, data) {
  * Delete item in database
  * @param {Object} Model The dynamoose model to delete
  * @param {Object} queryParams The query parameters object
- * @param {Boolean} withQuery Find the object with query instead of scan
  */
-async function remove(Model, queryParams, withQuery = false) {
-  let dbItem;
-  if (withQuery) {
-    dbItem = await queryOne(Model, queryParams);
-  } else {
-    dbItem = await scanOne(Model, queryParams);
-  }
+async function remove(Model, queryParams) {
+  const dbItem = await scanOne(Model, queryParams);
+  await new Promise((resolve, reject) => {
+    if (dbItem != null) {
+      dbItem.delete((err) => {
+        if (err) {
+          return reject(err);
+        }
+
+        return resolve(dbItem);
+      });
+    }
+  });
+}
+
+/**
+ * Delete issue item in database
+ * @param {Object} Model The dynamoose model to delete
+ * @param {String} repositoryId The repository id to delete
+ * @param {Number} number The number id to delete
+ * @param {String} provider The provider id to delete
+ */
+async function removeIssue(Model, repositoryId, number, provider) {
+  const dbItem = await queryOneIssue(Model, repositoryId, number, provider);
   await new Promise((resolve, reject) => {
     if (dbItem != null) {
       dbItem.delete((err) => {
@@ -193,5 +212,6 @@ module.exports = {
   create,
   update,
   remove,
-  queryOne
+  queryOneIssue,
+  removeIssue
 };