diff --git a/platform-mc/terminus_manager.cpp b/platform-mc/terminus_manager.cpp
index 406c70a..d90b6cf 100644
--- a/platform-mc/terminus_manager.cpp
+++ b/platform-mc/terminus_manager.cpp
@@ -186,8 +186,10 @@
 exec::task<int> TerminusManager::discoverMctpTerminusTask()
 {
     std::vector<pldm_tid_t> addedTids;
+
     while (!queuedMctpInfos.empty())
     {
+        bool terminusInitFailed = false;
         if (manager)
         {
             co_await manager->beforeDiscoverTerminus();
@@ -200,15 +202,30 @@
             if (it == termini.end())
             {
                 mctpInfoAvailTable[mctpInfo] = true;
-                co_await initMctpTerminus(mctpInfo);
+                auto rc = co_await initMctpTerminus(mctpInfo);
+                if (rc != PLDM_SUCCESS)
+                {
+                    lg2::error(
+                        "Failed to initialize terminus with EID {EID}, networkId {NETWORK}, response code {RC}.",
+                        "EID", std::get<0>(mctpInfo), "NETWORK",
+                        std::get<3>(mctpInfo), "RC", rc);
+                    mctpInfoAvailTable.erase(mctpInfo);
+                    terminusInitFailed = true;
+                    continue;
+                }
             }
 
             /* Get TID of initialized terminus */
             auto tid = toTid(mctpInfo);
             if (!tid)
             {
+                lg2::error(
+                    "Failed to get TID for terminus with EID {EID}, networkId {NETWORK}.",
+                    "EID", std::get<0>(mctpInfo), "NETWORK",
+                    std::get<3>(mctpInfo));
                 mctpInfoAvailTable.erase(mctpInfo);
-                co_return PLDM_ERROR;
+                terminusInitFailed = true;
+                continue;
             }
             addedTids.push_back(tid.value());
         }
@@ -218,6 +235,11 @@
             co_await manager->afterDiscoverTerminus();
         }
 
+        if (terminusInitFailed)
+        {
+            co_return PLDM_ERROR;
+        }
+
         queuedMctpInfos.pop();
     }
 
