diff --git a/include/biccommands.hpp b/include/biccommands.hpp
index 1520702..44d0e76 100644
--- a/include/biccommands.hpp
+++ b/include/biccommands.hpp
@@ -6,6 +6,7 @@
     CMD_OEM_SEND_POST_BUFFER_TO_BMC = 0x8,
     CMD_OEM_SET_HOST_POWER_STATE = 0x0C,
     CMD_OEM_GET_FLASH_SIZE = 0x19,
+    CMD_OEM_CLEAR_CMOS = 0x25,
 };
 
 // Flash size response length
diff --git a/src/biccommands.cpp b/src/biccommands.cpp
index 91416ad..e0bb322 100644
--- a/src/biccommands.cpp
+++ b/src/biccommands.cpp
@@ -262,6 +262,50 @@
     return ipmi::responseSuccess(ianaResp, flashResp);
 }
 
+//----------------------------------------------------------------------
+// ipmiOemClearCmos (CMD_OEM_CLEAR_CMOS)
+// This Function will clear the CMOS.
+// netfn=0x38 and cmd=0x25
+//----------------------------------------------------------------------
+ipmi::RspType<IanaType> ipmiOemClearCmos(ipmi::Context::ptr ctx,
+                                         IanaType ianaReq)
+{
+    if (iana != ianaReq)
+    {
+        phosphor::logging::log<phosphor::logging::level::ERR>(
+            "Invalid request of IANA ID length received");
+        return ipmi::responseReqDataLenInvalid();
+    }
+
+    uint8_t bicAddr = (uint8_t)ctx->hostIdx << 2;
+
+    std::vector<uint8_t> respData;
+    std::vector<uint8_t> reqData(ianaReq.begin(), ianaReq.end());
+
+    if (sendBicCmd(ctx->netFn, ctx->cmd, bicAddr, reqData, respData))
+    {
+        return ipmi::responseUnspecifiedError();
+    }
+
+    if (respData.size() != iana.size())
+    {
+        return ipmi::responseReqDataLenInvalid();
+    }
+
+    IanaType resp;
+    std::copy_n(respData.begin(), resp.size(), resp.begin());
+
+    if (iana != resp)
+    {
+        phosphor::logging::log<phosphor::logging::level::ERR>(
+            "Invalid response of IANA ID received");
+        return ipmi::responseUnspecifiedError();
+    }
+
+    // sending the success response.
+    return ipmi::responseSuccess(resp);
+}
+
 [[maybe_unused]] static void registerBICFunctions(void)
 {
 
@@ -286,6 +330,9 @@
     ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnOemFive,
                           static_cast<Cmd>(fb_bic_cmds::CMD_OEM_GET_FLASH_SIZE),
                           ipmi::Privilege::User, ipmiOemGetBiosFlashSize);
+    ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnOemFive,
+                          static_cast<Cmd>(fb_bic_cmds::CMD_OEM_CLEAR_CMOS),
+                          ipmi::Privilege::User, ipmiOemClearCmos);
     return;
 }
 
