diff --git a/extensions/openpower-pels/mtms.hpp b/extensions/openpower-pels/mtms.hpp
index 6b76ec7..928fb74 100644
--- a/extensions/openpower-pels/mtms.hpp
+++ b/extensions/openpower-pels/mtms.hpp
@@ -63,12 +63,22 @@
      *
      * @return std::array<uint8_t, mtmSize>&  - The TM value
      */
-    std::array<uint8_t, mtmSize>& machineTypeAndModelRaw()
+    const std::array<uint8_t, mtmSize>& machineTypeAndModelRaw() const
     {
         return _machineTypeAndModel;
     }
 
     /**
+     * @brief Sets the machine type and model field
+     *
+     * @param[in] mtm - The new value
+     */
+    void setMachineTypeAndModel(const std::array<uint8_t, mtmSize>& mtm)
+    {
+        _machineTypeAndModel = mtm;
+    }
+
+    /**
      * @brief Returns the machine type/model value
      *
      * @return std::string - The TM value
@@ -91,12 +101,22 @@
      *
      * @return std::array<uint8_t, snSize>& - The SN value
      */
-    std::array<uint8_t, snSize>& machineSerialNumberRaw()
+    const std::array<uint8_t, snSize>& machineSerialNumberRaw() const
     {
         return _serialNumber;
     }
 
     /**
+     * @brief Sets the machine serial number field
+     *
+     * @param[in] sn - The new value
+     */
+    void setMachineSerialNumber(const std::array<uint8_t, snSize>& sn)
+    {
+        _serialNumber = sn;
+    }
+
+    /**
      * @brief Returns the machine serial number value
      *
      * @return std::string - The SN value
@@ -157,7 +177,7 @@
  *
  * @return Stream&
  */
-Stream& operator<<(Stream& s, MTMS& mtms);
+Stream& operator<<(Stream& s, const MTMS& mtms);
 
 } // namespace pels
 } // namespace openpower
