diff --git a/phosphor-regulators/src/configuration.cpp b/phosphor-regulators/src/configuration.cpp
new file mode 100644
index 0000000..99245ca
--- /dev/null
+++ b/phosphor-regulators/src/configuration.cpp
@@ -0,0 +1,77 @@
+/**
+ * Copyright © 2020 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "configuration.hpp"
+
+#include "action_environment.hpp"
+#include "action_utils.hpp"
+#include "chassis.hpp"
+#include "device.hpp"
+#include "exception_utils.hpp"
+#include "journal.hpp"
+#include "rail.hpp"
+#include "system.hpp"
+
+#include <exception>
+
+namespace phosphor::power::regulators
+{
+
+void Configuration::execute(System& system, Chassis& chassis, Device& device)
+{
+    execute(system, chassis, device, device.getID());
+}
+
+void Configuration::execute(System& system, Chassis& chassis, Device& device,
+                            Rail& rail)
+{
+    execute(system, chassis, device, rail.getID());
+}
+
+void Configuration::execute(System& system, Chassis& /*chassis*/,
+                            Device& device, const std::string& deviceOrRailID)
+{
+    try
+    {
+        // Log debug message in journal
+        std::string message{"Configuring " + deviceOrRailID};
+        if (volts.has_value())
+        {
+            message += ": volts=" + std::to_string(volts.value());
+        }
+        journal::logDebug(message);
+
+        // Create ActionEnvironment
+        ActionEnvironment environment{system.getIDMap(), device.getID()};
+        if (volts.has_value())
+        {
+            environment.setVolts(volts.value());
+        }
+
+        // Execute the actions
+        action_utils::execute(actions, environment);
+    }
+    catch (const std::exception& e)
+    {
+        // Log error messages in journal
+        exception_utils::log(e);
+        journal::logErr("Unable to configure " + deviceOrRailID);
+
+        // TODO: Create error log entry
+    }
+}
+
+} // namespace phosphor::power::regulators
diff --git a/phosphor-regulators/src/configuration.hpp b/phosphor-regulators/src/configuration.hpp
index 4e2e4ed..3534419 100644
--- a/phosphor-regulators/src/configuration.hpp
+++ b/phosphor-regulators/src/configuration.hpp
@@ -19,12 +19,19 @@
 
 #include <memory>
 #include <optional>
+#include <string>
 #include <utility>
 #include <vector>
 
 namespace phosphor::power::regulators
 {
 
+// Forward declarations to avoid circular dependencies
+class Chassis;
+class Device;
+class Rail;
+class System;
+
 /**
  * @class Configuration
  *
@@ -70,13 +77,29 @@
     }
 
     /**
-     * Executes the actions to configure the device/rail.
+     * Executes the actions to configure the specified device.
+     *
+     * This method should be called during the boot before regulators are
+     * enabled.
+     *
+     * @param system system that contains the chassis
+     * @param chassis chassis that contains the device
+     * @param device device to configure
      */
-    void execute()
-    {
-        // TODO: Create ActionEnvironment, set volts value if specified, execute
-        // actions, catch and handle any exceptions
-    }
+    void execute(System& system, Chassis& chassis, Device& device);
+
+    /**
+     * Executes the actions to configure the specified rail.
+     *
+     * This method should be called during the boot before regulators are
+     * enabled.
+     *
+     * @param system system that contains the chassis
+     * @param chassis chassis that contains the device
+     * @param device device that contains the rail
+     * @param rail rail to configure
+     */
+    void execute(System& system, Chassis& chassis, Device& device, Rail& rail);
 
     /**
      * Returns the actions that configure the device/rail.
@@ -100,6 +123,17 @@
 
   private:
     /**
+     * Executes the actions to configure a device or rail.
+     *
+     * @param system system that contains the chassis
+     * @param chassis chassis that contains the device
+     * @param device device to configure or that contains rail to configure
+     * @param deviceOrRailID ID of the device or rail to configure
+     */
+    void execute(System& system, Chassis& chassis, Device& device,
+                 const std::string& deviceOrRailID);
+
+    /**
      * Optional output voltage value.
      */
     const std::optional<double> volts{};
diff --git a/phosphor-regulators/src/meson.build b/phosphor-regulators/src/meson.build
index d8616f6..98449fb 100644
--- a/phosphor-regulators/src/meson.build
+++ b/phosphor-regulators/src/meson.build
@@ -6,6 +6,7 @@
 phosphor_regulators_library_source_files = [
     'chassis.cpp',
     'config_file_parser.cpp',
+    'configuration.cpp',
     'device.cpp',
     'exception_utils.cpp',
     'id_map.cpp',
