diff --git a/src/main/java/org/olat/modules/gotomeeting/GoToMeetingManager.java b/src/main/java/org/olat/modules/gotomeeting/GoToMeetingManager.java
index 7acf42ccb3f9ef194ee4f31ea8d02cd117a2e398..d8224c00a6b4713cb828e601cbd8de3e9f81023b 100644
--- a/src/main/java/org/olat/modules/gotomeeting/GoToMeetingManager.java
+++ b/src/main/java/org/olat/modules/gotomeeting/GoToMeetingManager.java
@@ -77,6 +77,16 @@ public interface GoToMeetingManager {
 	 */
 	public boolean removeOrganizer(GoToOrganizer organizer);
 	
+	/**
+	 * Check if the organizer is available between the 2 specified dates.
+	 * 
+	 * @param organizer
+	 * @param start
+	 * @param end
+	 * @return
+	 */
+	public boolean checkOrganizerAvailability(GoToOrganizer organizer, Date start, Date end);
+	
 	
 	public GoToMeeting scheduleTraining(GoToOrganizer organizer, String name, String externalId, String description, Date start, Date end,
 			RepositoryEntry resourceOwner, String subIdentifier, BusinessGroup businessGroup, GoToError error);
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 5b2f24a275c51d9f14f7f2d1f2dc4633c452224f..2ae03bc376633aa8f15c0a006da46953b40bdf81 100644
--- a/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAO.java
+++ b/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAO.java
@@ -22,6 +22,7 @@ package org.olat.modules.gotomeeting.manager;
 import java.util.Date;
 import java.util.List;
 
+import javax.persistence.TemporalType;
 import javax.persistence.TypedQuery;
 
 import org.olat.core.commons.persistence.DB;
@@ -143,6 +144,25 @@ public class GoToMeetingDAO {
 		return query.getResultList();
 	}
 	
+	public List<GoToMeeting> getMeetingsOverlapp(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))");
+
+		List<GoToMeeting> meetings = dbInstance.getCurrentEntityManager()
+			.createQuery(sb.toString(), GoToMeeting.class)
+			.setParameter("organizerKey", organizer.getKey())
+			.setParameter("type", type.name())
+			.setParameter("start", start, TemporalType.TIMESTAMP)
+			.setParameter("end", end, TemporalType.TIMESTAMP)
+			.getResultList();
+		return meetings;
+	}
+	
 	public GoToMeeting update(GoToMeeting meeting) {
 		((GoToMeetingImpl)meeting).setLastModified(new Date());
 		return dbInstance.getCurrentEntityManager().merge(meeting);
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 edb07dfee08937d97036e265ecba9e6de731d601..b1689b3c3fbdf1347a9291cf788a95e2706e09e5 100644
--- a/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingManagerImpl.java
+++ b/src/main/java/org/olat/modules/gotomeeting/manager/GoToMeetingManagerImpl.java
@@ -123,6 +123,11 @@ public class GoToMeetingManagerImpl implements GoToMeetingManager {
 		}
 		return false;
 	}
+	
+	public boolean checkOrganizerAvailability(GoToOrganizer organizer, Date start, Date end) {
+		List<GoToMeeting> meetings = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start, end);
+		return meetings.isEmpty();
+	}
 
 	@Override
 	public GoToMeeting scheduleTraining(GoToOrganizer organizer, String name, String externalId, String description, Date start, Date end,
diff --git a/src/main/java/org/olat/modules/gotomeeting/model/GoToErrors.java b/src/main/java/org/olat/modules/gotomeeting/model/GoToErrors.java
index fce88bb85d6eb849c39c99b6a49855438ed443b5..d11c78fd63c4ee20573ef1cc50c5255312a95737 100644
--- a/src/main/java/org/olat/modules/gotomeeting/model/GoToErrors.java
+++ b/src/main/java/org/olat/modules/gotomeeting/model/GoToErrors.java
@@ -28,6 +28,7 @@ package org.olat.modules.gotomeeting.model;
 public enum GoToErrors {
 	Unkown(""),
 	DuplicateRegistrant(""),
+	OrganizerOverlap("error.organizer.overbooked"),
 	TrainingOver("error.code.TrainingOver"),
 	InvalidRequest(""),
 	NoSuchTraining("error.code.NoSuchTraining");
diff --git a/src/main/java/org/olat/modules/gotomeeting/restapi/GoToTrainingWebService.java b/src/main/java/org/olat/modules/gotomeeting/restapi/GoToTrainingWebService.java
index 8e4ea91fd743b1fa2cdef0b6856d3923cf0f20bb..3ded23b8826a69a7215fe7115568019377d03184 100644
--- a/src/main/java/org/olat/modules/gotomeeting/restapi/GoToTrainingWebService.java
+++ b/src/main/java/org/olat/modules/gotomeeting/restapi/GoToTrainingWebService.java
@@ -134,14 +134,25 @@ public class GoToTrainingWebService {
 			GoToMeeting meeting = null;
 			GoToError error = new GoToError();
 			if(training.getKey() == null) {
+				boolean organizerFound = false;
 				List<GoToOrganizer> organizers = meetingManager.getSystemOrganizers();
 				for(GoToOrganizer organizer:organizers) {
-					meeting = meetingManager.scheduleTraining(organizer, training.getName(), training.getExternalId(), "-",
-						training.getStart(), training.getEnd(), entry, subIdentifier, null, error);
-					if(!error.hasError()) {
-						break;
+					boolean available = meetingManager.checkOrganizerAvailability(organizer, training.getStart(), training.getEnd());
+					if(available) {
+						meeting = meetingManager.scheduleTraining(organizer, training.getName(), training.getExternalId(), "-",
+							training.getStart(), training.getEnd(), entry, subIdentifier, null, error);
+						organizerFound = true;
+						if(!error.hasError()) {
+							break;
+						}
+					} else {
+						System.out.println("");
 					}
 				}
+				
+				if(!organizerFound) {
+					error.setError(GoToErrors.OrganizerOverlap);
+				}
 			} else {
 				meeting = meetingManager.getMeetingByExternalId(training.getExternalId());
 				if(meeting == null) {
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/EditTrainingController.java b/src/main/java/org/olat/modules/gotomeeting/ui/EditTrainingController.java
index 601aa159ae173072a53e85a661a3cb05bf8b00e0..1d846ebd75681ce61c72d2360eeb935c03081699 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/EditTrainingController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/EditTrainingController.java
@@ -160,6 +160,19 @@ public class EditTrainingController extends FormBasicController {
 			if(!organizersEl.isOneSelected()) {
 				organizersEl.setErrorKey("form.mandatory.hover", null);
 				allOk &= false;
+			} else {
+				Date start = startDateEl.getDate();
+				Date end = endDateEl.getDate();
+				
+				String selectedKeyStr = organizersEl.getSelectedKey();
+				int selectedIndex = Integer.parseInt(selectedKeyStr);
+				GoToOrganizer organizer = availablesOrganizers.get(selectedIndex);
+				if(start != null && end != null && organizer != null) {
+					if(!meetingManager.checkOrganizerAvailability(organizer, start, end)) {
+						organizersEl.setErrorKey("error.organizer.overbooked", null);
+						allOk &= false;
+					}
+				}
 			}
 		}
 		
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingTableModel.java b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingTableModel.java
index 703ade868f266564cf51a9e2c5f7fb45ef609995..2fa8645a0424496244cc3c028012b773a9b936c7 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingTableModel.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingTableModel.java
@@ -27,8 +27,10 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFle
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableDataModel;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableModelDelegate;
+import org.olat.core.util.StringHelper;
 import org.olat.group.BusinessGroup;
 import org.olat.modules.gotomeeting.GoToMeeting;
+import org.olat.modules.gotomeeting.GoToOrganizer;
 import org.olat.repository.RepositoryEntry;
 
 /**
@@ -63,6 +65,23 @@ public class GoToMeetingTableModel extends DefaultFlexiTableDataModel<GoToMeetin
 			case name: return meeting.getName();
 			case start: return meeting.getStartDate();
 			case end: return meeting.getEndDate();
+			case organizer: {
+				GoToOrganizer organizer = meeting.getOrganizer();
+				String name = "";
+				if(organizer != null) {
+					if(StringHelper.containsNonWhitespace(organizer.getName())) {
+						name = organizer.getName();
+					} else if(StringHelper.containsNonWhitespace(organizer.getLastName())) {
+						if(StringHelper.containsNonWhitespace(organizer.getFirstName())) {
+							name += organizer.getFirstName() + " ";
+						}
+						name += organizer.getLastName();
+					} else if(StringHelper.containsNonWhitespace(organizer.getUsername())) {
+						name = organizer.getUsername();
+					}
+				}
+				return name;
+			}
 			case resource: {
 				RepositoryEntry entry = meeting.getEntry();
 				if(entry != null) {
@@ -89,6 +108,7 @@ public class GoToMeetingTableModel extends DefaultFlexiTableDataModel<GoToMeetin
 		name("meeting.name"),
 		start("meeting.start"),
 		end("meeting.end"),
+		organizer("meeting.organizer"),
 		resource("meeting.resource");
 		
 		private final String i18nHeaderKey;
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsAdminController.java b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsAdminController.java
index 57c63bbf74aeeb38c9882185a71e4588903e9e7c..1376921853f2f34bcb3bef35681af02342ae007c 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsAdminController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsAdminController.java
@@ -80,6 +80,7 @@ public class GoToMeetingsAdminController extends FormBasicController {
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.name.i18nHeaderKey(), MeetingsCols.name.ordinal(), true, MeetingsCols.name.name()));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.start.i18nHeaderKey(), MeetingsCols.start.ordinal(), true, MeetingsCols.start.name()));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.end.i18nHeaderKey(), MeetingsCols.end.ordinal(), true, MeetingsCols.end.name()));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.organizer.i18nHeaderKey(), MeetingsCols.organizer.ordinal(), true, MeetingsCols.organizer.name()));
 		FlexiCellRenderer renderer = new StaticFlexiCellRenderer("resource", new TextFlexiCellRenderer());
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel(MeetingsCols.resource.i18nHeaderKey(), MeetingsCols.resource.ordinal(), "resource",
 				true, MeetingsCols.resource.name(), renderer));
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsController.java b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsController.java
index 41eea5e33b192d21ae787267562275a370817412..cd7e3cc69111bce35d6fa30f5805e168789b9ed1 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsController.java
@@ -19,6 +19,8 @@
  */
 package org.olat.modules.gotomeeting.ui;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 import org.olat.core.commons.persistence.SortKey;
@@ -56,8 +58,8 @@ public class GoToMeetingsController extends FormBasicController {
 	private final RepositoryEntry entry;
 	private final BusinessGroup businessGroup;
 	
-	private FlexiTableElement tableEl;
-	private GoToMeetingTableModel tableModel;
+	private FlexiTableElement upcomingTableEl, pastTableEl;
+	private GoToMeetingTableModel upcomingTableModel, pastTableModel;
 	
 	@Autowired
 	private GoToMeetingManager meetingMgr;
@@ -82,21 +84,48 @@ public class GoToMeetingsController extends FormBasicController {
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.end.i18nHeaderKey(), MeetingsCols.end.ordinal(), true, MeetingsCols.end.name()));
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("select", translate("select"), "select"));
 
-		tableModel = new GoToMeetingTableModel(columnsModel);
-		tableEl = uifactory.addTableElement(getWindowControl(), "meetings", tableModel, getTranslator(), formLayout);
-		tableEl.setEmtpyTableMessageKey("table.empty");
+		upcomingTableModel = new GoToMeetingTableModel(columnsModel);
+		upcomingTableEl = uifactory.addTableElement(getWindowControl(), "upcomingmeetings", upcomingTableModel, getTranslator(), formLayout);
+		upcomingTableEl.setEmtpyTableMessageKey("table.empty");
 		
 		FlexiTableSortOptions sortOptions = new FlexiTableSortOptions();
-		sortOptions.setDefaultOrderBy(new SortKey(MeetingsCols.start.name(), false));
-		tableEl.setSortSettings(sortOptions);
+		sortOptions.setDefaultOrderBy(new SortKey(MeetingsCols.start.name(), true));
+		upcomingTableEl.setSortSettings(sortOptions);
+
+		pastTableModel = new GoToMeetingTableModel(columnsModel);
+		pastTableEl = uifactory.addTableElement(getWindowControl(), "pastmeetings", pastTableModel, getTranslator(), formLayout);
+
+		FlexiTableSortOptions pastSortOptions = new FlexiTableSortOptions();
+		pastSortOptions.setDefaultOrderBy(new SortKey(MeetingsCols.start.name(), false));
+		pastTableEl.setSortSettings(sortOptions);
+
 		updateModel();
 	}
 	
 	protected void updateModel() {
 		List<GoToMeeting> meetings = meetingMgr.getMeetings(GoToType.training, entry, subIdent, businessGroup);
-		tableModel.setObjects(meetings);
-		tableEl.reloadData();
-		tableEl.reset();
+		
+		List<GoToMeeting> upcomingMeetings = new ArrayList<>();
+		List<GoToMeeting> pastMeetings = new ArrayList<>();
+		
+		Date now = new Date();
+		for(GoToMeeting meeting:meetings) {
+			Date endDate = meeting.getEndDate();
+			if(now.after(endDate)) {
+				pastMeetings.add(meeting);
+			} else {
+				upcomingMeetings.add(meeting);
+			}
+		}
+		
+		upcomingTableModel.setObjects(upcomingMeetings);
+		upcomingTableEl.reloadData();
+		upcomingTableEl.reset();
+		
+		pastTableModel.setObjects(pastMeetings);
+		pastTableEl.reloadData();
+		pastTableEl.reset();
+		pastTableEl.setVisible(pastMeetings.size() > 0);
 	}
 
 	@Override
@@ -106,11 +135,19 @@ public class GoToMeetingsController extends FormBasicController {
 
 	@Override
 	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
-		if(tableEl == source) {
+		if(upcomingTableEl == source) {
+			if(event instanceof SelectionEvent) {
+				SelectionEvent se = (SelectionEvent)event;
+				if("select".equals(se.getCommand())) {
+					GoToMeeting meeting = upcomingTableModel.getObject(se.getIndex());
+					fireEvent(ureq, new SelectGoToMeetingEvent(meeting));
+				}
+			}
+		} else if(pastTableEl == source) {
 			if(event instanceof SelectionEvent) {
 				SelectionEvent se = (SelectionEvent)event;
 				if("select".equals(se.getCommand())) {
-					GoToMeeting meeting = tableModel.getObject(se.getIndex());
+					GoToMeeting meeting = pastTableModel.getObject(se.getIndex());
 					fireEvent(ureq, new SelectGoToMeetingEvent(meeting));
 				}
 			}
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsEditController.java b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsEditController.java
index fae78fe6355f3a2252fd5c7c02e5e3c47aac9c83..9892b4762e040aab16ea047cad495d792ffd814d 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsEditController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsEditController.java
@@ -95,6 +95,7 @@ public class GoToMeetingsEditController extends FormBasicController {
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.name.i18nHeaderKey(), MeetingsCols.name.ordinal(), true, MeetingsCols.name.name()));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.start.i18nHeaderKey(), MeetingsCols.start.ordinal(), true, MeetingsCols.start.name()));
 		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.end.i18nHeaderKey(), MeetingsCols.end.ordinal(), true, MeetingsCols.end.name()));
+		columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(MeetingsCols.organizer.i18nHeaderKey(), MeetingsCols.organizer.ordinal(), true, MeetingsCols.organizer.name()));
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("edit", translate("edit"), "edit"));
 		columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("delete", translate("delete"), "delete"));
 		
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/_content/meetings.html b/src/main/java/org/olat/modules/gotomeeting/ui/_content/meetings.html
index 1fd075f25d793c97613509f37f8dba371df55595..dd90dc46c01566aefc699792befbcd551732c72c 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/_content/meetings.html
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/_content/meetings.html
@@ -1 +1,6 @@
-$r.render("meetings")
\ No newline at end of file
+<h3>$r.translate("meetings.upcoming")</h3>
+$r.render("upcomingmeetings")
+#if($r.visible("pastmeetings"))
+	<h3>$r.translate("meetings.past")</h3>
+	$r.render("pastmeetings")
+#end
\ No newline at end of file
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_de.properties
index 7718940a877ae8c35687e807d9870184c5cd332e..3f86d474bab03a8153802fe6b6d8e180d330e537 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_de.properties
@@ -11,6 +11,7 @@ enabled=
 error.code.NoSuchTraining=Die Schulung konnte nicht gefunden werden.
 error.code.TrainingOver=Schulung is abgeschlossen
 error.code.unkown=Eine unerwartete Fehler ist auf dem GoToTraining server passiert.
+error.organizer.overbooked=Der Organizer hat schon ein Termin in diesem Zeitraum.
 error.start.after.end=Das Datum f\u00FCr das Ende der Schulung darf nicht vor dem Beginn Datum sein.
 error.training.schedule.failed=Die Schulung konnte nicht geplant werden.
 goto.configuration=Konfiguration
@@ -18,10 +19,13 @@ goto.module.enabled=Module "GoTo Training"
 join=Join
 meeting.end=End
 meeting.name=Name
+meeting.organizer=Organizer
 meeting.resource=Kurs
 meeting.start=Beginn
 meetings.admin.title=Konfiguration
 meetings.title=Schulungen
+meetings.upcoming=Zukünftige Schulungen
+meetings.past=Alte Schulungen
 organizer.email=E-Mail
 organizer.firsName=Vorname
 organizer.key=Organizer Key
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_en.properties
index 08f7ed47e68be01eeb6d14f00ea8e89cbc6b9d1f..515c4c22ee8e1aeb5c292e0935e5bd7da7c7f121 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/_i18n/LocalStrings_en.properties
@@ -11,6 +11,7 @@ enabled=
 error.code.NoSuchTraining=The training cannot be found.
 error.code.TrainingOver=Training is closed.
 error.code.unkown=An unexpected error happens on the GoToTraining server.
+error.organizer.overbooked=The organizer has already a training planned in this period.
 error.start.after.end=The end date of the meeting must not be before the start date.
 error.training.schedule.failed=The training cannot be planned.
 goto.configuration=Configuration
@@ -18,10 +19,13 @@ goto.module.enabled=Module "GoTo Training"
 join=Join
 meeting.end=End
 meeting.name=Name
+meeting.organizer=Organizer
 meeting.resource=Ressource
 meeting.start=Start
 meetings.admin.title=Configuration
 meetings.title=Trainings
+meetings.upcoming=Upcoming meetings
+meetings.past=Past meetings
 organizer.email=E-Mail
 organizer.firsName=First name
 organizer.key=Organizer key
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 6d49acbefaeac7f1c1da25b8cbe6ddd45a4b89e1..9a51ad5a0e58198c0dcc45094cd924dc3deaf000 100644
--- a/src/test/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAOTest.java
+++ b/src/test/java/org/olat/modules/gotomeeting/manager/GoToMeetingDAOTest.java
@@ -19,6 +19,7 @@
  */
 package org.olat.modules.gotomeeting.manager;
 
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 import java.util.UUID;
@@ -101,4 +102,84 @@ public class GoToMeetingDAOTest extends OlatTestCase {
 		Assert.assertEquals(1, meetings.size());
 		Assert.assertTrue(meetings.contains(training));
 	}
+	
+	
+	@Test
+	public void getMeetingsOverlapp() {
+		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, "Michael", "Wolgemut", null, null, 10l, null);
+		Assert.assertNotNull(organizer);
+
+		Calendar cal = Calendar.getInstance();
+		cal.set(2016, 8, 12, 12, 0, 0);
+		Date start = cal.getTime();
+		cal.set(2016, 8, 12, 18, 0, 0);
+		Date end = cal.getTime();
+		String trainingKey = Long.toString(CodeHelper.getForeverUniqueID());
+		GoToMeeting training = meetingDao.createTraining("New training", null, "Very interessant", trainingKey, start, end,
+				organizer, entry, "d9914", null);
+		dbInstance.commit();
+		Assert.assertNotNull(training);
+
+		//check organizer availability (same date)
+		List<GoToMeeting> overlaps = meetingDao.getMeetingsOverlapp(GoToType.training, organizer, start, end);
+		Assert.assertNotNull(overlaps);
+		Assert.assertEquals(1, overlaps.size());
+
+		//check organizer availability (end overlap)
+		cal.set(2016, 8, 12, 10, 0, 0);
+		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);
+		Assert.assertEquals(1, overlaps_1.size());
+		
+		//check organizer availability (start overlap)
+		cal.set(2016, 8, 12, 14, 0, 0);
+		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);
+		Assert.assertEquals(1, overlaps_2.size());
+		
+		//check organizer availability (within)
+		cal.set(2016, 8, 12, 14, 0, 0);
+		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);
+		Assert.assertNotNull(overlaps_3);
+		Assert.assertEquals(1, overlaps_3.size());
+		
+		//check organizer availability (start before, end after)
+		cal.set(2016, 8, 12, 10, 0, 0);
+		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);
+		Assert.assertNotNull(overlaps_4);
+		Assert.assertEquals(1, overlaps_4.size());
+		
+		//check organizer availability (in past)
+		cal.set(2016, 8, 12, 9, 0, 0);
+		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);
+		Assert.assertEquals(0, overlaps_5.size());
+		
+		//check organizer availability (in future)
+		cal.set(2016, 8, 12, 20, 0, 0);
+		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);
+		Assert.assertEquals(0, overlaps_6.size());
+	}
 }