diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0c80159f44c6111299a3fd763bcbbb50aaaf5975..c8f19c42188f0bd156d17fe4688881d4611a71ea 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -41,6 +41,7 @@ variables:
   DEFAULT_CAOSDB_TAG: f-grpc
 
   # The defalt branch to use with caosdb-cpplib
+  # TODO: Change back to dev once f-consolidate-c has been merged
   CPP_DEFAULT_BRANCH: dev
   
 stages:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index be0861b416b0c0114673b657af2ea698e727885e..f9364dce9dcf13a151ce20b2473d1a0f60b0a717 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 * Basic CI infrastructure
 * Simple test for the connection to a CaosDB server
 * Tests for connecting via config files
+* Tests for queries and retrievals by id(s)
 
 ### Changed
 
diff --git a/Project.toml b/Project.toml
index 497c1787edd6fd6415ca560e1d9cda0dd0109d1a..ac89e4bd6f04300a44f44efab707e04ef35f3846 100644
--- a/Project.toml
+++ b/Project.toml
@@ -1,4 +1,4 @@
 name = "CaosDBIntegrationTests"
 uuid = "c3438055-fe44-4932-b8ed-926ba38cadad"
 authors = ["florian <f.spreckelsen@inidscale.com>"]
-version = "0.0.1"
+version = "0.0.3"
diff --git a/README_SETUP.md b/README_SETUP.md
index 60a4f2839520b1e5546e34eb8b2cb6df6e991f0e..eef1b214d3e05276e956175ece9120c954211956 100644
--- a/README_SETUP.md
+++ b/README_SETUP.md
@@ -3,15 +3,16 @@
 Start a CaosDB server, for now in `f-grpc-dev` branch and set the
 `CAOSDB_SERVER_HOST`, `CAOSDB_SERVER_GRPC_PORT_HTTPS`,
 `CAOSDB_SERVER_CERT`, `CAOSDB_USER`, and `CAOSDB_PASSWORD`
-environmental variable in such a way that a connection can be established with CaosDB.jl by
+environmental variables in such a way that a connection can be established with CaosDB.jl by
 
 ```julia
 using CaosDB
 CaosDB.Connection.connect_manually()
 ```
 
-i.e., without any explicit arguments to the call to
-`connect_manually`. Also set up a `caosdb_client.json` either in with
+i.e., without any explicit arguments to the call to `connect_manually`. 
+
+Also set up a `caosdb_client.json` with
 a connection named `julialib-integrationtest` as default that connects
 to the above server. See the [documentation of
 libcaosdb](https://docs.indiscale.com/caosdb-cpplib/) for more
@@ -20,6 +21,8 @@ information on the config file.
 # Tests
 
 ## Testing against a remote CaosDB.jl
+This will fetch a version of CaosDB.jl from the remote server and use it. For 
+an alternative using a local version see below.
 
 After set-up, the integration tests can be executed by
 
diff --git a/test/runtests.jl b/test/runtests.jl
index c1294a923f20287e6b92d24edae2f09882281c52..66c86a7b0762ae906ec01d6889870ece14b3612e 100644
--- a/test/runtests.jl
+++ b/test/runtests.jl
@@ -65,4 +65,76 @@ end
         @test CaosDB.Connection.connect_manually() != nothing
     end
 
+    @testset "Test transaction" begin
+
+        # transactions can be created from connection names or objects
+        connection = CaosDB.Connection.connect()
+        @test create_transaction(connection) != nothing
+
+        @test create_transaction() != nothing
+        @test create_transaction("julialib-integrationtest") != nothing
+
+        # Construct and execute a transaction manually
+        transaction = create_transaction()
+        add_query(transaction, "FIND ENTITY WITH id=-1")
+        execute(transaction)
+        result_set = get_result_set(transaction)
+        results = get_results(result_set)
+        # There is no entity with id=-1
+        @test length(results) == 0
+        # result-sets can be omitted
+        transaction_results = get_results(transaction)
+        @test length(transaction_results) == 0
+        # No count query, so this should be -1
+        @test get_count_result(transaction) == -1
+
+        # Also works directly, with or without connection being
+        # specified.
+        query_results1 = execute_query("FIND ENTITY WITH id=-1")
+        @test length(query_results1) == 0
+        query_results2 = execute_query("FIND ENTITY WITH id=-1", "julialib-integrationtest")
+        @test length(query_results2) == 0
+        query_results3 = execute_query("FIND ENTITY WITH id=-1", connection)
+        @test length(query_results3) == 0
+
+        # COUNT queries have to be conducted manually
+        count_transaction = create_transaction()
+        add_query(count_transaction, "COUNT ENTITY WITH id=-1")
+        execute(count_transaction)
+        # Still an empty result set
+        @test get_count_result(count_transaction) == 0
+    end
+
+    @testset "Test entity retrieval" begin
+
+        single_retrieve_transaction = create_transaction()
+        add_retrieve_by_id(single_retrieve_transaction, "20")
+        execute(single_retrieve_transaction)
+        results = get_results(single_retrieve_transaction)
+        @test length(results) == 1
+        @test has_errors(results[1]) == false
+        @test get_name(results[1]) == "name"
+
+        multi_retrieve_transaction = create_transaction()
+        add_retrieve_by_id(multi_retrieve_transaction, ["20", "21"])
+        execute(multi_retrieve_transaction)
+        results = get_results(multi_retrieve_transaction)
+        @test length(results) == 2
+        @test get_name(results[1]) == "name"
+        @test get_name(results[2]) == "unit"
+
+        # Helper functions
+        ent = retrieve("20")
+        @test get_name(ent) == "name"
+
+        results = retrieve(["20", "21"])
+        @test length(results) == 2
+        @test get_name(results[1]) == "name"
+        @test get_name(results[2]) == "unit"
+
+        # id=22 doesn't exist
+        @test_throws CaosDB.Exceptions.GenericCaosDBException retrieve("22")
+        @test_throws CaosDB.Exceptions.GenericCaosDBException retrieve(["20", "21", "22"])
+    end
+
 end