diff --git a/goofy-client/libs/command-shared/src/lib/command.service.spec.ts b/goofy-client/libs/command-shared/src/lib/command.service.spec.ts
index e254e3398cc19343f6cf4020c3e3b4e666f564e4..ce93819d6b7bf8c276cc44e1762e1f73c5ccd0d9 100644
--- a/goofy-client/libs/command-shared/src/lib/command.service.spec.ts
+++ b/goofy-client/libs/command-shared/src/lib/command.service.spec.ts
@@ -1,4 +1,4 @@
-import { ApiError, createStateResource, StateResource } from '@goofy-client/tech-shared';
+import { ApiError, createEmptyStateResource, createStateResource, StateResource } from '@goofy-client/tech-shared';
 import { mock, Mock, useFromMock } from '@goofy-client/test-utils';
 import { Resource } from '@ngxp/rest';
 import * as faker from 'faker';
@@ -6,10 +6,11 @@ import { cold, hot } from 'jest-marbles';
 import { createCommand, createCommandResource } from 'libs/command-shared/test/command';
 import { createApiError } from 'libs/tech-shared/test/error';
 import { toResource } from 'libs/tech-shared/test/resource';
+import { Observable } from 'rxjs';
 import { CommandLinkRel } from './command.linkrel';
 import { Command, CommandResource } from './command.model';
 import { CommandRepository } from './command.repository';
-import { CommandService } from './command.service';
+import { CommandService, startInterval } from './command.service';
 
 describe('CommandService', () => {
 	let service;
@@ -58,25 +59,6 @@ describe('CommandService', () => {
 		})
 	})
 
-	describe('get command', () => {
-
-		beforeEach(() => {
-			repository.getCommand.mockReturnValue(cold('a', { a: commandResource }));
-		})
-
-		it('should call repository with resource', () => {
-			service.getCommand(commandResource);
-
-			expect(repository.getCommand).toHaveBeenCalledWith(commandResource);
-		})
-
-		it('should return value', () => {
-			const result = service.getCommand(commandResource);
-
-			expect(result).toBeObservable(hot('a', { a: commandResource }))
-		})
-	})
-
 	describe('revoke command', () => {
 
 		beforeEach(() => {
@@ -114,6 +96,27 @@ describe('CommandService', () => {
 		})
 	})
 
+	describe('handle interval', () => {
+
+		const interval = { handle: () => null };
+
+		beforeEach(() => {
+			service.clearInterval = jest.fn();
+		})
+
+		it('should call clearInterval', () => {
+			service.handleInterval(createEmptyStateResource(), interval);
+
+			expect(service.clearInterval).toHaveBeenCalledWith(interval.handle);
+		})
+
+		it('should NOT call clearInterval', () => {
+			service.handleInterval(createEmptyStateResource(true), interval);
+
+			expect(service.clearInterval).not.toHaveBeenCalled();
+		})
+	})
+
 	describe('getAndUpdate', () => {
 
 		beforeEach(() => {
@@ -146,6 +149,25 @@ describe('CommandService', () => {
 		})
 	})
 
+	describe('get command', () => {
+
+		beforeEach(() => {
+			repository.getCommand.mockReturnValue(cold('a', { a: commandResource }));
+		})
+
+		it('should call repository with resource', () => {
+			service.getCommand(commandResource);
+
+			expect(repository.getCommand).toHaveBeenCalledWith(commandResource);
+		})
+
+		it('should return value', () => {
+			const result = service.getCommand(commandResource);
+
+			expect(result).toBeObservable(hot('a', { a: commandResource }))
+		})
+	})
+
 	describe('get effected resource', () => {
 
 		const listResource = {};
@@ -167,4 +189,42 @@ describe('CommandService', () => {
 			expect(result).toBeObservable(hot('a', { a: listResource }))
 		})
 	})
+
+	describe('get pending commands', () => {
+
+		const listResource = {};
+
+		beforeEach(() => {
+			repository.getPendingCommands.mockReturnValue(cold('a', { a: listResource }));
+		})
+
+		it('should call repository', () => {
+			service.getPendingCommands(command, CommandLinkRel.SELF);
+
+			expect(repository.getPendingCommands).toHaveBeenLastCalledWith(command, CommandLinkRel.SELF);
+		})
+	})
+
+	describe('start interval', () => {
+
+		const intervall: number = 100;
+
+		it('should not be null', () => {
+			var result = startInterval(intervall);
+
+			expect(result).not.toBeNull();
+		})
+
+		it('should have handle not null', () => {
+			var result = startInterval(intervall);
+
+			expect(result.handle).not.toBeNull();
+		})
+
+		it('should have tick as observable', () => {
+			var result = startInterval(intervall);
+
+			expect(result.tickObservable).toBeInstanceOf(Observable);
+		})
+	})
 })
\ No newline at end of file
diff --git a/goofy-client/libs/command-shared/src/lib/command.service.ts b/goofy-client/libs/command-shared/src/lib/command.service.ts
index 9d1a2cec8dab3ea338f5aeeeb651972f14fca33a..ba2bb3d5c2fce3b33c870e3ce6b742ff158134b8 100644
--- a/goofy-client/libs/command-shared/src/lib/command.service.ts
+++ b/goofy-client/libs/command-shared/src/lib/command.service.ts
@@ -34,12 +34,14 @@ export class CommandService {
 		const interval: IntervallHandleWithTickObservable = startInterval(this.intervalTimer);
 		return interval.tickObservable.pipe(
 			flatMap(() => this.getAndUpdate(commandResource)),
-			tap(stateResource => {
-				if (!stateResource.loading) this.clearInterval(interval.handle);
-			})
+			tap(stateResource => this.handleInterval(stateResource, interval))
 		)
 	}
 
+	handleInterval(stateResource: StateResource<CommandResource>, interval: IntervallHandleWithTickObservable): void {
+		if (!stateResource.loading) this.clearInterval(interval.handle);
+	}
+
 	getAndUpdate(commandResource: CommandResource): Observable<StateResource<CommandResource>> {
 		return this.getCommand(commandResource).pipe(map(res => createStateResource(res, isPending(res))));
 	}
diff --git a/goofy-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts b/goofy-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts
index 9ca562481186b6e25f17448335a38eaafd909cae..19df3e730e9cc6aad2d1352bf4e38d6da17d0299 100644
--- a/goofy-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts
+++ b/goofy-client/libs/forwarding-shared/src/lib/forwarding.service.spec.ts
@@ -143,6 +143,19 @@ describe('ForwardingService', () => {
 		})
 	})
 
+	describe('clear forward command', () => {
+
+		beforeEach(() => {
+			service.unsubscribe = jest.fn();
+		})
+
+		it('should call vorgang service clear pending forward command', () => {
+			service.clearForwardCommand();
+
+			expect(vorgangService.clearPendingForwardCommand).toHaveBeenCalled();
+		})
+	})
+
 	describe('onNavigation', () => {
 
 		beforeEach(() => {
diff --git a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.spec.ts b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.spec.ts
index c84a227e151ad5b440bc40f039757ea661dd55d4..e165ca83d9fdf9b218b5f7d9b84b9aad6e167270 100644
--- a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.spec.ts
+++ b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.spec.ts
@@ -6,6 +6,7 @@ import { MatInputModule } from '@angular/material/input';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { mock } from '@goofy-client/test-utils';
 import { ButtonWithSpinnerComponent, TextEditorComponent } from '@goofy-client/ui';
+import { VorgangWithEingangResource } from '@goofy-client/vorgang-shared';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
 import { MockComponent } from 'ng-mocks';
 import { VorgangForwardFormComponent } from './vorgang-forward-form.component';
@@ -20,7 +21,9 @@ describe('VorgangForwardFormComponent', () => {
 		[VorgangForwardFormService.FIELD_EMAIL]: new FormControl(null)
 	});
 
-	const vorgangForwardFormService = { ...mock(VorgangForwardFormComponent), form };
+	const formService = { ...mock(VorgangForwardFormService), form };
+
+	const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource();
 
 	beforeEach(async () => {
 		await TestBed.configureTestingModule({
@@ -39,7 +42,7 @@ describe('VorgangForwardFormComponent', () => {
 			providers: [
 				{
 					provide: VorgangForwardFormService,
-					useValue: vorgangForwardFormService
+					useValue: formService
 				}
 			]
 		}).compileComponents();
@@ -48,11 +51,49 @@ describe('VorgangForwardFormComponent', () => {
 	beforeEach(() => {
 		fixture = TestBed.createComponent(VorgangForwardFormComponent);
 		component = fixture.componentInstance;
-		component.vorgang = createVorgangWithEingangResource();
+		component.vorgang = vorgangWithEingang;
 		fixture.detectChanges();
 	});
 
 	it('should create', () => {
 		expect(component).toBeTruthy();
 	});
+
+	describe('zustaendige stelle email exists', () => {
+
+		it('should return false if vorgang is undefined', () => {
+			component.vorgang = undefined;
+
+			var result: boolean = component.zustaendigeStelleEmailExists();
+
+			expect(result).toBeFalsy();
+		})
+
+		it('should return true if exists', () => {
+			component.vorgang = vorgangWithEingang;
+
+			var result: boolean = component.zustaendigeStelleEmailExists();
+
+			expect(result).toBeTruthy();
+		})
+
+		it('should return false if NOT exists', () => {
+			component.vorgang = { ...vorgangWithEingang, eingang: { ...vorgangWithEingang.eingang, zustaendigeStelle: { email: null } } };
+
+			var result: boolean = component.zustaendigeStelleEmailExists();
+
+			expect(result).toBeFalsy();
+		})
+	})
+
+	describe('patch email field', () => {
+
+		it('should set email', () => {
+			component.vorgang = vorgangWithEingang;
+
+			component.patchEmail();
+
+			expect(formService.patchField).toHaveBeenCalledWith('email', vorgangWithEingang.eingang.zustaendigeStelle.email);
+		})
+	})
 });
diff --git a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts
index cf9e7aa28abac2d4ae7be3d35084743377432cb8..f4813b8240a972242fc3e33bfd6cb15b8b2a12eb 100644
--- a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts
+++ b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts
@@ -2,8 +2,9 @@ import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from
 import { FormGroup } from '@angular/forms';
 import { CommandResource } from '@goofy-client/command-shared';
 import { StateResource } from '@goofy-client/tech-shared';
-import { VorgangForwardFormService } from './vorgang-forward.formservice';
 import { VorgangWithEingangResource } from '@goofy-client/vorgang-shared';
+import { isNil } from 'lodash-es';
+import { VorgangForwardFormService } from './vorgang-forward.formservice';
 
 @Component({
 	selector: 'goofy-client-vorgang-forward-form',
@@ -21,13 +22,21 @@ export class VorgangForwardFormComponent implements OnChanges {
 
 	constructor(private formService: VorgangForwardFormService) { }
 
-	get form(): FormGroup {
-		return this.formService.form;
-	}
-
 	ngOnChanges(changes: SimpleChanges) {
-		if (changes.vorgang && this.vorgang && this.vorgang.eingang && this.vorgang.eingang.zustaendigeStelle && this.vorgang.eingang.zustaendigeStelle.email) {
-			this.formService.patchField('email', this.vorgang.eingang.zustaendigeStelle.email)
+		if (changes.vorgang && this.zustaendigeStelleEmailExists()) {
+			this.patchEmail();
 		}
 	}
+
+	zustaendigeStelleEmailExists(): boolean {
+		return this.vorgang && this.vorgang.eingang && this.vorgang.eingang.zustaendigeStelle && !isNil(this.vorgang.eingang.zustaendigeStelle.email);
+	}
+
+	patchEmail(): void {
+		this.formService.patchField('email', this.vorgang.eingang.zustaendigeStelle.email)
+	}
+
+	get form(): FormGroup {
+		return this.formService.form;
+	}
 }
diff --git a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.spec.ts b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.spec.ts
index ad0961443f9b56e6b12f738be32c227da09bae60..579b1794ae576e25d4fffab491df571fb8748a2a 100644
--- a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.spec.ts
+++ b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.spec.ts
@@ -1,4 +1,4 @@
-import { FormBuilder } from '@angular/forms';
+import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
 import { ForwardingService } from '@goofy-client/forwarding-shared';
 import { mock, useFromMock } from '@goofy-client/test-utils';
 import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -38,4 +38,24 @@ describe('VorgangForwardFormService', () => {
 			expect(service.forward).toHaveBeenCalledWith(formService.vorgang, formService.form.value);
 		})
 	})
+
+	describe('patch field', () => {
+
+		const controlName: string = 'testField';
+		const value: string = 'testField';
+
+		const form: FormGroup = <any>{
+			controls: {
+				[controlName]: new FormControl()
+			}
+		};
+
+		it('should set control value', () => {
+			formService.form = form;
+
+			formService.patchField(controlName, value);
+
+			expect(formService.form.controls[controlName].value).toEqual(value);
+		})
+	})
 })
\ No newline at end of file
diff --git a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts
index d18e35eb333178c9bcc5b7870c51aa238bfa3d5c..76beef369cf30255a03d71ffc14b331683f06605 100644
--- a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts
+++ b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts
@@ -20,10 +20,6 @@ export class VorgangForwardFormService extends AbstractFormService {
 		super(formBuilder);
 	}
 
-	patchField(fieldName: string, value: string) {
-		this.form.controls[fieldName].patchValue(value);
-	}
-
 	protected initForm(): FormGroup {
 		return this.formBuilder.group({
 			[VorgangForwardFormService.FIELD_EMAIL]: new FormControl(),
@@ -42,4 +38,8 @@ export class VorgangForwardFormService extends AbstractFormService {
 	protected doSubmit(): Observable<StateResource<CommandResource>> {
 		return this.forwardingService.forward(this.vorgang, this.getFormValue());
 	}
+
+	patchField(fieldName: string, value: string) {
+		this.form.controls[fieldName].patchValue(value);
+	}
 }
diff --git a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts
index 2e5de9301ac077ca726dee3415194999a5c0848c..1c737cc1bb7d051f9f898a29f4e375bb057057b9 100644
--- a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts
+++ b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts
@@ -19,8 +19,8 @@ describe('VorgangForwardingContainerComponent', () => {
 	let component: VorgangForwardingContainerComponent;
 	let fixture: ComponentFixture<VorgangForwardingContainerComponent>;
 
-	const forwardFormService = mock(VorgangForwardFormService);
-	const forwardingService = mock(ForwardingService);
+	const formService = mock(VorgangForwardFormService);
+	const service = mock(ForwardingService);
 
 	const forwarding: string = '[data-test-id="forwarding"]';
 
@@ -38,11 +38,11 @@ describe('VorgangForwardingContainerComponent', () => {
 				FormBuilder,
 				{
 					provide: VorgangForwardFormService,
-					useValue: forwardFormService
+					useValue: formService
 				},
 				{
 					provide: ForwardingService,
-					useValue: forwardingService
+					useValue: service
 				}
 			]
 		})
@@ -60,6 +60,33 @@ describe('VorgangForwardingContainerComponent', () => {
 		expect(component).toBeTruthy();
 	});
 
+	describe('ngOnChanges', () => {
+
+		it('should call update vorgang', () => {
+			component.updateVorgang = jest.fn();
+
+			component.ngOnChanges();
+
+			expect(component.updateVorgang).toHaveBeenCalled();
+		})
+
+		it('should call get forwardings', () => {
+			component.getForwardings = jest.fn();
+
+			component.ngOnChanges();
+
+			expect(component.getForwardings).toHaveBeenCalled();
+		})
+
+		it('should call get pending forward command', () => {
+			component.getPendingForwardCommand = jest.fn();
+
+			component.ngOnChanges();
+
+			expect(component.getPendingForwardCommand).toHaveBeenCalled();
+		})
+	})
+
 	describe('getForwardings', () => {
 
 		it('should do nothing if link not exists', () => {
@@ -68,7 +95,7 @@ describe('VorgangForwardingContainerComponent', () => {
 
 			component.getForwardings();
 
-			expect(forwardingService.getForwardings).not.toHaveBeenCalled();
+			expect(service.getForwardings).not.toHaveBeenCalled();
 		})
 
 		it('should call service get forward commands', () => {
@@ -77,7 +104,7 @@ describe('VorgangForwardingContainerComponent', () => {
 
 			component.getForwardings();
 
-			expect(forwardingService.getForwardings).toHaveBeenCalled();
+			expect(service.getForwardings).toHaveBeenCalled();
 		})
 	})
 
@@ -89,7 +116,7 @@ describe('VorgangForwardingContainerComponent', () => {
 
 			component.getPendingForwardCommand();
 
-			expect(forwardingService.getPendingForwardCommand).toHaveBeenCalled();
+			expect(service.getPendingForwardCommand).toHaveBeenCalled();
 		})
 	})
 
diff --git a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.spec.ts b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.spec.ts
index a9dd1f599861c8686276c7d87939dc49af418ac6..aba4ca46640e5de6684c8a222663b6bdd50a6abc 100644
--- a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.spec.ts
+++ b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-zustellen-container/vorgang-forward-zustellen-container.component.spec.ts
@@ -50,7 +50,7 @@ describe('VorgangForwardZustellenContainerComponent', () => {
 		expect(component).toBeTruthy();
 	});
 
-	it('should call service', () => {
+	it('should call service mark as success', () => {
 		component.forwarding = forwarding;
 		fixture.detectChanges();
 
@@ -59,6 +59,15 @@ describe('VorgangForwardZustellenContainerComponent', () => {
 		expect(forwardingService.markAsSuccess).toHaveBeenCalledWith(forwarding);
 	})
 
+	it('should call service mark as fail', () => {
+		component.forwarding = forwarding;
+		fixture.detectChanges();
+
+		component.markAsFail();
+
+		expect(forwardingService.markAsFail).toHaveBeenCalledWith(forwarding);
+	})
+
 	describe('mark as success button', () => {
 
 		it('should be visible', () => {
diff --git a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar-form.component.spec.ts b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar-form.component.spec.ts
index 3bb8c01eb728a2b56c50f82aacc49e40ba7c720c..5ee97fa27180e31bb722a885e042e1e6760fa84f 100644
--- a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar-form.component.spec.ts
+++ b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar-form.component.spec.ts
@@ -14,8 +14,8 @@ describe('KommentarFormComponent', () => {
 	let component: KommentarFormComponent;
 	let fixture: ComponentFixture<KommentarFormComponent>;
 
-	const kommentarFormService = mock(KommentarFormService);
-	const kommetarService = mock(KommentarService);
+	const formService = mock(KommentarFormService);
+	const service = mock(KommentarService);
 
 	configureTestSuite(() => {
 		TestBed.configureTestingModule({
@@ -32,11 +32,11 @@ describe('KommentarFormComponent', () => {
 			providers: [
 				{
 					provide: KommentarFormService,
-					useValue: kommentarFormService
+					useValue: formService
 				},
 				{
 					provide: KommentarService,
-					useValue: kommetarService
+					useValue: service
 				}
 			]
 		})
diff --git a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar-form.component.ts b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar-form.component.ts
index 73eedcf1f02469578c0f67f137eb68403bcb083d..60506f91b4c72a572ec58bedb9dbc5ac59bbc3bf 100644
--- a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar-form.component.ts
+++ b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar-form.component.ts
@@ -25,7 +25,13 @@ export class KommentarFormComponent implements OnChanges {
 	constructor(public formService: KommentarFormService) { }
 
 	ngOnChanges(): void {
-		if (!isNil(this.kommentar)) this.formService.patch(this.kommentar);
+		if (!isNil(this.kommentar)) {
+			this.patch();
+		}
+	}
+
+	patch(): void {
+		this.formService.patch(this.kommentar);
 	}
 
 	submit(): void {
diff --git a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang-container.component.spec.ts b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang-container.component.spec.ts
index cf2c088774e9b7e03da452b73333b8a58cd6cc7b..1d829b8cc57ba6eb24c7305693fc74f0d8869345 100644
--- a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang-container.component.spec.ts
+++ b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang-container.component.spec.ts
@@ -41,4 +41,37 @@ describe('KommentarListInVorgangContainerComponent', () => {
 	it('should create', () => {
 		expect(component).toBeTruthy();
 	});
+
+	describe('ng on changes', () => {
+
+		it('should call kommentar service isFormularVisible', () => {
+			component.ngOnChanges();
+
+			expect(kommentarService.isFormularVisible).toHaveBeenCalled();
+		})
+
+		it('should call kommentar service getKommentareByVorgang', () => {
+			component.ngOnChanges();
+
+			expect(kommentarService.getKommentareByVorgang).toHaveBeenCalledWith(component.vorgang);
+		})
+	})
+
+	describe('show formular', () => {
+
+		it('should call kommentar service showFormular', () => {
+			component.showFormular();
+
+			expect(kommentarService.showFormular).toHaveBeenCalled();
+		})
+	})
+
+	describe('hide formular', () => {
+
+		it('should call kommentar service hideFormular', () => {
+			component.hideFormular();
+
+			expect(kommentarService.hideFormular).toHaveBeenCalled();
+		})
+	})
 });
\ No newline at end of file
diff --git a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-in-vorgang.component.ts b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-in-vorgang.component.ts
index f988ec8b93303bfed6f4da7b86d0eed287fe191a..b2b1ad780bc86a3a57a40c18801669fd47645ca1 100644
--- a/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-in-vorgang.component.ts
+++ b/goofy-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-list-in-vorgang/kommentar-list-in-vorgang.component.ts
@@ -15,6 +15,10 @@ export class KommentarListInVorgangComponent implements OnChanges {
 	kommentare: KommentarResource[];
 
 	ngOnChanges(): void {
-		this.kommentare = this.kommentarListStateResource ? getEmbeddedResource(this.kommentarListStateResource, KommentarListLinkRel.KOMMENTAR_LIST) : [];
+		this.kommentare = this.getKommentare();
+	}
+
+	getKommentare(): KommentarResource[] {
+		return this.kommentarListStateResource ? getEmbeddedResource(this.kommentarListStateResource, KommentarListLinkRel.KOMMENTAR_LIST) : [];
 	}
 }
\ No newline at end of file
diff --git a/goofy-client/libs/ozg-file-shared/src/lib/ozg-file.repository.spec.ts b/goofy-client/libs/ozg-file-shared/src/lib/ozg-file.repository.spec.ts
index 2046c2c7f2d3543c0b87c4096bdfcc5c20946297..aeab887885946f80610dda2c76db22ac67c078a5 100644
--- a/goofy-client/libs/ozg-file-shared/src/lib/ozg-file.repository.spec.ts
+++ b/goofy-client/libs/ozg-file-shared/src/lib/ozg-file.repository.spec.ts
@@ -1,6 +1,6 @@
 import { HttpClient, HttpHeaders } from '@angular/common/http';
 import { mock, useFromMock } from '@goofy-client/test-utils';
-import { getUrl, ResourceFactory } from '@ngxp/rest';
+import { getUrl, ResourceFactory, ResourceUri } from '@ngxp/rest';
 import { cold, hot } from 'jest-marbles';
 import { createOzgFileListResource, createOzgFileResource } from 'libs/ozg-file-shared/test/ozg-file';
 import { WiedervorlageLinkRel } from 'libs/wiedervorlage-shared/src/lib/wiedervorlage.linkrel';
@@ -20,6 +20,7 @@ describe('OzgFileRepository', () => {
 		repository = new OzgFileRepository(useFromMock(httpClient), useFromMock(resourceFactory));
 
 		resourceFactory.from.mockReturnValue(resourceWrapper);
+		resourceFactory.fromId.mockReturnValue(resourceWrapper);
 	})
 
 	describe('download', () => {
@@ -90,4 +91,21 @@ describe('OzgFileRepository', () => {
 			expect(resourceWrapper.get).toHaveBeenCalledWith(WiedervorlageLinkRel.ATTACHMENTS);
 		})
 	})
+
+	describe('get file', () => {
+
+		const uri: ResourceUri = getUrl(createOzgFileResource());
+
+		it('should call repository factory', () => {
+			repository.getFile(uri);
+
+			expect(resourceFactory.fromId).toHaveBeenCalledWith(uri);
+		})
+
+		it('should call repository wrapper', () => {
+			repository.getFile(uri);
+
+			expect(resourceWrapper.get).toHaveBeenCalled();
+		})
+	})
 })
\ No newline at end of file
diff --git a/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.spec.ts b/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.spec.ts
index 4a85dbc1ff5762cd7030423e3c3e614d05343afb..5e680f08abe33606bf8f16fca51011b42dfbb0fe 100644
--- a/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.spec.ts
+++ b/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.spec.ts
@@ -90,8 +90,12 @@ describe('AnhangListContainerComponent', () => {
 		})
 	})
 
-	function setVorgang(vorgang: VorgangWithEingangResource): void {
-		component.vorgangWithEingang = vorgang;
-		fixture.detectChanges();
-	}
-});
+	describe('ng on changes', () => {
+
+		it('should call vorgang service getAttachments', () => {
+			component.ngOnChanges();
+
+			expect(vorgangService.getAttachments).toHaveBeenCalled();
+		})
+	})
+});
\ No newline at end of file
diff --git a/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.ts b/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.ts
index 28f1b96b4e1cb1dc9f6167200f91fb0ca78c7d58..6ed57be6413122ba281173d1f629cdf7772fc0e7 100644
--- a/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.ts
+++ b/goofy-client/libs/ozg-file/src/lib/anhang-list-container/anhang-list-container.component.ts
@@ -18,9 +18,7 @@ export class AnhangListContainerComponent implements OnChanges {
 
 	readonly fileListRel = OzgFileListLinkRel;
 
-	constructor(
-		private vorgangService: VorgangService
-	) { }
+	constructor(private vorgangService: VorgangService) { }
 
 	ngOnChanges(): void {
 		this.attachmentStateResource$ = this.vorgangService.getAttachments();
diff --git a/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file-container.component.spec.ts b/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file-container.component.spec.ts
index 6a96c2982943a83819b6383c44223e0193a837d4..89b711b5f80b4f7f4e9f6e901d232d5119e1c89b 100644
--- a/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file-container.component.spec.ts
+++ b/goofy-client/libs/ozg-file/src/lib/ozg-file-container/ozg-file-container.component.spec.ts
@@ -1,5 +1,5 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { OzgFileService } from '@goofy-client/ozg-file-shared';
+import { OzgFileResource, OzgFileService } from '@goofy-client/ozg-file-shared';
 import { ConvertForDataTestPipe } from '@goofy-client/tech-shared';
 import { mock } from '@goofy-client/test-utils';
 import { createOzgFileResource } from 'libs/ozg-file-shared/test/ozg-file';
@@ -11,7 +11,7 @@ describe('FileContainerComponent', () => {
 	let component: OzgFileContainerComponent;
 	let fixture: ComponentFixture<OzgFileContainerComponent>;
 
-	const fileService = mock(OzgFileService);
+	const service = mock(OzgFileService);
 
 	beforeEach(async () => {
 		await TestBed.configureTestingModule({
@@ -23,7 +23,7 @@ describe('FileContainerComponent', () => {
 			providers: [
 				{
 					provide: OzgFileService,
-					useValue: fileService
+					useValue: service
 				}
 			]
 		})
@@ -41,4 +41,15 @@ describe('FileContainerComponent', () => {
 	it('should create', () => {
 		expect(component).toBeTruthy();
 	});
+
+	describe('start download', () => {
+
+		const file: OzgFileResource = createOzgFileResource();
+
+		it('should call file service downloadFile', () => {
+			component.startDownload(file);
+
+			expect(service.downloadFile).toHaveBeenCalledWith(file);
+		})
+	})
 });
diff --git a/goofy-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts
index 52b93d59e63d662b3f51a84dc4c6d5b23ef8bf7f..bde60f8b439ac8b1f2b747faa07c5f104c03a492 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts
+++ b/goofy-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts
@@ -46,6 +46,15 @@ describe('AbschliessenButtonComponent', () => {
 		expect(component).toBeTruthy();
 	});
 
+	describe('abschliessen', () => {
+
+		it('should call vorgang service', () => {
+			component.abschliessen();
+
+			expect(vorgangCommandService.abschliessen).toHaveBeenCalled();
+		})
+	})
+
 	describe('abschliessen button', () => {
 
 		beforeEach(() => {
diff --git a/goofy-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
index 19b00f92bfdf79fb0f4e5a583d96b4a13e57f7d2..e14e4e795b620539eb639057d044325675bfe71b 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
+++ b/goofy-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
@@ -46,6 +46,15 @@ describe('AnnehmenButtonComponent', () => {
 		expect(component).toBeTruthy();
 	});
 
+	describe('annehmen', () => {
+
+		it('should call vorgang service', () => {
+			component.annehmen();
+
+			expect(vorgangCommandService.annehmen).toHaveBeenCalled();
+		})
+	})
+
 	describe('annehmen button', () => {
 
 		beforeEach(() => {
diff --git a/goofy-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.spec.ts
index c2c92cec6972c78dada2a0dfb23e76776b262b65..f6c1d78554e9d1a02292109319df09644b297075 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.spec.ts
+++ b/goofy-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.spec.ts
@@ -46,6 +46,15 @@ describe('BearbeitenButtonComponent', () => {
 		expect(component).toBeTruthy();
 	});
 
+	describe('bearbeiten', () => {
+
+		it('should call vorgang service', () => {
+			component.bearbeiten();
+
+			expect(vorgangCommandService.bearbeiten).toHaveBeenCalled();
+		})
+	})
+
 	describe('bearbeiten button', () => {
 
 		beforeEach(() => {
diff --git a/goofy-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
index 50c108f9ff7a6294da3bdd91b6f6d611e166c9ff..d895e2e93c498581a72a24faf182a12c1ee6d591 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
+++ b/goofy-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
@@ -46,6 +46,15 @@ describe('BescheidenButtonComponent', () => {
 		expect(component).toBeTruthy();
 	});
 
+	describe('bescheiden', () => {
+
+		it('should call vorgang service', () => {
+			component.bescheiden();
+
+			expect(vorgangCommandService.bescheiden).toHaveBeenCalled();
+		})
+	})
+
 	describe('bescheiden button', () => {
 
 		beforeEach(() => {
diff --git a/goofy-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts
index d50f1ba4a84130afe4fa50f1fe8c28c8cd30fa02..5b4ce073aa1294ed490d101b354c3812ee4e85be 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts
+++ b/goofy-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts
@@ -46,6 +46,15 @@ describe('VerwerfenButtonComponent', () => {
 		expect(component).toBeTruthy();
 	});
 
+	describe('verwerfen', () => {
+
+		it('should call vorgang service', () => {
+			component.verwerfen();
+
+			expect(vorgangCommandService.verwerfen).toHaveBeenCalled();
+		})
+	})
+
 	describe('verwerfen button', () => {
 
 		beforeEach(() => {
diff --git a/goofy-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts
index 2f2a5ebd1b009e8194b99fffd89d8f61401e5fe0..163370944c1512e19268a4439ff835a491e57b4f 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts
+++ b/goofy-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts
@@ -45,6 +45,15 @@ describe('WiedereroeffnenButtonComponent', () => {
 		expect(component).toBeTruthy();
 	});
 
+	describe('wiedereroeffnen', () => {
+
+		it('should call vorgang service', () => {
+			component.wiedereroeffnen();
+
+			expect(vorgangCommandService.wiedereroeffnen).toHaveBeenCalled();
+		})
+	})
+
 	describe('wiedereroeffnen button', () => {
 
 		beforeEach(() => {
diff --git a/goofy-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts
index 4eeccc76c08c46845bb52ac83ac2df68ec57849c..5af1a1d6cdf92aa59e7dcba531808e03fe434102 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts
+++ b/goofy-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts
@@ -46,6 +46,15 @@ describe('ZurueckholenButtonComponent', () => {
 		expect(component).toBeTruthy();
 	});
 
+	describe('zurueckholen', () => {
+
+		it('should call vorgang service', () => {
+			component.zurueckholen();
+
+			expect(vorgangCommandService.zurueckholen).toHaveBeenCalled();
+		})
+	})
+
 	describe('zurueckholen button', () => {
 
 		beforeEach(() => {
diff --git a/goofy-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts b/goofy-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts
index 0dc8461f886ab1649b91f599078de060a309f6e4..ae9b7e3420631c4bb5ef510b58aa5f68be1dc177 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts
+++ b/goofy-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts
@@ -46,6 +46,15 @@ describe('ZurueckstellenButtonComponent', () => {
 		expect(component).toBeTruthy();
 	});
 
+	describe('zurueckstellen', () => {
+
+		it('should call vorgang service', () => {
+			component.zurueckstellen();
+
+			expect(vorgangCommandService.zurueckstellen).toHaveBeenCalled();
+		})
+	})
+
 	describe('zurueckstellen button', () => {
 
 		beforeEach(() => {
diff --git a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-body/form-data-table/form-data-table.component.ts b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-body/form-data-table/form-data-table.component.ts
index c80a5ef3afa6b36ec9b82714cb8ea842a1bba6c5..fc93be8ccdfaec9c931b65a7405976b2381a0b39 100644
--- a/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-body/form-data-table/form-data-table.component.ts
+++ b/goofy-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-body/form-data-table/form-data-table.component.ts
@@ -1,24 +1,24 @@
-import { Component, Input } from '@angular/core';
 import { KeyValue } from '@angular/common';
+import { Component, Input } from '@angular/core';
 
 @Component({
-  selector: 'goofy-client-form-data-table',
-  templateUrl: './form-data-table.component.html',
-  styleUrls: ['./form-data-table.component.scss']
+	selector: 'goofy-client-form-data-table',
+	templateUrl: './form-data-table.component.html',
+	styleUrls: ['./form-data-table.component.scss']
 })
 export class FormDataTableComponent {
 
-  @Input() formData: ReadonlyMap<number,string> | object;
+	@Input() formData: ReadonlyMap<number, string> | object;
 
-	objectToBottom = (a: KeyValue<number,string>, b: KeyValue<number,string>): number => {
+	objectToBottom = (a: KeyValue<number, string>, b: KeyValue<number, string>): number => {
 		return this.isObject(a.value) ? 0 : -1;
 	}
 
-	originalOrder = (a: KeyValue<number,string>, b: KeyValue<number,string>): number => {
+	originalOrder = (a: KeyValue<number, string>, b: KeyValue<number, string>): number => {
 		return 0;
 	}
 
 	isObject(value: any) {
 		return typeof value === 'object';
 	}
-}
+}
\ No newline at end of file
diff --git a/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list-container.component.spec.ts b/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list-container.component.spec.ts
index c194ae6a2eb141b4515ee136fbb5337ad9512383..cccafdd2a64d28d7d0c01506161f08cb9f164173 100644
--- a/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list-container.component.spec.ts
+++ b/goofy-client/libs/vorgang/src/lib/vorgang-list-container/vorgang-list-container.component.spec.ts
@@ -36,4 +36,13 @@ describe('VorgangListContainerComponent', () => {
 	it('should create', () => {
 		expect(component).toBeTruthy();
 	});
+
+	describe('load next page', () => {
+
+		it('should call vorgang list service loadNextPage', () => {
+			component.loadNextPage();
+
+			expect(vorgangListService.loadNextPage).toHaveBeenCalled();
+		})
+	})
 });
\ No newline at end of file
diff --git a/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts b/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts
index 7850da47adfe5abd3da9819c73e4545c48d6c497..787bf584ae98df08b15b8c64e0322959aae15366 100644
--- a/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts
+++ b/goofy-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts
@@ -83,21 +83,15 @@ export class WiedervorlageFormService extends AbstractFormService implements OnD
 	}
 
 	public addAttachment(attachment: OzgFileResource): void {
-		/* this.attachments.next({ ...this.attachments.value, loading: true });
-		setTimeout(() => { */
 		let attachments = this.attachments.value;
 		attachments.resource.push(attachment);
 		this.attachments.next(createStateResource(attachments.resource));
-		//}, 200);
 	}
 
 	public deleteAttachment(attachment: OzgFileResource): void {
-		/* this.attachments.next({ ...this.attachments.value, loading: true });
-		setTimeout(() => { */
 		let attachments = this.attachments.value;
 		attachments.resource.splice(attachments.resource.indexOf(attachment), 1);
 		this.attachments.next(createStateResource(attachments.resource));
-		//}, 200);
 	}
 
 	ngOnDestroy(): void {