diff --git a/src/manufacturingcommands.cpp b/src/manufacturingcommands.cpp
index 7ed7506..9f16d95 100644
--- a/src/manufacturingcommands.cpp
+++ b/src/manufacturingcommands.cpp
@@ -1033,7 +1033,8 @@
 
 static ipmi::RspType<> startOrStopService(ipmi::Context::ptr& ctx,
                                           const uint8_t enable,
-                                          const std::string& serviceName)
+                                          const std::string& serviceName,
+                                          bool disableOrEnableUnitFiles = true)
 {
     constexpr bool runtimeOnly = false;
     constexpr bool force = false;
@@ -1052,26 +1053,33 @@
                                         "StartUnit", serviceName, "replace");
             break;
         case ipmi::SupportedFeatureActions::disable:
+            if (disableOrEnableUnitFiles == true)
+            {
+                ctx->bus->yield_method_call(
+                    ctx->yield, ec, systemDService, systemDObjPath,
+                    systemDMgrIntf, "DisableUnitFiles",
+                    std::array<const char*, 1>{serviceName.c_str()},
+                    runtimeOnly);
+            }
             ctx->bus->yield_method_call(
                 ctx->yield, ec, systemDService, systemDObjPath, systemDMgrIntf,
                 "MaskUnitFiles",
                 std::array<const char*, 1>{serviceName.c_str()}, runtimeOnly,
                 force);
-            ctx->bus->yield_method_call(
-                ctx->yield, ec, systemDService, systemDObjPath, systemDMgrIntf,
-                "DisableUnitFiles",
-                std::array<const char*, 1>{serviceName.c_str()}, runtimeOnly);
             break;
         case ipmi::SupportedFeatureActions::enable:
             ctx->bus->yield_method_call(
                 ctx->yield, ec, systemDService, systemDObjPath, systemDMgrIntf,
                 "UnmaskUnitFiles",
                 std::array<const char*, 1>{serviceName.c_str()}, runtimeOnly);
-            ctx->bus->yield_method_call(
-                ctx->yield, ec, systemDService, systemDObjPath, systemDMgrIntf,
-                "EnableUnitFiles",
-                std::array<const char*, 1>{serviceName.c_str()}, runtimeOnly,
-                force);
+            if (disableOrEnableUnitFiles == true)
+            {
+                ctx->bus->yield_method_call(
+                    ctx->yield, ec, systemDService, systemDObjPath,
+                    systemDMgrIntf, "EnableUnitFiles",
+                    std::array<const char*, 1>{serviceName.c_str()},
+                    runtimeOnly, force);
+            }
             break;
         default:
             phosphor::logging::log<phosphor::logging::level::WARNING>(
@@ -1121,7 +1129,7 @@
         if (binding == objectPath.substr(pos + 1))
         {
             return startOrStopService(ctx, enable,
-                                      getMCTPServiceName(objectPath));
+                                      getMCTPServiceName(objectPath), false);
         }
     }
     return ipmi::responseSuccess();
