diff --git a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java
index c60f9bf..16d673c 100644
--- a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java
+++ b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java
@@ -191,6 +191,7 @@
 
 			// temporal date for calculation
 			Date tmpDate = validFrom;
+			Date nextStartDateOfPhase = null;
 			StandbyGroup group = standbyGroupRepository.findOne(standbyBlueprintDto.getStandbyGroupId());
 			StandbyDuration firstDuration = this.getFittingDurationOfGroup(group, validFrom);
 			if (firstDuration != null) {
@@ -208,20 +209,19 @@
 				if (lsDur != null && !lsDur.isEmpty()) {
 					duration = lsDur.get(lsDur.size() - 1);
 
-					// get days between duration start and end
+					// current week day
+					int tempDateDay = DateHelper.getDayOfWeek(tmpDate);
+
+					// get days between duration start and duration end
 					int differenceOfDurationDays = DateHelper.calculateDifferenceOfDays(duration.getValidDayFrom(),
 							duration.getValidDayTo(), duration.getValidFrom(), duration.getValidTo());
 
-					Date endDurDate = DateHelper.addDaysToDate(tmpDate, differenceOfDurationDays);
-					endDurDate = DateHelper.getDateWithTime(endDurDate, duration.getValidTo());
+					// get days between duration start and the current date (tmpDate)
+					int differenceOfTempDateAndDurStart = DateHelper.calculateDifferenceOfDays(
+							duration.getValidDayFrom(), tempDateDay, duration.getValidFrom(), tmpDate);
 
-					if (differenceOfDurationDays == 0) {
-						differenceOfDays = DateHelper.calculateDifferenceOfDays(DateHelper.getDayOfWeek(tmpDate),
-								duration.getValidDayTo(), tmpDate, duration.getValidTo());
-					} else {
-						differenceOfDays = DateHelper.calculateDifferenceOfDays(DateHelper.getDayOfWeek(tmpDate),
-								DateHelper.getDayOfWeek(endDurDate), tmpDate, endDurDate);
-					}
+					// reduce duration slot with the starting difference
+					differenceOfDays = differenceOfDurationDays - differenceOfTempDateAndDurStart;
 
 					Date startOfDuration = DateHelper.getDateWithTime(tmpDate, duration.getValidFrom());
 					Date endOfDuration = DateHelper.addDaysToDate(tmpDate, differenceOfDays);
@@ -236,6 +236,8 @@
 									tmpDur.getValidTo());
 							endOfDuration = DateHelper.addDaysToDate(tmpDate, differenceOfDays);
 							endOfDuration = DateHelper.getDateWithTime(endOfDuration, tmpDur.getValidTo());
+						} else {
+							LOGGER.debug("Keine Duration für den Tag : " + startOfDuration + " gefunden.");
 						}
 					}
 
@@ -253,18 +255,23 @@
 								phase++;
 								LOGGER.debug("Add phase " + phase);
 								resultMap.put(phase,
-										new PlanningPhaseDto(startOfDuration, endOfDuration, lsUserInGroup));
+										new PlanningPhaseDto(dto.getEndDate(), endOfDuration, lsUserInGroup));
+
 							}
 						} else {
 							LOGGER.debug("Add phase " + phase);
 							resultMap.put(phase, new PlanningPhaseDto(startOfDuration, endOfDuration, lsUserInGroup));
 						}
+					} else {
+						LOGGER.debug("Keine Gruppe gefunden!");
 					}
 
+					if (differenceOfDays == 0) {
+						// add at least one day
+						differenceOfDays = 1;
+					}
 					tmpDate = DateHelper.addDaysToDate(tmpDate, differenceOfDays);
-
 				}
-
 			}
 			this.logPhases(resultMap);
 			return resultMap;
