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);
 
