diff --git a/services/GitlabService.js b/services/GitlabService.js
index 9932da7..dccb512 100644
--- a/services/GitlabService.js
+++ b/services/GitlabService.js
@@ -159,7 +159,10 @@ class GitlabService {
     } finally {
       if (lockedUser) {
         logger.debug(`[Lock ID: ${lockId}] Releasing lock on user ${this.#user.username}.`);
-        this.#user = await dbHelper.releaseLockOnUser(this.#user.id, lockId);
+        const newUser = await dbHelper.releaseLockOnUser(this.#user.id, lockId);
+        // Not assigning directly because the old object sometimes has properties
+        // that are not in the new one
+        _.assign(this.#user, newUser);
       }
     }
   }
diff --git a/services/IssueService.js b/services/IssueService.js
index 0d24826..a845f6c 100755
--- a/services/IssueService.js
+++ b/services/IssueService.js
@@ -20,9 +20,9 @@ const models = require('../models');
 const dbHelper = require('../utils/db-helper');
 const helper = require('../utils/helper');
 const gitHelper = require('../utils/git-helper');
+const constants = require('../constants');
 const userService = require('./UserService');
 const eventService = require('./EventService');
-const constants = require('../constants');
 
 
 // A variable to store issue creation lock to prevent duplicate creation process.
@@ -80,7 +80,7 @@ async function ensureChallengeExists(event, issue, create = true) {
     logger.debugWithContext('dbIssue is PENDING', event, issue);
     throw errors.internalDependencyError(`Challenge for the updated issue ${issue.number} is creating, rescheduling this event`);
   }
-  const hasOpenForPickupLabel = _(issue.labels).includes(config.OPEN_FOR_PICKUP_ISSUE_LABEL);
+  const hasOpenForPickupLabel = _.includes(issue.labels, config.OPEN_FOR_PICKUP_ISSUE_LABEL);
   if (dbIssue && dbIssue.status === constants.ISSUE_STATUS.CHALLENGE_CREATION_FAILED && hasOpenForPickupLabel) {
     // remove issue from db
     await dbHelper.removeIssue(models.Issue, issue.repositoryId, issue.number, issue.provider);
@@ -437,7 +437,7 @@ async function handleIssueClose(event, issue) { // eslint-disable-line
 
       if (closeChallenge) {
         logger.debugWithContext(`The associated challenge ${dbIssue.challengeUUID} is being scheduled for cancellation since no payment will be given`,
-            event, issue);
+          event, issue);
         await dbHelper.update(models.Issue, dbIssue.id, {
           status: constants.ISSUE_STATUS.CHALLENGE_CANCELLED,
           updatedAt: new Date()
@@ -500,7 +500,7 @@ async function handleIssueClose(event, issue) { // eslint-disable-line
       if (createCopilotPayments) {
         logger.debugWithContext('Setting copilot payment');
 
-        const updateBody = {
+        const _updateBody = {
           prizeSets: [{
             type: 'placement',
             prizes: _.map(issue.prizes, (prize) => ({type: 'USD', value: prize}))
@@ -511,7 +511,7 @@ async function handleIssueClose(event, issue) { // eslint-disable-line
           }
           ]
         };
-        await topcoderApiHelper.updateChallenge(dbIssue.challengeUUID, updateBody);
+        await topcoderApiHelper.updateChallenge(dbIssue.challengeUUID, _updateBody);
       } else {
         logger.debugWithContext('Create copilot payments is unchecked on the Topcoder-X project setup, so skipping', event, issue);
       }
@@ -575,7 +575,6 @@ async function handleIssueClose(event, issue) { // eslint-disable-line
   }
 }
 
-
 /**
  * handles the issue create event
  * @param {Object} event the event
@@ -636,7 +635,7 @@ async function handleIssueCreate(event, issue, forceAssign = false) {
     issue.challengeUUID = await topcoderApiHelper.createChallenge({
       name: issue.title,
       projectId,
-      tags: !!project.tags ? project.tags.split(',') : [],
+      tags: project.tags ? project.tags.split(',') : [],
       detailedRequirements: issue.body,
       prizes: issue.prizes
     });
@@ -676,7 +675,7 @@ async function handleIssueCreate(event, issue, forceAssign = false) {
     }
     delete issueCreationLock[creationLockKey];
   } catch (err) {
-    logger.error(`Comment creation failure: ${err}`);
+    logger.error(`Comment creation failure: ${err}`, err);
     delete issueCreationLock[creationLockKey];
     logger.debugWithContext(`new challenge created with id ${issue.challengeUUID} for issue ${issue.number}`, event, issue);
   }
diff --git a/services/UserService.js b/services/UserService.js
index 71379e7..e2f0260 100755
--- a/services/UserService.js
+++ b/services/UserService.js
@@ -25,23 +25,21 @@ const models = require('../models');
  */
 async function getTCUserName(provider, gitUser) {
   Joi.attempt({provider, gitUser}, getTCUserName.schema);
-  const criteria = {};
   if (_.isNumber(gitUser) || v.isUUID(gitUser)) {
     if (provider === 'github') {
       return await dbHelper.queryOneUserMappingByGithubUserId(models.GithubUserMapping, gitUser);
     } else if (provider === 'gitlab') {
       return await dbHelper.queryOneUserMappingByGitlabUserId(models.GitlabUserMapping, gitUser);
     }
-  } else if (_.isString(gitUser) || v.isEmail(gitUser)) {
+  }
+  if (_.isString(gitUser) || v.isEmail(gitUser)) {
     if (provider === 'github') {
       return await dbHelper.queryOneUserMappingByGithubUsername(models.GithubUserMapping, gitUser);
     } else if (provider === 'gitlab') {
       return await dbHelper.queryOneUserMappingByGitlabUsername(models.GitlabUserMapping, gitUser);
     }
   }
-  if (_.isEmpty(criteria)) {
-    throw new Error('Can\'t find the TCUserName. Invalid gitUser.');
-  }
+  throw new Error('Can\'t find the TCUserName. Invalid gitUser.');
 }
 
 getTCUserName.schema = {
@@ -54,7 +52,7 @@ getTCUserName.schema = {
  * gets the access token of repository's copilot/owner captured by Topcoder x tool
  * @param {String} provider the repo provider
  * @param {String} repoFullName the full name of repository
- * @returns {String} the copilot/owner if exists
+ * @returns {Promise<String>} the copilot/owner if exists
  */
 async function getRepositoryCopilotOrOwner(provider, repoFullName) {
   Joi.attempt({provider, repoFullName}, getRepositoryCopilotOrOwner.schema);
@@ -96,10 +94,7 @@ async function getRepositoryCopilotOrOwner(provider, repoFullName) {
   }
 
   return {
-    accessToken: user.accessToken,
-    accessTokenExpiration: user.accessTokenExpiration,
-    refreshToken: user.refreshToken,
-    userProviderId: user.userProviderId,
+    ...user,
     topcoderUsername: userMapping.topcoderUsername
   };
 }
diff --git a/utils/git-helper.js b/utils/git-helper.js
index 2c90631..36e1e79 100644
--- a/utils/git-helper.js
+++ b/utils/git-helper.js
@@ -28,7 +28,7 @@ class GitHelper {
       await gitHubService.createComment(event.copilot, event.data.repository.full_name, issueNumber, comment);
     } else if (event.provider === 'gitlab') {
       const gitlabService = await GitlabService.create(event.copilot);
-      await gitlabService.createComment(event.copilot, event.data.repository, issueNumber, comment);
+      await gitlabService.createComment(event.data.repository, issueNumber, comment);
     }
   }
 
@@ -43,7 +43,7 @@ class GitHelper {
       await gitHubService.addLabels(event.copilot, event.data.repository.full_name, issueNumber, labels);
     } else if (event.provider === 'gitlab') {
       const gitlabService = await GitlabService.create(event.copilot);
-      await gitlabService.addLabels(event.copilot, event.data.repository, issueNumber, labels);
+      await gitlabService.addLabels(event.data.repository, issueNumber, labels);
     }
   }
 
@@ -57,7 +57,7 @@ class GitHelper {
       await gitHubService.changeState(event.copilot, event.data.repository.full_name, issue.number, 'open');
     } else if (event.provider === 'gitlab') {
       const gitlabService = await GitlabService.create(event.copilot);
-      await gitlabService.changeState(event.copilot, event.data.repository, issue.number, 'reopen');
+      await gitlabService.changeState(event.data.repository, issue.number, 'reopen');
     }
   }
 
@@ -65,14 +65,14 @@ class GitHelper {
    * Gets the user name by user id
    * @param {Object} event the event
    * @param {Number} assigneeUserId the user id
-   * @returns {String} the username
+   * @returns {Promise<String>} the username
    */
   async getUsernameById(event, assigneeUserId) {
     if (event.provider === 'github') {
       return await gitHubService.getUsernameById(event.copilot, assigneeUserId);
     } else if (event.provider === 'gitlab') {
       const gitlabService = await GitlabService.create(event.copilot);
-      return await gitlabService.getUsernameById(event.copilot, assigneeUserId);
+      return await gitlabService.getUsernameById(assigneeUserId);
     }
     return null;
   }
@@ -89,7 +89,7 @@ class GitHelper {
       await gitHubService.removeAssign(event.copilot, event.data.repository.full_name, issueNumber, assigneeUsername);
     } else if (event.provider === 'gitlab') {
       const gitlabService = await GitlabService.create(event.copilot);
-      await gitlabService.removeAssign(event.copilot, event.data.repository, issueNumber, assigneeUserId);
+      await gitlabService.removeAssign(event.data.repository, issueNumber, assigneeUserId);
     }
   }
 
@@ -104,7 +104,7 @@ class GitHelper {
       await gitHubService.updateIssue(event.copilot, event.data.repository.full_name, issueNumber, newTitle);
     } else if (event.provider === 'gitlab') {
       const gitlabService = await GitlabService.create(event.copilot);
-      await gitlabService.updateIssue(event.copilot, event.data.repository, issueNumber, newTitle);
+      await gitlabService.updateIssue(event.data.repository, issueNumber, newTitle);
     }
   }
 
@@ -120,7 +120,7 @@ class GitHelper {
     } else if (event.provider === 'gitlab') {
       const gitlabService = await GitlabService.create(event.copilot);
       const userId = await gitlabService.getUserIdByLogin(event.copilot, assignedUser);
-      await gitlabService.assignUser(event.copilot, event.data.repository, issueNumber, userId);
+      await gitlabService.assignUser(event.data.repository, issueNumber, userId);
     }
   }
 
@@ -139,7 +139,7 @@ class GitHelper {
         createCopilotPayments);
     } else if (event.provider === 'gitlab') {
       const gitlabService = await GitlabService.create(event.copilot);
-      await gitlabService.markIssueAsPaid(event.copilot, event.data.repository, issueNumber, challengeUUID, existLabels, winner,
+      await gitlabService.markIssueAsPaid(event.data.repository, issueNumber, challengeUUID, existLabels, winner,
         createCopilotPayments);
     } else if (event.provider === 'azure') {
       await azureService.markIssueAsPaid(event.copilot, event.data.repository.full_name, issueNumber, challengeUUID, existLabels);
@@ -171,7 +171,7 @@ class GitHelper {
       return await gitHubService.getUserIdByLogin(event.copilot, assignee);
     } else if (event.provider === 'gitlab') {
       const gitlabService = await GitlabService.create(event.copilot);
-      return gitlabService.getUserIdByLogin(event.copilot, assignee);
+      return gitlabService.getUserIdByLogin(assignee);
     }
     return null;
   }
diff --git a/utils/kafka-consumer.js b/utils/kafka-consumer.js
index fe061bc..4b76f05 100644
--- a/utils/kafka-consumer.js
+++ b/utils/kafka-consumer.js
@@ -46,7 +46,6 @@ function tcxMessageHandler(messageSet, topic) {
     // The event should be a JSON object
     event = parsePayload(event);
     try {
-      console.log(event);
       event.message.value.payload.value = JSON.parse(event.message.value.payload.value);
     } catch (e) {
       logger.error('Invalid message payload', e);
diff --git a/utils/notification.js b/utils/notification.js
index f294275..de788a1 100644
--- a/utils/notification.js
+++ b/utils/notification.js
@@ -10,7 +10,6 @@
 const config = require('config');
 
 const kafkaSender = require('./kafka-sender');
-const topcoderApiHelper = require('./topcoder-api-helper');
 const logger = require('./logger');
 
 const notification = {};
@@ -31,6 +30,7 @@ function getContent(repoPath) {
 }
 
 notification.sendTokenExpiredAlert = async function sendTokenExpiredAlert(copilotHandle, repoPath, provider) {
+  const topcoderApiHelper = await import('./topcoder-api-helper');
   const copilotId = await topcoderApiHelper.getTopcoderMemberId(copilotHandle);
   const notificationConfigs = config.MAIL_NOTICIATION;
   const content = getContent(repoPath);
diff --git a/utils/topcoder-api-helper.js b/utils/topcoder-api-helper.js
index 1ba3092..58b05ca 100644
--- a/utils/topcoder-api-helper.js
+++ b/utils/topcoder-api-helper.js
@@ -62,7 +62,7 @@ async function createProject(projectName) {
 /**
  * Create a new challenge.
  * @param {Object} challenge the challenge to create
- * @returns {Number} the created challenge id
+ * @returns {Promise<Number>} the created challenge id
  */
 async function createChallenge(challenge) {
   const apiKey = await getM2Mtoken();
@@ -268,7 +268,7 @@ async function getProjectBillingAccountId(id) {
 /**
  * gets the topcoder user id from handle
  * @param {String} handle the topcoder handle
- * @returns {Number} the user id
+ * @returns {Promise<Number>} the user id
  */
 async function getTopcoderMemberId(handle) {
   try {