diff --git a/src/app.js b/src/app.js
index d98950e75034d48d8688bc40243016e7df3cea92..267a8ab6bb4ebdb28753bc31638da6dcab7ae8d6 100644
--- a/src/app.js
+++ b/src/app.js
@@ -11,7 +11,6 @@ var configUtil = require('sb-config-util')
 
 const contentProvider = require('sb_content_provider_util')
 var contentMetaProvider = require('./contentMetaFilter')
-var configHelper = require('./helpers/configHelper')
 // TODO below configuration should to be refactored in a seperate file
 
 const contentProviderConfigPath = path.join(__dirname, '/config/contentProviderApiConfig.json')
@@ -121,8 +120,12 @@ if (defaultChannel) {
           'start service Eg: sunbird_environment = dev, sunbird_instance = sunbird')
           process.exit(1)
         }
-        configUtil.setConfig('META_FILTER_REQUEST_JSON', contentMetaProvider.getMetaFilterConfig())
-        configHelper.updateConfig()
+        contentMetaProvider.getMetaFilterConfig().then((configStr) => {
+          configUtil.setConfig('META_FILTER_REQUEST_JSON', configStr)
+        }).catch((err) => {
+          console.log('error in getting meta filters', err)
+          process.exit(1)
+        })
       })
     } else {
       console.log('error in fetching default channel', defaultChannel, err, res)
diff --git a/src/contentMetaFilter.js b/src/contentMetaFilter.js
index eef40e4720e5281bca9f86f4f25ced135e7d2a65..8e98d6693bc5107a1e2401664b17eaf8e2f4dfc1 100644
--- a/src/contentMetaFilter.js
+++ b/src/contentMetaFilter.js
@@ -3,29 +3,67 @@ var LOG = require('sb_logger_util')
 var path = require('path')
 var filename = path.basename(__filename)
 var _ = require('lodash')
-
+var configHelper = require('./helpers/configHelper.js')
+var cron = require('node-cron')
+var channelRefreshCronStr = process.env.sunbird_content_service_channel_refresh_cron
+var ischannelRefreshEnabled = false
+var async = require('asyncawait/async');
+var await = require('asyncawait/await');
 // Function to generate the Config Array
-function generateConfigString (metaFiltersArray) {
-  var configArray = {}
-  _.forOwn(metaFiltersArray, function (value, key) {
-    const allowedMetadata = value[0]
-    const blackListedMetadata = value[1]
-    if ((allowedMetadata && allowedMetadata.length > 0) && (blackListedMetadata && blackListedMetadata.length > 0)) {
-      configArray[key] = _.difference(allowedMetadata, blackListedMetadata)
-    } else if (allowedMetadata && allowedMetadata.length > 0) {
-      configArray[key] = allowedMetadata
-    } else if (blackListedMetadata && blackListedMetadata.length > 0) {
-      configArray[key] = { 'ne': blackListedMetadata }
-    }
-  })
+
+var generateConfigString = async(function(metaFiltersArray) {
+    var configArray = {}
+    _.forOwn(metaFiltersArray, function (value, key) {
+      var allowedMetadata = value[0]
+      var blackListedMetadata = value[1]
+      if (key === 'channel' && _.includes(allowedMetadata, '$.instance.all')) {
+        if (channelRefreshCronStr && !ischannelRefreshEnabled) {
+          setChannelRefreshTask()
+          ischannelRefreshEnabled = true
+        }
+        LOG.info(utilsService.getLoggerData({}, 'INFO',
+          filename, 'generateConfigString', 'allowed channels', allowedMetadata))
+          var allChannels = await(configHelper.getAllChannelsFromAPI())
+          allowedMetadata = _.pull(allowedMetadata, '$.instance.all').concat(allChannels)
+          LOG.info(utilsService.getLoggerData({}, 'INFO',
+            filename, 'generateConfigString', 'all whitelisted channels count', allowedMetadata.length))
+              configArray[key] = getconfigStringFromMeta(allowedMetadata, blackListedMetadata)
+       
+      } else {
+        LOG.info(utilsService.getLoggerData({}, 'INFO',
+          filename, 'generateConfigString', 'allowed metadata', allowedMetadata))
+        configArray[key] = getconfigStringFromMeta(allowedMetadata, blackListedMetadata)
+      }
+    })
+    LOG.info(utilsService.getLoggerData({}, 'INFO',
+      filename, 'generateConfigString', 'config array', configArray))
+    return configArray
+})
+
+/**
+ * This function generates the config string for given allowed and blacklisted channels
+ * @param allowedMetadata  array of metadata item to be allowed in filters
+ * @param blackListedMetadata  array of metadata item to be blacklisted or ignored
+ * @returns Js object or array which contains the allowed whitelisted meta items
+ */
+function getconfigStringFromMeta (allowedMetadata, blackListedMetadata) {
+  var configString = {}
+  if ((allowedMetadata && allowedMetadata.length > 0) && (blackListedMetadata && blackListedMetadata.length > 0)) {
+    configString = _.difference(allowedMetadata, blackListedMetadata)
+  } else if (allowedMetadata && allowedMetadata.length > 0) {
+    configString = allowedMetadata
+  } else if (blackListedMetadata && blackListedMetadata.length > 0) {
+    configString = { 'ne': blackListedMetadata }
+  }
   LOG.info(utilsService.getLoggerData({}, 'INFO',
-    filename, 'getFilterConfig', 'config array', configArray))
-  return configArray
+    filename, 'getconfigStringFromMeta', 'config string', configString))
+  return configString
 }
+
 // function to generate the search filter and return JSON Object
 function getMetaFilterConfig () {
   LOG.info(utilsService.getLoggerData({}, 'INFO',
-    filename, 'getFilterConfig', 'environment info', process.env))
+    filename, 'getMetaFilterConfig', 'environment info', process.env))
   var allowedChannels = process.env.sunbird_content_service_whitelisted_channels
     ? process.env.sunbird_content_service_whitelisted_channels.split(',') : []
   var blackListedChannels = process.env.sunbird_content_service_blacklisted_channels
@@ -70,4 +108,16 @@ function getFilterJSONfromConfigService () {
   throw new Error('Config service is unavailable')
 }
 
+/**
+ * This function executes the scheduler cron job to refresh the whitelisted
+ * channels based given cron interval string 'channelRefreshCronStr'
+ */
+function setChannelRefreshTask () {
+  cron.schedule(channelRefreshCronStr, function () {
+    LOG.info(utilsService.getLoggerData({}, 'INFO',
+      filename, 'setChannelRefreshTask', 'running scheduler task', channelRefreshCronStr))
+    getMetaFilterConfig()
+  })
+}
+
 module.exports.getMetaFilterConfig = getMetaFilterConfig
diff --git a/src/helpers/configHelper.js b/src/helpers/configHelper.js
index 69ec2173c7d982bcf3a72ccb8fa1b42596e4b12e..a2c3524e2fb871cceb60e8f31b40dd82a6a6c458 100644
--- a/src/helpers/configHelper.js
+++ b/src/helpers/configHelper.js
@@ -5,12 +5,6 @@ var LOG = require('sb_logger_util')
 const contentProvider = require('sb_content_provider_util')
 var async = require('async')
 var _ = require('lodash')
-var configUtil = require('sb-config-util')
-var channelRefreshCronStr = process.env.sunbird_content_service_channel_refresh_cron
-var cron = require('node-cron')
-const whiteListedChannelList = process.env.sunbird_content_service_whitelisted_channels
-const blackListedChannelList = process.env.sunbird_content_service_blacklisted_channels
-var ischannelRefreshEnabled = false
 
 /**
  * This function executes the org search lms API to get all orgs
@@ -31,67 +25,9 @@ function getRootOrgs (requestObj, cb) {
   })
 }
 
-/**
- * This function returns the config string based on condition for channel filters which
- * contains the whitelisted channels
- * @returns Promise which contains the allowed whitelisted channels
- */
-function getFilterConfig () {
-  return new Promise(function (resolve, reject) {
-    LOG.info(utilsService.getLoggerData({}, 'INFO',
-      filename, 'getFilterConfig', 'environment info', process.env))
-    var allowedChannels = whiteListedChannelList ? whiteListedChannelList.split(',') : []
-    var blackListedChannels = blackListedChannelList ? blackListedChannelList.split(',') : []
-    if (_.includes(allowedChannels, '$.instance.all')) {
-      if (channelRefreshCronStr && !ischannelRefreshEnabled) {
-        setChannelRefreshTask()
-        ischannelRefreshEnabled = true
-      }
-      LOG.info(utilsService.getLoggerData({}, 'INFO',
-        filename, 'getFilterConfig', 'allowed channels', allowedChannels))
-      getAllChannelsFromAPI().then(allChannels => {
-        allowedChannels = _.pull(allowedChannels, '$.instance.all').concat(allChannels)
-        LOG.info(utilsService.getLoggerData({}, 'INFO',
-          filename, 'getFilterConfig', 'all whitelisted channels count', allowedChannels.length))
-        resolve(getconfigStringFromChannels(allowedChannels, blackListedChannels))
-      }, (err) => {
-        console.log(err)
-        LOG.error(utilsService.getLoggerData({}, 'ERROR',
-          filename, 'getFilterConfig', 'getAllChannelsFromAPI callback', err))
-        reject(err)
-      })
-    } else {
-      LOG.info(utilsService.getLoggerData({}, 'INFO',
-        filename, 'getFilterConfig', 'allowed channels', allowedChannels))
-      resolve(getconfigStringFromChannels(allowedChannels, blackListedChannels))
-    }
-  })
-}
-
-/**
- * This function generates the config string for given allowed and blacklisted channels
- * @param allowedChannels  array of channels to be allowed in filters
- * @param blacklistedchannels  array of channels to be blacklisted or ignored
- * @returns Js object or array which contains the allowed whitelisted channels
- */
-function getconfigStringFromChannels (allowedChannels, blackListedChannels) {
-  var configString = {}
-  if ((allowedChannels && allowedChannels.length > 0) && (blackListedChannels && blackListedChannels.length > 0)) {
-    configString = _.difference(allowedChannels, blackListedChannels)
-  } else if (allowedChannels && allowedChannels.length > 0) {
-    configString = allowedChannels
-  } else if (blackListedChannels && blackListedChannels.length > 0) {
-    configString = { 'ne': blackListedChannels }
-  }
-  LOG.info(utilsService.getLoggerData({}, 'INFO',
-    filename, 'getconfigStringFromChannels', 'config string', configString))
-  return configString
-}
-
 /**
  * This method gets all channels through 'getRootOrgs' method response
- * data asynchronously and return callback
- * @param cb callback method which takes error and allchannels as param
+ * data asynchronously and return back a promise
  * @returns promise
  */
 function getAllChannelsFromAPI () {
@@ -148,34 +84,6 @@ function getAllChannelsFromAPI () {
   })
 }
 
-/**
- * This method sets the given channel filter value to the config utils
- * @param configString configstring which contains the whitelisted channels
- */
-function updateConfig () {
-  getFilterConfig().then((configString) => {
-    LOG.info(utilsService.getLoggerData({}, 'INFO',
-      filename, 'updateConfig', 'config string', configString))
-    configUtil.setConfig('CHANNEL_FILTER_QUERY_STRING', configString)
-  }, (err) => {
-    LOG.error(utilsService.getLoggerData({}, 'ERROR',
-      filename, 'updateConfig', 'error', err))
-  })
-}
-
-/**
- * This function executes the scheduler cron job to refresh the whitelisted
- * channels based given cron interval string 'channelRefreshCronStr'
- */
-function setChannelRefreshTask () {
-  cron.schedule(channelRefreshCronStr, function () {
-    LOG.info(utilsService.getLoggerData({}, 'INFO',
-      filename, 'setChannelRefreshTask', 'running scheduler task', channelRefreshCronStr))
-    updateConfig()
-  })
-}
-
 module.exports = {
-  updateConfig: updateConfig,
-  getFilterConfig: getFilterConfig
+  getAllChannelsFromAPI: getAllChannelsFromAPI
 }
diff --git a/src/package.json b/src/package.json
index d4ec670cbe70b90336a4d5bdaae6739b51bd5338..394760428272754e91244bd9da3f2fb5c52293fb 100644
--- a/src/package.json
+++ b/src/package.json
@@ -16,6 +16,7 @@
   "license": "ISC",
   "dependencies": {
     "async": "^2.4.0",
+    "asyncawait": "^1.0.7",
     "azure-storage": "2.7.0",
     "body-parser": "^1.14.2",
     "cassandra-driver": "^3.4.1",
diff --git a/src/test/helpers/configHelperSpec.js b/src/test/helpers/configHelperSpec.js
index 06063e1eb4db95895f642e0fdfbe3c9cba60670c..4f64e4a231cc97546e71bd2cb7a29435fe972a10 100644
--- a/src/test/helpers/configHelperSpec.js
+++ b/src/test/helpers/configHelperSpec.js
@@ -1,29 +1,10 @@
 var configHelper = require('../../helpers/configHelper')
 
 describe('configuration helper methods', function () {
-  it('should set the configuration ', function () {
-    spyOn(configHelper, 'getFilterConfig')
-    configHelper.updateConfig()
-    expect(configHelper.getFilterConfig).toHaveBeenCalled()
-  })
-})
-describe('configuration string', function () {
-  it('should return the config string with all channels when $.instance.all is present', function (done) {
-    process.env.sunbird_content_service_whitelisted_channels =
-    '505c7c48ac6dc1edc9b08f21db5a571d,b00bc992ef25f1a9a8d63291e20efc8d,$.instance.all'
-    process.env.sunbird_content_service_blacklisted_channels = 'b00bc992ef25f1a9a8d63291e20efc8d'
-    configHelper.getFilterConfig().then(function (configStr) {
-      expect(configStr.length).toBeGreaterThanOrEqual(process.env.sunbird_content_service_whitelisted_channels.length)
-      done()
-    })
-  })
-  it('should return the config string with whitelisted channels', function (done) {
-    process.env.sunbird_content_service_whitelisted_channels =
-    '505c7c48ac6dc1edc9b08f21db5a571d,b00bc992ef25f1a9a8d63291e20efc8d'
-    process.env.sunbird_content_service_blacklisted_channels = 'b00bc992ef25f1a9a8d63291e20efc8d'
-    configHelper.getFilterConfig().then(function (configStr) {
-      expect(configStr.length).toBeLessThanOrEqual(process.env.sunbird_content_service_whitelisted_channels.length)
-      done()
+  it('should get all the channels', function () {
+    spyOn(configHelper, 'getRootOrgs')
+    configHelper.getAllChannelsFromAPI().then((configStr) => {
+      expect(configStr.length).toBeGreaterThanOrEqual(0)
     })
   })
 })