diff --git a/src/CaosDB.jl b/src/CaosDB.jl
index b81fd4669dd3ea346f1819bf7bba98125ad3f03d..a3812ea254853e72e2276704a1c0174e5ff6c266 100644
--- a/src/CaosDB.jl
+++ b/src/CaosDB.jl
@@ -75,7 +75,9 @@ export append_parent,
     set_datatype,
     set_unit,
     set_value,
-    set_importance
+    set_importance,
+    set_local_path,
+    set_remote_path
 
 # helper functions
 export has_errors, has_warnings
@@ -83,6 +85,10 @@ export has_errors, has_warnings
 # Exports from module Transaction
 export create_transaction,
     add_retrieve_by_id,
+    add_insert_entity,
+    add_update_entity,
+    add_delete_by_id,
+    add_retrieve_and_download_file_by_id,
     add_query,
     execute,
     get_result_set,
diff --git a/src/Entity.jl b/src/Entity.jl
index 119729b789b6eca53d4ea0414b2c8f67d022d95c..6fa2c7ec8e24cc0622f3f0265e74b032a04d623e 100644
--- a/src/Entity.jl
+++ b/src/Entity.jl
@@ -62,7 +62,9 @@ export append_parent,
     set_datatype,
     set_unit,
     set_value,
-    set_importance
+    set_importance,
+    set_local_path,
+    set_remote_path
 
 # helper functions
 export has_errors, has_warnings
@@ -1733,6 +1735,39 @@ function set_importance(property::Ref{_Property}, importance::AbstractString)
 
     CaosDB.Exceptions.evaluate_return_code(err_code)
 end
+"""
+    function set_local_path(entity::Ref{_Entity}, path::AbstractString)
+
+Set the local path of the given `entity` object.
+"""
+function set_local_path(entity::Ref{_Entity}, path::AbstractString)
+    err_code = ccall(
+        (:caosdb_entity_entity_set_local_path, CaosDB.library_name),
+        Cint,
+        (Ref{_Entity}, Cstring),
+        entity,
+        path,
+    )
+
+    CaosDB.Exceptions.evaluate_return_code(err_code)
+end
+
+"""
+    function set_remote_path(entity::Ref{_Entity}, path::AbstractString)
+
+Set the remote file path of the given `entity` object.
+"""
+function set_remote_path(entity::Ref{_Entity}, path::AbstractString)
+    err_code = ccall(
+        (:caosdb_entity_entity_set_file_path, CaosDB.library_name),
+        Cint,
+        (Ref{_Entity}, Cstring),
+        entity,
+        path,
+    )
+
+    CaosDB.Exceptions.evaluate_return_code(err_code)
+end
 
 """
     function append_parent(entity::Ref{_Entity}, parent::Ref{_Parent})
diff --git a/src/Transaction.jl b/src/Transaction.jl
index 2308048d9c5f5955d0ba933cb061dc9561c6d702..a84588c412a2b0cc1a324e7e1169fb1a3e05f7a6 100644
--- a/src/Transaction.jl
+++ b/src/Transaction.jl
@@ -26,6 +26,10 @@ module Transaction
 export create_transaction,
     add_retrieve_by_id,
     add_query,
+    add_insert_entity,
+    add_update_entity,
+    add_delete_by_id,
+    add_retrieve_and_download_file_by_id,
     execute,
     get_result_set,
     get_count_result,
@@ -137,6 +141,76 @@ function add_retrieve_by_id(transaction::Ref{_Transaction}, id::AbstractString)
     CaosDB.Exceptions.evaluate_return_code(err_code)
 end
 
+"""
+    function add_insert_entity(transaction::Ref{_Transaction}, entity::Ref{_CaosDB.Entity.Entity})
+
+Add a sub-request to insert a single entity to the given `transaction`.
+
+!!! info
+
+    This does not execute the transaction.
+"""
+function add_insert_entity(
+    transaction::Ref{_Transaction},
+    entity::Ref{CaosDB.Entity._Entity},
+)
+
+    err_code = ccall(
+        (:caosdb_transaction_transaction_insert_entity, CaosDB.library_name),
+        Cint,
+        (Ref{_Transaction}, Ref{CaosDB.Entity._Entity}),
+        transaction,
+        entity,
+    )
+
+    CaosDB.Exceptions.evaluate_return_code(err_code)
+end
+"""
+    function add_update_entity(transaction::Ref{_Transaction}, entity::Ref{_CaosDB.Entity.Entity})
+
+Add a sub-request to update a single entity to the given `transaction`.
+
+!!! info
+
+    This does not execute the transaction.
+"""
+function add_update_entity(
+    transaction::Ref{_Transaction},
+    entity::Ref{CaosDB.Entity._Entity},
+)
+
+    err_code = ccall(
+        (:caosdb_transaction_transaction_update_entity, CaosDB.library_name),
+        Cint,
+        (Ref{_Transaction}, Ref{CaosDB.Entity._Entity}),
+        transaction,
+        entity,
+    )
+
+    CaosDB.Exceptions.evaluate_return_code(err_code)
+end
+"""
+    function add_delete_by_id(transaction::Ref{_Transaction}, id::AbstractString)
+
+Add a sub-request to delete a single entity to the given `transaction`.
+
+!!! info
+
+    This does not execute the transaction.
+"""
+function add_delete_by_id(transaction::Ref{_Transaction}, id::AbstractString)
+
+    err_code = ccall(
+        (:caosdb_transaction_transaction_delete_by_id, CaosDB.library_name),
+        Cint,
+        (Ref{_Transaction}, Cstring),
+        transaction,
+        id,
+    )
+
+    CaosDB.Exceptions.evaluate_return_code(err_code)
+end
+
 """
     function add_retrieve_by_id(
         transaction::Ref{_Transaction},
@@ -168,6 +242,40 @@ function add_retrieve_by_id(
     CaosDB.Exceptions.evaluate_return_code(err_code)
 end
 
+"""
+    function add_retrieve_and_download_file_by_id(
+        transaction::Ref{_Transaction},
+        id::AbstractString,
+        path::AbstractString,
+    )
+
+Add a sub-request to retrieve and download a single entity (File) to the given `transaction`.
+
+!!! info
+
+    This does not execute the transaction.
+"""
+function add_retrieve_and_download_file_by_id(
+    transaction::Ref{_Transaction},
+    id::AbstractString,
+    path::AbstractString,
+)
+
+    err_code = ccall(
+        (
+            :caosdb_transaction_transaction_retrieve_and_download_file_by_id,
+            CaosDB.library_name,
+        ),
+        Cint,
+        (Ref{_Transaction}, Cstring, Cstring),
+        transaction,
+        id,
+        path,
+    )
+
+    CaosDB.Exceptions.evaluate_return_code(err_code)
+end
+
 
 """
     function add_query(transaction::Ref{_Transaction}, query::AbstractString)