diff --git a/lib/pel_utils.py b/lib/pel_utils.py
index 9321347..d12abd7 100644
--- a/lib/pel_utils.py
+++ b/lib/pel_utils.py
@@ -9,6 +9,15 @@
 import json
 
 
+class peltool_exception(Exception):
+    r"""
+    Base class for peltool related exceptions.
+    """
+    def __init__(self, message):
+        self.message = message
+        super().__init__(self.message)
+
+
 def peltool(option_string, parse_json=True, **bsu_options):
     r"""
     Run peltool on the BMC with the caller's option string and return the result.
@@ -45,3 +54,74 @@
         except json.JSONDecodeError:
             return {}
     return out_buf
+
+
+def fetch_pelId_For_SRC(src_id):
+    r"""
+    Fetch PEL ID for the input SRC ID
+
+    Description of arguments:
+    src_id  SRC ID (e.g. BC20E504)
+    """
+
+    src_pel_id = []
+    try:
+        pel_data = peltool(" -l")
+        pel_id_list = pel_data.keys()
+        for i in pel_id_list:
+            if pel_data[i]["SRC"] == src_id:
+                src_pel_id.append(i)
+    except Exception as e:
+        raise peltool_exception("Failed to fetch PEL ID for required SRC : " + str(e))
+    return src_pel_id
+
+
+def verify_SRC_details(pel_id, attn_type, target_type, signature_desc,
+                       threshold_limit):
+    r"""
+    Verify SRC details for the given PEL ID based on the required
+    target type, attention type, signature description, threshold limit.
+
+    Description of arguments:
+    pel_id          PEL ID for the required SRC details to verify
+    target_type     Target type (e.g. TYPE_OMIC)
+    attn_type       Attention type (e.g. RECCOVERABLE)
+    signature_desc  Signature description of the error inject
+    threshold_limit Threshold limit (e.g. 1, 5, 32)
+    """
+
+    try:
+        pel_cmd = " -i " + pel_id
+        src_data = peltool(pel_cmd)
+        src_dict = src_data["Primary SRC"]["SRC Details"]
+        usr_data = src_data["User Data 4"]
+        if (src_dict["Attention Type"] != attn_type):
+            raise peltool_exception("Required Attention type " + attn_type + " not found")
+        if target_type not in src_dict["Target Type"]:
+            raise peltool_exception("Required Target type " + target_type + " not found")
+        if signature_desc not in src_dict["Signature"]:
+            raise peltool_exception("Required Signature " + signature_desc + " not found")
+
+        if (int(threshold_limit) != usr_data["Error Threshold"]):
+            raise peltool_exception("Required Threshold limit " + threshold_limit + " not found")
+
+    except Exception as e:
+        raise peltool_exception("Failed to verify SRC details : " + str(e))
+
+    return True
+
+
+def fetch_All_SRC():
+    r"""
+    Fetch all list of SRC IDs from peltool
+    """
+
+    src_id = []
+    try:
+        pel_data = peltool(" -l")
+        pel_id_list = pel_data.keys()
+        for i in pel_id_list:
+            src_id.append(pel_data[i]["SRC"])
+    except Exception as e:
+        raise peltool_exception("Failed to fetch all SRCs : " + str(e))
+    return src_id
