diff --git a/src/ccaosdb.cpp b/src/ccaosdb.cpp
index 8934253457345ab7b1fdceb336bc5045ccba34fd..e649c01d8df8e569b0c8ebc7797a6b0c5df018da 100644
--- a/src/ccaosdb.cpp
+++ b/src/ccaosdb.cpp
@@ -250,7 +250,7 @@ ERROR_RETURN_CODE(GENERIC_ERROR,
                     caosdb_connection_connection *connection,
                     caosdb_transaction_transaction *out),
                   {
-                    caosdb::connection::Connection *wrapped_connection =
+                    auto *wrapped_connection =
                       static_cast<caosdb::connection::Connection *>(
                         connection->wrapped_connection);
                     out->wrapped_transaction =
@@ -263,18 +263,17 @@ ERROR_RETURN_CODE(GENERIC_ERROR,
                     caosdb_transaction_transaction *transaction,
                     const char *id),
                   {
-                    caosdb::transaction::Transaction *wrapped_transaction =
+                    auto *wrapped_transaction =
                       static_cast<caosdb::transaction::Transaction *>(
                         transaction->wrapped_transaction);
-                    wrapped_transaction->RetrieveById(id);
-                    return 0;
+                    return wrapped_transaction->RetrieveById(std::string(id));
                   })
 
 ERROR_RETURN_CODE(GENERIC_ERROR,
                   int caosdb_transaction_transaction_execute(
                     caosdb_transaction_transaction *transaction),
                   {
-                    caosdb::transaction::Transaction *wrapped_transaction =
+                    auto *wrapped_transaction =
                       static_cast<caosdb::transaction::Transaction *>(
                         transaction->wrapped_transaction);
                     wrapped_transaction->Execute();