diff --git a/dbus-sdr/sensorcommands.cpp b/dbus-sdr/sensorcommands.cpp
index 19ba192..bd96ea2 100644
--- a/dbus-sdr/sensorcommands.cpp
+++ b/dbus-sdr/sensorcommands.cpp
@@ -1904,8 +1904,8 @@
 
     // populate sensor name from path
     auto name = sensor::parseSdrIdFromPath(path);
-    get_sdr::body::set_id_strlen(name.size(), record.body);
-    get_sdr::body::set_id_type(3, record.body); // "8-bit ASCII + Latin 1"
+    get_sdr::body::setIdStrLen(name.size(), record.body);
+    get_sdr::body::setIdType(3, record.body); // "8-bit ASCII + Latin 1"
     std::memcpy(record.body.idString, name.c_str(),
                 std::min(name.length() + 1, sizeof(record.body.idString)));
 
@@ -1920,7 +1920,7 @@
         sensorSettable =
             mappedVariant<bool>(mutability->second, "Mutable", false);
     }
-    get_sdr::body::init_settable_state(sensorSettable, record.body);
+    get_sdr::body::initSettableState(sensorSettable, record.body);
 
     // Grant write permission to sensors deemed externally settable
     details::sdrWriteTable.setWritePermission(sensorNum, sensorSettable);
@@ -2007,7 +2007,7 @@
     if (ipmi::sensor::Mutability::Write ==
         (sensor->second.mutability & ipmi::sensor::Mutability::Write))
     {
-        get_sdr::body::init_settable_state(true, record.body);
+        get_sdr::body::initSettableState(true, record.body);
     }
 
     auto idString = sensor->second.sensorName;
@@ -2019,16 +2019,15 @@
 
     if (idString.length() > FULL_RECORD_ID_STR_MAX_LENGTH)
     {
-        get_sdr::body::set_id_strlen(FULL_RECORD_ID_STR_MAX_LENGTH,
-                                     record.body);
+        get_sdr::body::setIdStrLen(FULL_RECORD_ID_STR_MAX_LENGTH, record.body);
     }
     else
     {
-        get_sdr::body::set_id_strlen(idString.length(), record.body);
+        get_sdr::body::setIdStrLen(idString.length(), record.body);
     }
-    get_sdr::body::set_id_type(3, &record.body); // "8-bit ASCII + Latin 1"
+    get_sdr::body::setIdType(3, &record.body); // "8-bit ASCII + Latin 1"
     std::strncpy(record.body.idString, idString.c_str(),
-                 get_sdr::body::get_id_strlen(record.body));
+                 get_sdr::body::setIdStrLen(record.body));
 }
 #endif
 
@@ -2088,8 +2087,8 @@
     // populate sensor name from path
     auto name = sensor::parseSdrIdFromPath(path);
     int nameSize = std::min(name.size(), sizeof(record.body.idString));
-    get_sdr::body::set_id_strlen(nameSize, record.body);
-    get_sdr::body::set_id_type(3, record.body); // "8-bit ASCII + Latin 1"
+    get_sdr::body::setIdStrLen(nameSize, record.body);
+    get_sdr::body::setIdType(3, record.body); // "8-bit ASCII + Latin 1"
     std::memset(record.body.idString, 0x00, sizeof(record.body.idString));
     std::memcpy(record.body.idString, name.c_str(), nameSize);
 
