diff --git a/command/channel_auth.cpp b/command/channel_auth.cpp
index ba101e4..1ca68ce 100644
--- a/command/channel_auth.cpp
+++ b/command/channel_auth.cpp
@@ -52,7 +52,7 @@
         reinterpret_cast<GetChannelCapabilitiesResp*>(outPayload.data());
 
     // A canned response, since there is no user and channel management.
-    response->completionCode = IPMI_CC_OK;
+    response->completionCode = ipmi::ccSuccess;
 
     response->channelNumber = chNum;
 
@@ -278,7 +278,7 @@
     auto size = end - start;
 
     std::vector<uint8_t> rsp;
-    rsp.push_back(IPMI_CC_OK);
+    rsp.push_back(ipmi::ccSuccess);
     rsp.push_back(rspChannel);
     std::copy_n(records.data() + start, size, std::back_inserter(rsp));
 
diff --git a/command/payload_cmds.cpp b/command/payload_cmds.cpp
index ea517e8..379b721 100644
--- a/command/payload_cmds.cpp
+++ b/command/payload_cmds.cpp
@@ -30,7 +30,7 @@
     auto response =
         reinterpret_cast<ActivatePayloadResponse*>(outPayload.data());
 
-    response->completionCode = IPMI_CC_OK;
+    response->completionCode = ipmi::ccSuccess;
 
     // SOL is the payload currently supported for activation.
     if (static_cast<uint8_t>(message::PayloadType::SOL) != request->payloadType)
@@ -73,7 +73,8 @@
     auto userId = ipmi::ipmiUserGetUserId(session->userName);
     ipmi::PayloadAccess payloadAccess = {};
     if ((ipmi::ipmiUserGetUserPayloadAccess(session->channelNum(), userId,
-                                            payloadAccess) != IPMI_CC_OK) ||
+                                            payloadAccess) !=
+         ipmi::ccSuccess) ||
         !(payloadAccess.stdPayloadEnables1[static_cast<uint8_t>(
             message::PayloadType::SOL)]))
     {
@@ -129,7 +130,7 @@
     std::vector<uint8_t> outPayload(sizeof(DeactivatePayloadResponse));
     auto response =
         reinterpret_cast<DeactivatePayloadResponse*>(outPayload.data());
-    response->completionCode = IPMI_CC_OK;
+    response->completionCode = ipmi::ccSuccess;
 
     // SOL is the payload currently supported for deactivation
     if (static_cast<uint8_t>(message::PayloadType::SOL) != request->payloadType)
@@ -224,7 +225,7 @@
         return outPayload;
     }
 
-    response->completionCode = IPMI_CC_OK;
+    response->completionCode = ipmi::ccSuccess;
 
     constexpr size_t maxSolPayloadInstances = 1;
     response->capacity = maxSolPayloadInstances;
@@ -274,7 +275,7 @@
         // No active payload - return session id as 0
         response->sessionID = 0;
     }
-    response->completionCode = IPMI_CC_OK;
+    response->completionCode = ipmi::ccSuccess;
     return outPayload;
 }
 
diff --git a/command/rakp12.cpp b/command/rakp12.cpp
index 5c674ac..2a9f4d0 100644
--- a/command/rakp12.cpp
+++ b/command/rakp12.cpp
@@ -223,10 +223,11 @@
 
     uint8_t chNum = static_cast<uint8_t>(getInterfaceIndex());
     // Get channel based access information
-    if ((ipmi::ipmiUserGetPrivilegeAccess(
-             userId, chNum, session->sessionUserPrivAccess) != IPMI_CC_OK) ||
+    if ((ipmi::ipmiUserGetPrivilegeAccess(userId, chNum,
+                                          session->sessionUserPrivAccess) !=
+         ipmi::ccSuccess) ||
         (ipmi::getChannelAccessData(chNum, session->sessionChannelAccess) !=
-         IPMI_CC_OK))
+         ipmi::ccSuccess))
     {
         response->rmcpStatusCode =
             static_cast<uint8_t>(RAKP_ReturnCode::INACTIVE_ROLE);
diff --git a/command/session_cmds.cpp b/command/session_cmds.cpp
index 5ee7f8f..3604736 100644
--- a/command/session_cmds.cpp
+++ b/command/session_cmds.cpp
@@ -36,7 +36,7 @@
     std::vector<uint8_t> outPayload(sizeof(SetSessionPrivLevelResp));
     auto response =
         reinterpret_cast<SetSessionPrivLevelResp*>(outPayload.data());
-    response->completionCode = IPMI_CC_OK;
+    response->completionCode = ipmi::ccSuccess;
     uint8_t reqPrivilegeLevel = request->reqPrivLevel;
 
     auto session = session::Manager::get().getSession(handler->sessionID);
