diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html b/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html
index 5ebfbc7da60ca54abbabb4135ce809216b274f88..94917d3b5187018d3596e7af879356cf30020cc8 100644
--- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html
+++ b/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html
@@ -44,7 +44,7 @@
 
   <admin-primary-button
     (clickEmitter)="submit()"
-    [submitInProgress]="this.submitInProgress$ | async"
+    [submitInProgress]="submitInProgress$ | async"
     data-test-id="save-button"
     label="Speichern"
   ></admin-primary-button>
diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts b/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts
index c6d801bdd90f6f27101dd9d621c497083c57f6ac..772685d7ba660e3011d3eca4a98da5f836df1d88 100644
--- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts
+++ b/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts
@@ -13,7 +13,7 @@ import { Postfach, PostfachResource } from '../../postfach.model';
 import { PostfachService } from '../../postfach.service';
 
 @Injectable()
-export class PostfachFormService extends AbstractFormService {
+export class PostfachFormService extends AbstractFormService<PostfachResource> {
   public static readonly ASBSENDER_GROUP: string = 'absender';
   public static readonly NAME_FIELD: string = 'name';
   public static readonly ANSCHRIFT_FIELD: string = 'anschrift';
diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.repository.service.ts b/alfa-client/libs/admin-settings/src/lib/user/user.repository.service.ts
index 293806db24c520afa4b0907811092ee0bf023979..4ec7da80dfeaae3e0f1acf6f75f1b864c592ea79 100644
--- a/alfa-client/libs/admin-settings/src/lib/user/user.repository.service.ts
+++ b/alfa-client/libs/admin-settings/src/lib/user/user.repository.service.ts
@@ -33,7 +33,7 @@ export class UserRepository {
   }
 
   public findOrganisationseinheitItems(): Observable<Organisationseinheit[]> {
-    return from(this.kcAdminClient.groups.find({ briefRepresentation: false })).pipe(
+    return from(this.findGroups()).pipe(
       map((reps: GroupRepresentation[]) =>
         reps.map((rep: GroupRepresentation) =>
           this.mapGroupRepresentationToOrganisationseinheit(rep),
@@ -42,6 +42,10 @@ export class UserRepository {
     );
   }
 
+  private findGroups(): Promise<GroupRepresentation[]> {
+    return this.kcAdminClient.groups.find({ briefRepresentation: false });
+  }
+
   mapGroupRepresentationToOrganisationseinheit(group: GroupRepresentation): Organisationseinheit {
     return {
       id: group.id,
@@ -51,27 +55,30 @@ export class UserRepository {
   }
 
   public saveOrganisationseinheit(organisationseinheit: Organisationseinheit): Observable<void> {
-    return from(
-      this.kcAdminClient.groups.update(
-        { id: organisationseinheit.id },
-        {
-          name: organisationseinheit.name,
-          attributes: { organisationseinheitId: organisationseinheit.organisationseinheitIds },
-        },
-      ),
-    ).pipe(this.rethrowMappedGroupsError());
+    return from(this.updateGroup(organisationseinheit)).pipe(this.rethrowMappedGroupsError());
+  }
+
+  private updateGroup(organisationseinheit: Organisationseinheit): Promise<void> {
+    return this.kcAdminClient.groups.update(
+      { id: organisationseinheit.id },
+      this.mapToGroupRepresentation(organisationseinheit),
+    );
+  }
+
+  private mapToGroupRepresentation(
+    organisationseinheit: Organisationseinheit,
+  ): GroupRepresentation {
+    return {
+      name: organisationseinheit.name,
+      attributes: { organisationseinheitId: organisationseinheit.organisationseinheitIds },
+    };
   }
 
   public createOrganisationseinheit(
     name: string,
     organisationseinheitIds: string[],
   ): Observable<Organisationseinheit> {
-    return from(
-      this.kcAdminClient.groups.create({
-        name,
-        attributes: { organisationseinheitId: organisationseinheitIds },
-      }),
-    ).pipe(
+    return from(this.createGroup(name, organisationseinheitIds)).pipe(
       map(
         ({ id }): Organisationseinheit => ({
           id,
@@ -83,8 +90,17 @@ export class UserRepository {
     );
   }
 
+  private createGroup(name: string, organisationseinheitIds: string[]) {
+    return this.kcAdminClient.groups.create({
+      name,
+      attributes: { organisationseinheitId: organisationseinheitIds },
+    });
+  }
+
   rethrowMappedGroupsError<T>(): OperatorFunction<T, T> {
-    return catchError((err) => throwError(() => this.mapCreateGroupsNetworkError(err)));
+    return catchError((err: NetworkError) =>
+      throwError(() => this.mapCreateGroupsNetworkError(err)),
+    );
   }
 
   mapCreateGroupsNetworkError(error: NetworkError): OrganisationseinheitError {
diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.service.ts b/alfa-client/libs/admin-settings/src/lib/user/user.service.ts
index 9ec08995ed49a91e48c044690c9770f121fcf9a5..6c5df38c55a6e4cdfcb3c5579ccb3924f4f52307 100644
--- a/alfa-client/libs/admin-settings/src/lib/user/user.service.ts
+++ b/alfa-client/libs/admin-settings/src/lib/user/user.service.ts
@@ -53,14 +53,6 @@ export class UserService {
     );
   }
 
-  private removeOrganisationseinheit(id: string): void {
-    this.setOrganisationseinheit(
-      this.organisationseinheitState$.value.organisationseinheitItems.filter(
-        (organisationseinheit: Organisationseinheit) => organisationseinheit.id !== id,
-      ),
-    );
-  }
-
   setLoadingUntilFirst<T>(
     action: Observable<T>,
     tapFunction: (value: T) => void,
@@ -76,6 +68,14 @@ export class UserService {
     );
   }
 
+  private removeOrganisationseinheit(id: string): void {
+    this.setOrganisationseinheit(
+      this.organisationseinheitState$.value.organisationseinheitItems.filter(
+        (organisationseinheit: Organisationseinheit) => organisationseinheit.id !== id,
+      ),
+    );
+  }
+
   private addOrganisationseinheit(organisationseinheit: Organisationseinheit): void {
     this.setOrganisationseinheit([
       ...this.organisationseinheitState$.value.organisationseinheitItems,
@@ -83,21 +83,14 @@ export class UserService {
     ]);
   }
 
-  setOrganisationseinheit(organisationseinheitItems: Organisationseinheit[]): void {
-    this.organisationseinheitState$.next({
-      ...this.organisationseinheitState$.value,
-      organisationseinheitItems: this.sortedOrganisationseinheitItems(organisationseinheitItems),
-    });
-  }
-
-  private sortedOrganisationseinheitItems(
-    organisationseinheitItems: Organisationseinheit[],
-  ): Organisationseinheit[] {
-    return [...organisationseinheitItems].sort((a, b) => a.name.localeCompare(b.name));
+  public getOrganisationseinheitItems(): Observable<Organisationseinheit[]> {
+    return this.getOrganisationseinheitState().pipe(
+      map((state: OrganisationseinheitState) => state.organisationseinheitItems),
+    );
   }
 
   public getOrganisationseinheitState(): Observable<OrganisationseinheitState> {
-    return this.organisationseinheitState$.pipe(tap(() => this.updateIfRequired()));
+    return this.organisationseinheitState$.asObservable().pipe(tap(() => this.updateIfRequired()));
   }
 
   updateIfRequired(): void {
@@ -121,6 +114,13 @@ export class UserService {
     );
   }
 
+  setLoading(loading: boolean = true): void {
+    this.organisationseinheitState$.next({
+      ...this.organisationseinheitState$.value,
+      loading,
+    });
+  }
+
   setUpdateRequired(updateRequired: boolean = true) {
     this.organisationseinheitState$.next({
       ...this.organisationseinheitState$.value,
@@ -128,16 +128,16 @@ export class UserService {
     });
   }
 
-  setLoading(loading: boolean = true): void {
+  setOrganisationseinheit(organisationseinheitItems: Organisationseinheit[]): void {
     this.organisationseinheitState$.next({
       ...this.organisationseinheitState$.value,
-      loading,
+      organisationseinheitItems: this.sortedOrganisationseinheitItems(organisationseinheitItems),
     });
   }
 
-  public getOrganisationseinheitItems(): Observable<Organisationseinheit[]> {
-    return this.getOrganisationseinheitState().pipe(
-      map((state: OrganisationseinheitState) => state.organisationseinheitItems),
-    );
+  private sortedOrganisationseinheitItems(
+    organisationseinheitItems: Organisationseinheit[],
+  ): Organisationseinheit[] {
+    return [...organisationseinheitItems].sort((a, b) => a.name.localeCompare(b.name));
   }
 }
diff --git a/alfa-client/libs/admin-settings/test/admin-settings.ts b/alfa-client/libs/admin-settings/test/admin-settings.ts
index d81dbd8109f79ac5eff68526de2aced072605d05..34d310632e95136a912ecf6d674153c1012770a8 100644
--- a/alfa-client/libs/admin-settings/test/admin-settings.ts
+++ b/alfa-client/libs/admin-settings/test/admin-settings.ts
@@ -6,16 +6,12 @@ import { SettingItemResource, SettingListResource } from '../src/lib/admin-setti
 export function createSettingsListResource(
   settingsItems: SettingItemResource[],
 ): SettingListResource {
-  return toResource({}, [], {
-    settings: settingsItems,
-  });
+  return toResource({}, [], { settings: settingsItems });
 }
 
 export function createFilledSettingsListResource(
   resources: Resource[],
   linkRelations: string[] = [],
 ): SettingListResource {
-  return toResource({}, [...linkRelations], {
-    [SettingListLinkRel.LIST]: resources,
-  });
+  return toResource({}, [...linkRelations], { [SettingListLinkRel.LIST]: resources });
 }
diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts b/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts
index 550ff12cf4a72eb21edb4a57c8abd8295df8ab3d..fd6d94eb2ad3210ee4907e3b9caa6142d422cfdb 100644
--- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts
+++ b/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts
@@ -21,16 +21,16 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Injectable } from '@angular/core';
-import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
 import { CommandResource } from '@alfa-client/command-shared';
 import { ForwardingService } from '@alfa-client/forwarding-shared';
 import { AbstractFormService, StateResource } from '@alfa-client/tech-shared';
 import { VorgangResource } from '@alfa-client/vorgang-shared';
+import { Injectable } from '@angular/core';
+import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
 import { Observable } from 'rxjs';
 
 @Injectable()
-export class VorgangForwardFormService extends AbstractFormService {
+export class VorgangForwardFormService extends AbstractFormService<CommandResource> {
   static readonly FIELD_PATH_PREFIX = 'command.redirectRequest';
 
   static readonly FIELD_EMAIL = 'email';
diff --git a/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar.formservice.ts b/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar.formservice.ts
index c7c3d53062cf74f0100f7a99a10cc06ee5f8b4fd..da8f2d7ca02e938c9bbcf2b60d55f1fdc21fc9b0 100644
--- a/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar.formservice.ts
+++ b/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar.formservice.ts
@@ -21,6 +21,8 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
+import { KommentarResource, KommentarService } from '@alfa-client/kommentar-shared';
+import { AbstractFormService, StateResource } from '@alfa-client/tech-shared';
 import { Injectable } from '@angular/core';
 import {
   UntypedFormArray,
@@ -28,12 +30,10 @@ import {
   UntypedFormControl,
   UntypedFormGroup,
 } from '@angular/forms';
-import { KommentarService } from '@alfa-client/kommentar-shared';
-import { AbstractFormService, StateResource } from '@alfa-client/tech-shared';
 import { Observable } from 'rxjs';
 
 @Injectable()
-export class KommentarFormService extends AbstractFormService {
+export class KommentarFormService extends AbstractFormService<KommentarResource> {
   static readonly TEXT = 'text';
 
   static readonly FIELD_PATH_PREFIX = 'kommentar';
diff --git a/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail.formservice.ts b/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail.formservice.ts
index 3e7de900cdaa45e7ebfbbdc66994fb9b874ae594..fbf690c4091a022ba6cfaa57a5e2c6913f128f82 100644
--- a/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail.formservice.ts
+++ b/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail.formservice.ts
@@ -21,6 +21,9 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
+import { CommandResource } from '@alfa-client/command-shared';
+import { PostfachService } from '@alfa-client/postfach-shared';
+import { AbstractFormService, StateResource } from '@alfa-client/tech-shared';
 import { Injectable } from '@angular/core';
 import {
   UntypedFormArray,
@@ -28,14 +31,11 @@ import {
   UntypedFormControl,
   UntypedFormGroup,
 } from '@angular/forms';
-import { CommandResource } from '@alfa-client/command-shared';
-import { PostfachService } from '@alfa-client/postfach-shared';
-import { AbstractFormService, StateResource } from '@alfa-client/tech-shared';
 import { ReplyOption } from 'libs/postfach-shared/src/lib/postfach.model';
 import { Observable } from 'rxjs';
 
 @Injectable()
-export class PostfachMailFormservice extends AbstractFormService {
+export class PostfachMailFormservice extends AbstractFormService<CommandResource> {
   static readonly FIELD_PATH_PREFIX = 'command.body';
 
   static readonly FIELD_SUBJECT = 'subject';
diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts
index deaa71132a606f656d62efd87deded4ba3e71f2b..1a08b94708151af6110471adb6da3728d84f5dc2 100644
--- a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts
+++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts
@@ -78,14 +78,14 @@ export function toResourceUri(resource: Resource, linkRel?: string): string {
   return encodeUrlForEmbedding(url);
 }
 
-export function doOnValidStateResource(
-  stateResource: StateResource<Resource>,
+export function doOnValidStateResource<T>(
+  stateResource: StateResource<T>,
   actionOnValid: () => void,
 ): void {
-  if (isValidStateResource(stateResource)) actionOnValid();
+  if (isValidStateResource<T>(stateResource)) actionOnValid();
 }
 
-export function isValidStateResource(stateResource: StateResource<Resource>): boolean {
+export function isValidStateResource<T>(stateResource: StateResource<T>): boolean {
   return stateResource.loaded && isNotNull(stateResource.resource);
 }
 
@@ -107,13 +107,11 @@ export function notHasLink<T extends Resource>(resource: T, linkRel: string): bo
   return !hasLink(resource, linkRel);
 }
 
-export function containsLoading(stateResources: StateResource<Resource>[]): boolean {
+export function containsLoading<T>(stateResources: StateResource<T>[]): boolean {
   return stateResources.findIndex((stateResources) => stateResources.loading) > -1;
 }
 
-export function getSuccessfullyLoaded<T extends Resource>(
-  stateResources: StateResource<T>[],
-): StateResource<T>[] {
+export function getSuccessfullyLoaded<T>(stateResources: StateResource<T>[]): StateResource<T>[] {
   return stateResources.filter(
     (stateResource) => isLoaded(stateResource) && !hasError(stateResource),
   );
diff --git a/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts b/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts
index 753c7422643ab606489987684c13e1ee097ae31b..2cc706d3f77316963c0a261f6be6ed7a762809ce 100644
--- a/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts
+++ b/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts
@@ -23,7 +23,6 @@
  */
 import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
 
-import { Resource } from '@ngxp/rest';
 import { isNil } from 'lodash-es';
 import { Observable } from 'rxjs';
 import { map } from 'rxjs/operators';
@@ -35,7 +34,7 @@ import {
   setIssueValidationError,
 } from '../validation/tech.validation.util';
 
-export abstract class AbstractFormService {
+export abstract class AbstractFormService<T> {
   form: UntypedFormGroup;
   pathPrefix: string;
   source: any;
@@ -48,13 +47,13 @@ export abstract class AbstractFormService {
 
   protected abstract initForm(): UntypedFormGroup;
 
-  public submit(): Observable<StateResource<Resource | HttpError>> {
+  public submit(): Observable<StateResource<T | HttpError>> {
     return this.doSubmit().pipe(map((result) => this.handleResponse(result)));
   }
 
-  protected abstract doSubmit(): Observable<StateResource<Resource | HttpError>>;
+  protected abstract doSubmit(): Observable<StateResource<T | HttpError>>;
 
-  handleResponse(result: StateResource<Resource | HttpError>): StateResource<Resource | HttpError> {
+  handleResponse(result: StateResource<T | HttpError>): StateResource<T | HttpError> {
     if (result.loading) return result;
     if (hasError(result)) {
       this.handleError(result.error);
diff --git a/alfa-client/libs/user-profile/src/lib/user-profile-search-container/user-profile-search/user-profile.search.formservice.ts b/alfa-client/libs/user-profile/src/lib/user-profile-search-container/user-profile-search/user-profile.search.formservice.ts
index 4ec86ff50492e343fb1fe25fe2936d8cab1e8e9a..b42472be592d067f5f5da2352e137479e08b62fd 100644
--- a/alfa-client/libs/user-profile/src/lib/user-profile-search-container/user-profile-search/user-profile.search.formservice.ts
+++ b/alfa-client/libs/user-profile/src/lib/user-profile-search-container/user-profile-search/user-profile.search.formservice.ts
@@ -21,15 +21,18 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Injectable, OnDestroy } from '@angular/core';
-import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
 import { AbstractFormService, StateResource } from '@alfa-client/tech-shared';
 import { UserProfileListResource, UserProfileService } from '@alfa-client/user-profile-shared';
+import { Injectable, OnDestroy } from '@angular/core';
+import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
 import { isNil } from 'lodash-es';
 import { Observable, Subscription } from 'rxjs';
 
 @Injectable()
-export class UserProfileSearchFormService extends AbstractFormService implements OnDestroy {
+export class UserProfileSearchFormService
+  extends AbstractFormService<UserProfileListResource>
+  implements OnDestroy
+{
   public static readonly SEARCH_FIELD = 'searchBy';
 
   private FIELD_PATH: string = 'only.fe';
diff --git a/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.formservice.ts b/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.formservice.ts
index ac19f5e03887484506031e555feae843efd60efa..2f03fe9e247a89ffc606303f72611e69ce2052b0 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.formservice.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.formservice.ts
@@ -1,13 +1,13 @@
+import { CommandResource } from '@alfa-client/command-shared';
+import { AbstractFormService, StateResource } from '@alfa-client/tech-shared';
+import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { Injectable } from '@angular/core';
 import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
-import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { isEmpty } from 'lodash-es';
-import { AbstractFormService, StateResource } from '@alfa-client/tech-shared';
 import { Observable } from 'rxjs';
-import { Resource } from '@ngxp/rest';
 
 @Injectable()
-export class AktenzeichenEditDialogFormservice extends AbstractFormService {
+export class AktenzeichenEditDialogFormservice extends AbstractFormService<CommandResource> {
   static readonly AKTENZEICHEN_FIELD = 'aktenzeichen';
 
   private vorgang: VorgangWithEingangResource;
@@ -25,7 +25,7 @@ export class AktenzeichenEditDialogFormservice extends AbstractFormService {
     });
   }
 
-  protected doSubmit(): Observable<StateResource<Resource>> {
+  protected doSubmit(): Observable<StateResource<CommandResource>> {
     return this.vorgangService.setAktenzeichen(this.vorgang, this.getValue());
   }
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts
index f7d6ea59813fa20881d5cb9d019aac71f81e6fef..faddd22d4ffcde0e97fc85ef8da5f52dadc52a60 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts
@@ -7,7 +7,7 @@ import {
   DocumentResource,
 } from '@alfa-client/bescheid-shared';
 import { BinaryFileResource } from '@alfa-client/binary-file-shared';
-import { tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared';
+import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared';
 import {
   AbstractFormService,
   EMPTY_STRING,
@@ -42,7 +42,10 @@ import {
 } from 'rxjs';
 
 @Injectable()
-export class BescheidenFormService extends AbstractFormService implements OnDestroy {
+export class BescheidenFormService
+  extends AbstractFormService<CommandResource>
+  implements OnDestroy
+{
   static readonly FIELD_BESCHIEDEN_AM = 'beschiedenAm';
   static readonly FIELD_BEWILLIGT = 'bewilligt';
   static readonly FIELD_BESCHEID_DOCUMENT = 'bescheidDocument';
@@ -181,7 +184,7 @@ export class BescheidenFormService extends AbstractFormService implements OnDest
     return BescheidenFormService.FIELD_PATH_PREFIX;
   }
 
-  protected doSubmit(): Observable<StateResource<Resource | HttpError>> {
+  protected doSubmit(): Observable<StateResource<CommandResource | HttpError>> {
     if (this.isPatch() || this.bescheidService.existsBescheidDraft()) {
       return this.bescheidService.updateBescheid(this.getValue());
     } else {
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts
index e408b02599759b92ad1a6e42c505b3e0110133ae..ca24c8f26cc4116f46c13f5e96b0ba324244207f 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts
@@ -21,6 +21,17 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
+import {
+  AbstractFormService,
+  StateResource,
+  createFutureDate,
+  formatForDatabase,
+} from '@alfa-client/tech-shared';
+import {
+  Wiedervorlage,
+  WiedervorlageResource,
+  WiedervorlageService,
+} from '@alfa-client/wiedervorlage-shared';
 import { Injectable } from '@angular/core';
 import {
   UntypedFormArray,
@@ -28,17 +39,10 @@ import {
   UntypedFormControl,
   UntypedFormGroup,
 } from '@angular/forms';
-import {
-  AbstractFormService,
-  createFutureDate,
-  formatForDatabase,
-  StateResource,
-} from '@alfa-client/tech-shared';
-import { Wiedervorlage, WiedervorlageService } from '@alfa-client/wiedervorlage-shared';
 import { Observable } from 'rxjs';
 
 @Injectable()
-export class WiedervorlageFormService extends AbstractFormService {
+export class WiedervorlageFormService extends AbstractFormService<WiedervorlageResource> {
   static readonly FIELD_BETREFF = 'betreff';
   static readonly FIELD_BESCHREIBUNG = 'beschreibung';
   static readonly FIELD_FRIST = 'frist';