diff --git a/services/IssueService.js b/services/IssueService.js
index bae4f1d..fb53c2a 100755
--- a/services/IssueService.js
+++ b/services/IssueService.js
@@ -68,7 +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.scanOne(models.Issue, {
+  let dbIssue = await dbHelper.queryOne(models.Issue, {
     number: issue.number,
     provider: issue.provider,
     repositoryId: issue.repositoryId
@@ -86,7 +86,7 @@ async function ensureChallengeExists(event, issue, create = true) {
       number: issue.number,
       provider: issue.provider,
       repositoryId: issue.repositoryId
-    });
+    }, true);
     dbIssue = null;
   }
 
@@ -94,7 +94,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.scanOne(models.Issue, {
+    dbIssue = await dbHelper.queryOne(models.Issue, {
       number: issue.number,
       provider: issue.provider,
       repositoryId: issue.repositoryId
@@ -551,7 +551,7 @@ async function handleIssueCreate(event, issue, recreate = false) {
   }// if existing found don't create a project
 
   // Check if duplicated
-  let dbIssue = await dbHelper.scanOne(models.Issue, {
+  let dbIssue = await dbHelper.queryOne(models.Issue, {
     number: issue.number,
     provider: issue.provider,
     repositoryId: issue.repositoryId
@@ -603,7 +603,7 @@ async function handleIssueCreate(event, issue, recreate = false) {
       number: issue.number,
       provider: issue.provider,
       repositoryId: issue.repositoryId
-    });
+    }, true);
     await eventService.handleEventGracefully(event, issue, e);
     return;
   }
@@ -745,7 +745,7 @@ async function handleIssueUnAssignment(event, issue) {
  * @private
  */
 async function handleIssueRecreate(event, issue) {
-  const dbIssue = await dbHelper.scanOne(models.Issue, {
+  const dbIssue = await dbHelper.queryOne(models.Issue, {
     number: issue.number,
     provider: issue.provider,
     repositoryId: issue.repositoryId
diff --git a/utils/db-helper.js b/utils/db-helper.js
index 40fe1c5..6785b5b 100644
--- a/utils/db-helper.js
+++ b/utils/db-helper.js
@@ -2,6 +2,7 @@
  * Copyright (c) 2018 TopCoder, Inc. All rights reserved.
  */
 'use strict';
+const _ = require('lodash');
 const logger = require('./logger');
 
 /**
@@ -46,6 +47,36 @@ 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
+ * @returns {Promise<void>}
+ */
+async function queryOne(model, params) {
+  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) => {
+      if (err) {
+        logger.debug(`queryOne. Error. ${err}`);
+        return reject(err);
+      }
+      logger.debug('queryOne. Result.');
+      logger.debug(result);
+
+      return resolve(result);
+    });
+  });
+}
+
 /**
  * Get single data by scan parameters
  * @param {Object} model The dynamoose model to scan
@@ -132,9 +163,15 @@ 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) {
-  const dbItem = await scanOne(Model, queryParams);
+async function remove(Model, queryParams, withQuery = false) {
+  let dbItem;
+  if (withQuery) {
+    dbItem = await queryOne(Model, queryParams);
+  } else {
+    dbItem = await scanOne(Model, queryParams);
+  }
   await new Promise((resolve, reject) => {
     if (dbItem != null) {
       dbItem.delete((err) => {
@@ -155,5 +192,6 @@ module.exports = {
   updateMany,
   create,
   update,
-  remove
+  remove,
+  queryOne
 };