diff --git a/src/ccaosdb.cpp b/src/ccaosdb.cpp
index d962c5bae38d655b90ce4e208bac9f042aabc7fa..9a62cb074c29d16b38c5b6fc471eeade2c01c113 100644
--- a/src/ccaosdb.cpp
+++ b/src/ccaosdb.cpp
@@ -461,6 +461,44 @@ ERROR_RETURN_CODE(GENERIC_ERROR,
                     return wrapped_transaction->Query(std::string(query));
                   })
 
+ERROR_RETURN_CODE(
+  GENERIC_ERROR,
+  int caosdb_transaction_transaction_insert_entity(
+    caosdb_transaction_transaction *transaction, caosdb_entity_entity *entity),
+  {
+    auto *wrapped_transaction = static_cast<caosdb::transaction::Transaction *>(
+      transaction->wrapped_transaction);
+    auto *wrapped_entity =
+      static_cast<caosdb::entity::Entity *>(entity->wrapped_entity);
+
+    return wrapped_transaction->InsertEntity(*wrapped_entity);
+  })
+
+ERROR_RETURN_CODE(
+  GENERIC_ERROR,
+  int caosdb_transaction_transaction_update_entity(
+    caosdb_transaction_transaction *transaction, caosdb_entity_entity *entity),
+  {
+    auto *wrapped_transaction = static_cast<caosdb::transaction::Transaction *>(
+      transaction->wrapped_transaction);
+    auto *wrapped_entity =
+      static_cast<caosdb::entity::Entity *>(entity->wrapped_entity);
+
+    return wrapped_transaction->UpdateEntity(*wrapped_entity);
+  })
+
+ERROR_RETURN_CODE(GENERIC_ERROR,
+                  int caosdb_transaction_transaction_delete_by_id(
+                    caosdb_transaction_transaction *transaction,
+                    const char *id),
+                  {
+                    auto *wrapped_transaction =
+                      static_cast<caosdb::transaction::Transaction *>(
+                        transaction->wrapped_transaction);
+
+                    return wrapped_transaction->DeleteById(std::string(id))
+                  })
+
 ERROR_RETURN_CODE(GENERIC_ERROR,
                   int caosdb_transaction_transaction_execute(
                     caosdb_transaction_transaction *transaction),