diff --git a/tests/src/mocks/trigger_factory_mock.hpp b/tests/src/mocks/trigger_factory_mock.hpp
index 3682a46..3df567e 100644
--- a/tests/src/mocks/trigger_factory_mock.hpp
+++ b/tests/src/mocks/trigger_factory_mock.hpp
@@ -15,15 +15,15 @@
     {
         using namespace testing;
 
-        ON_CALL(*this, make(A<const std::string&>(), _, _, _, _, _, _, _, _, _))
+        ON_CALL(*this, make(A<const std::string&>(), _, _, _, _, _, _))
             .WillByDefault(WithArgs<0>(Invoke([](const std::string& name) {
                 return std::make_unique<NiceMock<TriggerMock>>(name);
             })));
     }
 
     MOCK_METHOD(std::unique_ptr<interfaces::Trigger>, make,
-                (const std::string& name, bool isDiscrete, bool logToJournal,
-                 bool logToRedfish, bool updateReport,
+                (const std::string& name,
+                 const std::vector<std::string>& triggerActions,
                  const std::vector<std::string>& reportNames,
                  interfaces::TriggerManager& triggerManager,
                  interfaces::JsonStorage& triggerStorage,
@@ -53,11 +53,9 @@
                 .WillByDefault(Return(params.sensors()));
 
             return EXPECT_CALL(
-                *this,
-                make(params.name(), params.isDiscrete(), params.logToJournal(),
-                     params.logToRedfish(), params.updateReport(),
-                     params.reportNames(), tm, triggerStorage,
-                     params.thresholdParams(), params.sensors()));
+                *this, make(params.name(), params.triggerActions(),
+                            params.reportNames(), tm, triggerStorage,
+                            params.thresholdParams(), params.sensors()));
         }
         else
         {
@@ -69,8 +67,8 @@
             ON_CALL(*this, getLabeledSensorsInfo(_, _))
                 .WillByDefault(Return(dummy));
 
-            return EXPECT_CALL(
-                *this, make(_, _, _, _, _, _, tm, triggerStorage, _, dummy));
+            return EXPECT_CALL(*this,
+                               make(_, _, _, tm, triggerStorage, _, dummy));
         }
     }
 };
diff --git a/tests/src/params/trigger_params.hpp b/tests/src/params/trigger_params.hpp
index 753cbb1..f2cac0e 100644
--- a/tests/src/params/trigger_params.hpp
+++ b/tests/src/params/trigger_params.hpp
@@ -22,36 +22,15 @@
         return nameProperty;
     }
 
-    TriggerParams& isDiscrete(bool val)
+    TriggerParams& triggerActions(const std::vector<std::string>& val)
     {
-        discreteProperty = val;
+        triggerActionsProperty = val;
         return *this;
     }
 
-    bool isDiscrete() const
+    const std::vector<std::string>& triggerActions() const
     {
-        return discreteProperty;
-    }
-
-    bool logToJournal() const
-    {
-        return logToJournalProperty;
-    }
-
-    bool logToRedfish() const
-    {
-        return logToRedfishProperty;
-    }
-
-    TriggerParams& updateReport(bool updateReport)
-    {
-        updateReportProperty = updateReport;
-        return *this;
-    }
-
-    bool updateReport() const
-    {
-        return updateReportProperty;
+        return triggerActionsProperty;
     }
 
     const std::vector<LabeledSensorInfo>& sensors() const
@@ -77,10 +56,8 @@
 
   private:
     std::string nameProperty = "Trigger1";
-    bool discreteProperty = false;
-    bool logToJournalProperty = false;
-    bool logToRedfishProperty = false;
-    bool updateReportProperty = true;
+    std::vector<std::string> triggerActionsProperty = {"UpdateReport"};
+
     std::vector<LabeledSensorInfo> labeledSensorsProperty = {
         {"service1", "/xyz/openbmc_project/sensors/temperature/BMC_Temp",
          "metadata1"}};
diff --git a/tests/src/test_trigger.cpp b/tests/src/test_trigger.cpp
index 7529017..3a9004f 100644
--- a/tests/src/test_trigger.cpp
+++ b/tests/src/test_trigger.cpp
@@ -23,7 +23,6 @@
     TriggerParams triggerDiscreteParams =
         TriggerParams()
             .name("Trigger2")
-            .isDiscrete(true)
             .thresholdParams(std::vector<discrete::LabeledThresholdParam>{
                 discrete::LabeledThresholdParam{
                     "userId", discrete::Severity::warning,
@@ -56,8 +55,7 @@
     {
         return std::make_unique<Trigger>(
             DbusEnvironment::getIoc(), DbusEnvironment::getObjServer(),
-            params.name(), params.isDiscrete(), params.logToJournal(),
-            params.logToRedfish(), params.updateReport(), params.reportNames(),
+            params.name(), params.triggerActions(), params.reportNames(),
             params.sensors(), params.thresholdParams(),
             std::vector<std::shared_ptr<interfaces::Threshold>>{},
             *triggerManagerMockPtr, storageMock);
@@ -122,14 +120,9 @@
 TEST_F(TestTrigger, checkIfPropertiesAreSet)
 {
     EXPECT_THAT(getProperty<bool>(sut->getPath(), "Persistent"), Eq(true));
-    EXPECT_THAT(getProperty<bool>(sut->getPath(), "Discrete"),
-                Eq(triggerParams.isDiscrete()));
-    EXPECT_THAT(getProperty<bool>(sut->getPath(), "LogToJournal"),
-                Eq(triggerParams.logToJournal()));
-    EXPECT_THAT(getProperty<bool>(sut->getPath(), "LogToRedfish"),
-                Eq(triggerParams.logToRedfish()));
-    EXPECT_THAT(getProperty<bool>(sut->getPath(), "UpdateReport"),
-                Eq(triggerParams.updateReport()));
+    EXPECT_THAT(
+        getProperty<std::vector<std::string>>(sut->getPath(), "TriggerActions"),
+        Eq(triggerParams.triggerActions()));
     EXPECT_THAT((getProperty<SensorsInfo>(sut->getPath(), "Sensors")),
                 Eq(utils::fromLabeledSensorsInfo(triggerParams.sensors())));
     EXPECT_THAT(
@@ -274,28 +267,10 @@
     ASSERT_THAT(storedConfiguration.at("Name"), Eq(triggerParams.name()));
 }
 
-TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerIsDiscrete)
+TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerTriggerActions)
 {
-    ASSERT_THAT(storedConfiguration.at("IsDiscrete"),
-                Eq(triggerParams.isDiscrete()));
-}
-
-TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerLogToJournal)
-{
-    ASSERT_THAT(storedConfiguration.at("LogToJournal"),
-                Eq(triggerParams.logToRedfish()));
-}
-
-TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerLogToRedfish)
-{
-    ASSERT_THAT(storedConfiguration.at("LogToRedfish"),
-                Eq(triggerParams.logToRedfish()));
-}
-
-TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerUpdateReport)
-{
-    ASSERT_THAT(storedConfiguration.at("UpdateReport"),
-                Eq(triggerParams.updateReport()));
+    ASSERT_THAT(storedConfiguration.at("TriggerActions"),
+                Eq(triggerParams.triggerActions()));
 }
 
 TEST_F(TestTriggerStore, settingPersistencyToTrueStoresTriggerReportNames)
diff --git a/tests/src/test_trigger_manager.cpp b/tests/src/test_trigger_manager.cpp
index 704c497..540bcbc 100644
--- a/tests/src/test_trigger_manager.cpp
+++ b/tests/src/test_trigger_manager.cpp
@@ -29,8 +29,7 @@
             },
             DbusEnvironment::serviceName(), TriggerManager::triggerManagerPath,
             TriggerManager::triggerManagerIfaceName, "AddTrigger",
-            params.name(), params.isDiscrete(), params.logToJournal(),
-            params.logToRedfish(), params.updateReport(), sensorInfos,
+            params.name(), params.triggerActions(), sensorInfos,
             params.reportNames(),
             std::visit(utils::FromLabeledThresholdParamConversion(),
                        params.thresholdParams()));
@@ -80,7 +79,7 @@
         {"discrete_threshold2", discrete::Severity::warning, 10, "12.0"},
         {"discrete_threshold3", discrete::Severity::critical, 10, "13.0"}};
 
-    triggerParamsDiscrete.thresholdParams(thresholds).isDiscrete(true);
+    triggerParamsDiscrete.thresholdParams(thresholds);
 
     auto [ec, path] = addTrigger(triggerParamsDiscrete);
     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
@@ -92,7 +91,7 @@
     TriggerParams triggerParamsDiscrete;
     auto thresholds = std::vector<discrete::LabeledThresholdParam>();
 
-    triggerParamsDiscrete.thresholdParams(thresholds).isDiscrete(true);
+    triggerParamsDiscrete.thresholdParams(thresholds);
 
     auto [ec, path] = addTrigger(triggerParamsDiscrete);
     EXPECT_THAT(ec.value(), Eq(boost::system::errc::success));
@@ -203,10 +202,7 @@
         {"Name", TriggerParams().name()},
         {"ThresholdParamsDiscriminator",
          TriggerParams().thresholdParams().index()},
-        {"IsDiscrete", TriggerParams().isDiscrete()},
-        {"LogToJournal", TriggerParams().logToJournal()},
-        {"LogToRedfish", TriggerParams().logToRedfish()},
-        {"UpdateReport", TriggerParams().updateReport()},
+        {"TriggerActions", TriggerParams().triggerActions()},
         {"ThresholdParams", utils::labeledThresholdParamsToJson(
                                 TriggerParams().thresholdParams())},
         {"ReportNames", TriggerParams().reportNames()},
