diff --git a/.docker/tester_pycaosdb.ini b/.docker/tester_pycaosdb.ini
index 38247085d7c6ba681f7ed9b1553d76818109711a..2159dec250b3dcb2f16043d12bdbe73675e4d75c 100644
--- a/.docker/tester_pycaosdb.ini
+++ b/.docker/tester_pycaosdb.ini
@@ -25,7 +25,7 @@ username = admin
 cacert = /cert/caosdb.cert.pem
 debug = 0
 
-passwordmethod = plain
+password_method = plain
 password = caosdb
 
 timeout = 500
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9f22064aa509b1d5d4a8f1cd673ceef6d2e79543..0682590eca1a575646eeed6084849e88c27a0b68 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Added (for new features)
 
 * Tests for entity state [caosdb-server!62](https://gitlab.com/caosdb/caosdb-server/-/merge_requests/62)
+* Tests for version history
 * Tests for inheritance bug (caosdb/caosdb-server!54)
 * Tests for versioning
 * Tests for deeply nested SELECT queries
diff --git a/Makefile b/Makefile
index c7c2b77dc1b0697f34aa00ab0a09c2cf35036c63..9689f1e3b68d0bd7f501879bcb6c854c0153a88e 100644
--- a/Makefile
+++ b/Makefile
@@ -21,7 +21,7 @@
 
 # Just a collection of scripts
 
-.PHONY: all autopep8 test
+.PHONY: all autopep8 test help
 
 # Do the integration tests.
 # Accepts freestyle arguments like so:
@@ -29,6 +29,22 @@
 test:
 	cd tests &&	pytest $(test_opts)
 
+
+# Just print the help.
+define HELP
+The most common targets:
+
+make test :: Do the integration tests.  Accepts freestyle arguments like so:
+             `make test test_opts=test_foo.py -k test_function`
+Prepare everything for running.
+make autopep8 :: Autoformatting for all tests
+make all :: Run autopep8 and test
+endef
+export HELP
+help:
+	@echo "$$HELP"
+
+
 # Run the tests through autopep8.
 autopep8:
 	autopep8 -ri tests
diff --git a/pycaosdb.ini.template b/pycaosdb.ini.template
index 8f1d9d40f7af1fc0d2a515fbde6138c9b63e618d..369b33f6f63d15b737d6a558422ab1bfe6c30f15 100644
--- a/pycaosdb.ini.template
+++ b/pycaosdb.ini.template
@@ -1,23 +1,28 @@
 # -*- mode:conf; -*-
 ## This sections needs to exist in addition to the usual section
 [IntegrationTests]
-test_server_side_scripting.bin_dir=/scripting-bin/
+test_server_side_scripting.bin_dir.local=/path/to/scripting/bin
+test_server_side_scripting.bin_dir.server=/opt/caosdb/git/caosdb-server/scritping/bin
 
 # location of the files from the pyinttest perspective
 test_files.test_insert_files_in_dir.local=/extroot/test_insert_files_in_dir/
 # location of the files from the caosdb_servers perspective
 test_files.test_insert_files_in_dir.server=/opt/caosdb/mnt/extroot/test_insert_files_in_dir/
 
+# location of the one-time tokens from the pyinttest's perspective
+test_authentication.admin_token_crud = /authtoken/admin_token_crud.txt
+test_authentication.admin_token_expired = /authtoken/admin_token_expired.txt
+test_authentication.admin_token_3_attempts = /authtoken/admin_token_3_attempts.txt
 
 ## Insert your usual settings here
 [Connection]
 #url=https://caosdb-server:10443/
 #username=admin
-#cacert=/cert/caosdb.cert.pem
+#cacert=/path/to/cert/caosdb.cert.pem
 #cacert=/etc/ssl/cert.pem
 #debug=0
 
-#passwordmethod=plain
+#password_method=plain
 #password=caosdb
 
 #ssl_insecure=True
diff --git a/tests/test_administration.py b/tests/test_administration.py
index 768214e05a10845be405d014294e6af69471ea48..9ca57c659079f7f3b6cbd39a4b83a89f53621f20 100644
--- a/tests/test_administration.py
+++ b/tests/test_administration.py
@@ -26,11 +26,13 @@
 @author: tf
 """
 
-from caosdb import (administration as admin, get_config)
-from nose.tools import assert_true, assert_equal, assert_is_not_none, assert_raises
-from caosdb.exceptions import (ClientErrorException, TransactionError,
-                               AuthorizationException, LoginFailedException)
-from caosdb.connection.connection import get_connection, configure_connection
+from caosdb import administration as admin
+from caosdb import get_config
+from caosdb.connection.connection import configure_connection, get_connection
+from caosdb.exceptions import (AuthorizationException, ClientErrorException,
+                               LoginFailedException, TransactionError)
+from nose.tools import (assert_equal, assert_is_not_none, assert_raises,
+                        assert_true)
 
 test_role = "test_role"
 test_user = "test_user"
@@ -246,6 +248,7 @@ def test_get_roles_success():
     test_insert_role_success()
     r = admin._get_roles(username=test_user)
     assert_is_not_none(r)
+
     return r
 
 
@@ -571,6 +574,7 @@ def test_login_with_inactive_user_failure():
             status="INACTIVE",
             email="email@example.com",
             entity=None))
-    configure_connection(username=test_user + "2", password="secret1P!")
+    configure_connection(username=test_user + "2", password="secret1P!",
+                         password_method="plain")
     with assert_raises(LoginFailedException):
         get_connection()._login()
diff --git a/tests/test_datetime.py b/tests/test_datetime.py
index 815db5181d1b8bba97af3d18326c478a346789e9..cda35a1f013833744f314fda6a5bd87547cda5b9 100644
--- a/tests/test_datetime.py
+++ b/tests/test_datetime.py
@@ -1418,3 +1418,510 @@ def test_greater_operator():
             h.execute_query("FIND Simple*").delete()
         except BaseException:
             pass
+
+
+def test_greater_equal_operator():
+    try:
+        rec = set_up_rec()
+        # query with > Date YYYY-MM-ddThh:mm:ss
+        d = "2015-05-05T20:15:30"
+        assert_true(query_assertion(rec, d, ">=", d))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30.122"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30.124"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:29.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:29"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:15:31.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:15:31"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:14:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:14:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:14"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:16:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:16:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:16"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T19:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T19:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T19:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T19"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T21:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T21:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T21:15"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T21"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05"))
+        assert_true(query_assertion(rec, d, ">=", "2014"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05"))
+        assert_false(query_assertion(rec, d, ">=", "2016"))
+
+        # Date YYYY-MM-ddThh:mm:ss.ns
+        d = "2015-05-05T20:15:30.123"
+        assert_true(query_assertion(rec, d, ">=", d))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30.122"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:15:30.124"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:29.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:29"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:15:31.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:15:31"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:14:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:14:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:14"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:16:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:16:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T20:16"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T19:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T19:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T19:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T19"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T21:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T21:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T21:15"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-05T21"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05"))
+        assert_true(query_assertion(rec, d, ">=", "2014"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05"))
+        assert_false(query_assertion(rec, d, ">=", "2016"))
+
+        # Date YYYY-MM-dd
+        d = "2015-05-05"
+        assert_true(query_assertion(rec, d, ">=", d))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06T20"))
+        assert_false(query_assertion(rec, d, ">=", "2015-05-06"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-04"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05"))
+        assert_false(query_assertion(rec, d, ">=", "2016"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05"))
+        assert_true(query_assertion(rec, d, ">=", "2014"))
+
+        # Date YYYY-MM
+        d = "2015-05"
+        assert_true(query_assertion(rec, d, ">=", d))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05T20"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06-05"))
+        assert_false(query_assertion(rec, d, ">=", "2015-06"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015-04"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05"))
+        assert_false(query_assertion(rec, d, ">=", "2016"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05"))
+        assert_true(query_assertion(rec, d, ">=", "2014"))
+
+        # Date YYYY
+        d = "2015"
+        assert_true(query_assertion(rec, d, ">=", d))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015-05"))
+        assert_true(query_assertion(rec, d, ">=", "2015"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15:30"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20:15"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05T20"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05-05"))
+        assert_false(query_assertion(rec, d, ">=", "2016-05"))
+        assert_false(query_assertion(rec, d, ">=", "2016"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20:15"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05T20"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05-05"))
+        assert_true(query_assertion(rec, d, ">=", "2014-05"))
+        assert_true(query_assertion(rec, d, ">=", "2014"))
+
+    finally:
+        try:
+            h.execute_query("FIND Simple*").delete()
+        except BaseException:
+            pass
+
+
+def test_smaller_equal_operator():
+    try:
+        rec = set_up_rec()
+
+        # Date YYYY-MM-ddThh:mm:ss
+        d = "2015-05-05T20:15:30"
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30.122"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30.124"))
+        assert_true(query_assertion(rec, d, "<=", d))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:15:29.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:15:29"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:31.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:31"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:14:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:14:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:14"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:16:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:16:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:16"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T19:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T19:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T19:15"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T19"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T21:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T21:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T21:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T21"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05"))
+        assert_false(query_assertion(rec, d, "<=", "2014"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05"))
+        assert_true(query_assertion(rec, d, "<=", "2016"))
+
+        # Date YYYY-MM-ddThh:mm:ss.ns
+        d = "2015-05-05T20:15:30.123"
+        assert_true(query_assertion(rec, d, "<=", d))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:15:30.122"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30.124"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:15:29.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:15:29"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:31.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:31"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:14:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:14:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T20:14"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:16:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:16:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:16"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T19:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T19:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T19:15"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-05T19"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T21:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T21:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T21:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T21"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05"))
+        assert_false(query_assertion(rec, d, "<=", "2014"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05"))
+        assert_true(query_assertion(rec, d, "<=", "2016"))
+
+        # Date YYYY-MM-dd
+        d = "2015-05-05"
+        assert_true(query_assertion(rec, d, "<=", d))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04T20"))
+        assert_false(query_assertion(rec, d, "<=", "2015-05-04"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-06"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05"))
+        assert_false(query_assertion(rec, d, "<=", "2014"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05"))
+        assert_true(query_assertion(rec, d, "<=", "2016"))
+
+        # Date YYYY-MM
+        d = "2015-05"
+        assert_true(query_assertion(rec, d, "<=", d))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05T20"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04-05"))
+        assert_false(query_assertion(rec, d, "<=", "2015-04"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015-06"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05"))
+        assert_false(query_assertion(rec, d, "<=", "2014"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05"))
+        assert_true(query_assertion(rec, d, "<=", "2016"))
+
+        # Date YYYY
+        d = "2015"
+        assert_true(query_assertion(rec, d, "<=", d))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015-05"))
+        assert_true(query_assertion(rec, d, "<=", "2015"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15:30.123"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15:30"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20:15"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05T20"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05-05"))
+        assert_false(query_assertion(rec, d, "<=", "2014-05"))
+        assert_false(query_assertion(rec, d, "<=", "2014"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15:30.123"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15:30"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20:15"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05T20"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05-05"))
+        assert_true(query_assertion(rec, d, "<=", "2016-05"))
+        assert_true(query_assertion(rec, d, "<=", "2016"))
+
+    finally:
+        try:
+            h.execute_query("FIND Simple*").delete()
+        except BaseException:
+            pass
diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py
index 9022e7dcbe5456128a7994e187ab9d675cff5cbb..bb3a3490837687483bfc564d9f255feb7a1b4478 100644
--- a/tests/test_issues_server.py
+++ b/tests/test_issues_server.py
@@ -169,3 +169,32 @@ def test_issue_99():
         time.sleep(0.1)
         dbfile.retrieve()
         assert dbfile.checksum is not None
+
+
+def test_issue_110():
+    """query ignores ID: FIND MusicalInstrument which is referenced by Analysis with ID=124 """
+    cont = db.Container()
+    A = db.RecordType(name="TypeA")
+    B = db.RecordType(name="TypeB")
+    prop = db.Property(name="prop_ba", datatype=db.REFERENCE)
+
+    # Referenced Records
+    a1 = db.Record().add_parent(A)
+    a2 = db.Record().add_parent(A)
+
+    # Referencing Records
+    b1 = db.Record().add_parent(B).add_property(prop, value=a1)
+    b2 = db.Record().add_parent(B).add_property(prop, value=a2)
+
+    cont.extend([A, B, prop, a1, a2, b1, b2])
+    cont.insert()
+
+    id_b1 = b1.id
+    query = "FIND TypeA WHICH IS REFERENCED BY TypeB WITH ID={}".format(id_b1)
+    print(query)
+    result = db.execute_query(query)
+    print(result)
+    assert len(result) == 1
+    print(result[0])
+    print(a1)
+    assert result[0].id == a1.id
diff --git a/tests/test_manual.py b/tests/test_manual.py
index edfa08b101fef708d7b8d7540596dc1ed0b5bcbb..1ba0b50dfb8d68c6c32ae82a4fe94b5e79f2d32a 100644
--- a/tests/test_manual.py
+++ b/tests/test_manual.py
@@ -66,7 +66,7 @@ def test_references():
         '''define conductor'''
         conductor = Property(
             name="TestConductor",
-            description="The guy who conducted an experiment.",
+            description="The person who conducted an experiment.",
             datatype=person)
 
         '''define experiment'''
diff --git a/tests/test_misc.py b/tests/test_misc.py
index 1e107a6db48a8f5c82df613930871d0514b37852..1d0b6b9ded8854d500cb71481d309801f61c5c67 100644
--- a/tests/test_misc.py
+++ b/tests/test_misc.py
@@ -262,18 +262,6 @@ def test_annotation():
         rt = execute_query("FIND AnnotationTest*").delete()
 
 
-def test_history():
-    try:
-        rt = RecordType(name="SimpleTestProperty").insert()
-        rt.retrieve(flags={"H": None})
-        assert_equal(rt.messages["History"], ('Insert', None))
-    finally:
-        try:
-            rt.delete()
-        except BaseException:
-            pass
-
-
 def test_info():
     i = Info()
     assert_is_not_none(i.messages["Flags"])
diff --git a/tests/test_permissions.py b/tests/test_permissions.py
index 11cd7986846bbccfb31be0f60e90dc0d7c276af8..3528a63eb8a16bc28938ae4b4d0074cc241f89f0 100644
--- a/tests/test_permissions.py
+++ b/tests/test_permissions.py
@@ -46,6 +46,7 @@ easy_pw = "1234"
 
 
 def setup_module():
+    switch_to_admin_user()
     insert_test_user()
 
 
@@ -937,25 +938,26 @@ def test_retrieve_acl():
         assert_equal(e.msg, "You are not allowed to do this.")
 
 
-@with_setup(setup, teardown)
 def test_retrieve_history():
     p = db.Property(name="TestProperty", datatype=db.TEXT).insert()
     assert_true(p.is_valid())
 
     grant_permission(p, "RETRIEVE:ENTITY")
+    p.retrieve()
+    assert p.version is not None
+    assert p.version.username is None, "username belongs to history"
 
     '''Failure'''
-    try:
+    with raises(db.TransactionError) as exc:
         p.retrieve(flags={"H": None})
-        assert_true(False)
-    except db.TransactionError as e:
-        assert_equal(e.msg, "You are not allowed to do this.")
+    assert "You are not allowed to do this." in str(exc.value)
 
     '''Success'''
     grant_permission(p, "RETRIEVE:HISTORY")
 
     p.retrieve(flags={"H": None})
-    assert_equal(p.messages["History"], ('Insert', None))
+    assert p.version is not None
+    assert p.version.username == db.get_config().get("Connection", "username")
 
 
 @with_setup(setup, teardown)
diff --git a/tests/test_query_template.py b/tests/test_query_template.py
index 00aead470721f82631ece76c502f257cdb8b3769..e2b1c77a3b815419e45f24ad5b4a2131fdab331a 100644
--- a/tests/test_query_template.py
+++ b/tests/test_query_template.py
@@ -26,10 +26,13 @@
 @author: tf
 """
 import caosdb as db
-from nose.tools import with_setup, assert_true, assert_is_none, assert_equal, assert_is_not_none, nottest, assert_raises  # @UnresolvedImport
+from nose.tools import (assert_equal, assert_is_none,  # @UnresolvedImport
+                        assert_is_not_none, assert_raises, assert_true,
+                        nottest, with_setup)
 
 
 def setup_module():
+    db.configure_connection()
     try:
         db.administration._delete_user(name="test_user")
     except Exception as e:
@@ -81,12 +84,7 @@ def setup():
 
 
 def teardown():
-    try:
-        db.get_connection()._logout()
-        db.configure_connection()
-        db.get_connection()._login()
-    except Exception as e:
-        print(e)
+    db.configure_connection()
     try:
         db.execute_query("FIND QUERYTEMPLATE Test*").delete()
     except Exception as e:
@@ -338,9 +336,7 @@ def test_query_without_permission():
     r = db.execute_query("FIND TestPigExperiment", unique=True)
     assert_equal(r.name, "TestRecord")
 
-    db.get_connection()._logout()
     db.configure_connection()
-    db.get_connection()._login()
 
     e = db.Entity(id=qt.id)
     e.retrieve_acl()
diff --git a/tests/test_query_version.py b/tests/test_query_version.py
index c951fa3c4fa57dea30b22627746760575229c03c..0b152ee0f3015c08be7d46f680e1694eaeeaa8ca 100644
--- a/tests/test_query_version.py
+++ b/tests/test_query_version.py
@@ -21,10 +21,11 @@
 #
 # ** end header
 #
-import pytest
 import caosdb as db
+import pytest
 from caosdb import execute_query as query
 
+db.configure_connection()
 CONTAINER = db.Container()
 NAME_PROPERTY = db.Property("name").retrieve()
 TEST_PROP_TEXT = db.Property("TestPropertyText", datatype=db.TEXT)
diff --git a/tests/test_version.py b/tests/test_version.py
index 4a02b7df4a70446b3956d9bc77c22cff01faac04..784c23b0754ad4f9710ced3930a776af7a2747ee 100644
--- a/tests/test_version.py
+++ b/tests/test_version.py
@@ -47,7 +47,7 @@ def insertion(name="TestRT", parents=[]):
     rt.insert()
     assert rt.version is not None
     assert rt.version.id is not None
-    assert rt.version.date is not None
+    assert rt.version.is_head is True
     assert len(rt.version.predecessors) == 0
     assert len(rt.version.successors) == 0
     return rt
@@ -58,7 +58,6 @@ def test_retrieve():
     version = rt.version
 
     rt2 = c.execute_query("FIND RecordType TestRT", unique=True)
-    assert parse(rt2.version.date) == parse(version.date)
     assert rt2.version == version
 
 
@@ -72,10 +71,8 @@ def test_update_description():
     assert rt.description == new_desc
     assert rt.version is not None
     assert rt.version.id is not None
-    assert rt.version.date is not None
     assert rt.version != old_version
-    assert rt.version.date != old_version.date
-    assert parse(rt.version.date) > parse(old_version.date)
+    assert rt.version.is_head is True
 
     rt2 = c.execute_query("FIND RecordType TestRT", unique=True)
     assert rt2.version.id == rt.version.id
@@ -92,6 +89,7 @@ def test_update_description():
                                     "@" + old_version.id, sync=False)[0]
     assert rt_old.version.id == old_version.id
     assert rt_old.description == old_desc
+    assert rt_old.version.is_head is False
 
 
 def test_update_parent():
@@ -740,10 +738,7 @@ def test_update_name():
     assert rt.name == new_name
     assert rt.version is not None
     assert rt.version.id is not None
-    assert rt.version.date is not None
     assert rt.version != old_version
-    assert rt.version.date != old_version.date
-    assert parse(rt.version.date) > parse(old_version.date)
 
     assert len(c.execute_query("FIND RecordType {}".format(old_name))) == 0
     rt2 = c.execute_query("FIND RecordType {}".format(new_name), unique=True)
@@ -819,3 +814,36 @@ def test_delete_referenced_entity():
     rec_v2 = c.Container().retrieve(query=str(rec.id) + "@HEAD",
                                     flags={"cache": "false"}, sync=False)[0]
     assert rec_v2.get_property(ref_rt) is None
+
+
+def test_retrieve_history():
+    rt = insertion()
+    versions = []
+    desc = dict()
+
+    versions.append(rt.version)
+    desc[rt.version.id] = rt.description
+    v5_version = None
+
+    for i in range(10):
+        rt.description = rt.description + str(i)
+        rt.update()
+        versions.append(rt.version)
+        desc[rt.version.id] = rt.description
+        if i == 5:
+            v5_version = rt.version
+
+    # retrieve history
+    rt_v5 = c.Container().retrieve(query=str(rt.id) + "@HEAD~4",
+                                   flags={"H": None},
+                                   sync=False)[0]
+    assert rt_v5.version.is_complete_history is True
+    assert rt_v5.version.id == v5_version.id
+    history = rt_v5.version.get_history()
+    assert len(history) == len(versions)
+    # Compare actual and expected version
+    for act, exp in zip(history, versions):
+        assert act.id == exp.id
+        tst = c.Container().retrieve(query=str(rt.id) + "@" + act.id,
+                                     sync=False)[0]
+        assert tst.description == desc[act.id]