diff --git a/src/core/hle/service/olsc/olsc.cpp b/src/core/hle/service/olsc/olsc.cpp
index 14ba67b4c..889f27c31 100644
--- a/src/core/hle/service/olsc/olsc.cpp
+++ b/src/core/hle/service/olsc/olsc.cpp
@@ -8,15 +8,16 @@
 
 namespace Service::OLSC {
 
-class OLSC final : public ServiceFramework<OLSC> {
+class IOlscServiceForApplication final : public ServiceFramework<IOlscServiceForApplication> {
 public:
-    explicit OLSC(Core::System& system_) : ServiceFramework{system_, "olsc:u"} {
+    explicit IOlscServiceForApplication(Core::System& system_)
+        : ServiceFramework{system_, "olsc:u"} {
         // clang-format off
         static const FunctionInfo functions[] = {
-            {0, &OLSC::Initialize, "Initialize"},
+            {0, &IOlscServiceForApplication::Initialize, "Initialize"},
             {10, nullptr, "VerifySaveDataBackupLicenseAsync"},
-            {13, &OLSC::GetSaveDataBackupSetting, "GetSaveDataBackupSetting"},
-            {14, &OLSC::SetSaveDataBackupSettingEnabled, "SetSaveDataBackupSettingEnabled"},
+            {13, &IOlscServiceForApplication::GetSaveDataBackupSetting, "GetSaveDataBackupSetting"},
+            {14, &IOlscServiceForApplication::SetSaveDataBackupSettingEnabled, "SetSaveDataBackupSettingEnabled"},
             {15, nullptr, "SetCustomData"},
             {16, nullptr, "DeleteSaveDataBackupSetting"},
             {18, nullptr, "GetSaveDataBackupInfoCache"},
@@ -72,10 +73,155 @@ private:
     bool initialized{};
 };
 
+class INativeHandleHolder final : public ServiceFramework<INativeHandleHolder> {
+public:
+    explicit INativeHandleHolder(Core::System& system_)
+        : ServiceFramework{system_, "INativeHandleHolder"} {
+        // clang-format off
+        static const FunctionInfo functions[] = {
+            {0, nullptr, "GetNativeHandle"},
+        };
+        // clang-format on
+
+        RegisterHandlers(functions);
+    }
+};
+
+class ITransferTaskListController final : public ServiceFramework<ITransferTaskListController> {
+public:
+    explicit ITransferTaskListController(Core::System& system_)
+        : ServiceFramework{system_, "ITransferTaskListController"} {
+        // clang-format off
+        static const FunctionInfo functions[] = {
+            {0, nullptr, "Unknown0"},
+            {1, nullptr, "Unknown1"},
+            {2, nullptr, "Unknown2"},
+            {3, nullptr, "Unknown3"},
+            {4, nullptr, "Unknown4"},
+            {5, &ITransferTaskListController::GetNativeHandleHolder , "GetNativeHandleHolder"},
+            {6, nullptr, "Unknown6"},
+            {7, nullptr, "Unknown7"},
+            {8, nullptr, "GetRemoteStorageController"},
+            {9, &ITransferTaskListController::GetNativeHandleHolder, "GetNativeHandleHolder2"},
+            {10, nullptr, "Unknown10"},
+            {11, nullptr, "Unknown11"},
+            {12, nullptr, "Unknown12"},
+            {13, nullptr, "Unknown13"},
+            {14, nullptr, "Unknown14"},
+            {15, nullptr, "Unknown15"},
+            {16, nullptr, "Unknown16"},
+            {17, nullptr, "Unknown17"},
+            {18, nullptr, "Unknown18"},
+            {19, nullptr, "Unknown19"},
+            {20, nullptr, "Unknown20"},
+            {21, nullptr, "Unknown21"},
+            {22, nullptr, "Unknown22"},
+            {23, nullptr, "Unknown23"},
+            {24, nullptr, "Unknown24"},
+            {25, nullptr, "Unknown25"},
+        };
+        // clang-format on
+
+        RegisterHandlers(functions);
+    }
+
+private:
+    void GetNativeHandleHolder(HLERequestContext& ctx) {
+        LOG_INFO(Service_OLSC, "called");
+
+        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+        rb.Push(ResultSuccess);
+        rb.PushIpcInterface<INativeHandleHolder>(system);
+    }
+};
+
+class IOlscServiceForSystemService final : public ServiceFramework<IOlscServiceForSystemService> {
+public:
+    explicit IOlscServiceForSystemService(Core::System& system_)
+        : ServiceFramework{system_, "olsc:s"} {
+        // clang-format off
+        static const FunctionInfo functions[] = {
+            {0, &IOlscServiceForSystemService::OpenTransferTaskListController, "OpenTransferTaskListController"},
+            {1, nullptr, "OpenRemoteStorageController"},
+            {2, nullptr, "OpenDaemonController"},
+            {10, nullptr, "Unknown10"},
+            {11, nullptr, "Unknown11"},
+            {12, nullptr, "Unknown12"},
+            {13, nullptr, "Unknown13"},
+            {100, nullptr, "ListLastTransferTaskErrorInfo"},
+            {101, nullptr, "GetLastErrorInfoCount"},
+            {102, nullptr, "RemoveLastErrorInfoOld"},
+            {103, nullptr, "GetLastErrorInfo"},
+            {104, nullptr, "GetLastErrorEventHolder"},
+            {105, nullptr, "GetLastTransferTaskErrorInfo"},
+            {200, nullptr, "GetDataTransferPolicyInfo"},
+            {201, nullptr, "RemoveDataTransferPolicyInfo"},
+            {202, nullptr, "UpdateDataTransferPolicyOld"},
+            {203, nullptr, "UpdateDataTransferPolicy"},
+            {204, nullptr, "CleanupDataTransferPolicyInfo"},
+            {205, nullptr, "RequestDataTransferPolicy"},
+            {300, nullptr, "GetAutoTransferSeriesInfo"},
+            {301, nullptr, "UpdateAutoTransferSeriesInfo"},
+            {400, nullptr, "CleanupSaveDataArchiveInfoType1"},
+            {900, nullptr, "CleanupTransferTask"},
+            {902, nullptr, "CleanupSeriesInfoType0"},
+            {903, nullptr, "CleanupSaveDataArchiveInfoType0"},
+            {904, nullptr, "CleanupApplicationAutoTransferSetting"},
+            {905, nullptr, "CleanupErrorHistory"},
+            {906, nullptr, "SetLastError"},
+            {907, nullptr, "AddSaveDataArchiveInfoType0"},
+            {908, nullptr, "RemoveSeriesInfoType0"},
+            {909, nullptr, "GetSeriesInfoType0"},
+            {910, nullptr, "RemoveLastErrorInfo"},
+            {911, nullptr, "CleanupSeriesInfoType1"},
+            {912, nullptr, "RemoveSeriesInfoType1"},
+            {913, nullptr, "GetSeriesInfoType1"},
+            {1000, nullptr, "UpdateIssueOld"},
+            {1010, nullptr, "Unknown1010"},
+            {1011, nullptr, "ListIssueInfoOld"},
+            {1012, nullptr, "GetIssueOld"},
+            {1013, nullptr, "GetIssue2Old"},
+            {1014, nullptr, "GetIssue3Old"},
+            {1020, nullptr, "RepairIssueOld"},
+            {1021, nullptr, "RepairIssueWithUserIdOld"},
+            {1022, nullptr, "RepairIssue2Old"},
+            {1023, nullptr, "RepairIssue3Old"},
+            {1024, nullptr, "Unknown1024"},
+            {1100, nullptr, "UpdateIssue"},
+            {1110, nullptr, "Unknown1110"},
+            {1111, nullptr, "ListIssueInfo"},
+            {1112, nullptr, "GetIssue"},
+            {1113, nullptr, "GetIssue2"},
+            {1114, nullptr, "GetIssue3"},
+            {1120, nullptr, "RepairIssue"},
+            {1121, nullptr, "RepairIssueWithUserId"},
+            {1122, nullptr, "RepairIssue2"},
+            {1123, nullptr, "RepairIssue3"},
+            {1124, nullptr, "Unknown1124"},
+        };
+        // clang-format on
+
+        RegisterHandlers(functions);
+    }
+
+private:
+    void OpenTransferTaskListController(HLERequestContext& ctx) {
+        LOG_INFO(Service_OLSC, "called");
+
+        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+        rb.Push(ResultSuccess);
+        rb.PushIpcInterface<ITransferTaskListController>(system);
+    }
+};
+
 void LoopProcess(Core::System& system) {
     auto server_manager = std::make_unique<ServerManager>(system);
 
-    server_manager->RegisterNamedService("olsc:u", std::make_shared<OLSC>(system));
+    server_manager->RegisterNamedService("olsc:u",
+                                         std::make_shared<IOlscServiceForApplication>(system));
+    server_manager->RegisterNamedService("olsc:s",
+                                         std::make_shared<IOlscServiceForSystemService>(system));
+
     ServerManager::RunServer(std::move(server_manager));
 }