diff --git a/phosphor-ldap-mapper/ldap_mapper_entry.cpp b/phosphor-ldap-mapper/ldap_mapper_entry.cpp
index 781833e..a22984f 100644
--- a/phosphor-ldap-mapper/ldap_mapper_entry.cpp
+++ b/phosphor-ldap-mapper/ldap_mapper_entry.cpp
@@ -1,14 +1,18 @@
-#include <filesystem>
-#include <xyz/openbmc_project/Common/error.hpp>
-#include <xyz/openbmc_project/User/Common/error.hpp>
-#include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog.hpp>
-#include <phosphor-logging/elog-errors.hpp>
 #include "config.h"
+
 #include "ldap_mapper_entry.hpp"
+
 #include "ldap_mapper_mgr.hpp"
 #include "ldap_mapper_serialize.hpp"
 
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/elog.hpp>
+#include <phosphor-logging/log.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
+#include <xyz/openbmc_project/User/Common/error.hpp>
+
+#include <filesystem>
+
 namespace phosphor
 {
 namespace user
@@ -19,11 +23,11 @@
     sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
 using Argument = xyz::openbmc_project::Common::InvalidArgument;
 
-LDAPMapperEntry::LDAPMapperEntry(sdbusplus::bus::bus &bus, const char *path,
-                                 const char *filePath,
-                                 const std::string &groupName,
-                                 const std::string &privilege,
-                                 LDAPMapperMgr &parent) :
+LDAPMapperEntry::LDAPMapperEntry(sdbusplus::bus::bus& bus, const char* path,
+                                 const char* filePath,
+                                 const std::string& groupName,
+                                 const std::string& privilege,
+                                 LDAPMapperMgr& parent) :
     Ifaces(bus, path, true),
     id(std::stol(std::filesystem::path(path).filename())), manager(parent),
     persistPath(filePath)
@@ -33,13 +37,12 @@
     Ifaces::emit_object_added();
 }
 
-LDAPMapperEntry::LDAPMapperEntry(sdbusplus::bus::bus &bus, const char *path,
-                                 const char *filePath, LDAPMapperMgr &parent) :
+LDAPMapperEntry::LDAPMapperEntry(sdbusplus::bus::bus& bus, const char* path,
+                                 const char* filePath, LDAPMapperMgr& parent) :
     Ifaces(bus, path, true),
     id(std::stol(std::filesystem::path(path).filename())), manager(parent),
     persistPath(filePath)
-{
-}
+{}
 
 void LDAPMapperEntry::delete_(void)
 {
diff --git a/phosphor-ldap-mapper/ldap_mapper_entry.hpp b/phosphor-ldap-mapper/ldap_mapper_entry.hpp
index dea85c2..bb45aa3 100644
--- a/phosphor-ldap-mapper/ldap_mapper_entry.hpp
+++ b/phosphor-ldap-mapper/ldap_mapper_entry.hpp
@@ -2,8 +2,8 @@
 
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
-#include <xyz/openbmc_project/User/PrivilegeMapperEntry/server.hpp>
 #include <xyz/openbmc_project/Object/Delete/server.hpp>
+#include <xyz/openbmc_project/User/PrivilegeMapperEntry/server.hpp>
 
 namespace phosphor
 {
@@ -30,10 +30,10 @@
   public:
     LDAPMapperEntry() = delete;
     ~LDAPMapperEntry() = default;
-    LDAPMapperEntry(const LDAPMapperEntry &) = delete;
-    LDAPMapperEntry &operator=(const LDAPMapperEntry &) = delete;
-    LDAPMapperEntry(LDAPMapperEntry &&) = default;
-    LDAPMapperEntry &operator=(LDAPMapperEntry &&) = default;
+    LDAPMapperEntry(const LDAPMapperEntry&) = delete;
+    LDAPMapperEntry& operator=(const LDAPMapperEntry&) = delete;
+    LDAPMapperEntry(LDAPMapperEntry&&) = default;
+    LDAPMapperEntry& operator=(LDAPMapperEntry&&) = default;
 
     /** @brief Constructs LDAP privilege mapper entry object.
      *
@@ -44,9 +44,9 @@
      *  @param[in] privilege - the privilege for the group
      *  @param[in] parent - LDAP privilege mapper manager
      */
-    LDAPMapperEntry(sdbusplus::bus::bus &bus, const char *path,
-                    const char *filePath, const std::string &groupName,
-                    const std::string &privilege, LDAPMapperMgr &parent);
+    LDAPMapperEntry(sdbusplus::bus::bus& bus, const char* path,
+                    const char* filePath, const std::string& groupName,
+                    const std::string& privilege, LDAPMapperMgr& parent);
 
     /** @brief Constructs LDAP privilege mapper entry object
      *
@@ -55,8 +55,8 @@
      *  @param[in] filePath - serialization directory path
      *  @param[in] parent - LDAP privilege mapper manager
      */
-    LDAPMapperEntry(sdbusplus::bus::bus &bus, const char *path,
-                    const char *filePath, LDAPMapperMgr &parent);
+    LDAPMapperEntry(sdbusplus::bus::bus& bus, const char* path,
+                    const char* filePath, LDAPMapperMgr& parent);
 
     /** @brief Delete privilege mapper entry object
      *
@@ -88,7 +88,7 @@
 
   private:
     Id id;
-    LDAPMapperMgr &manager;
+    LDAPMapperMgr& manager;
 
     /** @brief serialization directory path */
     std::string persistPath;
diff --git a/phosphor-ldap-mapper/ldap_mapper_mgr.cpp b/phosphor-ldap-mapper/ldap_mapper_mgr.cpp
index b8d755b..3a383f6 100644
--- a/phosphor-ldap-mapper/ldap_mapper_mgr.cpp
+++ b/phosphor-ldap-mapper/ldap_mapper_mgr.cpp
@@ -1,12 +1,16 @@
-#include <filesystem>
+#include "config.h"
+
+#include "ldap_mapper_mgr.hpp"
+
+#include "ldap_mapper_serialize.hpp"
+
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/elog.hpp>
+#include <phosphor-logging/log.hpp>
 #include <xyz/openbmc_project/Common/error.hpp>
 #include <xyz/openbmc_project/User/Common/error.hpp>
-#include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog.hpp>
-#include <phosphor-logging/elog-errors.hpp>
-#include "config.h"
-#include "ldap_mapper_mgr.hpp"
-#include "ldap_mapper_serialize.hpp"
+
+#include <filesystem>
 
 namespace phosphor
 {
@@ -20,12 +24,11 @@
 using PrivilegeMappingExists = sdbusplus::xyz::openbmc_project::User::Common::
     Error::PrivilegeMappingExists;
 
-LDAPMapperMgr::LDAPMapperMgr(sdbusplus::bus::bus &bus, const char *path,
-                             const char *filePath) :
+LDAPMapperMgr::LDAPMapperMgr(sdbusplus::bus::bus& bus, const char* path,
+                             const char* filePath) :
     MapperMgrIface(bus, path),
     bus(bus), path(path), persistPath(filePath)
-{
-}
+{}
 
 ObjectPath LDAPMapperMgr::create(std::string groupName, std::string privilege)
 {
@@ -60,7 +63,7 @@
     PrivilegeMapperList.erase(id);
 }
 
-void LDAPMapperMgr::checkPrivilegeMapper(const std::string &groupName)
+void LDAPMapperMgr::checkPrivilegeMapper(const std::string& groupName)
 {
     if (groupName.empty())
     {
@@ -69,7 +72,7 @@
                               Argument::ARGUMENT_VALUE("Null"));
     }
 
-    for (const auto &val : PrivilegeMapperList)
+    for (const auto& val : PrivilegeMapperList)
     {
         if (val.second.get()->groupName() == groupName)
         {
@@ -79,7 +82,7 @@
     }
 }
 
-void LDAPMapperMgr::checkPrivilegeLevel(const std::string &privilege)
+void LDAPMapperMgr::checkPrivilegeLevel(const std::string& privilege)
 {
     if (privilege.empty())
     {
@@ -104,7 +107,7 @@
         return;
     }
 
-    for (auto &file : std::filesystem::directory_iterator(dir))
+    for (auto& file : std::filesystem::directory_iterator(dir))
     {
         std::string id = file.path().filename().c_str();
         size_t idNum = std::stol(id);
diff --git a/phosphor-ldap-mapper/ldap_mapper_mgr.hpp b/phosphor-ldap-mapper/ldap_mapper_mgr.hpp
index 88e4f26..3792f0a 100644
--- a/phosphor-ldap-mapper/ldap_mapper_mgr.hpp
+++ b/phosphor-ldap-mapper/ldap_mapper_mgr.hpp
@@ -1,9 +1,11 @@
 #pragma once
 
+#include "ldap_mapper_entry.hpp"
+
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
-#include "ldap_mapper_entry.hpp"
 #include <xyz/openbmc_project/User/PrivilegeMapper/server.hpp>
+
 #include <map>
 #include <set>
 
@@ -29,10 +31,10 @@
   public:
     LDAPMapperMgr() = delete;
     ~LDAPMapperMgr() = default;
-    LDAPMapperMgr(const LDAPMapperMgr &) = delete;
-    LDAPMapperMgr &operator=(const LDAPMapperMgr &) = delete;
-    LDAPMapperMgr(LDAPMapperMgr &&) = delete;
-    LDAPMapperMgr &operator=(LDAPMapperMgr &&) = delete;
+    LDAPMapperMgr(const LDAPMapperMgr&) = delete;
+    LDAPMapperMgr& operator=(const LDAPMapperMgr&) = delete;
+    LDAPMapperMgr(LDAPMapperMgr&&) = delete;
+    LDAPMapperMgr& operator=(LDAPMapperMgr&&) = delete;
 
     /** @brief Constructs LDAPMapperMgr object.
      *
@@ -40,8 +42,8 @@
      *  @param[in] path - D-Bus path
      *  @param[in] filePath - serialization directory path
      */
-    LDAPMapperMgr(sdbusplus::bus::bus &bus, const char *path,
-                  const char *filePath);
+    LDAPMapperMgr(sdbusplus::bus::bus& bus, const char* path,
+                  const char* filePath);
 
     /** @brief Creates a mapping for the group to the privilege
      *
@@ -72,7 +74,7 @@
      *
      *  @return throw exception if the conditions are not met.
      */
-    void checkPrivilegeMapper(const std::string &groupName);
+    void checkPrivilegeMapper(const std::string& groupName);
 
     /** @brief Check if the privilege level is a valid one
      *
@@ -80,7 +82,7 @@
      *
      *  @return throw exception if the conditions are not met.
      */
-    void checkPrivilegeLevel(const std::string &privilege);
+    void checkPrivilegeLevel(const std::string& privilege);
 
     /** @brief Construct LDAP mapper entry D-Bus objects from their persisted
      *         representations.
@@ -89,7 +91,7 @@
 
   private:
     /** @brief sdbusplus handler */
-    sdbusplus::bus::bus &bus;
+    sdbusplus::bus::bus& bus;
 
     /** @brief object path for the manager object*/
     const std::string path;
diff --git a/phosphor-ldap-mapper/ldap_mapper_serialize.cpp b/phosphor-ldap-mapper/ldap_mapper_serialize.cpp
index 65918fd..b0124c2 100644
--- a/phosphor-ldap-mapper/ldap_mapper_serialize.cpp
+++ b/phosphor-ldap-mapper/ldap_mapper_serialize.cpp
@@ -1,10 +1,13 @@
+#include "config.h"
+
+#include "ldap_mapper_serialize.hpp"
+
 #include <cereal/archives/binary.hpp>
 #include <cereal/types/string.hpp>
-#include <fstream>
-#include <filesystem>
 #include <phosphor-logging/log.hpp>
-#include "config.h"
-#include "ldap_mapper_serialize.hpp"
+
+#include <filesystem>
+#include <fstream>
 
 // Register class version
 // From cereal documentation;
diff --git a/phosphor-ldap-mapper/ldap_mapper_serialize.hpp b/phosphor-ldap-mapper/ldap_mapper_serialize.hpp
index 7d918d8..f306ada 100644
--- a/phosphor-ldap-mapper/ldap_mapper_serialize.hpp
+++ b/phosphor-ldap-mapper/ldap_mapper_serialize.hpp
@@ -1,9 +1,11 @@
 #pragma once
 
-#include <filesystem>
 #include "config.h"
+
 #include "ldap_mapper_entry.hpp"
 
+#include <filesystem>
+
 namespace phosphor
 {
 namespace user
diff --git a/phosphor-ldap-mapper/main.cpp b/phosphor-ldap-mapper/main.cpp
index 1833a6a..0ccf85c 100644
--- a/phosphor-ldap-mapper/main.cpp
+++ b/phosphor-ldap-mapper/main.cpp
@@ -1,8 +1,10 @@
-#include <string>
-#include <filesystem>
 #include "config.h"
+
 #include "ldap_mapper_mgr.hpp"
 
+#include <filesystem>
+#include <string>
+
 int main(int argc, char** argv)
 {
     auto bus = sdbusplus::bus::new_default();
