diff --git a/conanfile.txt b/conanfile.txt
index 387552f81d0bdc8a2187fede3a23ffe139688dfc..2c69dd54038c69510decea33197146eff5974066 100644
--- a/conanfile.txt
+++ b/conanfile.txt
@@ -1,5 +1,5 @@
 [requires]
-caosdb/0.0.14
+caosdb/0.0.15
 gtest/1.11.0
 
 [generators]
diff --git a/test/test_list_properties.cpp b/test/test_list_properties.cpp
index b8fdb0d4deaf0788aec6e72deada5106af2dffae..32f02e2fad8f46199d4240e86e9e1d31c86e936d 100644
--- a/test/test_list_properties.cpp
+++ b/test/test_list_properties.cpp
@@ -24,6 +24,7 @@
 #include "caosdb/transaction.h"        // for Entity, Transaction,...
 #include "caosdb/transaction_status.h" // for TransactionStatus, StatusCode
 #include "caosdb/value.h"              // for value
+#include <cstdint>                     // for int64_t
 #include <gtest/gtest-message.h>       // for Message
 #include <gtest/gtest-test-part.h>     // for TestPartResult, SuiteApiResolver
 #include <gtest/gtest_pred_impl.h>     // for Test, EXPECT_EQ, AssertionResult
@@ -113,4 +114,116 @@ TEST_F(test_list_properties, insert_list_of_text) {
   EXPECT_EQ(value.AsList().at(1).AsString(), "item5");
 }
 
+TEST_F(test_list_properties, insert_list_of_int) {
+  const auto &connection =
+    caosdb::connection::ConnectionManager::GetDefaultConnection();
+
+  auto insertion_prop(connection->CreateTransaction());
+
+  Entity abstract_list_property;
+  abstract_list_property.SetRole(Role::PROPERTY);
+  abstract_list_property.SetName("TestProp");
+  abstract_list_property.SetDataType(DataType::ListOf(AtomicDataType::INTEGER));
+  abstract_list_property.SetValue(std::vector<int64_t>{1, 2, 3});
+
+  insertion_prop->InsertEntity(&abstract_list_property);
+  std::cout << "response " << insertion_prop->ResponseToString();
+  insertion_prop->Execute();
+  EXPECT_TRUE(insertion_prop->GetStatus().IsTerminated());
+
+  auto insertion_rt(connection->CreateTransaction());
+
+  Property list_property;
+  list_property.SetId(insertion_prop->GetResultSet().at(0).GetId());
+  list_property.SetValue(std::vector<int64_t>{4, 5, 6});
+
+  Entity entity;
+  entity.SetRole(Role::RECORD_TYPE);
+  entity.SetName("TestRT");
+  entity.AppendProperty(list_property);
+
+  insertion_rt->InsertEntity(&entity);
+  std::cout << "response " << insertion_rt->ResponseToString();
+  insertion_rt->Execute();
+  EXPECT_TRUE(insertion_rt->GetStatus().IsTerminated());
+  EXPECT_FALSE(insertion_rt->GetStatus().IsError());
+
+  // retrieve and check again
+  auto retrieval(connection->CreateTransaction());
+  retrieval->RetrieveById(insertion_rt->GetResultSet().at(0).GetId());
+  retrieval->Execute();
+
+  EXPECT_TRUE(retrieval->GetStatus().IsTerminated());
+  EXPECT_FALSE(retrieval->GetStatus().IsError());
+
+  const auto &same_entity = retrieval->GetResultSet().at(0);
+  const auto &data_type = same_entity.GetProperties().at(0).GetDataType();
+  const auto &value = same_entity.GetProperties().at(0).GetValue();
+
+  EXPECT_TRUE(data_type.IsList());
+  EXPECT_TRUE(data_type.AsList().IsListOfAtomic());
+  EXPECT_EQ(data_type.AsList().GetAtomicDataType(), AtomicDataType::INTEGER);
+
+  EXPECT_TRUE(value.IsList());
+  EXPECT_EQ(value.AsList().size(), 3);
+  EXPECT_TRUE(value.AsList().at(1).IsInteger());
+  EXPECT_EQ(value.AsList().at(1).AsInteger(), 5);
+}
+
+TEST_F(test_list_properties, insert_list_of_bool) {
+  const auto &connection =
+    caosdb::connection::ConnectionManager::GetDefaultConnection();
+
+  auto insertion_prop(connection->CreateTransaction());
+
+  Entity abstract_list_property;
+  abstract_list_property.SetRole(Role::PROPERTY);
+  abstract_list_property.SetName("TestProp");
+  abstract_list_property.SetDataType(DataType::ListOf(AtomicDataType::BOOLEAN));
+  abstract_list_property.SetValue(std::vector<bool>{true, true, false});
+
+  insertion_prop->InsertEntity(&abstract_list_property);
+  std::cout << "response " << insertion_prop->ResponseToString();
+  insertion_prop->Execute();
+  EXPECT_TRUE(insertion_prop->GetStatus().IsTerminated());
+
+  auto insertion_rt(connection->CreateTransaction());
+
+  Property list_property;
+  list_property.SetId(insertion_prop->GetResultSet().at(0).GetId());
+  list_property.SetValue(std::vector<bool>{false, false, true});
+
+  Entity entity;
+  entity.SetRole(Role::RECORD_TYPE);
+  entity.SetName("TestRT");
+  entity.AppendProperty(list_property);
+
+  insertion_rt->InsertEntity(&entity);
+  std::cout << "response " << insertion_rt->ResponseToString();
+  insertion_rt->Execute();
+  EXPECT_TRUE(insertion_rt->GetStatus().IsTerminated());
+  EXPECT_FALSE(insertion_rt->GetStatus().IsError());
+
+  // retrieve and check again
+  auto retrieval(connection->CreateTransaction());
+  retrieval->RetrieveById(insertion_rt->GetResultSet().at(0).GetId());
+  retrieval->Execute();
+
+  EXPECT_TRUE(retrieval->GetStatus().IsTerminated());
+  EXPECT_FALSE(retrieval->GetStatus().IsError());
+
+  const auto &same_entity = retrieval->GetResultSet().at(0);
+  const auto &data_type = same_entity.GetProperties().at(0).GetDataType();
+  const auto &value = same_entity.GetProperties().at(0).GetValue();
+
+  EXPECT_TRUE(data_type.IsList());
+  EXPECT_TRUE(data_type.AsList().IsListOfAtomic());
+  EXPECT_EQ(data_type.AsList().GetAtomicDataType(), AtomicDataType::BOOLEAN);
+
+  EXPECT_TRUE(value.IsList());
+  EXPECT_EQ(value.AsList().size(), 3);
+  EXPECT_TRUE(value.AsList().at(1).IsBool());
+  EXPECT_FALSE(value.AsList().at(1).AsBool());
+}
+
 } // namespace caosdb::entity
diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp
index 0256edc81ea73d2c0469ec531a1544ee0aacdd33..13ffb647dbbc8eb152b1683309032459611927cb 100644
--- a/test/test_transaction.cpp
+++ b/test/test_transaction.cpp
@@ -33,7 +33,7 @@
 #include <boost/filesystem/path.hpp>              // for path
 #include <boost/filesystem/path_traits.hpp>       // for filesystem
 #include <cstddef>                                // for size_t
-#include <cstdint>                                // for int32_t
+#include <cstdint>                                // for int64_t, int32_t
 #include <gtest/gtest-message.h>                  // for Message
 #include <gtest/gtest-test-part.h>                // for TestPartResult
 #include <gtest/gtest_pred_impl.h>                // for AssertionResult
@@ -136,10 +136,15 @@ auto test_transaction::getValueAs<double>(const Value &value) -> double {
 }
 
 template <>
-auto test_transaction::getValueAs<int32_t>(const Value &value) -> int32_t {
+auto test_transaction::getValueAs<int64_t>(const Value &value) -> int64_t {
   return value.AsInteger();
 }
 
+template <>
+auto test_transaction::getValueAs<int32_t>(const Value &value) -> int32_t {
+  return static_cast<int32_t>(value.AsInteger());
+}
+
 template <>
 auto test_transaction::getValueAs<bool>(const Value &value) -> bool {
   return value.AsBool();
@@ -697,7 +702,7 @@ TEST_F(test_transaction, test_query) {
 /**
  * Test numeric values (template).
  */
-template <typename T>
+template <typename T, typename S>
 auto test_numeric_values_impl(AtomicDataType a_type) -> void {
   const auto &connection =
     caosdb::connection::ConnectionManager::GetDefaultConnection();
@@ -715,7 +720,7 @@ auto test_numeric_values_impl(AtomicDataType a_type) -> void {
     prop.SetName(name);
     prop.SetDataType(a_type);
     std::cout << "Setting value " << value << std::endl;
-    prop.SetValue(value);
+    prop.SetValue(static_cast<S>(value));
     props_orig.push_back(prop);
     auto i_stat = insert_transaction->InsertEntity(&prop);
     EXPECT_EQ(i_stat, StatusCode::READY);
@@ -740,12 +745,14 @@ auto test_numeric_values_impl(AtomicDataType a_type) -> void {
     EXPECT_TRUE(t_stat.IsTerminated());
     EXPECT_FALSE(t_stat.IsError());
 
-    const auto result = retrieve_transaction->GetResultSet().at(0);
-    EXPECT_EQ(result.GetDataType(), a_type);
-    const auto &retrieved_value =
-      test_transaction::getValueAs<T>(result.GetValue());
-    // std::cout << "retrieved_value: " << retrieved_value << std::endl;
-    EXPECT_EQ(retrieved_value, value);
+    if (retrieve_transaction->GetResultSet().size() > 0) {
+      const auto result = retrieve_transaction->GetResultSet().at(0);
+      EXPECT_EQ(result.GetDataType(), a_type);
+      const auto &retrieved_value =
+        test_transaction::getValueAs<T>(result.GetValue());
+      // std::cout << "retrieved_value: " << retrieved_value << std::endl;
+      EXPECT_EQ(retrieved_value, value);
+    }
     ++i;
   }
 }
@@ -754,11 +761,45 @@ auto test_numeric_values_impl(AtomicDataType a_type) -> void {
  * Test numeric values (wrapper for types).
  */
 TEST_F(test_transaction, test_numeric_values) {
-  test_numeric_values_impl<double>(AtomicDataType::DOUBLE);
+  test_numeric_values_impl<double, double>(AtomicDataType::DOUBLE);
   test_transaction::DeleteEntities();
-  test_numeric_values_impl<int32_t>(AtomicDataType::INTEGER);
+  test_numeric_values_impl<int32_t, int64_t>(AtomicDataType::INTEGER);
   test_transaction::DeleteEntities();
-  test_numeric_values_impl<bool>(AtomicDataType::BOOLEAN);
+  test_numeric_values_impl<bool, bool>(AtomicDataType::BOOLEAN);
+}
+
+TEST_F(test_transaction, test_integer_out_of_range) {
+  const auto &connection =
+    caosdb::connection::ConnectionManager::GetDefaultConnection();
+
+  // Insert entities
+  std::vector<int64_t> values = {std::numeric_limits<int64_t>::max(),
+                                 std::numeric_limits<int64_t>::min()};
+  for (auto value : values) {
+    auto insert_transaction(connection->CreateTransaction());
+    Entity prop;
+
+    prop.SetRole(Role::PROPERTY);
+    const auto name = std::string("Prop_") + std::to_string(value);
+
+    prop.SetName(name);
+    prop.SetDataType(AtomicDataType::INTEGER);
+    prop.SetValue(value);
+
+    auto i_stat = insert_transaction->InsertEntity(&prop);
+    EXPECT_EQ(i_stat, StatusCode::READY);
+
+    insert_transaction->ExecuteAsynchronously();
+    auto t_stat = insert_transaction->WaitForIt();
+    EXPECT_TRUE(t_stat.IsTerminated());
+    EXPECT_TRUE(t_stat.IsError());
+    EXPECT_EQ(t_stat.GetCode(), StatusCode::GENERIC_TRANSACTION_ERROR);
+    EXPECT_EQ(insert_transaction->GetResultSet().size(), 1);
+    EXPECT_TRUE(insert_transaction->GetResultSet().at(0).HasErrors());
+    EXPECT_EQ(
+      insert_transaction->GetResultSet().at(0).GetErrors().at(0).GetCode(),
+      MessageCode::INTEGER_VALUE_OUT_OF_RANGE);
+  }
 }
 
 // /*
@@ -1079,7 +1120,7 @@ TEST_F(test_transaction, test_full_workflow) {
     experiment_rec.AppendProperty(volt_for_rt);
     notes_for_rt2.SetValue("This is important!");
     experiment_rec.AppendProperty(notes_for_rt2);
-    part_for_rt3.SetValue(static_cast<int32_t>(6));
+    part_for_rt3.SetValue(static_cast<int64_t>(6));
     experiment_rec.AppendProperty(part_for_rt3);
     succ_for_rt.SetValue(true);
     experiment_rec.AppendProperty(succ_for_rt);