diff --git a/i18n/general.de.json b/i18n/general.de.json
index 469d584..c7717de 100644
--- a/i18n/general.de.json
+++ b/i18n/general.de.json
@@ -2,6 +2,7 @@
 	"ServerError401": "Zugriff nicht erlaubt.Bitte einloggen",
   "ServerError403": "Zugriffe verweigert. Bitte geben Sie korrekte Daten an.",
   "ServerError404": "Nicht gefunden. Bitte kontaktieren Sie den Administrator.",
+  "ServerError409": "Die Aktion kann nicht durchgeführt werden, weil eine Abhängigkeit zu einem anderen Datensatz existiert.",
   "ServerError500": "Ein Fehler ist aufgetreten. Bitte kontaktieren Sie den Administrator.",
   "SuccessNotificationTitle": "Erfolg",
   "ErrorNotificationTitle": "Fehler",
diff --git a/src/app/pages/admin/person-types/person-types-api-client.ts b/src/app/pages/admin/person-types/person-types-api-client.ts
index 1e9d5f4..7d1e921 100644
--- a/src/app/pages/admin/person-types/person-types-api-client.ts
+++ b/src/app/pages/admin/person-types/person-types-api-client.ts
@@ -13,13 +13,13 @@
 
   @GET('/personTypes')
   @Adapter(PersonTypesService.gridAdapter)
-  public getPersonTypes(): Observable<any> {
+  public getPersonTypes(): Observable<PersonType[]> {
     return null;
   }
 
   @GET('/personTypes/{id}')
   @Adapter(PersonTypesService.itemAdapter)
-  public getPersonTypeDetails(@Path('id') id: string): Observable<any> {
+  public getPersonTypeDetails(@Path('id') id: string): Observable<PersonType> {
     return null;
   }
 
diff --git a/src/app/pages/admin/person-types/person-types.sandbox.spec.ts b/src/app/pages/admin/person-types/person-types.sandbox.spec.ts
index 21e4abf..ca69f30 100644
--- a/src/app/pages/admin/person-types/person-types.sandbox.spec.ts
+++ b/src/app/pages/admin/person-types/person-types.sandbox.spec.ts
@@ -47,11 +47,6 @@
     expect(appState.dispatch).toHaveBeenCalledWith(personTypesActions.loadPersonType({ payload: 'x' }));
   });
 
-  it('should call dispatch for saving an item', () => {
-    service.savePersonType();
-    expect(appState.dispatch).toHaveBeenCalledWith(new MarkAsTouchedAction(personTypesFormReducer.FORM_ID));
-  });
-
   it('should clear form via clear()', () => {
     service['clear']();
     expect(service.displayForm).toBe(false);
diff --git a/src/app/pages/admin/person-types/person-types.sandbox.ts b/src/app/pages/admin/person-types/person-types.sandbox.ts
index dfd16d7..d6cb5f9 100644
--- a/src/app/pages/admin/person-types/person-types.sandbox.ts
+++ b/src/app/pages/admin/person-types/person-types.sandbox.ts
@@ -25,6 +25,7 @@
 import { takeUntil, take } from 'rxjs/operators';
 import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
 import { SafetyQueryDialogComponent } from '@shared/components/dialogs/safety-query-dialog/safety-query-dialog.component';
+import { ILoadPersonTypesSuccess } from '@app/shared/store/actions/admin/person-types.action';
 
 @Injectable()
 export class PersonTypesSandbox extends BaseSandbox {
@@ -50,7 +51,7 @@
     this.displayForm = true;
   }
 
-  public loadPersonTypes(): Observable<any> {
+  public loadPersonTypes(): Observable<ILoadPersonTypesSuccess> {
     this.appState$.dispatch(personTypesActions.loadPersonTypes());
     return this.actionsSubject.pipe(ofType(personTypesActions.loadPersonTypesSuccess), take(1));
   }
@@ -99,7 +100,6 @@
   }
 
   public savePersonType(): void {
-    this.appState$.dispatch(new MarkAsTouchedAction(personTypesFormReducer.FORM_ID));
     if (this.currentFormState.isValid) {
       this.appState$.dispatch(
         personTypesActions.savePersonType({
diff --git a/src/app/shared/asyncServices/http/httpResponseHandler.service.ts b/src/app/shared/asyncServices/http/httpResponseHandler.service.ts
index f021a02..eb5da94 100644
--- a/src/app/shared/asyncServices/http/httpResponseHandler.service.ts
+++ b/src/app/shared/asyncServices/http/httpResponseHandler.service.ts
@@ -51,6 +51,10 @@
         this.handleNotFound(response);
         break;
 
+      case 409:
+        this.handleRefExists();
+        break;
+
       case 500:
         this.handleServerError();
         break;
@@ -119,6 +123,16 @@
   }
 
   /**
+   * Shows notification errors when server response status is 409
+   */
+  private handleRefExists(): void {
+    const message: any = this.translateService.instant('ServerError409'),
+      title = this.translateService.instant('ErrorNotificationTitle');
+
+    this.showNotificationError(title, message);
+  }
+
+  /**
    * Shows notification errors when server response status is 500
    */
   private handleServerError(): void {
