diff --git a/src/trigger_actions.cpp b/src/trigger_actions.cpp
index 89ddfcc..c840422 100644
--- a/src/trigger_actions.cpp
+++ b/src/trigger_actions.cpp
@@ -1,6 +1,7 @@
 #include "trigger_actions.hpp"
 
 #include "messages/update_report_ind.hpp"
+#include "types/trigger_types.hpp"
 #include "utils/messanger.hpp"
 
 #include <phosphor-logging/log.hpp>
@@ -42,26 +43,10 @@
     throw std::runtime_error("Invalid value");
 }
 
-const char* LogToJournal::getType() const
-{
-    switch (type)
-    {
-        case ::numeric::Type::upperCritical:
-            return "UpperCritical";
-        case ::numeric::Type::lowerCritical:
-            return "LowerCritical";
-        case ::numeric::Type::upperWarning:
-            return "UpperWarning";
-        case ::numeric::Type::lowerWarning:
-            return "LowerWarning";
-    }
-    throw std::runtime_error("Invalid type");
-}
-
 void LogToJournal::commit(const std::string& sensorName, Milliseconds timestamp,
                           double value)
 {
-    std::string msg = std::string(getType()) +
+    std::string msg = ::numeric::typeToString(type) +
                       " numeric threshold condition is met on sensor " +
                       sensorName + ", recorded value " + std::to_string(value) +
                       ", timestamp " + timestampToString(timestamp) +
@@ -135,24 +120,10 @@
 
 namespace discrete
 {
-const char* LogToJournal::getSeverity() const
-{
-    switch (severity)
-    {
-        case ::discrete::Severity::ok:
-            return "OK";
-        case ::discrete::Severity::warning:
-            return "Warning";
-        case ::discrete::Severity::critical:
-            return "Critical";
-    }
-    throw std::runtime_error("Invalid severity");
-}
-
 void LogToJournal::commit(const std::string& sensorName, Milliseconds timestamp,
                           double value)
 {
-    std::string msg = std::string(getSeverity()) +
+    std::string msg = ::discrete::severityToString(severity) +
                       " discrete threshold condition is met on sensor " +
                       sensorName + ", recorded value " + std::to_string(value) +
                       ", timestamp " + timestampToString(timestamp);
diff --git a/src/trigger_actions.hpp b/src/trigger_actions.hpp
index cca4bb9..fdf07fe 100644
--- a/src/trigger_actions.hpp
+++ b/src/trigger_actions.hpp
@@ -22,8 +22,6 @@
   private:
     ::numeric::Type type;
     double threshold;
-
-    const char* getType() const;
 };
 
 class LogToRedfish : public interfaces::TriggerAction
@@ -62,8 +60,6 @@
 
   private:
     ::discrete::Severity severity;
-
-    const char* getSeverity() const;
 };
 
 class LogToRedfish : public interfaces::TriggerAction
diff --git a/tests/src/test_trigger_actions.cpp b/tests/src/test_trigger_actions.cpp
index d3e36b8..911197f 100644
--- a/tests/src/test_trigger_actions.cpp
+++ b/tests/src/test_trigger_actions.cpp
@@ -60,8 +60,7 @@
 
 TEST_P(TestLogToJournalNumericThrow, commitAnActionExpectThrow)
 {
-    EXPECT_THROW(sut->commit("Test", Milliseconds{100'000}, commmitValue),
-                 std::runtime_error);
+    EXPECT_ANY_THROW(sut->commit("Test", Milliseconds{100'000}, commmitValue));
 }
 
 class TestLogToRedfishNumeric : public Test, public WithParamInterface<LogParam>
@@ -145,8 +144,7 @@
 
 TEST_P(TestLogToJournalDiscreteThrow, commitAnActionExpectThrow)
 {
-    EXPECT_THROW(sut->commit("Test", Milliseconds{100'000}, 90.0),
-                 std::runtime_error);
+    EXPECT_ANY_THROW(sut->commit("Test", Milliseconds{100'000}, 90.0));
 }
 
 class TestLogToRedfishDiscrete :
