diff --git a/user_mgr.hpp b/user_mgr.hpp
index 6dcc898..559ab8b 100644
--- a/user_mgr.hpp
+++ b/user_mgr.hpp
@@ -200,6 +200,14 @@
      */
     uint32_t accountUnlockTimeout(uint32_t val) override;
 
+    /** @brief parses the faillock output for locked user status
+     *
+     * @param[in] - output from faillock for the user
+     * @return - true / false indicating user locked / un-locked
+     **/
+    bool
+        parseFaillockForLockout(const std::vector<std::string>& faillockOutput);
+
     /** @brief lists user locked state for failed attempt
      *
      * @param[in] - user name
@@ -259,6 +267,20 @@
     int getPamModuleArgValue(const std::string& moduleName,
                              const std::string& argName, std::string& argValue);
 
+    /** @brief get pam argument value
+     *  method to get argument value from pam configuration
+     *
+     *  @param[in] confFile - path of the module config file from where arg has
+     * to be read
+     *  @param[in] argName - argument name
+     *  @param[out] argValue - argument value
+     *
+     *  @return 0 - success state of the function
+     */
+    int getPamModuleConfValue(const std::string& confFile,
+                              const std::string& argName,
+                              std::string& argValue);
+
     /** @brief set pam argument value
      *  method to set argument value in pam configuration
      *
@@ -273,6 +295,20 @@
                              const std::string& argName,
                              const std::string& argValue);
 
+    /** @brief set pam argument value
+     *  method to set argument value in pam configuration
+     *
+     *  @param[in] confFile - path of the module config file in which argument
+     * value has to be set
+     *  @param[in] argName - argument name
+     *  @param[out] argValue - argument value
+     *
+     *  @return 0 - success state of the function
+     */
+    int setPamModuleConfValue(const std::string& confFile,
+                              const std::string& argName,
+                              const std::string& argValue);
+
     /** @brief check for user presence
      *  method to check for user existence
      *
@@ -452,7 +488,8 @@
     friend class TestUserMgr;
 
     std::string pamPasswdConfigFile;
-    std::string pamAuthConfigFile;
+    std::string faillockConfigFile;
+    std::string pwQualityConfigFile;
 };
 
 } // namespace user
