diff --git a/host-bmc/dbus_to_terminus_effecters.cpp b/host-bmc/dbus_to_terminus_effecters.cpp
index 5c2e0ee..0c27f95 100644
--- a/host-bmc/dbus_to_terminus_effecters.cpp
+++ b/host-bmc/dbus_to_terminus_effecters.cpp
@@ -67,6 +67,7 @@
     {
         EffecterInfo effecterInfo;
         effecterInfo.mctpEid = entry.value("mctp_eid", 0xFF);
+        effecterInfo.terminusName = entry.value("terminus_name", "");
         auto jsonEffecterInfo = entry.value("effecter_info", empty);
         auto effecterId =
             jsonEffecterInfo.value("effecterID", PLDM_INVALID_EFFECTER_ID);
@@ -469,7 +470,17 @@
     size_t effecterInfoIndex, uint16_t effecterId, uint8_t dataSize,
     double rawValue)
 {
+    std::string terminusName = hostEffecterInfo[effecterInfoIndex].terminusName;
     uint8_t& mctpEid = hostEffecterInfo[effecterInfoIndex].mctpEid;
+    if (!terminusName.empty())
+    {
+        auto tmpEid = platformManager->getActiveEidByName(terminusName);
+        if (tmpEid)
+        {
+            mctpEid = tmpEid.value();
+        }
+    }
+
     auto instanceId = instanceIdDb->next(mctpEid);
     int rc = PLDM_ERROR;
     std::vector<uint8_t> requestMsg;
@@ -597,7 +608,17 @@
     size_t effecterInfoIndex, std::vector<set_effecter_state_field>& stateField,
     uint16_t effecterId)
 {
+    std::string terminusName = hostEffecterInfo[effecterInfoIndex].terminusName;
     uint8_t& mctpEid = hostEffecterInfo[effecterInfoIndex].mctpEid;
+    if (!terminusName.empty())
+    {
+        auto tmpEid = platformManager->getActiveEidByName(terminusName);
+        if (tmpEid)
+        {
+            mctpEid = tmpEid.value();
+        }
+    }
+
     uint8_t& compEffCnt = hostEffecterInfo[effecterInfoIndex].compEffecterCnt;
     auto instanceId = instanceIdDb->next(mctpEid);
 
diff --git a/host-bmc/dbus_to_terminus_effecters.hpp b/host-bmc/dbus_to_terminus_effecters.hpp
index 038f869..962865c 100644
--- a/host-bmc/dbus_to_terminus_effecters.hpp
+++ b/host-bmc/dbus_to_terminus_effecters.hpp
@@ -3,6 +3,7 @@
 #include "common/instance_id.hpp"
 #include "common/types.hpp"
 #include "common/utils.hpp"
+#include "platform-mc/manager.hpp"
 #include "requester/handler.hpp"
 
 #include <phosphor-logging/lg2.hpp>
@@ -62,6 +63,7 @@
 struct EffecterInfo
 {
     uint8_t mctpEid;             //!< Host mctp eid
+    std::string terminusName;    //!< Terminus name
     uint8_t effecterPdrType;     //!< Effecter PDR type state/numeric
     uint16_t containerId;        //!< Container Id for host effecter
     uint16_t entityType;         //!< Entity type for the host effecter
@@ -102,9 +104,11 @@
         pldm::InstanceIdDb* instanceIdDb, int fd, const pldm_pdr* repo,
         pldm::utils::DBusHandler* const dbusHandler,
         const std::string& jsonPath,
-        pldm::requester::Handler<pldm::requester::Request>* handler) :
+        pldm::requester::Handler<pldm::requester::Request>* handler,
+        platform_mc::Manager* platformManager) :
         instanceIdDb(instanceIdDb), sockFd(fd), pdrRepo(repo),
-        dbusHandler(dbusHandler), handler(handler)
+        dbusHandler(dbusHandler), handler(handler),
+        platformManager(platformManager)
     {
         try
         {
@@ -245,6 +249,9 @@
     const pldm::utils::DBusHandler* dbusHandler; //!< D-bus Handler
     /** @brief PLDM request handler */
     pldm::requester::Handler<pldm::requester::Request>* handler;
+
+    /** @brief MC Platform manager*/
+    platform_mc::Manager* platformManager = nullptr;
 };
 
 } // namespace host_effecters
diff --git a/host-bmc/test/dbus_to_terminus_effecter_test.cpp b/host-bmc/test/dbus_to_terminus_effecter_test.cpp
index f8ff8d6..6b02074 100644
--- a/host-bmc/test/dbus_to_terminus_effecter_test.cpp
+++ b/host-bmc/test/dbus_to_terminus_effecter_test.cpp
@@ -15,7 +15,8 @@
     MockHostEffecterParser(int fd, const pldm_pdr* repo,
                            DBusHandler* const dbusHandler,
                            const std::string& jsonPath) :
-        HostEffecterParser(nullptr, fd, repo, dbusHandler, jsonPath, nullptr)
+        HostEffecterParser(nullptr, fd, repo, dbusHandler, jsonPath, nullptr,
+                           nullptr)
     {}
 
     MOCK_METHOD(int, setHostStateEffecter,
