diff --git a/snmp_conf_manager.cpp b/snmp_conf_manager.cpp
index b523c5d..52f4678 100644
--- a/snmp_conf_manager.cpp
+++ b/snmp_conf_manager.cpp
@@ -31,7 +31,8 @@
 
 std::string ConfManager::client(std::string address, uint16_t port)
 {
-    // TODO: Check whether the given manager is already there or not.
+    // will throw exception if it is already configured.
+    checkClientConfigured(address, port);
 
     lastClientId++;
     try
@@ -62,6 +63,31 @@
     return objPath.string();
 }
 
+void ConfManager::checkClientConfigured(const std::string& address,
+                                        uint16_t port)
+{
+    if (address.empty())
+    {
+        log<level::ERR>("Invalid address");
+        elog<InvalidArgument>(Argument::ARGUMENT_NAME("ADDRESS"),
+                              Argument::ARGUMENT_VALUE(address.c_str()));
+    }
+
+    for (const auto& val : clients)
+    {
+        if (val.second.get()->address() == address &&
+            val.second.get()->port() == port)
+        {
+            log<level::ERR>("Client already exist");
+            // TODO Add the error(Object already exist) in the D-Bus interface
+            // then make the change here,meanwhile send the Internal Failure.
+            elog<InvalidArgument>(
+                Argument::ARGUMENT_NAME("ADDRESS"),
+                Argument::ARGUMENT_VALUE("Client already exist."));
+        }
+    }
+}
+
 void ConfManager::deleteSNMPClient(Id id)
 {
     auto it = clients.find(id);
diff --git a/snmp_conf_manager.hpp b/snmp_conf_manager.hpp
index f477b31..de9e486 100644
--- a/snmp_conf_manager.hpp
+++ b/snmp_conf_manager.hpp
@@ -63,6 +63,15 @@
      */
     void restoreClients();
 
+    /** @brief Check if client is already configured or not.
+     *
+     *  @param[in] address - SNMP manager address.
+     *  @param[in] port -    SNMP manager port.
+     *
+     *  @return throw exception if client is already configured.
+     */
+    void checkClientConfigured(const std::string& address, uint16_t port);
+
     /** @brief location of the persisted D-Bus object.*/
     fs::path dbusPersistentLocation;
 
diff --git a/test/test_snmp_conf_manager.cpp b/test/test_snmp_conf_manager.cpp
index f6111f7..6cb2a53 100644
--- a/test/test_snmp_conf_manager.cpp
+++ b/test/test_snmp_conf_manager.cpp
@@ -13,6 +13,8 @@
 {
 
 auto managerObjPath = "/xyz/openbmc_test/snmp/manager";
+using InvalidArgument =
+    sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
 
 class TestSNMPConfManager : public testing::Test
 {
@@ -103,6 +105,13 @@
     EXPECT_EQ(true, isClientExist("192.168.1.2"));
 }
 
+// Add duplicate SNMP client
+TEST_F(TestSNMPConfManager, AddDuplicateSNMPClient)
+{
+    createSNMPClient("192.168.1.1", 24);
+    EXPECT_THROW(createSNMPClient("192.168.1.1", 24), InvalidArgument);
+}
+
 // Delete SNMP client
 TEST_F(TestSNMPConfManager, DeleteSNMPClient)
 {
