diff --git a/platform-mc/dbus_to_terminus_effecters.cpp b/platform-mc/dbus_to_terminus_effecters.cpp
index 0c27f95..594e3c4 100644
--- a/platform-mc/dbus_to_terminus_effecters.cpp
+++ b/platform-mc/dbus_to_terminus_effecters.cpp
@@ -481,7 +481,13 @@
         }
     }
 
-    auto instanceId = instanceIdDb->next(mctpEid);
+    auto instanceIdResult =
+        pldm::utils::getInstanceId(instanceIdDb->next(mctpEid));
+    if (!instanceIdResult)
+    {
+        return PLDM_ERROR;
+    }
+    auto instanceId = instanceIdResult.value();
     int rc = PLDM_ERROR;
     std::vector<uint8_t> requestMsg;
 
@@ -620,7 +626,13 @@
     }
 
     uint8_t& compEffCnt = hostEffecterInfo[effecterInfoIndex].compEffecterCnt;
-    auto instanceId = instanceIdDb->next(mctpEid);
+    auto instanceIdResult =
+        pldm::utils::getInstanceId(instanceIdDb->next(mctpEid));
+    if (!instanceIdResult)
+    {
+        return PLDM_ERROR;
+    }
+    auto instanceId = instanceIdResult.value();
 
     std::vector<uint8_t> requestMsg(
         sizeof(pldm_msg_hdr) + sizeof(effecterId) + sizeof(compEffCnt) +
diff --git a/platform-mc/terminus_manager.cpp b/platform-mc/terminus_manager.cpp
index d90b6cf..bd77fe6 100644
--- a/platform-mc/terminus_manager.cpp
+++ b/platform-mc/terminus_manager.cpp
@@ -464,7 +464,12 @@
 
 exec::task<int> TerminusManager::getTidOverMctp(mctp_eid_t eid, pldm_tid_t* tid)
 {
-    auto instanceId = instanceIdDb.next(eid);
+    auto instanceIdResult = pldm::utils::getInstanceId(instanceIdDb.next(eid));
+    if (!instanceIdResult)
+    {
+        co_return PLDM_ERROR;
+    }
+    auto instanceId = instanceIdResult.value();
     Request request(sizeof(pldm_msg_hdr));
     auto requestMsg = new (request.data()) pldm_msg;
     auto rc = encode_get_tid_req(instanceId, requestMsg);
@@ -510,7 +515,12 @@
 
 exec::task<int> TerminusManager::setTidOverMctp(mctp_eid_t eid, pldm_tid_t tid)
 {
-    auto instanceId = instanceIdDb.next(eid);
+    auto instanceIdResult = pldm::utils::getInstanceId(instanceIdDb.next(eid));
+    if (!instanceIdResult)
+    {
+        co_return PLDM_ERROR;
+    }
+    auto instanceId = instanceIdResult.value();
     Request request(sizeof(pldm_msg_hdr) + sizeof(pldm_set_tid_req));
     auto requestMsg = new (request.data()) pldm_msg;
     auto rc = encode_set_tid_req(instanceId, tid, requestMsg);
@@ -684,7 +694,12 @@
 
     auto eid = std::get<0>(mctpInfo.value());
     auto requestMsg = new (request.data()) pldm_msg;
-    requestMsg->hdr.instance_id = instanceIdDb.next(eid);
+    auto instanceIdResult = pldm::utils::getInstanceId(instanceIdDb.next(eid));
+    if (!instanceIdResult)
+    {
+        co_return PLDM_ERROR;
+    }
+    requestMsg->hdr.instance_id = instanceIdResult.value();
     auto rc = co_await sendRecvPldmMsgOverMctp(eid, request, responseMsg,
                                                responseLen);
 
