diff --git a/sol_module.cpp b/sol_module.cpp
new file mode 100644
index 0000000..174f58f
--- /dev/null
+++ b/sol_module.cpp
@@ -0,0 +1,59 @@
+#include "command/sol_cmds.hpp"
+#include "command/payload_cmds.hpp"
+#include "command_table.hpp"
+#include "main.hpp"
+#include "session.hpp"
+
+namespace sol
+{
+
+namespace command
+{
+
+void registerCommands()
+{
+    static const ::command::CmdDetails commands[] =
+    {
+        // SOL Payload Handler
+        {
+            {(static_cast<uint32_t>(message::PayloadType::SOL) << 16)},
+            &payloadHandler, session::Privilege::HIGHEST_MATCHING,
+            false
+        },
+        // Activate Payload Command
+        {
+            {
+                (static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
+                static_cast<uint16_t>(::command::NetFns::APP) | 0x48
+            },
+            &activatePayload, session::Privilege::USER, false
+        },
+        // Deactivate Payload Command
+        {
+            {
+                (static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
+                static_cast<uint16_t>(::command::NetFns::APP) | 0x49
+            },
+            &deactivatePayload, session::Privilege::USER, false
+        },
+        // Get Payload Activation Status
+        {
+            {
+                (static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
+                static_cast<uint16_t>(::command::NetFns::APP) | 0x4A
+            },
+            &getPayloadStatus, session::Privilege::USER, false
+        },
+    };
+
+    for (const auto& iter : commands)
+    {
+        std::get<::command::Table&>(singletonPool).registerCommand(
+            iter.command, std::make_unique<::command::NetIpmidEntry>
+            (iter.command, iter.functor, iter.privilege, iter.sessionless));
+    }
+}
+
+} // namespace command
+
+} // namespace sol
