diff --git a/ffdc/lib/ssh_utility.py b/ffdc/lib/ssh_utility.py
index 73cdd9c..0f10207 100644
--- a/ffdc/lib/ssh_utility.py
+++ b/ffdc/lib/ssh_utility.py
@@ -24,13 +24,23 @@
 
     def __init__(self, hostname, username, password, port_ssh):
         r"""
-        Description of argument(s):
+        Initialize the FFDCCollector object with the provided remote host
+        details.
 
-        hostname        Name/IP of the remote (targeting) host
-        username        User on the remote host with access to FFCD files
-        password        Password for user on remote host
+        This method initializes an FFDCCollector object with the given
+        attributes, which represent the details of the remote (targeting)
+        host. The attributes include the hostname, username, password, and
+        SSH port.
+
+        Parameters:
+            hostname (str): Name or IP address of the remote (targeting) host.
+            username (str): User on the remote host with access to FFDC files.
+            password (str): Password for the user on the remote host.
+            port_ssh (int): SSH port value. By default, 22.
+
+        Returns:
+            None
         """
-
         self.ssh_output = None
         self.ssh_error = None
         self.sshclient = None
@@ -42,9 +52,11 @@
 
     def ssh_remoteclient_login(self):
         r"""
-        Method to create a ssh connection to remote host.
-        """
+        Connect to remote host using the SSH client.
 
+        Returns:
+            bool: The method return True on success and False in failure.
+        """
         is_ssh_login = True
         try:
             # SSHClient to make connections to the remote server
@@ -78,9 +90,15 @@
 
     def ssh_remoteclient_disconnect(self):
         r"""
-        Clean up.
-        """
+        Disconnect from the remote host using the SSH client.
 
+        This method disconnects from the remote host using the SSH client
+        established during the FFDC collection process. The method does not
+        return any value.
+
+        Returns:
+            None
+        """
         if self.sshclient:
             self.sshclient.close()
 
@@ -88,14 +106,25 @@
             self.scpclient.close()
 
     def execute_command(self, command, default_timeout=60):
+        r"""
+        Execute a command on the remote host using the SSH client.
+
+        This method executes a provided command on the remote host using the
+        SSH client. The method takes the command string as an argument and an
+        optional default_timeout parameter of 60 seconds, which specifies the
+        timeout for the command execution.
+
+        The method returns the output of the executed command as a string.
+
+        Parameters:
+            command (str):                   The command string to be executed
+                                             on the remote host.
+            default_timeout (int, optional): The timeout for the command
+                                             execution. Defaults to 60 seconds.
+
+        Returns:
+            str: The output of the executed command as a string.
         """
-        Execute command on the remote host.
-
-        Description of argument(s):
-        command                Command string sent to remote host
-
-        """
-
         empty = ""
         cmd_start = time.time()
         try:
@@ -147,7 +176,13 @@
 
     def scp_connection(self):
         r"""
-        Create a scp connection for file transfer.
+        Establish an SCP connection for file transfer.
+
+        This method creates an SCP connection for file transfer using the SSH
+        client established during the FFDC collection process.
+
+        Returns:
+            None
         """
         try:
             self.scpclient = SCPClient(
@@ -172,16 +207,21 @@
 
     def scp_file_from_remote(self, remote_file, local_file):
         r"""
-        scp file in remote system to local with date-prefixed filename.
+        SCP a file from the remote host to the local host with a filename.
 
-        Description of argument(s):
-        remote_file            Full path filename on the remote host
+        This method copies a file from the remote host to the local host using
+        the SCP protocol. The method takes the remote_file and local_file as
+        arguments, which represent the full paths of the files on the remote
+        and local hosts, respectively.
 
-        local_file             Full path filename on the local host
-                               local filename = date-time_remote filename
 
+        Parameters:
+            remote_file (str): The full path filename on the remote host.
+            local_file (str):  The full path filename on the local host.
+
+        Returns:
+            bool: The method return True on success and False in failure.
         """
-
         try:
             self.scpclient.get(remote_file, local_file, recursive=True)
         except (SCPException, SocketTimeout, PipeTimeout, SSHException) as e:
diff --git a/ffdc/plugins/scp_execution.py b/ffdc/plugins/scp_execution.py
index 302936f..c33d61f 100644
--- a/ffdc/plugins/scp_execution.py
+++ b/ffdc/plugins/scp_execution.py
@@ -21,14 +21,25 @@
 
 def scp_remote_file(hostname, username, password, filename, local_dir_path):
     r"""
-    Description of argument(s):
+    Copy a file from a remote host to the local host using SCP.
 
-    hostname        Name/IP of the remote (targeting) host
-    username        User on the remote host with access to files
-    password        Password for user on remote host
-    filename        Filename with full path on remote host
-                    Filename can contain wild cards for multiple files
-    local_dir_path  Location to store file on local host
+    This function copies a file from a remote host to the local host using the
+    SCP protocol. The function takes the remote host details (hostname,
+    username, password), the filename with its full path on the remote host,
+    and the local directory path as arguments.
+
+    The function uses wildcards to support copying multiple files if needed.
+
+    Parameters:
+        hostname (str):       Name or IP address of the remote host.
+        username (str):       User on the remote host with access to files.
+        password (str):       Password for the user on the remote host.
+        filename (str):       Filename with full path on the remote host.
+                              Can contain wildcards for multiple files.
+        local_dir_path (str): Location to store the file on the local host.
+
+    Returns:
+        None
     """
     ssh_remoteclient = SSHRemoteclient(hostname, username, password)
 
diff --git a/ffdc/plugins/ssh_execution.py b/ffdc/plugins/ssh_execution.py
index 3daa1be..4a35c23 100644
--- a/ffdc/plugins/ssh_execution.py
+++ b/ffdc/plugins/ssh_execution.py
@@ -23,15 +23,33 @@
     hostname, username, password, port_ssh, command, timeout=60, type=None
 ):
     r"""
-    Description of argument(s):
+    Execute a command on the remote host using SSH and return the output.
 
-    hostname        Name/IP of the remote (targeting) host
-    username        User on the remote host with access to FFCD files
-    password        Password for user on remote host
-    port_ssh        SSH port value. By default 22.
-    command         Command to run on remote host
-    timeout         Time, in second, to wait for command completion
-    type            Data type return as list or others.
+    This function executes a provided command on the remote host using SSH.
+    The function takes the remote host details (hostname, username, password,
+    and SSH port) and the command to be executed as arguments.
+
+    The function also accepts an optional timeout parameter, which specifies
+    the time in seconds to wait for the command to complete.
+
+    The function returns the output of the executed command as a string or
+    list
+
+    Parameters:
+        hostname (str):          Name or IP address of the remote host.
+        username (str):          User on the remote host.
+        password (str):          Password for the user on the remote host.
+        port_ssh (int):          SSH port value. By default, 22.
+        command (str):           The command to be executed on the remote host.
+        timeout (int, optional): The time in seconds to wait for the command
+                                 to complete. Defaults to 60 seconds.
+        type (str, optional):    The data type to return. If set to list,
+                                 the function returns a list of lines from the
+                                 command output. Defaults to None.
+
+    Returns:
+        str or list: The output of the executed command as a string or a list
+                     of lines, depending on the type parameter.
     """
     ssh_remoteclient = SSHRemoteclient(hostname, username, password, port_ssh)
 
