diff --git a/README.md b/README.md
index 9b6acbe..f8a95e7 100644
--- a/README.md
+++ b/README.md
@@ -109,6 +109,43 @@ In the above form you can add multiple message ID's and trigger the API by passi
 ?>
 *Note* In the above request only "customerKey" and "emailAddress" are mandatory attributes rest can be removed.
 ```
+### Method 6 (Create List Record)
+To create a record pass the desired attributes in a key=>value pair.
+```
+<?php
+  $service = \Drupal::service('epsilon_harmony.api_service');
+
+  $record = [];
+  $record['CustomerKey'] = "<CustomerKey>";
+  $record['FirstName'] = "<Firstname>";
+  $record['LastName'] = "<Lastname>";
+  $record['PreferredChannel'] = "<PreferredChannel>";
+  $record['GlobalOptOutFlag'] = "<GlobalOptOutFlag>";
+  $record['AddressLine1'] = "<AddressLine1>";
+  ...etc
+  $service->createListRecord($record, <list_id>);
+?>
+*Note* In the above request only "CustomerKey" is a mandatory attribute rest can be removed.
+```
+
+### Method 7 (Update List Record)
+To create a record pass the desired attributes in a key=>value pair.
+```
+<?php
+  $service = \Drupal::service('epsilon_harmony.api_service');
+
+  $record = [];
+  $record['CustomerKey'] = "<CustomerKey>";
+  $record['FirstName'] = "<Firstname>";
+  $record['LastName'] = "<Lastname>";
+  $record['PreferredChannel'] = "<PreferredChannel>";
+  $record['GlobalOptOutFlag'] = "<GlobalOptOutFlag>";
+  $record['AddressLine1'] = "<AddressLine1>";
+  ...etc
+  $service->updateListRecord($record, <list_id>);
+?>
+*Note* In the above request only "CustomerKey" is a mandatory attribute rest can be removed.
+```
 
 ## Logging
 All the API triggers are logged in `admin/config/epsilon_harmony/logs` which can be used for debugging purpose.
diff --git a/epsilon_harmony.links.menu.yml b/epsilon_harmony.links.menu.yml
index cdeac79..a1c7575 100644
--- a/epsilon_harmony.links.menu.yml
+++ b/epsilon_harmony.links.menu.yml
@@ -10,21 +10,27 @@ epsilon_harmony.configurations:
   parent: epsilon_harmony.admin_config
   description: 'Epsilon harmony configuration form.'
   weight: 2
+epsilon_harmony.list_configuration:
+  title: List configurations
+  route_name: epsilon_harmony.list_configuration
+  parent: epsilon_harmony.admin_config
+  description: 'Epsilon harmony list configuration form.'
+  weight: 3
 epsilon_harmony.message_configuration:
   title: Message configurations
   route_name: epsilon_harmony.message_configuration
   parent: epsilon_harmony.admin_config
   description: 'Epsilon harmony message configuration form.'
-  weight: 3
+  weight: 4
 epsilon_harmony.logs:
   title: Logs
   route_name: epsilon_harmony.logs
   parent: epsilon_harmony.admin_config
   description: 'Logs for epsilon harmony API calls.'
-  weight: 4
+  weight: 5
 epsilon_harmony.test:
   title: Test
   route_name: epsilon_harmony.test
   parent: epsilon_harmony.admin_config
   description: 'Test epsilon harmony API.'
-  weight: 5
+  weight: 6
diff --git a/epsilon_harmony.links.task.yml b/epsilon_harmony.links.task.yml
index 0e4ef16..3950041 100644
--- a/epsilon_harmony.links.task.yml
+++ b/epsilon_harmony.links.task.yml
@@ -3,18 +3,23 @@ epsilon_harmony.configurations:
   route_name : epsilon_harmony.configurations
   base_route: epsilon_harmony.configurations
   weight: 1
+epsilon_harmony.list_configuration:
+  title: List Configurations
+  route_name : epsilon_harmony.list_configuration
+  base_route: epsilon_harmony.configurations
+  weight: 2
 epsilon_harmony.message_configuration:
   title: Message Configurations
   route_name : epsilon_harmony.message_configuration
   base_route: epsilon_harmony.configurations
-  weight: 2
+  weight: 3
 epsilon_harmony.logs:
   title: Logs
   route_name: epsilon_harmony.logs
   base_route: epsilon_harmony.configurations
-  weight: 3
+  weight: 4
 epsilon_harmony.test:
   title: Test
   route_name: epsilon_harmony.test
   base_route: epsilon_harmony.configurations
-  weight: 4
+  weight: 5
diff --git a/epsilon_harmony.routing.yml b/epsilon_harmony.routing.yml
index 92da366..13cce8d 100644
--- a/epsilon_harmony.routing.yml
+++ b/epsilon_harmony.routing.yml
@@ -14,6 +14,14 @@ epsilon_harmony.configurations:
   requirements:
     _permission: 'administer epsilon harmony'
 
+epsilon_harmony.list_configuration:
+  path: '/admin/config/epsilon_harmony/list_configuration'
+  defaults:
+    _form:  '\Drupal\epsilon_harmony\Form\ListConfiguration'
+    _title: 'Configure the Epsilon Harmony List IDs'
+  requirements:
+    _permission: 'administer epsilon harmony'
+
 epsilon_harmony.message_configuration:
   path: '/admin/config/epsilon_harmony/message_configuration'
   defaults:
diff --git a/src/Services/EpsilonApiFactory.php b/src/Services/EpsilonApiFactory.php
index 4c97be2..3916c9d 100644
--- a/src/Services/EpsilonApiFactory.php
+++ b/src/Services/EpsilonApiFactory.php
@@ -4,27 +4,24 @@ namespace Drupal\epsilon_harmony\Services;
 
 use function GuzzleHttp\json_decode;
 use Exception as Exception;
-use Drupal\Core\Form\ConfigFormBase;
 use GuzzleHttp\Exception\ClientException;
 use Drupal\Component\Serialization\Json;
 use Drupal\epsilon_harmony\StatusCodes;
-use Drupal\epsilon_harmony\Services\EpsilonConnectionFactory;
 
 /**
  * Description for API Factory of Harmony API.
  *
  * @author Darshan Choudhary
  */
-
 class EpsilonApiFactory extends EpsilonConnectionFactory {
+
   /**
    * Get a new access token or an existing one for the API.
    *
    * @return string
    *   Returns the access token.
    */
-  public static function getToken($object, $test = FALSE)
-  {
+  public static function getToken($object, $test = FALSE) {
     if ($test == TRUE || ($object->getTokenTimeout() == NULL || (time() - $object->getTokenTimeout() > 3600))) {
       try {
         $url = $object->tokenUrl . '/Epsilon/oauth2/access_token';
@@ -43,7 +40,7 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
 
         $response = \Drupal::httpClient()->post($url, [
           'headers' => $headers,
-          'form_params' => $data
+          'form_params' => $data,
         ]);
 
         $response_data_json = $response->getBody()->getContents();
@@ -54,17 +51,17 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
           'uid' => \Drupal::currentUser()->id(),
           'method' => 'POST',
           'status_code' => $response->getStatusCode(),
-          'status_message'=> $response->getReasonPhrase(),
-          'header'=> Json::encode($headers),
-          'request'=> Json::encode($data),
-          'response' => Json::encode($response_data)
+          'status_message' => $response->getReasonPhrase(),
+          'header' => Json::encode($headers),
+          'request' => Json::encode($data),
+          'response' => Json::encode($response_data),
         ];
         $object->logEpsilon($values);
 
         if ($response->getStatusCode() == StatusCodes::HTTP_OK && !empty($response_data)) {
           $config = \Drupal::service('config.factory')->getEditable('epsilon_harmony.settings');
-          $config->set('epsilon_harmony_token_timeout',  time())->save();
-          $config->set('epsilon_harmony_access_token',  $response_data['access_token'])->save();
+          $config->set('epsilon_harmony_token_timeout', time())->save();
+          $config->set('epsilon_harmony_access_token', $response_data['access_token'])->save();
 
           \Drupal::messenger()->addStatus(t('Token refreshed successfully.'), TRUE);
 
@@ -73,18 +70,19 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         else {
           throw new Exception('Something went wrong while fetching the token. Please check the logs for further details.');
         }
-      } catch (Exception $e) {
-        if($e->getResponse() != null) {
+      }
+      catch (Exception $e) {
+        if ($e->getResponse() != NULL) {
           $response = (string) $e->getResponse()->getBody();
           $values = [
             'endpoint' => $url,
             'uid' => \Drupal::currentUser()->id(),
             'method' => 'POST',
             'status_code' => $e->getCode(),
-            'status_message'=> (isset(Json::decode($response)['fault']['faultstring'])) ? Json::decode($response)['fault']['faultstring'] : NULL,
-            'header'=> Json::encode($headers),
-            'request'=> Json::encode($data),
-            'response' => $response
+            'status_message' => (isset(Json::decode($response)['fault']['faultstring'])) ? Json::decode($response)['fault']['faultstring'] : NULL,
+            'header' => Json::encode($headers),
+            'request' => Json::encode($data),
+            'response' => $response,
           ];
           $log = $object->logEpsilon($values);
           \Drupal::messenger()->addError(t('Failure!! Please check the epsilon log @link for further details.', [
@@ -112,8 +110,7 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
    * @return array
    *   Returns the response recieved from the API.
    */
-  public function createRecord($record)
-  {
+  public function createRecord(array $record) {
     try {
       $url = $this->apiUrl . "/v4/profiles/records";
 
@@ -126,7 +123,7 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
       // HTTP Form request.
       $response = \Drupal::httpClient()->post($url, [
         'headers' => $headers,
-        'json' => $record
+        'json' => $record,
       ]);
 
       $response_data_json = $response->getBody()->getContents();
@@ -137,10 +134,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         'uid' => \Drupal::currentUser()->id(),
         'method' => 'POST',
         'status_code' => $response->getStatusCode(),
-        'status_message'=> $response->getReasonPhrase(),
-        'header'=> Json::encode($headers),
-        'request'=> Json::encode($record),
-        'response' => Json::encode($response_data)
+        'status_message' => $response->getReasonPhrase(),
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => Json::encode($response_data),
       ];
       $log = self::logEpsilon($values);
 
@@ -161,10 +158,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         'uid' => \Drupal::currentUser()->id(),
         'method' => 'POST',
         'status_code' => $e->getCode(),
-        'status_message'=> Json::decode($response)['resultCode'],
-        'header'=> Json::encode($headers),
-        'request'=> Json::encode($record),
-        'response' => $response
+        'status_message' => Json::decode($response)['resultCode'],
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => $response,
       ];
       $log = self::logEpsilon($values);
 
@@ -183,8 +180,7 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
    * @return array
    *   Returns the response recieved from the API.
    */
-  public function updateRecord($record)
-  {
+  public function updateRecord(array $record) {
     try {
       $url = $this->apiUrl . "/v4/profiles/records/" . $record['CustomerKey'];
 
@@ -197,7 +193,7 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
       // HTTP Form request.
       $response = \Drupal::httpClient()->put($url, [
         'headers' => $headers,
-        'json' => $record
+        'json' => $record,
       ]);
 
       $response_data_json = $response->getBody()->getContents();
@@ -209,10 +205,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         'uid' => \Drupal::currentUser()->id(),
         'method' => 'PUT',
         'status_code' => $response->getStatusCode(),
-        'status_message'=> $response->getReasonPhrase(),
-        'header'=> Json::encode($headers),
-        'request'=> Json::encode($record),
-        'response' => Json::encode($response_data)
+        'status_message' => $response->getReasonPhrase(),
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => Json::encode($response_data),
       ];
       $log = self::logEpsilon($values);
 
@@ -233,10 +229,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         'uid' => \Drupal::currentUser()->id(),
         'method' => 'PUT',
         'status_code' => $e->getCode(),
-        'status_message'=> Json::decode($response)['resultCode'],
-        'header'=> Json::encode($headers),
-        'request'=> Json::encode($record),
-        'response' => $response
+        'status_message' => Json::decode($response)['resultCode'],
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => $response,
       ];
       $log = self::logEpsilon($values);
 
@@ -249,14 +245,13 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
   /**
    * Deletes the record on Epsilon DB by calling the API.
    *
-   * @param array $record
+   * @param string $customer_key
    *   Data to be passed through API.
    *
    * @return array
    *   Returns the response recieved from the API.
    */
-  public function deleteRecord($customer_key)
-  {
+  public function deleteRecord($customer_key) {
     try {
       $url = $this->apiUrl . "/v4/profiles/records/" . $customer_key;
 
@@ -280,10 +275,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         'uid' => \Drupal::currentUser()->id(),
         'method' => 'DELETE',
         'status_code' => $response->getStatusCode(),
-        'status_message'=> $response->getReasonPhrase(),
-        'header'=> Json::encode($headers),
-        'request'=> Json::encode($record),
-        'response' => Json::encode($response_data)
+        'status_message' => $response->getReasonPhrase(),
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => Json::encode($response_data),
       ];
       $log = self::logEpsilon($values);
 
@@ -304,10 +299,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         'uid' => \Drupal::currentUser()->id(),
         'method' => 'DELETE',
         'status_code' => $e->getCode(),
-        'status_message'=> Json::decode($response)['resultCode'],
-        'header'=> Json::encode($headers),
-        'request'=> Json::encode($record),
-        'response' => $response
+        'status_message' => Json::decode($response)['resultCode'],
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => $response,
       ];
       $log = self::logEpsilon($values);
 
@@ -328,8 +323,7 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
    * @return array
    *   Returns the response recieved from the API.
    */
-  public function sendMessage($message_id = NULL, $record = array())
-  {
+  public function sendMessage($message_id = NULL, $record = []) {
     try {
       if ($message_id == NULL) {
         throw new Exception('Message ID not available.');
@@ -346,7 +340,7 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
       // HTTP Form request.
       $response = \Drupal::httpClient()->put($url, [
         'headers' => $headers,
-        'json' => $record
+        'json' => $record,
       ]);
 
       $response_data_json = $response->getBody()->getContents();
@@ -358,10 +352,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         'uid' => \Drupal::currentUser()->id(),
         'method' => 'PUT',
         'status_code' => $response->getStatusCode(),
-        'status_message'=> $response->getReasonPhrase(),
-        'header'=> Json::encode($headers),
-        'request'=> Json::encode($record),
-        'response' => Json::encode($response_data)
+        'status_message' => $response->getReasonPhrase(),
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => Json::encode($response_data),
       ];
       $log = self::logEpsilon($values);
 
@@ -379,10 +373,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         'uid' => \Drupal::currentUser()->id(),
         'method' => 'PUT',
         'status_code' => $e->getCode(),
-        'status_message'=> Json::decode($response)['resultCode'],
-        'header'=> Json::encode($headers),
-        'request'=> Json::encode($record),
-        'response' => $response
+        'status_message' => Json::decode($response)['resultCode'],
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => $response,
       ];
       $log = self::logEpsilon($values);
 
@@ -396,14 +390,13 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
   /**
    * Retrieves the record on Epsilon DB by calling the API.
    *
-   * @param array $record
+   * @param string $customer_key
    *   Data to be passed through API.
    *
    * @return array
    *   Returns the response recieved from the API.
    */
-  public function retrieveRecord($customer_key)
-  {
+  public function retrieveRecord($customer_key) {
     try {
       $url = $this->apiUrl . "/v4/profiles/records/" . $customer_key;
 
@@ -427,10 +420,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         'uid' => \Drupal::currentUser()->id(),
         'method' => 'GET',
         'status_code' => $response->getStatusCode(),
-        'status_message'=> $response->getReasonPhrase(),
-        'header'=> Json::encode($headers),
-        'request'=> Json::encode($record),
-        'response' => Json::encode($response_data)
+        'status_message' => $response->getReasonPhrase(),
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => Json::encode($response_data),
       ];
       $log = self::logEpsilon($values);
 
@@ -451,10 +444,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
         'uid' => \Drupal::currentUser()->id(),
         'method' => 'GET',
         'status_code' => $e->getCode(),
-        'status_message'=> Json::decode($response)['resultCode'],
-        'header'=> Json::encode($headers),
-        'request'=> Json::encode($record),
-        'response' => $response
+        'status_message' => Json::decode($response)['resultCode'],
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => $response,
       ];
       $log = self::logEpsilon($values);
 
@@ -464,14 +457,158 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
     }
   }
 
+  /**
+   * Create a list record on Epsilon DB by calling the API.
+   *
+   * @param array $record
+   *   Data to be passed through API.
+   * @param string $list_id
+   *   Data to be passed through API.
+   *
+   * @return array
+   *   Returns the response recieved from the API.
+   */
+  public function createListRecord(array $record, $list_id = NULL) {
+    try {
+      $url = $this->apiUrl . "/v4/lists/" . $this->getlistId($list_id) . "/records";
+
+      $headers = [
+        'Authorization' => 'Bearer ' . self::getToken($this),
+        'X-OUID' => $this->getXouid(),
+        'Content-Type' => 'application/json',
+      ];
+
+      // HTTP Form request.
+      $response = \Drupal::httpClient()->post($url, [
+        'headers' => $headers,
+        'json' => $record,
+      ]);
+
+      $response_data_json = $response->getBody()->getContents();
+      $response_data = (array) json_decode($response_data_json);
+
+      $values = [
+        'endpoint' => $url,
+        'uid' => \Drupal::currentUser()->id(),
+        'method' => 'POST',
+        'status_code' => $response->getStatusCode(),
+        'status_message' => $response->getReasonPhrase(),
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => Json::encode($response_data),
+      ];
+      $log = self::logEpsilon($values);
+
+      if ($response->getStatusCode() == StatusCodes::HTTP_OK && !empty($response_data)) {
+        \Drupal::messenger()->addStatus(t('List Record successfully created. Please check the epsilon log @link for further details.', [
+          '@link' => $log->toLink()->toString(),
+        ]), TRUE);
+        return $response_data;
+      }
+      else {
+        throw new Exception('Create record failed. Please check the logs for further details.');
+      }
+    }
+    catch (ClientException $e) {
+      $response = (string) $e->getResponse()->getBody();
+      $values = [
+        'endpoint' => $url,
+        'uid' => \Drupal::currentUser()->id(),
+        'method' => 'POST',
+        'status_code' => $e->getCode(),
+        'status_message' => Json::decode($response)['resultCode'],
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => $response,
+      ];
+      $log = self::logEpsilon($values);
+
+      \Drupal::messenger()->addError(t('Create record failed. Please check the log @link for further details.', [
+        '@link' => $log->toLink()->toString(),
+      ]), TRUE);
+    }
+  }
+
+  /**
+   * Update a list record on Epsilon DB by calling the API.
+   *
+   * @param array $record
+   *   Data to be passed through API.
+   * @param string $list_id
+   *   Data to be passed through API.
+   *
+   * @return array
+   *   Returns the response recieved from the API.
+   */
+  public function updateListRecord(array $record, $list_id = NULL) {
+    try {
+      $url = $this->apiUrl . "/v4/lists/" . $this->getlistId($list_id) . "/records/" . $record['CustomerKey'];
+
+      $headers = [
+        'Authorization' => 'Bearer ' . self::getToken($this),
+        'X-OUID' => $this->getXouid(),
+        'Content-Type' => 'application/json',
+      ];
+
+      // HTTP Form request.
+      $response = \Drupal::httpClient()->put($url, [
+        'headers' => $headers,
+        'json' => $record,
+      ]);
+
+      $response_data_json = $response->getBody()->getContents();
+      $response_data = (array) json_decode($response_data_json);
+
+      // Log the API.
+      $values = [
+        'endpoint' => $url,
+        'uid' => \Drupal::currentUser()->id(),
+        'method' => 'PUT',
+        'status_code' => $response->getStatusCode(),
+        'status_message' => $response->getReasonPhrase(),
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => Json::encode($response_data),
+      ];
+      $log = self::logEpsilon($values);
+
+      if ($response->getStatusCode() == StatusCodes::HTTP_OK && !empty($response_data)) {
+        \Drupal::messenger()->addStatus(t('List Record successfully updated. Please check the epsilon log @link for further details.', [
+          '@link' => $log->toLink()->toString(),
+        ]), TRUE);
+        return $response_data;
+      }
+      else {
+        throw new Exception('Update record failed. Please check the epsilon logs for further details.');
+      }
+    }
+    catch (ClientException $e) {
+      $response = (string) $e->getResponse()->getBody();
+      $values = [
+        'endpoint' => $url,
+        'uid' => \Drupal::currentUser()->id(),
+        'method' => 'PUT',
+        'status_code' => $e->getCode(),
+        'status_message' => Json::decode($response)['resultCode'],
+        'header' => Json::encode($headers),
+        'request' => Json::encode($record),
+        'response' => $response,
+      ];
+      $log = self::logEpsilon($values);
+
+      \Drupal::messenger()->addStatus(t('Record update failed. Please check the epsilon log @link for further details.', [
+        '@link' => $log->toLink()->toString(),
+      ]), TRUE);
+    }
+  }
+
   /**
    * Checks if the configurations are valid by making a token call.
    *
    * @return string
    *   Return the access key for testing.
    */
-  public function testApi()
-  {
+  public function testApi() {
     return self::getToken($this, TRUE);
   }
 
@@ -484,10 +621,10 @@ class EpsilonApiFactory extends EpsilonConnectionFactory {
    * @return object
    *   Return the log created.
    */
-  protected function logEpsilon($record = [])
-  {
+  protected function logEpsilon($record = []) {
     $log = \Drupal::service('entity_type.manager')->getStorage('epsilon_harmony_log')->create($record);
     $log->save();
     return $log;
   }
+
 }
diff --git a/src/Services/EpsilonConnectionFactory.php b/src/Services/EpsilonConnectionFactory.php
index dc6f7a3..93c26d6 100644
--- a/src/Services/EpsilonConnectionFactory.php
+++ b/src/Services/EpsilonConnectionFactory.php
@@ -3,8 +3,8 @@
 namespace Drupal\epsilon_harmony\Services;
 
 use Exception as Exception;
-use GuzzleHttp\Exception\ClientException;
 use Drupal\Component\Serialization\Json;
+use GuzzleHttp\Exception\ClientException;
 
 /**
  * Description for Connector Factory of Harmony API.
@@ -49,6 +49,13 @@ class EpsilonConnectionFactory {
    */
   private $xouid = NULL;
 
+  /**
+   * List ID.
+   *
+   * @var object
+   */
+  private $listIdObject = NULL;
+
   /**
    * Message ID.
    *
@@ -93,12 +100,15 @@ class EpsilonConnectionFactory {
       $this->setXouid($config->get('epsilon_harmony_xouid'));
       $this->setApiRegion($config->get('epsilon_harmony_region'));
       $this->setTokenTimeout($config->get('epsilon_harmony_token_timeout'));
+      // @todo set list configs.
+      $this->setMessageArray($config->get('list_id_array'));
       // @todo set message configs.
       $this->setMessageArray($config->get('message_id_array'));
       $this->setApiBaseUrl();
       // Setting the static variable.
       self::$accessToken = $config->get('epsilon_harmony_access_token');
-    } catch (Exception $e) {
+    }
+    catch (Exception $e) {
       \Drupal::logger('epsilon_harmony')->error($e->getMessage());
     }
   }
@@ -109,7 +119,7 @@ class EpsilonConnectionFactory {
    * @param string $username
    *   Username.
    *
-   * @throws Exception
+   * @throws \Exception
    *   Username must be at least 1 character long.
    */
   protected function setUsername($username) {
@@ -138,7 +148,7 @@ class EpsilonConnectionFactory {
    * @param string $password
    *   Password.
    *
-   * @throws Exception
+   * @throws \Exception
    *   Password must be at least 1 character long.
    */
   protected function setPassword($password) {
@@ -167,7 +177,7 @@ class EpsilonConnectionFactory {
    * @param string $clientId
    *   Client ID.
    *
-   * @throws Exception
+   * @throws \Exception
    *   Client ID must be at least 1 character long.
    */
   protected function setClientId($clientId) {
@@ -196,7 +206,7 @@ class EpsilonConnectionFactory {
    * @param string $secretKey
    *   Secret Key.
    *
-   * @throws Exception
+   * @throws \Exception
    *   Secret Key must be at least 1 character long.
    */
   protected function setsecretKey($secretKey) {
@@ -225,7 +235,7 @@ class EpsilonConnectionFactory {
    * @param string $xouid
    *   X-OUID.
    *
-   * @throws Exception
+   * @throws \Exception
    *   X-OUID must be at least 1 character long.
    */
   protected function setXouid($xouid) {
@@ -268,6 +278,33 @@ class EpsilonConnectionFactory {
     return $this->tokenTimeout;
   }
 
+  /**
+   * Set list ID.
+   *
+   * @param string $list_ids
+   *   Set list ID.
+   */
+  protected function setListArray($list_ids) {
+    $this->listIdObject = Json::decode($list_ids);
+  }
+
+  /**
+   * Returns List ID.
+   *
+   * @param string $key
+   *   Key for which list ID is to be retrieved.
+   *
+   * @return string
+   *   Returns List ID.
+   */
+  protected function getlistId($key) {
+    $list_ids = $this->listIdObject;
+    if (!isset($list_ids[$key])) {
+      throw new Exception('Please enter a correct list identifier.');
+    }
+    return $list_ids[$key];
+  }
+
   /**
    * Set message ID.
    *
@@ -319,7 +356,7 @@ class EpsilonConnectionFactory {
    * Create the base URL for the selected region.
    */
   protected function setApiBaseUrl() {
-    if($this->defaultApiRegion == "eu") {
+    if ($this->defaultApiRegion == "eu") {
       $this->tokenUrl = "https://api-public.eu.epsilon.com";
       $this->apiUrl = "https://api.harmony.eu.epsilon.com";
     }
@@ -338,4 +375,5 @@ class EpsilonConnectionFactory {
   protected function getBaseToken() {
     return base64_encode($this->clientId . ":" . $this->secretKey);
   }
+
 }
