diff --git a/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.cpp b/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.cpp
index fbea444e9d44008407703fe7b7f8b007179726b6..ab894ea641252b3500e7aaef285dde6b65dd0534 100644
--- a/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.cpp
+++ b/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.cpp
@@ -26,6 +26,18 @@ namespace armarx::armem::ltm
         return true;
     }
 
+    void Memory::defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string& prefix)
+    {
+        defs->optional(dbsettings.host, prefix + ".ltm.10_host");
+        defs->optional(dbsettings.port, prefix + "ltm.11_port");
+        defs->optional(dbsettings.user, prefix + "ltm.20_user");
+        defs->optional(dbsettings.password, prefix + "ltm.21_password");
+        defs->optional(dbsettings.database, prefix + "ltm.22_database");
+        defs->optional(alwaysTransferSettings.enabled, prefix + "ltm.30_enableAlwaysTransfer", "Enable transfer whenever new data is committed (This disables the other transfer modes!).");
+        defs->optional(periodicTransferSettings.enabled, prefix + "ltm.31_enablePeriodicTransfer", "Enable transfer based on periodic interval.");
+        defs->optional(onFullTransferSettings.enabled, prefix + "ltm.32_enableOnFullTransfer", "Enable transfer whenever the wm is full (see maxHistorySize).");
+    }
+
     wm::Memory Memory::convert() const
     {
         if (!checkConnection())
diff --git a/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.h b/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.h
index 86c00cc618e23620540428ba3b024743ecc272ee..a11404eca5dba8c7eb965e6fb4da8042ae234327 100644
--- a/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.h
+++ b/source/RobotAPI/libraries/armem/core/longtermmemory/Memory.h
@@ -1,11 +1,18 @@
 #pragma once
 
+// BaseClass
 #include "../base/MemoryBase.h"
 
+// CoreSegment
 #include "CoreSegment.h"
 
+// WM
 #include "../workingmemory/Memory.h"
 
+// Properties
+#include <ArmarXCore/core/application/properties/PluginAll.h>
+#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h>
+
 namespace armarx::armem::ltm
 {
     /**
@@ -21,29 +28,35 @@ namespace armarx::armem::ltm
         using Base::MemoryBase;
         using Base::operator=;
 
-        enum class PeriodicTransferMode
+        struct TransferSettings
         {
-            MANUAL,
-            TRANSFER_PERIODIC_KEEP,
-            TRANSFER_PERIODIC_DELETE,
+            bool enabled = false;
         };
 
-        enum class FilledTransferMode
+        struct AlwaysTransferSettings : public TransferSettings
         {
-            TRANSFER_LATEST,
-            TRANSFER_LEAST_USED
+
         };
 
-        struct PeriodicTransfer
+        struct PeriodicTransferSettings : public TransferSettings
         {
-            PeriodicTransferMode mode = PeriodicTransferMode::MANUAL;
+            bool deleteFromWMOnTransfer = false;
+            int frequencyHz = 1;
         };
 
-        struct FilledTransfer
+        struct OnFullTransferSettings : public TransferSettings
         {
-            FilledTransferMode mode = FilledTransferMode::TRANSFER_LATEST;
+            enum class Mode
+            {
+                TRANSFER_LATEST,
+                TRANSFER_LEAST_USED
+            };
+
+            Mode mode;
         };
 
+        // PropertyDefinitions related to LTM
+        void defineProperties(armarx::PropertyDefinitionsPtr defs, const std::string& prefix = "");
 
         // Conversion
         wm::Memory convert() const;
@@ -71,7 +84,10 @@ namespace armarx::armem::ltm
     public:
         MongoDBConnectionManager::MongoDBSettings dbsettings;
 
-        PeriodicTransfer periodic_transfer;
-        FilledTransferMode filled_transfer;
+        AlwaysTransferSettings alwaysTransferSettings;
+        PeriodicTransferSettings periodicTransferSettings;
+        OnFullTransferSettings onFullTransferSettings;
+
+
     };
 }
diff --git a/source/RobotAPI/libraries/armem/server/ComponentPlugin.cpp b/source/RobotAPI/libraries/armem/server/ComponentPlugin.cpp
index ddb1a96a79fefe069c3edaae44c53a211fc97e30..8c814a160b49b0367cece67d407b986ac4d372e5 100644
--- a/source/RobotAPI/libraries/armem/server/ComponentPlugin.cpp
+++ b/source/RobotAPI/libraries/armem/server/ComponentPlugin.cpp
@@ -22,12 +22,8 @@ namespace armarx::armem::server::plugins
         ComponentPluginUser& parent = this->parent<ComponentPluginUser>();
         properties->topic(memoryListener, parent.memoryListenerDefaultName);
 
-        properties->optional(parent.longtermMemoryEnabled, "ltm.00_enabled");
-        properties->optional(parent.longtermMemory.dbsettings.host, "ltm.10_host");
-        properties->optional(parent.longtermMemory.dbsettings.port, "ltm.11_port");
-        properties->optional(parent.longtermMemory.dbsettings.user, "ltm.20_user");
-        properties->optional(parent.longtermMemory.dbsettings.password, "ltm.21_password");
-        properties->optional(parent.longtermMemory.dbsettings.database, "ltm.22_database");
+        properties->optional(parent.longtermMemoryEnabled, "memory.ltm.00_enabled");
+        parent.longtermMemory.defineProperties(properties, "memory");
     }
 
 
diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
index c40805a0f8a79413eb33418154a18194be6a22ba..b8634f385021c9c22ba9dea22d8592a19271767e 100644
--- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
+++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
@@ -172,7 +172,22 @@ namespace armarx::armem::server
                 result.snapshotID = updateResult.id;
                 result.timeArrived = update.timeArrived;
 
-                // TODO: Add if and param here (fabian.peller)
+                // also store in ltm if transfermode is set to always
+                if (longtermMemory)
+                {
+                    if (longtermMemory->alwaysTransferSettings.enabled)
+                    {
+                        wm::Memory tmp("tmp");
+                        tmp.update(update);
+                        longtermMemory->append(tmp);
+                    }
+                    else
+                    {
+                        // TODO: see below
+                    }
+                }
+
+                // TODO: Consollidate to ltm if onFilledTransfer is enabled (fabian.peller)
                 for (const auto& snapshot : updateResult.removedSnapshots)
                 {
                     ARMARX_DEBUG << "The id " << snapshot.id() << " was removed from wm";