BP 778: fixed bug in datepicker validation; adjusted every datepicker
diff --git a/src/app/masterdata-management/components/calendar/calendar.component.html b/src/app/masterdata-management/components/calendar/calendar.component.html
index 3de6d74..ddfa4c2 100644
--- a/src/app/masterdata-management/components/calendar/calendar.component.html
+++ b/src/app/masterdata-management/components/calendar/calendar.component.html
@@ -37,7 +37,7 @@
             </div>
             <div class="col-md-2">
               <div class="form-group">
-                <div class="input-group">
+                <div class="input-group" formGroupName="date">
                   <input class="form-control" placeholder="Datum" name="dp" ngbDatepicker #date="ngbDatepicker"
                     formControlName="date" id="dateInput" required>
                   <div class="input-group-append">
@@ -52,7 +52,7 @@
                     </button>
                   </div>
                 </div>
-                <ok-error [control]="form.controls['date']"></ok-error>
+                <ok-error [control]="form.controls['date'].controls['date']"></ok-error>
               </div>
             </div>
           </div>
diff --git a/src/app/masterdata-management/components/calendar/calendar.component.ts b/src/app/masterdata-management/components/calendar/calendar.component.ts
index 4628d10..a48f7f2 100644
--- a/src/app/masterdata-management/components/calendar/calendar.component.ts
+++ b/src/app/masterdata-management/components/calendar/calendar.component.ts
@@ -55,7 +55,9 @@
     this.form = this.fb.group({
       id: '',
       name: ['', Validators.required],
-      date: ['', Validators.required]
+      date: this.fb.group({
+        date: ['', Validators.required]
+      })
     });
   }
   /**
diff --git a/src/app/masterdata-management/components/standbygroup/standbygroup.component.ts b/src/app/masterdata-management/components/standbygroup/standbygroup.component.ts
index 15a801e..14a2d00 100644
--- a/src/app/masterdata-management/components/standbygroup/standbygroup.component.ts
+++ b/src/app/masterdata-management/components/standbygroup/standbygroup.component.ts
@@ -351,8 +351,10 @@
     if (dataToMove.length === 1) {
       this.userModalRef.componentInstance.form.patchValue(
         {
-          validFrom: this.ngbDateParserFormatter.parse(dataToMove[0].validFrom),
-          validTo: this.ngbDateParserFormatter.parse(dataToMove[0].validTo),
+          date: {
+            validFrom: this.ngbDateParserFormatter.parse(dataToMove[0].validFrom),
+            validTo: this.ngbDateParserFormatter.parse(dataToMove[0].validTo),
+          },
           position: dataToMove[0].position
         }
       );
diff --git a/src/app/masterdata-management/components/user/user.component.html b/src/app/masterdata-management/components/user/user.component.html
index 3450033..7590fda 100644
--- a/src/app/masterdata-management/components/user/user.component.html
+++ b/src/app/masterdata-management/components/user/user.component.html
@@ -11,7 +11,8 @@
 -->
 <div class="container-fluid">
   <form class="mt-3" [formGroup]="form" novalidate>
-    <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom stick-headlines" *ngIf="!isModal">
+    <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom stick-headlines"
+      *ngIf="!isModal">
       <h1 class="h2">Mitarbeiter verwalten</h1>
       <div class="btn-toolbar mb-2 mb-md-0">
         <button *ngIf="authService.userHasRoles(['BP_Sachbearbeiter','BP_Admin'])" class="btn btn-success mr-1" (click)="saveUser()"
@@ -47,7 +48,7 @@
           </div>
           <div class="row">
             <div [ngClass]="{'col-md-6': !isModal, 'col-md-12': isModal}">
-              <div class="row">
+              <div class="row" formGroupName="date">
                 <label class="form-check-label col-form-label col-md-3">
                   Gültigkeit
                 </label>
@@ -67,8 +68,9 @@
                           <i class="fa fa-clock-o" aria-hidden="true"></i>
                         </button>
                       </div>
+                      <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
                     </div>
-                    <ok-error [control]="form.controls['validTo']"></ok-error>
+                    <ok-error [control]="form.controls['date']"></ok-error>
                   </div>
                 </div>
                 <div class="col-md-4">
@@ -87,6 +89,7 @@
                           <i class="fa fa-clock-o" aria-hidden="true"></i>
                         </button>
                       </div>
+                      <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
                     </div>
                   </div>
                 </div>
diff --git a/src/app/masterdata-management/components/user/user.component.spec.ts b/src/app/masterdata-management/components/user/user.component.spec.ts
index 9ed21df..d1f8fd0 100644
--- a/src/app/masterdata-management/components/user/user.component.spec.ts
+++ b/src/app/masterdata-management/components/user/user.component.spec.ts
@@ -7,8 +7,7 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
-import { async, ComponentFixture, TestBed, inject } from '@angular/core/testing';
-import { FormControl, Validators, FormGroup } from '@angular/forms';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 import { RouterTestingModule } from '@angular/router/testing';
 import { of } from 'rxjs';
 import { ActivatedRoute, Routes, Router } from '@angular/router';
@@ -117,8 +116,10 @@
       component.form.patchValue({
         firstname: 'test',
         lastname: 'test',
-        validFrom: { day: 1, month: 1, year: 2018 },
-        validTo: { day: 1, month: 1, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 1, year: 2018 },
+          validTo: { day: 1, month: 1, year: 2018 }
+        }
       });
       expect(component.saveUser()).toBeTruthy();
     });
@@ -128,8 +129,10 @@
       component.form.patchValue({
         firstname: 'test',
         lastname: 'test',
-        validFrom: { day: 1, month: 1, year: 2018 },
-        validTo: { day: 1, month: 1, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 1, year: 2018 },
+          validTo: { day: 1, month: 1, year: 2018 }
+        }
       });
       component.isModal = true;
       component.saveUser();
@@ -157,7 +160,7 @@
     it('should set validFrom to current day', () => {
       const date = new Date();
       component.setDefaultDate('validFrom');
-      expect(component.form.controls.validFrom.value).toEqual({
+      expect(component.form.get('validFrom').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
       });
     });
@@ -165,7 +168,7 @@
     it('should set validTo to current day + 15 years', () => {
       const date = new Date();
       component.setDefaultDate('validTo');
-      expect(component.form.controls.validTo.value).toEqual({
+      expect(component.form.get('validTo').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
       });
     });
diff --git a/src/app/masterdata-management/components/user/user.component.ts b/src/app/masterdata-management/components/user/user.component.ts
index efdacba..7ff43d6 100644
--- a/src/app/masterdata-management/components/user/user.component.ts
+++ b/src/app/masterdata-management/components/user/user.component.ts
@@ -89,8 +89,10 @@
       if (this.instanceId) {
         this.user$ = this.masterDataService.getUser(this.instanceId).subscribe(
           data => {
-            data.validFrom = this.ngbDateParserFormatter.parse(data.validFrom);
-            data.validTo = this.ngbDateParserFormatter.parse(data.validTo);
+            data.date = {
+              validFrom: this.ngbDateParserFormatter.parse(data.validFrom),
+              validTo: this.ngbDateParserFormatter.parse(data.validTo)
+            };
             this.form.patchValue(data);
             this.targetRegion = data.lsUserInRegions;
             this.targetFunction = data.lsUserFunctions;
@@ -148,8 +150,10 @@
       businessContactData: this.createBusinessContact(),
       privateContactData: this.createPrivateContact(),
       privateAddress: this.createAddress(),
-      validFrom: ['', Validators.required],
-      validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+      date: this.fb.group({
+        validFrom: ['', Validators.required],
+        validTo: ['', Validators.required],
+      }, { validator: [DatepickerValidator.dateRangeTo('')] }),
       modificationDate: '',
       notes: '',
       hrNumber: '',
@@ -163,8 +167,10 @@
       firstname: ['', Validators.required],
       lastname: ['', Validators.required],
       isCompany: false,
-      validFrom: ['', Validators.required],
-      validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+      date: this.fb.group({
+        validFrom: ['', Validators.required],
+        validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+      }, { validator: [DatepickerValidator.dateRangeTo('')] }),
       notes: '',
       hrNumber: '',
       userKey: ''
diff --git a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.html b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.html
index 33b4f91..f871e4d 100644
--- a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.html
+++ b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.html
@@ -17,7 +17,7 @@
 </div>
 <div class="modal-body">
   <form class="mt-3" [formGroup]="form" novalidate>
-    <div class="row">
+    <div class="row" formGroupName="date">
       <label class="form-check-label col-form-label col-md-3">
         Gültigkeit
       </label>
@@ -37,8 +37,9 @@
                 <i class="fa fa-clock-o" aria-hidden="true"></i>
               </button>
             </div>
+            <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
           </div>
-          <ok-error [control]="form.controls['validTo']"></ok-error>
+          <ok-error [control]="form.controls['date']"></ok-error>
         </div>
       </div>
       <div class="col-md-4">
@@ -57,6 +58,7 @@
                 <i class="fa fa-clock-o" aria-hidden="true"></i>
               </button>
             </div>
+            <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
           </div>
         </div>
       </div>
diff --git a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.spec.ts b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.spec.ts
index 3f54f69..fb27778 100644
--- a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.spec.ts
+++ b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.spec.ts
@@ -44,7 +44,12 @@
 
   describe('decide()', () => {
     it('should prepare the data and call decide', () => {
-      component.form.patchValue({ validFrom: { day: 1, month: 1, year: 2018 }, validTo: { day: 1, month: 1, year: 2018 } });
+      component.form.patchValue({
+        date: {
+          validFrom: { day: 1, month: 1, year: 2018 },
+          validTo: { day: 1, month: 1, year: 2018 }
+        }
+      });
       component.decide(true);
     });
     it('should validate form fields if decision is true and form fields are invalid', () => {
@@ -57,7 +62,7 @@
     it('should set validFrom to current day', () => {
       const date = new Date();
       component.setDefaultDate('validFrom');
-      expect(component.form.controls.validFrom.value).toEqual({
+      expect(component.form.get('validFrom').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
       });
     });
@@ -65,7 +70,7 @@
     it('should set validTo to current day + 15 years', () => {
       const date = new Date();
       component.setDefaultDate('validTo');
-      expect(component.form.controls.validTo.value).toEqual({
+      expect(component.form.get('validTo').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
       });
     });
diff --git a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.ts b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.ts
index b6a1652..31824c1 100644
--- a/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.ts
+++ b/src/app/masterdata-management/selection-dialogs/validity-dialog/validity-dialog.component.ts
@@ -26,8 +26,10 @@
   saveButtonLabel = 'Verschieben';
 
   form: FormGroup = this.fb.group({
-    validFrom: ['', Validators.required],
-    validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+    date: this.fb.group({
+      validFrom: ['', Validators.required],
+      validTo: ['', [Validators.required]],
+    }, { validator: [DatepickerValidator.dateRangeTo('')] }),
     position: ''
   });
   constructor(
diff --git a/src/app/reporting/components/dashboard/dashboard.component.html b/src/app/reporting/components/dashboard/dashboard.component.html
index 5defa66..d7c9c12 100644
--- a/src/app/reporting/components/dashboard/dashboard.component.html
+++ b/src/app/reporting/components/dashboard/dashboard.component.html
@@ -33,7 +33,7 @@
                 <label class="form-check-label col-form-label col-md-3">
                   Abfragezeit
                 </label>
-                <div class="input-group col-md-5">
+                <div class="input-group col-md-5" formGroupName="date">
                   <input class="form-control" placeholder="von" name="dp" ngbDatepicker #dateIndex="ngbDatepicker"
                     formControlName="dateIndex" required id="validityDateFromInput">
                   <div class="input-group-append">
@@ -47,12 +47,12 @@
                       <i class="fa fa-clock-o" aria-hidden="true"></i>
                     </button>
                   </div>
+                  <ok-error [control]="form.controls['date'].controls['dateIndex']" class="w-100"></ok-error>
                 </div>
                 <div class="col-md-3">
                   <ngb-timepicker formControlName="timeIndex" id="moveTimePickerFrom"></ngb-timepicker>
                   <ok-error [control]="form.controls['timeIndex']"></ok-error>
                 </div>
-                <ok-error [control]="form.controls['validTo']"></ok-error>
               </div>
             </div>
             <div class="col-md-12 col-sm-12 col-xl-6">
@@ -123,8 +123,8 @@
           <ng-container *ngFor="let row of rowData">
             <tr>
               <td><button class="btn btn-primary btn-sm" (click)="row.isCollapsed = !row.isCollapsed" title="Details anzeigen">
-                <i class="fa fa-eye" aria-hidden="true"></i>
-              </button></td>
+                  <i class="fa fa-eye" aria-hidden="true"></i>
+                </button></td>
               <td scope="row">{{row.standbyGroup?.title}}</td>
               <td scope="row">{{row.user?.organisation?.orgaName}}</td>
               <td scope="row">{{row.user?.firstname}}</td>
diff --git a/src/app/reporting/components/dashboard/dashboard.component.ts b/src/app/reporting/components/dashboard/dashboard.component.ts
index 7b20ee5..c134888 100644
--- a/src/app/reporting/components/dashboard/dashboard.component.ts
+++ b/src/app/reporting/components/dashboard/dashboard.component.ts
@@ -57,7 +57,9 @@
   createForm() {
     let now = new Date();
     this.form = this.fb.group({
-      dateIndex: ['', Validators.required],
+      date: this.fb.group({
+        dateIndex: ['', Validators.required],
+      }),
       timeIndex: {
         hour: now.getHours(),
         minute: now.getMinutes(),
diff --git a/src/app/reporting/components/standby-reporting/standby-reporting.component.html b/src/app/reporting/components/standby-reporting/standby-reporting.component.html
index 1b237ce..572eea6 100644
--- a/src/app/reporting/components/standby-reporting/standby-reporting.component.html
+++ b/src/app/reporting/components/standby-reporting/standby-reporting.component.html
@@ -68,7 +68,7 @@
         </div>
         <div class="row">
           <div class="col-md-12 col-sm-12 col-xl-6">
-            <div class="row">
+            <div class="row" formGroupName="date">
               <label class="form-check-label col-form-label col-md-3">
                 Gültigkeit
               </label>
@@ -88,8 +88,9 @@
                         <i class="fa fa-clock-o" aria-hidden="true"></i>
                       </button>
                     </div>
+                    <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
                   </div>
-                  <ok-error [control]="form.controls['validFrom']"></ok-error>
+                  <ok-error [control]="form.controls['date']"></ok-error>
                 </div>
               </div>
               <div class="col-sm-1">
@@ -111,8 +112,8 @@
                         <i class="fa fa-clock-o" aria-hidden="true"></i>
                       </button>
                     </div>
+                    <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
                   </div>
-                  <ok-error [control]="form.controls['validTo']"></ok-error>
                 </div>
               </div>
             </div>
diff --git a/src/app/reporting/components/standby-reporting/standby-reporting.component.spec.ts b/src/app/reporting/components/standby-reporting/standby-reporting.component.spec.ts
index 17f71de..3395160 100644
--- a/src/app/reporting/components/standby-reporting/standby-reporting.component.spec.ts
+++ b/src/app/reporting/components/standby-reporting/standby-reporting.component.spec.ts
@@ -92,7 +92,7 @@
     it('should set validFrom to current day', () => {
       const date = new Date();
       component.setDefaultDate('validFrom');
-      expect(component.form.controls.validFrom.value).toEqual({
+      expect(component.form.get('validFrom').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
       });
     });
@@ -100,7 +100,7 @@
     it('should set validTo to current day + 15 years', () => {
       const date = new Date();
       component.setDefaultDate('validTo');
-      expect(component.form.controls.validTo.value).toEqual({
+      expect(component.form.get('validTo').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
       });
     });
diff --git a/src/app/reporting/components/standby-reporting/standby-reporting.component.ts b/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
index 4a625eb..2d52a5b 100644
--- a/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
+++ b/src/app/reporting/components/standby-reporting/standby-reporting.component.ts
@@ -97,8 +97,10 @@
     this.form = this.fb.group({
       standById: ['', Validators.required],
       reportName: ['', Validators.required],
-      validFrom: ['', [Validators.required]],
-      validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+      date: this.fb.group({
+        validFrom: ['', Validators.required],
+        validTo: ['', Validators.required],
+      }, { validator: [DatepickerValidator.dateRangeTo('')] }),
       printFormat: ['', Validators.required],
       reportLevel: ['Ist-Ebene', Validators.required],
       statusId: 1
@@ -123,11 +125,11 @@
 
     if (clicked) {
       const days = 7;
-      const validFromDate: Date = new Date(formValue.validFrom.year, formValue.validFrom.month - 1, formValue.validFrom.day);
+      const validFromDate: Date = new Date(formValue.date.validFrom.year, formValue.date.validFrom.month - 1, formValue.date.validFrom.day);
       FormUtil.setDefaultReportDate(this.form, 'validTo', days, validFromDate);
     } else {
       const days = 1;
-      const validFromDate: Date = new Date(formValue.validFrom.year, formValue.validFrom.month - 1, formValue.validFrom.day);
+      const validFromDate: Date = new Date(formValue.date.validFrom.year, formValue.date.validFrom.month - 1, formValue.date.validFrom.day);
       FormUtil.setDefaultReportDate(this.form, 'validTo', days, validFromDate);
     }
   }
diff --git a/src/app/shared/model/ArchiveObject.ts b/src/app/shared/model/ArchiveObject.ts
index b3cecfd..e0f4485 100644
--- a/src/app/shared/model/ArchiveObject.ts
+++ b/src/app/shared/model/ArchiveObject.ts
@@ -16,6 +16,10 @@
     modifiedCause: string;
     title: string;
     jsonPlan: string;
+    date?: {
+        validFrom: any;
+        validTo: any;
+    };
     validFrom: any;
     validTo: any;
 }
diff --git a/src/app/shared/model/UserObject.ts b/src/app/shared/model/UserObject.ts
index 9d1c69a..e648727 100644
--- a/src/app/shared/model/UserObject.ts
+++ b/src/app/shared/model/UserObject.ts
@@ -42,6 +42,10 @@
     };
     lsUserInRegions: Array<RegionObject>;
     lsUserFunctions: Array<FunctionObject>;
+    date?: {
+        validFrom: any;
+        validTo: any;
+    };
     validFrom: any; // has to be any since the datepicker uses a different format than the rest service
     validTo: any; // has to be any since the datepicker uses a different format than the rest service
     modificationDate: string;
diff --git a/src/app/shared/utils/form.util.ts b/src/app/shared/utils/form.util.ts
index fb00ec8..fe527b6 100644
--- a/src/app/shared/utils/form.util.ts
+++ b/src/app/shared/utils/form.util.ts
@@ -65,7 +65,10 @@
         if (field === 'validTo') {
             date.setFullYear(date.getFullYear() + 15);
         }
-        form.get(field).setValue(ngbDateFormatter.parse(datePipe.transform(date, 'yyyy-MM-dd')));
+        console.log(form);
+        console.log(field);
+        console.log(form.get('date').get(field));
+        form.get('date').get(field).setValue(ngbDateFormatter.parse(datePipe.transform(date, 'yyyy-MM-dd')));
     }
 
     static setDefaultReportDate(form: FormGroup, field: string, days: number, date: Date) {
@@ -73,7 +76,7 @@
         const datePipe = new DatePipe('en-US');
         const ngbDateFormatter = new NgbDateStringParserFormatter();
 
-        form.get(field).setValue(ngbDateFormatter.parse(datePipe.transform(incrementedDate, 'yyyy-MM-dd')));
+        form.get('date').get(field).setValue(ngbDateFormatter.parse(datePipe.transform(incrementedDate, 'yyyy-MM-dd')));
     }
 
     static addDays(days: number, dateToIncrement: Date): Date {
@@ -85,8 +88,10 @@
     static setInitialDate(form: FormGroup) {
         const date = new Date();
         form.patchValue({
-            validFrom: { day: 1, month: 1, year: date.getFullYear() + 1 },
-            validTo: { day: 31, month: 12, year: date.getFullYear() + 1 }
+            date: {
+                validFrom: { day: 1, month: 1, year: date.getFullYear() + 1 },
+                validTo: { day: 31, month: 12, year: date.getFullYear() + 1 }
+            }
         });
     }
 
@@ -94,7 +99,7 @@
         const date = new Date();
         const patchObj = {};
         patchObj[field] = { day: 31, month: 12, year: date.getFullYear() + 1 };
-        form.patchValue(patchObj);
+        form.get('date').patchValue(patchObj);
     }
 
     static convertToNgbTime(dateString: string): NgbTimeStruct {
@@ -110,13 +115,14 @@
 
     static formatDates(obj: Object, properties: Array<any>): void {
         for (let i = 0; i < properties.length; i++) {
-            if (obj.hasOwnProperty(properties[i])) {
-                const date: NgbDateStruct = obj[properties[i]];
-                if (date.year && date.month && date.day) {
+            if (obj['date'].hasOwnProperty(properties[i])) {
+                const date: NgbDateStruct = obj['date'][properties[i]];
+                if (date && date.year && date.month && date.day) {
                     obj[properties[i]] = `${date.year}-${date.month}-${date.day}`;
                 }
             }
         }
+        delete obj['date'];
     }
 
     static dateToISOString(date: Date) {
diff --git a/src/app/shared/validators/datepicker.validator.ts b/src/app/shared/validators/datepicker.validator.ts
index 1b52166..0dd8bde 100644
--- a/src/app/shared/validators/datepicker.validator.ts
+++ b/src/app/shared/validators/datepicker.validator.ts
@@ -7,16 +7,14 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
-import { ValidatorFn, AbstractControl } from '@angular/forms';
+import { ValidatorFn, AbstractControl, FormGroup } from '@angular/forms';
 
 export class DatepickerValidator {
-    static dateRangeTo(otherControlName: string): ValidatorFn {
-        return (validTo: AbstractControl): { [key: string]: boolean } | null => {
-            const validFrom: AbstractControl = validTo.root.get(otherControlName);
+    static dateRangeTo(test: string): ValidatorFn {
+        return (form: FormGroup): { [key: string]: boolean } | null => {
+            const validFrom: AbstractControl = form.get('validFrom');
+            const validTo: AbstractControl = form.get('validTo');
             if (validFrom && validFrom.value && validTo.value) {
-                validFrom.valueChanges.subscribe(() => {
-                    validTo.updateValueAndValidity({ onlySelf: true });
-                });
                 const validFromValue = validFrom.value;
                 const validFromDateObj = new Date(validFromValue.year, validFromValue.month - 1, validFromValue.day, 0, 0, 0, 0);
                 const validToValue = validTo.value;
diff --git a/src/app/standby-schedule/components/archive/archive.component.html b/src/app/standby-schedule/components/archive/archive.component.html
index 56e1c20..2448f97 100644
--- a/src/app/standby-schedule/components/archive/archive.component.html
+++ b/src/app/standby-schedule/components/archive/archive.component.html
@@ -48,7 +48,7 @@
                     </div>
                     <div class="row">
                         <div class="col-md-6">
-                            <div class="row">
+                            <div class="row" formGroupName="date">
                                 <label class="form-check-label col-form-label col-md-3">
                                     Zeitraum
                                 </label>
diff --git a/src/app/standby-schedule/components/archive/archive.component.ts b/src/app/standby-schedule/components/archive/archive.component.ts
index a327a40..6bbeb03 100644
--- a/src/app/standby-schedule/components/archive/archive.component.ts
+++ b/src/app/standby-schedule/components/archive/archive.component.ts
@@ -46,8 +46,10 @@
           data => {
             this.plan = JSON.parse(data.jsonPlan);
             data.modificationDate = this.ngbDateParserFormatter.parse(data.modificationDate);
-            data.validFrom = this.ngbDateParserFormatter.parse(data.validFrom);
-            data.validTo = this.ngbDateParserFormatter.parse(data.validTo);
+            data.date = {
+              validFrom: this.ngbDateParserFormatter.parse(data.validFrom),
+              validTo: this.ngbDateParserFormatter.parse(data.validTo)
+            };
             this.form.patchValue(data);
           }
         );
@@ -64,8 +66,10 @@
       modificationDate: { value: '', disabled: true },
       modifiedBy: { value: '', disabled: true },
       modifiedCause: { value: '', disabled: true },
-      validFrom: { value: '', disabled: true },
-      validTo: { value: '', disabled: true }
+      date: this.fb.group({
+        validFrom: { value: '', disabled: true },
+        validTo: { value: '', disabled: true }
+      })
     });
   }
 
diff --git a/src/app/standby-schedule/components/archivelist/archivelist.component.html b/src/app/standby-schedule/components/archivelist/archivelist.component.html
index a08e3d0..202f66d 100644
--- a/src/app/standby-schedule/components/archivelist/archivelist.component.html
+++ b/src/app/standby-schedule/components/archivelist/archivelist.component.html
@@ -32,7 +32,7 @@
               </label>
               <div class="col-md-4">
                 <div class="form-group">
-                  <div class="input-group">
+                  <div class="input-group" formGroupName="date">
                     <input class="form-control" placeholder="von" name="dp" ngbDatepicker #dateIndex="ngbDatepicker"
                       formControlName="dateIndex" id="dateFromInput" required>
                     <div class="input-group-append">
diff --git a/src/app/standby-schedule/components/archivelist/archivelist.component.spec.ts b/src/app/standby-schedule/components/archivelist/archivelist.component.spec.ts
index 9291828..f86669d 100644
--- a/src/app/standby-schedule/components/archivelist/archivelist.component.spec.ts
+++ b/src/app/standby-schedule/components/archivelist/archivelist.component.spec.ts
@@ -73,18 +73,27 @@
 
   describe('search()', () => {
     it('should search if form is valid', () => {
-      component.form.patchValue({ dateIndex: '2018-01-01' });
+      component.form.patchValue({
+        date: { dateIndex: '2018-01-01' }
+      });
       component.search();
     });
     it('shouldn´t search if form is invalid', () => {
-      component.form.patchValue({ dateIndex: '', city: '' });
+      component.form.patchValue({
+        date: { dateIndex: '' },
+        city: ''
+      });
       component.search();
     });
   });
 
   describe('clear()', () => {
     it('should clear the form', () => {
-      component.form.patchValue({ dateIndex: '2018-01-01' });
+      component.form.patchValue({
+        date: {
+          dateIndex: '2018-01-01'
+        }
+      });
       component.clear();
       expect(component.form.getRawValue().dateIndex).toBe(null);
     });
diff --git a/src/app/standby-schedule/components/archivelist/archivelist.component.ts b/src/app/standby-schedule/components/archivelist/archivelist.component.ts
index d085ccc..24b34be 100644
--- a/src/app/standby-schedule/components/archivelist/archivelist.component.ts
+++ b/src/app/standby-schedule/components/archivelist/archivelist.component.ts
@@ -70,7 +70,9 @@
 
   createForm() {
     this.form = this.fb.group({
-      dateIndex: ['', Validators.required]
+      date: this.fb.group({
+        dateIndex: ['', Validators.required]
+      })
     });
   }
 
diff --git a/src/app/standby-schedule/components/planninglist/planninglist.component.html b/src/app/standby-schedule/components/planninglist/planninglist.component.html
index 892c083..256e30b 100644
--- a/src/app/standby-schedule/components/planninglist/planninglist.component.html
+++ b/src/app/standby-schedule/components/planninglist/planninglist.component.html
@@ -40,7 +40,7 @@
         </div>
         <div class="row">
           <div class="col-md-12 col-sm-12 col-xl-8">
-            <div class="row">
+            <div class="row" formGroupName="date">
               <label class="form-check-label col-form-label col-md-3">
                 Gültigkeit
               </label>
@@ -60,8 +60,9 @@
                         <i class="fa fa-clock-o" aria-hidden="true"></i>
                       </button>
                     </div>
+                    <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
                   </div>
-                  <ok-error [control]="form.controls['validTo']"></ok-error>
+                  <ok-error [control]="form.controls['date']"></ok-error>
                 </div>
               </div>
               <div class="col-md-3">
@@ -80,6 +81,7 @@
                         <i class="fa fa-clock-o" aria-hidden="true"></i>
                       </button>
                     </div>
+                    <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
                   </div>
                 </div>
               </div>
@@ -87,7 +89,8 @@
                 <div class="btn-group mr-3 w-99">
                   <button type="button" class="btn btn-primary w-99" (click)="prepareDataAndCall('search')" id="btnSearch">Suchen</button>
                   <div class="btn-group" ngbDropdown placement="bottom-right" role="group" aria-label="Button group with nested dropdown">
-                    <button class="btn btn-primary dropdown-toggle-split border-left" id="splitButton" ngbDropdownToggle></button>
+                    <button class="btn btn-primary dropdown-toggle-split border-left" id="splitButton"
+                      ngbDropdownToggle></button>
                     <div class="dropdown-menu dropdown-menu-right" ngbDropdownMenu>
                       <button *ngIf="authService.userHasRoles(['BP_Sachbearbeiter','BP_Admin'])" class="dropdown-item pointer"
                         routerLink="/planung/transfer" id="btnPlan">Ansicht Pläne transferieren</button>
@@ -117,7 +120,8 @@
                 <i class="fa fa-calculator" aria-hidden="true"></i>
               </button>
               <a class="btn btn-xs ml-1 btn-primary" target="_blank" *ngIf="authService.userHasRoles(['BP_Sachbearbeiter', 'BP_Admin'])"
-                [routerLink]="['/stammdatenverwaltung/bereitschaftsgruppe', group.id]" [id]="['btnEditGroup' + group.id]" title="Bereitschaftsgruppe bearbeiten">
+                [routerLink]="['/stammdatenverwaltung/bereitschaftsgruppe', group.id]" [id]="['btnEditGroup' + group.id]"
+                title="Bereitschaftsgruppe bearbeiten">
                 <i class="fa fa-pencil" aria-hidden="true"></i>
               </a>
               <button class="btn btn-xs ml-1 btn-primary" (click)="validatePlan(group.id)" [id]="['btnValidate' + group.id]"
diff --git a/src/app/standby-schedule/components/planninglist/planninglist.component.spec.ts b/src/app/standby-schedule/components/planninglist/planninglist.component.spec.ts
index d731726..ba0e28c 100644
--- a/src/app/standby-schedule/components/planninglist/planninglist.component.spec.ts
+++ b/src/app/standby-schedule/components/planninglist/planninglist.component.spec.ts
@@ -118,8 +118,10 @@
     it('should open a modal and start calculation if the action is "calculate"', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 },
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 },
+        },
         statusId: 1
       });
       component.openCalculationModal(1);
@@ -128,8 +130,10 @@
     it('shouldn´t start a calculation if the action is not "calculate"', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 },
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 },
+        },
         statusId: 1
       });
       component.openCalculationModal(1);
@@ -140,8 +144,10 @@
     it('should search for bodies', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 }
+        }
       });
       component.prepareDataAndCall('search');
     });
@@ -149,8 +155,10 @@
     it('shouldn´t search for bodies as form is invalid', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: '',
-        validTo: ''
+        date: {
+          validFrom: '',
+          validTo: ''
+        }
       });
       component.prepareDataAndCall('search');
     });
@@ -160,8 +168,10 @@
     it('should archive bodies', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 }
+        }
       });
       component.prepareDataAndCall('archive');
     });
@@ -169,8 +179,10 @@
     it('shouldn´t archive bodies as form is invalid', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: '',
-        validTo: '',
+        date: {
+          validFrom: '',
+          validTo: '',
+        },
         statusId: 1
       });
       component.prepareDataAndCall('archive');
@@ -185,8 +197,10 @@
     it('should open archive modal and archive plan if decision is true and data is returned', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 }
+        }
       });
       component.prepareDataAndCall('archive');
       component.archiveModalRef.componentInstance.decision.next({ title: 'test', comment: 'test' });
@@ -195,8 +209,10 @@
     it('should close the modal without any rest call if the data is undefined', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 }
+        }
       });
       component.prepareDataAndCall('archive');
       component.archiveModalRef.componentInstance.decision.next(undefined);
@@ -273,7 +289,7 @@
     it('should set validFrom to current day', () => {
       const date = new Date();
       component.setDefaultDate('validFrom');
-      expect(component.form.controls.validFrom.value).toEqual({
+      expect(component.form.get('date').get('validFrom').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
       });
     });
@@ -281,7 +297,7 @@
     it('should set validTo to current day + 15 years', () => {
       const date = new Date();
       component.setDefaultDate('validTo');
-      expect(component.form.controls.validTo.value).toEqual({
+      expect(component.form.get('date').get('validTo').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
       });
     });
@@ -291,8 +307,10 @@
     it('should validate whole plan with all the groups in a standbylist', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 }
+        }
       });
       component.validatePlan(undefined);
     });
@@ -300,8 +318,10 @@
     it('should validate the given group', () => {
       component.form.patchValue({
         standbyListId: '',
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 }
+        }
       });
       component.validatePlan(1);
     });
@@ -311,8 +331,10 @@
     it('should import into planning', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 }
+        }
       });
       component.deletePlan();
       component.deleteModalWarningRef.componentInstance.decision.next(true);
@@ -322,8 +344,10 @@
     it('shouldn´t import into planning', () => {
       component.form.patchValue({
         standbyListId: 1,
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 }
+        }
       });
       component.deletePlan();
       component.deleteModalWarningRef.componentInstance.decision.next(false);
@@ -333,8 +357,10 @@
     it('should return false on validating the form', () => {
       component.form.patchValue({
         standbyListId: '',
-        validFrom: { day: 1, month: 10, year: 2018 },
-        validTo: { day: 2, month: 10, year: 2018 }
+        date: {
+          validFrom: { day: 1, month: 10, year: 2018 },
+          validTo: { day: 2, month: 10, year: 2018 }
+        }
       });
       component.deletePlan();
     });
diff --git a/src/app/standby-schedule/components/planninglist/planninglist.component.ts b/src/app/standby-schedule/components/planninglist/planninglist.component.ts
index 3b9c7e5..99fd249 100644
--- a/src/app/standby-schedule/components/planninglist/planninglist.component.ts
+++ b/src/app/standby-schedule/components/planninglist/planninglist.component.ts
@@ -117,8 +117,11 @@
   createForm() {
     this.form = this.fb.group({
       standbyListId: ['', Validators.required],
-      validFrom: ['', [Validators.required]],
-      validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]]
+      date: this.fb.group({
+        validFrom: ['', [Validators.required]],
+        validTo: ['', [Validators.required]]
+      }, { validator: [DatepickerValidator.dateRangeTo('')] }
+      )
     });
   }
 
@@ -173,8 +176,8 @@
     this.modalCalculationRef.componentInstance.form.patchValue({
       standbyListId: currentForm.standbyListId,
       standbyGroupId: standbyGroupId,
-      validFrom: currentForm.validFrom,
-      validTo: currentForm.validTo
+      validFrom: currentForm.date.validFrom,
+      validTo: currentForm.date.validTo
     });
     const modalAction: Subscription = this.modalCalculationRef.componentInstance.modalAction.subscribe((res: ModalTransferObject) => {
       if (res.action === 'calculate') {
@@ -243,8 +246,10 @@
       statusId: this.planStatusId,
       standbyGroupId: this.currentStandby.standbyGroup.id,
       currentUserId: this.currentStandby.user.id,
-      validFrom: this.ngbDateParserFormatter.parse(this.currentStandby.validFrom),
-      validTo: this.ngbDateParserFormatter.parse(this.currentStandby.validTo),
+      date: {
+        validFrom: this.ngbDateParserFormatter.parse(this.currentStandby.validFrom),
+        validTo: this.ngbDateParserFormatter.parse(this.currentStandby.validTo)
+      },
       validFromTime: FormUtil.convertToNgbTime(this.currentStandby.validFrom),
       validToTime: FormUtil.convertToNgbTime(this.currentStandby.validTo)
     });
@@ -271,8 +276,10 @@
       scheduleBodyId: this.currentStandby.id,
       newUserId: this.currentStandby.user.id,
       statusId: this.planStatusId,
-      validFrom: this.ngbDateParserFormatter.parse(this.currentStandby.validFrom),
-      validTo: this.ngbDateParserFormatter.parse(this.currentStandby.validTo),
+      date: {
+        validFrom: this.ngbDateParserFormatter.parse(this.currentStandby.validFrom),
+        validTo: this.ngbDateParserFormatter.parse(this.currentStandby.validTo)
+      },
       validFromTime: FormUtil.convertToNgbTime(this.currentStandby.validFrom),
       validToTime: FormUtil.convertToNgbTime(this.currentStandby.validTo)
     });
diff --git a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.html b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.html
index 31244d8..b8e49fa 100644
--- a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.html
+++ b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.html
@@ -20,7 +20,8 @@
               <div class="col-sm-9">
                 <select class="form-control" id="startIdOfUser" formControlName="startIdOfUser" required>
                   <option value=""></option>
-                  <option *ngFor="let user of listOfStandbyUsers" [value]="user.id">{{user.firstname + ' ' + user.lastname}}</option>
+                  <option *ngFor="let user of listOfStandbyUsers" [value]="user.id">{{user.firstname + ' ' +
+                    user.lastname}}</option>
                 </select>
                 <ok-error [control]="form.controls['startIdOfUser']"></ok-error>
               </div>
@@ -29,15 +30,15 @@
         </div>
         <div class="row">
           <div class="col-md-12 col-sm-12 col-xl-12">
-            <div class="row">
+            <div class="row" formGroupName="date">
               <label class="form-check-label col-form-label col-md-3">
                 Gültigkeit
               </label>
               <div class="col-md-4">
                 <div class="form-group">
                   <div class="input-group">
-                    <input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker" formControlName="validFrom"
-                      required id="CalcDateFromInput">
+                    <input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker"
+                      formControlName="validFrom" required id="CalcDateFromInput">
                     <div class="input-group-append">
                       <button class="btn btn-outline-secondary" (click)="validFrom.toggle()" type="button" id="CalcDateFromPicker">
                         <i class="fa fa-calendar" aria-hidden="true"></i>
@@ -49,15 +50,16 @@
                         <i class="fa fa-clock-o" aria-hidden="true"></i>
                       </button>
                     </div>
+                    <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
                   </div>
-                  <ok-error [control]="form.controls['validTo']"></ok-error>
+                  <ok-error [control]="form.controls['date']"></ok-error>
                 </div>
               </div>
               <div class="col-md-4">
                 <div class="form-group">
                   <div class="input-group">
-                    <input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker" formControlName="validTo"
-                      required id="CalcDateToInput">
+                    <input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker"
+                      formControlName="validTo" required id="CalcDateToInput">
                     <div class="input-group-append">
                       <button class="btn btn-outline-secondary" (click)="validTo.toggle()" type="button" id="CalcDateToPicker">
                         <i class="fa fa-calendar" aria-hidden="true"></i>
@@ -69,6 +71,7 @@
                         <i class="fa fa-clock-o" aria-hidden="true"></i>
                       </button>
                     </div>
+                    <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
                   </div>
                 </div>
               </div>
diff --git a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.spec.ts b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.spec.ts
index 50f2357..22a6dd7 100644
--- a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.spec.ts
+++ b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.spec.ts
@@ -45,7 +45,12 @@
   });
 
   it('should send calculation data to parent component if the form is valid', () => {
-    component.form.patchValue({ validFrom: '2023-05-08T05:05:05.789Z', validTo: '2023-05-08T05:05:05.789Z' });
+    component.form.patchValue({
+      date: {
+        validFrom: '2023-05-08T05:05:05.789Z',
+        validTo: '2023-05-08T05:05:05.789Z'
+      }
+    });
     component.calculate();
     component.modalAction.subscribe((transferData: ModalTransferObject) => {
       expect(transferData.action).toBe('calculate');
@@ -56,7 +61,7 @@
     it('should set validFrom to current day', () => {
       const date = new Date();
       component.setDefaultDate('validFrom');
-      expect(component.form.controls.validFrom.value).toEqual({
+      expect(component.form.get('validFrom').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
       });
     });
@@ -64,7 +69,7 @@
     it('should set validTo to current day + 15 years', () => {
       const date = new Date();
       component.setDefaultDate('validTo');
-      expect(component.form.controls.validTo.value).toEqual({
+      expect(component.form.get('validTo').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
       });
     });
diff --git a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.ts b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.ts
index c6d8e7b..b930651 100644
--- a/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.ts
+++ b/src/app/standby-schedule/dialogs/calculate-dialog/calculate-dialog.component.ts
@@ -55,8 +55,10 @@
 
   createForm() {
     this.form = this.fb.group({
-      validFrom: ['', Validators.required],
-      validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+      date: this.fb.group({
+        validFrom: ['', Validators.required],
+        validTo: ['', Validators.required],
+      }, { validator: [DatepickerValidator.dateRangeTo('')] }),
       startIdOfUser: ['', Validators.required],
       standbyGroupId: '',
       standbyListId: ''
diff --git a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.html b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.html
index a0d730b..a353e82 100644
--- a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.html
+++ b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.html
@@ -23,7 +23,7 @@
           <label class="form-check-label col-form-label col-md-5">
             Von
           </label>
-          <div class="input-group col-md-7">
+          <div class="input-group col-md-7" formGroupName="date">
             <input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker"
               formControlName="validFrom" required id="validityDateFromInput">
             <div class="input-group-append">
@@ -37,8 +37,9 @@
                 <i class="fa fa-clock-o" aria-hidden="true"></i>
               </button>
             </div>
+            <ok-error [control]="form.controls['date']" class="w-100"></ok-error>
+            <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
           </div>
-          <ok-error [control]="form.controls['validTo']"></ok-error>
         </div>
       </div>
       <div class="col-md-3">
@@ -51,7 +52,7 @@
           <label class="form-check-label col-form-label col-md-5">
             Bis
           </label>
-          <div class="input-group col-md-7">
+          <div class="input-group col-md-7" formGroupName="date">
             <input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker"
               formControlName="validTo" required id="validityDateToInput">
             <div class="input-group-append">
@@ -65,6 +66,7 @@
                 <i class="fa fa-clock-o" aria-hidden="true"></i>
               </button>
             </div>
+            <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
           </div>
         </div>
       </div>
diff --git a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.spec.ts b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.spec.ts
index 6b895e9..b167206 100644
--- a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.spec.ts
+++ b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.spec.ts
@@ -14,7 +14,6 @@
 
 import { MoveDialogComponent } from './move-dialog.component';
 import { SharedModule } from '@shared/shared.module';
-import { FormUtil } from '@shared/utils/form.util';
 
 describe('MoveDialogComponent', () => {
   let component: MoveDialogComponent;
@@ -46,11 +45,21 @@
 
   describe('decide()', () => {
     it('should prepare the data and call decide', () => {
-      component.form.patchValue({ validFrom: { day: 1, month: 1, year: 2018 }, validTo: { day: 1, month: 1, year: 2018 } });
+      component.form.patchValue({
+        date: {
+          validFrom: { day: 1, month: 1, year: 2018 },
+          validTo: { day: 1, month: 1, year: 2018 }
+        }
+      });
       component.decide(true);
     });
     it('should validate form fields if decision is true and form fields are invalid', () => {
-      component.form.patchValue({ validFrom: '', validTo: '' });
+      component.form.patchValue({
+        date: {
+          validFrom: '',
+          validTo: ''
+        }
+      });
       component.decide(true);
       expect(component.form.valid).toBeFalsy();
     });
@@ -60,7 +69,7 @@
     it('should set validFrom to current day', () => {
       const date = new Date();
       component.setDefaultDate('validFrom');
-      expect(component.form.controls.validFrom.value).toEqual({
+      expect(component.form.get('validFrom').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
       });
     });
@@ -68,7 +77,7 @@
     it('should set validTo to current day + 15 years', () => {
       const date = new Date();
       component.setDefaultDate('validTo');
-      expect(component.form.controls.validTo.value).toEqual({
+      expect(component.form.get('validTo').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
       });
     });
diff --git a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts
index b285f02..7dba4fb 100644
--- a/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts
+++ b/src/app/standby-schedule/dialogs/move-dialog/move-dialog.component.ts
@@ -28,8 +28,10 @@
   standbyGroupList: Array<StandbygroupObject>;
 
   form: FormGroup = this.fb.group({
-    validFrom: ['', Validators.required],
-    validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+    date: this.fb.group({
+      validFrom: ['', Validators.required],
+      validTo: ['', Validators.required],
+    }, { validator: [DatepickerValidator.dateRangeTo('')] }),
     validFromTime: '',
     validToTime: '',
     standbyGroupId: ['', Validators.required],
diff --git a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.html b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.html
index c3d158a..715b020 100644
--- a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.html
+++ b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.html
@@ -17,63 +17,56 @@
 </div>
 <div class="modal-body">
   <form class="mt-3" [formGroup]="form" novalidate>
-    <div class="form-group row d-flex align-items-center h-100">
-      <label class="form-check-label col-form-label col-md-3">
-        Von
-      </label>
-      <div class="input-group col-md-6">
-        <input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker"
-          formControlName="validFrom" required id="validityDateFromInput">
-        <div class="input-group-append">
-          <button class="btn btn-outline-secondary" (click)="validFrom.toggle()" type="button" id="validityDateFromPicker">
-            <i class="fa fa-calendar" aria-hidden="true"></i>
-          </button>
+    <div>
+      <div class="form-group row d-flex align-items-center h-100">
+        <label class="form-check-label col-form-label col-md-3">
+          Von
+        </label>
+        <div class="input-group col-md-6" formGroupName="date">
+          <input class="form-control" placeholder="von" name="dp" ngbDatepicker #validFrom="ngbDatepicker"
+            formControlName="validFrom" required id="validityDateFromInput">
+          <div class="input-group-append">
+            <button class="btn btn-outline-secondary" (click)="validFrom.toggle()" type="button" id="validityDateFromPicker">
+              <i class="fa fa-calendar" aria-hidden="true"></i>
+            </button>
+          </div>
+          <div class="input-group-append">
+            <button class="btn btn-outline-secondary" (click)="setDefaultDate('validFrom')" type="button" id="validityDateFromDefault"
+              data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
+              <i class="fa fa-clock-o" aria-hidden="true"></i>
+            </button>
+          </div>
+          <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
+          <ok-error [control]="form.controls['date']"></ok-error>
         </div>
-        <div class="input-group-append">
-          <button class="btn btn-outline-secondary" (click)="setDefaultDate('validFrom')" type="button" id="validityDateFromDefault"
-            data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
-            <i class="fa fa-clock-o" aria-hidden="true"></i>
-          </button>
+        <div class="col-md-3">
+          <ngb-timepicker formControlName="validFromTime" id="moveTimePickerFrom"></ngb-timepicker>
         </div>
       </div>
-      <div class="col-md-3">
-        <ngb-timepicker formControlName="validFromTime" id="moveTimePickerFrom"></ngb-timepicker>
-      </div>
-    </div>
-    <div class="row">
-      <div class="col-md-12">
-        <ok-error [control]="form.controls['validFrom']"></ok-error>
-        <ok-error [control]="form.controls['validFromTime']"></ok-error>
-      </div>
-    </div>
-    <div class="form-group row d-flex align-items-center h-100">
-      <label class="form-check-label col-form-label col-md-3">
-        Bis
-      </label>
-      <div class="input-group col-md-6">
-        <input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker" formControlName="validTo"
-          required id="validityDateToInput">
-        <div class="input-group-append">
-          <button class="btn btn-outline-secondary" (click)="validTo.toggle()" type="button" id="validityDateToPicker">
-            <i class="fa fa-calendar" aria-hidden="true"></i>
-          </button>
+      <div class="form-group row d-flex align-items-center h-100">
+        <label class="form-check-label col-form-label col-md-3">
+          Bis
+        </label>
+        <div class="input-group col-md-6" formGroupName="date">
+          <input class="form-control" placeholder="bis" name="dp" ngbDatepicker #validTo="ngbDatepicker"
+            formControlName="validTo" required id="validityDateToInput">
+          <div class="input-group-append">
+            <button class="btn btn-outline-secondary" (click)="validTo.toggle()" type="button" id="validityDateToPicker">
+              <i class="fa fa-calendar" aria-hidden="true"></i>
+            </button>
+          </div>
+          <div class="input-group-append">
+            <button class="btn btn-outline-secondary" (click)="setDefaultDate('validTo')" type="button" id="validityDateToDefault"
+              data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
+              <i class="fa fa-clock-o" aria-hidden="true"></i>
+            </button>
+          </div>
+          <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
         </div>
-        <div class="input-group-append">
-          <button class="btn btn-outline-secondary" (click)="setDefaultDate('validTo')" type="button" id="validityDateToDefault"
-            data-toggle="tooltip" data-placement="bottom" title="Auf Standardwert setzen">
-            <i class="fa fa-clock-o" aria-hidden="true"></i>
-          </button>
+        <div class="col-md-3">
+          <ngb-timepicker formControlName="validToTime" id="moveTimePickerTo"></ngb-timepicker>
         </div>
       </div>
-      <div class="col-md-3">
-        <ngb-timepicker formControlName="validToTime" id="moveTimePickerTo"></ngb-timepicker>
-      </div>
-    </div>
-    <div class="row">
-      <div class="col-md-12">
-        <ok-error [control]="form.controls['validTo']"></ok-error>
-        <ok-error [control]="form.controls['validToTime']"></ok-error>
-      </div>
     </div>
     <div class="form-group row">
       <label for="currentUser" class="col-sm-3 col-form-label">Aktuelle Bereitschaft</label>
diff --git a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.spec.ts b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.spec.ts
index a3157b6..bebe9ef 100644
--- a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.spec.ts
+++ b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.spec.ts
@@ -62,11 +62,21 @@
 
   describe('decide()', () => {
     it('should prepare the data and call decide', () => {
-      component.form.patchValue({ validFrom: { day: 1, month: 1, year: 2018 }, validTo: { day: 1, month: 1, year: 2018 } });
+      component.form.patchValue({
+        date: {
+          validFrom: { day: 1, month: 1, year: 2018 },
+          validTo: { day: 1, month: 1, year: 2018 }
+        }
+      });
       component.decide(true);
     });
     it('should validate form fields if decision is true and form fields are invalid', () => {
-      component.form.patchValue({ validFrom: '', validTo: '' });
+      component.form.patchValue({
+        date: {
+          validFrom: '',
+          validTo: ''
+        }
+      });
       component.decide(true);
       expect(component.form.valid).toBeFalsy();
     });
@@ -76,7 +86,7 @@
     it('should set validFrom to current day', () => {
       const date = new Date();
       component.setDefaultDate('validFrom');
-      expect(component.form.controls.validFrom.value).toEqual({
+      expect(component.form.get('validFrom').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
       });
     });
@@ -84,7 +94,7 @@
     it('should set validTo to current day + 15 years', () => {
       const date = new Date();
       component.setDefaultDate('validTo');
-      expect(component.form.controls.validTo.value).toEqual({
+      expect(component.form.get('validTo').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
       });
     });
diff --git a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts
index b5c8976..4e378e9 100644
--- a/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts
+++ b/src/app/standby-schedule/dialogs/replace-dialog/replace-dialog.component.ts
@@ -25,8 +25,10 @@
   userList: Array<UserDropdownObject>;
 
   form: FormGroup = this.fb.group({
-    validFrom: ['', Validators.required],
-    validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+    date: this.fb.group({
+      validFrom: ['', Validators.required],
+      validTo: ['', Validators.required],
+    }, { validator: [DatepickerValidator.dateRangeTo('')] }),
     validFromTime: ['', Validators.required],
     validToTime: ['', Validators.required],
     statusId: '',
diff --git a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.html b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.html
index 7bc6a8d..3a7e56d 100644
--- a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.html
+++ b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.html
@@ -17,7 +17,7 @@
 </div>
 <div class="modal-body">
   <form class="mt-3" [formGroup]="form" novalidate>
-    <div class="row">
+    <div class="row" formGroupName="date">
       <label class="form-check-label col-form-label col-md-3">
         Gültigkeit
       </label>
@@ -37,8 +37,9 @@
                 <i class="fa fa-clock-o" aria-hidden="true"></i>
               </button>
             </div>
+            <ok-error [control]="form.controls['date'].controls['validFrom']" class="w-100"></ok-error>
           </div>
-          <ok-error [control]="form.controls['validTo']"></ok-error>
+          <ok-error [control]="form.controls['date']"></ok-error>
         </div>
       </div>
       <div class="col-md-4">
@@ -57,6 +58,7 @@
                 <i class="fa fa-clock-o" aria-hidden="true"></i>
               </button>
             </div>
+            <ok-error [control]="form.controls['date'].controls['validTo']" class="w-100"></ok-error>
           </div>
         </div>
       </div>
diff --git a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.spec.ts b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.spec.ts
index 54645d3..824a6a3 100644
--- a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.spec.ts
+++ b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.spec.ts
@@ -44,11 +44,21 @@
 
   describe('decide()', () => {
     it('should prepare the data and call decide', () => {
-      component.form.patchValue({ validFrom: { day: 1, month: 1, year: 2018 }, validTo: { day: 1, month: 1, year: 2018 } });
+      component.form.patchValue({
+        date: {
+          validFrom: { day: 1, month: 1, year: 2018 },
+          validTo: { day: 1, month: 1, year: 2018 }
+        }
+      });
       component.decide(true);
     });
     it('should validate form fields if decision is true and form fields are invalid', () => {
-      component.form.patchValue({ validFrom: '', validTo: '' });
+      component.form.patchValue({
+        date: {
+          validFrom: '',
+          validTo: ''
+        }
+      });
       component.decide(true);
       expect(component.form.valid).toBeFalsy();
     });
@@ -58,7 +68,7 @@
     it('should set validFrom to current day', () => {
       const date = new Date();
       component.setDefaultDate('validFrom');
-      expect(component.form.controls.validFrom.value).toEqual({
+      expect(component.form.get('validFrom').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear()
       });
     });
@@ -66,7 +76,7 @@
     it('should set validTo to current day + 15 years', () => {
       const date = new Date();
       component.setDefaultDate('validTo');
-      expect(component.form.controls.validTo.value).toEqual({
+      expect(component.form.get('validTo').value).toEqual({
         day: date.getDate(), month: date.getMonth() + 1, year: date.getFullYear() + 15
       });
     });
diff --git a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.ts b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.ts
index 27a410e..30ee621 100644
--- a/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.ts
+++ b/src/app/standby-schedule/dialogs/transfer-dialog/transfer-dialog.component.ts
@@ -39,8 +39,10 @@
 
   createForm() {
     this.form = this.fb.group({
-      validFrom: ['', Validators.required],
-      validTo: ['', [Validators.required, DatepickerValidator.dateRangeTo('validFrom')]],
+      date: this.fb.group({
+        validFrom: ['', Validators.required],
+        validTo: ['', Validators.required],
+      }, { validator: [DatepickerValidator.dateRangeTo('')] }),
       overwrite: false
     });
   }
diff --git a/src/styles.scss b/src/styles.scss
index f5da765..c947a48 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -68,6 +68,9 @@
     min-width: 160px;
 }
 
+
+
+
 .ng-valid[required]:not(p-dropdown),
 .ng-valid.required:not(p-dropdown) {
     border-left: 5px solid #42A948;
@@ -79,6 +82,12 @@
     /* red */
 }
 
+/* for date range pickers */
+.ng-invalid:not(form):not(ngb-timepicker):not(p-dropdown) input {
+    border-left: 5px solid #a94442 !important;
+    /* red */
+}
+
 /* Fix for primeNG dropdown */
 
 p-dropdown.ng-invalid:not(form):not(div):not(ngb-timepicker)>div {