diff --git a/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAO.java b/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAO.java
index 2ae03bc376633aa8f15c0a006da46953b40bdf81..d42e298a88a3fb59ccff28edf243953383ff7944 100644
--- a/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAO.java
+++ b/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAO.java
@@ -144,14 +144,14 @@ public class GoToMeetingDAO {
 		return query.getResultList();
 	}
 	
-	public List<GoToMeeting> getMeetingsOverlapp(GoToType type, GoToOrganizer organizer, Date start, Date end) {
+	public List<GoToMeeting> getMeetingsOverlap(GoToType type, GoToOrganizer organizer, Date start, Date end) {
 		StringBuilder sb = new StringBuilder();
 		sb.append("select meeting from gotomeeting meeting")
 		  .append(" inner join meeting.organizer organizer on organizer.key=:organizerKey")
 		  .append(" where meeting.type=:type")
-		  .append(" and ((meeting.startDate<:start and meeting.endDate>:start)")
-		  .append(" or (meeting.startDate<:end and meeting.endDate>:end)")
-		  .append(" or (meeting.startDate>:start and meeting.endDate<:end))");
+		  .append(" and ((meeting.startDate<=:start and meeting.endDate>=:start)")
+		  .append(" or (meeting.startDate<=:end and meeting.endDate>=:end)")
+		  .append(" or (meeting.startDate>=:start and meeting.endDate<=:end))");
 
 		List<GoToMeeting> meetings = dbInstance.getCurrentEntityManager()
 			.createQuery(sb.toString(), GoToMeeting.class)
diff --git a/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingManagerImpl.java b/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingManagerImpl.java
index 923339b7811e3536d699a1bf09de48341eb65c92..656a87012e539aa7efdbe0e6947a07f38448c173 100644
--- a/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingManagerImpl.java
+++ b/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingManagerImpl.java
@@ -125,7 +125,7 @@ public class GoToMeetingManagerImpl implements GoToMeetingManager {
 	}
 	
 	public boolean checkOrganizerAvailability(GoToOrganizer organizer, Date start, Date end) {
-		List<GoToMeeting> meetings = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start, end);
+		List<GoToMeeting> meetings = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start, end);
 		return meetings.isEmpty();
 	}
 
diff --git a/src/test/java/org/olat/modules/gotomeeting/GoToTimezoneIDsTest.java b/src/test/java/org/olat/modules/gotomeeting/GoToTimezoneIDsTest.java
index fa6e954709a97668ab9e1c8a498b0791c20f21a7..f8b15728db73dcde3e8ae33b368442cbf8751f6d 100644
--- a/src/test/java/org/olat/modules/gotomeeting/GoToTimezoneIDsTest.java
+++ b/src/test/java/org/olat/modules/gotomeeting/GoToTimezoneIDsTest.java
@@ -33,6 +33,12 @@ import org.junit.Test;
  */
 public class GoToTimezoneIDsTest {
 	
+	/**
+	 * 
+	 * This only test if all the time zone defined in GoToMeeting are avaliable in Java.
+	 * 
+	 * @throws JSONException
+	 */
 	@Test
 	public void timeZoneIds() throws JSONException {
 		for(String id:GoToTimezoneIDs.TIMEZONE_IDS) {
diff --git a/src/test/java/org/olat/modules/gotomeeting/manager/GoToJsonUtilTest.java b/src/test/java/org/olat/modules/gotomeeting/manager/GoToJsonUtilTest.java
index 0980e4e4b93a45bfc2399dfd646c53e3a6987618..5f8a4bed9317924d15d77b020a05d4c24662c8be 100644
--- a/src/test/java/org/olat/modules/gotomeeting/manager/GoToJsonUtilTest.java
+++ b/src/test/java/org/olat/modules/gotomeeting/manager/GoToJsonUtilTest.java
@@ -28,6 +28,8 @@ import org.junit.Test;
 
 
 /**
+ * 
+ * This mostly test that the date returned by the GoTo server are parseable.
  * 
  * Initial date: 23.03.2016<br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
diff --git a/src/test/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAOTest.java b/src/test/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAOTest.java
index 9a51ad5a0e58198c0dcc45094cd924dc3deaf000..4434925fcaa03d66a2f97557b733f446bbb71a21 100644
--- a/src/test/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAOTest.java
+++ b/src/test/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAOTest.java
@@ -103,9 +103,87 @@ public class GoToMeetingDAOTest extends OlatTestCase {
 		Assert.assertTrue(meetings.contains(training));
 	}
 	
+	@Test
+	public void loadMeetingByKey() {
+		RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
+		
+		String username = UUID.randomUUID().toString();
+		String accessToken = UUID.randomUUID().toString();
+		String organizerKey = UUID.randomUUID().toString();
+		
+		GoToOrganizer organizer = organizerDao
+				.createOrganizer(null, username, accessToken, organizerKey, "Levinus", "Memminger", null, null, 10l, null);
+		Assert.assertNotNull(organizer);
+
+		Date start = new Date();
+		Date end = new Date();
+		String trainingKey = Long.toString(CodeHelper.getForeverUniqueID());
+		GoToMeeting training = meetingDao.createTraining("Training by key", null, "Load training by key", trainingKey, start, end,
+				organizer, entry, "d9915", null);
+		dbInstance.commitAndCloseSession();
+		Assert.assertNotNull(training);
+		
+		GoToMeeting reloadedTraining = meetingDao.loadMeetingByKey(training.getKey());
+		Assert.assertNotNull(reloadedTraining);
+		Assert.assertEquals(training, reloadedTraining);
+	}
+	
+	@Test
+	public void loadMeetingByExternalId() {
+		RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
+		
+		String username = UUID.randomUUID().toString();
+		String accessToken = UUID.randomUUID().toString();
+		String organizerKey = UUID.randomUUID().toString();
+		String externalId = UUID.randomUUID().toString();
+		
+		GoToOrganizer organizer = organizerDao
+				.createOrganizer(null, username, accessToken, organizerKey, "Levinus", "Memminger", null, null, 10l, null);
+		Assert.assertNotNull(organizer);
+
+		Date start = new Date();
+		Date end = new Date();
+		String trainingKey = Long.toString(CodeHelper.getForeverUniqueID());
+		GoToMeeting training = meetingDao.createTraining("Training by key", externalId, "Load training by external key", trainingKey, start, end,
+				organizer, entry, "d9916", null);
+		dbInstance.commitAndCloseSession();
+		Assert.assertNotNull(training);
+		
+		GoToMeeting reloadedTraining = meetingDao.loadMeetingByExternalId(externalId);
+		Assert.assertNotNull(reloadedTraining);
+		Assert.assertEquals(training, reloadedTraining);
+	}
+	
+	@Test
+	public void countMeetingsOrganizedBy() {
+		RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
+		
+		String username = UUID.randomUUID().toString();
+		String accessToken = UUID.randomUUID().toString();
+		String organizerKey = UUID.randomUUID().toString();
+		String externalId = UUID.randomUUID().toString();
+		
+		GoToOrganizer organizer = organizerDao
+				.createOrganizer(null, username, accessToken, organizerKey, "Hans", "Pleydenwurff", null, null, 10l, null);
+		Assert.assertNotNull(organizer);
+
+		Date start = new Date();
+		Date end = new Date();
+		String trainingKey = Long.toString(CodeHelper.getForeverUniqueID());
+		GoToMeeting training = meetingDao.createTraining("Training by key", externalId, "Count the meetings organized by this organizer",
+				trainingKey, start, end, organizer, entry, "d9916", null);
+		dbInstance.commitAndCloseSession();
+		Assert.assertNotNull(training);
+		
+		int countOrganizersMeetings = meetingDao.countMeetingsOrganizedBy(organizer);
+		Assert.assertEquals(1, countOrganizersMeetings);
+	}
 	
+	/**
+	 * Check different overlap scenario
+	 */
 	@Test
-	public void getMeetingsOverlapp() {
+	public void getMeetingsOverlap() {
 		RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry();
 		
 		String username = UUID.randomUUID().toString();
@@ -118,6 +196,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
 
 		Calendar cal = Calendar.getInstance();
 		cal.set(2016, 8, 12, 12, 0, 0);
+		cal.set(Calendar.MILLISECOND, 0);
 		Date start = cal.getTime();
 		cal.set(2016, 8, 12, 18, 0, 0);
 		Date end = cal.getTime();
@@ -128,7 +207,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
 		Assert.assertNotNull(training);
 
 		//check organizer availability (same date)
-		List<GoToMeeting> overlaps = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start, end);
+		List<GoToMeeting> overlaps = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start, end);
 		Assert.assertNotNull(overlaps);
 		Assert.assertEquals(1, overlaps.size());
 
@@ -137,7 +216,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
 		Date start_1 = cal.getTime();
 		cal.set(2016, 8, 12, 14, 0, 0);
 		Date end_1 = cal.getTime();
-		List<GoToMeeting> overlaps_1 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_1, end_1);
+		List<GoToMeeting> overlaps_1 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_1, end_1);
 		Assert.assertEquals(1, overlaps_1.size());
 		
 		//check organizer availability (start overlap)
@@ -145,7 +224,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
 		Date start_2 = cal.getTime();
 		cal.set(2016, 8, 12, 20, 0, 0);
 		Date end_2 = cal.getTime();
-		List<GoToMeeting> overlaps_2 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_2, end_2);
+		List<GoToMeeting> overlaps_2 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_2, end_2);
 		Assert.assertEquals(1, overlaps_2.size());
 		
 		//check organizer availability (within)
@@ -153,7 +232,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
 		Date start_3 = cal.getTime();
 		cal.set(2016, 8, 12, 15, 0, 0);
 		Date end_3 = cal.getTime();
-		List<GoToMeeting> overlaps_3 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_3, end_3);
+		List<GoToMeeting> overlaps_3 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_3, end_3);
 		Assert.assertNotNull(overlaps_3);
 		Assert.assertEquals(1, overlaps_3.size());
 		
@@ -162,7 +241,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
 		Date start_4 = cal.getTime();
 		cal.set(2016, 8, 12, 22, 0, 0);
 		Date end_4 = cal.getTime();
-		List<GoToMeeting> overlaps_4 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_4, end_4);
+		List<GoToMeeting> overlaps_4 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_4, end_4);
 		Assert.assertNotNull(overlaps_4);
 		Assert.assertEquals(1, overlaps_4.size());
 		
@@ -171,7 +250,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
 		Date start_5 = cal.getTime();
 		cal.set(2016, 8, 12, 11, 0, 0);
 		Date end_5 = cal.getTime();
-		List<GoToMeeting> overlaps_5 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_5, end_5);
+		List<GoToMeeting> overlaps_5 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_5, end_5);
 		Assert.assertEquals(0, overlaps_5.size());
 		
 		//check organizer availability (in future)
@@ -179,7 +258,7 @@ public class GoToMeetingDAOTest extends OlatTestCase {
 		Date start_6= cal.getTime();
 		cal.set(2016, 8, 12, 21, 0, 0);
 		Date end_6 = cal.getTime();
-		List<GoToMeeting> overlaps_6 = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start_6, end_6);
+		List<GoToMeeting> overlaps_6 = meetingDao.getMeetingsOverlap(GoToType.training, organizer, start_6, end_6);
 		Assert.assertEquals(0, overlaps_6.size());
 	}
 }
diff --git a/src/test/java/org/olat/modules/gotomeeting/manager/GoToRegistrantDAOTest.java b/src/test/java/org/olat/modules/gotomeeting/manager/GoToRegistrantDAOTest.java
index 412fb867d658243f8e448012f2eae8134fb70b75..88b7ec85091e7ad5b913fce9698a3fc86c96a289 100644
--- a/src/test/java/org/olat/modules/gotomeeting/manager/GoToRegistrantDAOTest.java
+++ b/src/test/java/org/olat/modules/gotomeeting/manager/GoToRegistrantDAOTest.java
@@ -20,6 +20,7 @@
 package org.olat.modules.gotomeeting.manager;
 
 import java.util.Date;
+import java.util.List;
 import java.util.UUID;
 
 import org.junit.Assert;
@@ -79,7 +80,36 @@ public class GoToRegistrantDAOTest extends OlatTestCase {
 		GoToRegistrant reloadRegistrant = registrantDao.getRegistrant(training, trainee);
 		Assert.assertNotNull(reloadRegistrant);
 		Assert.assertEquals(registrant, reloadRegistrant);
+	}
+	
+	@Test
+	public void getRegistrants() {
+		String token = UUID.randomUUID().toString();
+		Identity trainee = JunitTestHelper.createAndPersistIdentityAsRndUser("trainee-3");
 		
+		GoToOrganizer organizer = organizerDao
+				.createOrganizer(null, token, token, token, null, null, null, null, 10l, null);
+		Assert.assertNotNull(organizer);
+		
+		Date start = new Date();
+		Date end = new Date();
+		String trainingKey = Long.toString(CodeHelper.getForeverUniqueID());
+		GoToMeeting training = meetingDao
+				.createTraining("New training", null, "Very interessant", trainingKey, start, end, organizer, null, null, null);
+		dbInstance.commit();
+		
+		//create registrant
+		String registrantKey = Long.toString(CodeHelper.getForeverUniqueID());
+		String joinUrl = "http://openolat.com/join/" + registrantKey;
+		String confirmUrl = "http://openolat.com/confirm/" + registrantKey;
+		GoToRegistrant registrant = registrantDao.createRegistrant(training, trainee, registrantKey, joinUrl, confirmUrl);
+		Assert.assertNotNull(registrant);
+		dbInstance.commit();
+		
+		//load
+		List<GoToRegistrant> reloadRegistrants = registrantDao.getRegistrants(trainee, null, null, null);
+		Assert.assertNotNull(reloadRegistrants);
+		Assert.assertEquals(1, reloadRegistrants.size());
+		Assert.assertEquals(registrant, reloadRegistrants.get(0));
 	}
-
 }