diff --git a/alfa-client/apps/admin/src/main.ts b/alfa-client/apps/admin/src/main.ts
index fc479885f2dde75810dc76f8429e26a6068e60ca..de7bed8ea66ac6e222311d9d8c185b4cad477b85 100644
--- a/alfa-client/apps/admin/src/main.ts
+++ b/alfa-client/apps/admin/src/main.ts
@@ -21,16 +21,10 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ConfigurationService } from '@admin-client/configuration-shared';
-import {
-  AggregationMappingListResourceService,
-  AggregationMappingService,
-  createAggregationMappingResourceService,
-} from '@admin-client/reporting-shared';
+import { AggregationMappingProvider } from '@admin-client/reporting-shared';
 import { ApiRootModule } from '@alfa-client/api-root-shared';
 import { EnvironmentModule, loadEnvironment } from '@alfa-client/environment-shared';
 import { NavigationSharedModule } from '@alfa-client/navigation-shared';
-import { ResourceRepository } from '@alfa-client/tech-shared';
 import { registerLocaleData } from '@angular/common';
 import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
 import localeDe from '@angular/common/locales/de';
@@ -103,12 +97,7 @@ loadEnvironment(environment.environmentUrl).then((env) => {
       PostfachProviders,
       SettingsProviders,
       UserProviders,
-      {
-        provide: AggregationMappingListResourceService,
-        useFactory: createAggregationMappingResourceService,
-        deps: [ResourceRepository, ConfigurationService],
-      },
-      AggregationMappingService,
+      AggregationMappingProvider,
       importProvidersFrom(
         NavigationSharedModule,
         BrowserModule,
diff --git a/alfa-client/apps/admin/src/pages/statistik/statistik-fields-form-page/statistik-fields-form-page.component.spec.ts b/alfa-client/apps/admin/src/pages/statistik/statistik-fields-form-page/statistik-fields-form-page.component.spec.ts
index a861afd0728827a45330d8d5d2d78f63e6dfc5d1..938cc1b0061d2194105629ca70c1e5f8619d881c 100644
--- a/alfa-client/apps/admin/src/pages/statistik/statistik-fields-form-page/statistik-fields-form-page.component.spec.ts
+++ b/alfa-client/apps/admin/src/pages/statistik/statistik-fields-form-page/statistik-fields-form-page.component.spec.ts
@@ -1,7 +1,7 @@
+import { AdminStatistikFieldsFormComponent } from '@admin-client/statistik';
 import { existsAsHtmlElement } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { MockComponent } from 'ng-mocks';
-import { AdminStatistikFieldsFormComponent } from '../../../../../../libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component';
 import { getDataTestIdOf } from '../../../../../../libs/tech-shared/test/data-test';
 import { StatistikFieldsFormPageComponent } from './statistik-fields-form-page.component';
 
diff --git a/alfa-client/apps/admin/src/pages/statistik/statistik-fields-form-page/statistik-fields-form-page.component.ts b/alfa-client/apps/admin/src/pages/statistik/statistik-fields-form-page/statistik-fields-form-page.component.ts
index e249c034417fc7133d8cc2c5db690ddcb94ea50f..c4122b72d148865b4219d5446a3c2060574b23e7 100644
--- a/alfa-client/apps/admin/src/pages/statistik/statistik-fields-form-page/statistik-fields-form-page.component.ts
+++ b/alfa-client/apps/admin/src/pages/statistik/statistik-fields-form-page/statistik-fields-form-page.component.ts
@@ -1,6 +1,6 @@
+import { AdminStatistikFieldsFormComponent } from '@admin-client/statistik';
 import { CommonModule } from '@angular/common';
 import { Component } from '@angular/core';
-import { AdminStatistikFieldsFormComponent } from '../../../../../../libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component';
 
 @Component({
   selector: 'statistik-fields-form-page',
diff --git a/alfa-client/libs/admin/postfach-shared/src/lib/postfach.model.ts b/alfa-client/libs/admin/postfach-shared/src/lib/postfach.model.ts
index c592dec3e6621543ca69e9ee23abdeea1ec6f4ec..e3ce2fb8bd6153796bea9bf82422718d2324721e 100644
--- a/alfa-client/libs/admin/postfach-shared/src/lib/postfach.model.ts
+++ b/alfa-client/libs/admin/postfach-shared/src/lib/postfach.model.ts
@@ -21,8 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Resource } from '@ngxp/rest';
-import { SettingName } from 'libs/admin/settings-shared/src/lib/settings.model';
+import { SettingItemResource } from 'libs/admin/settings-shared/src/lib/settings.model';
 
 export interface Absender {
   name: string;
@@ -37,9 +36,4 @@ export interface Postfach {
   signatur: string;
 }
 
-export declare type PostfachSettingsItem = {
-  name: SettingName.POSTFACH;
-  settingBody: Postfach;
-};
-
-export declare type PostfachResource = Resource & PostfachSettingsItem;
+export declare type PostfachResource = SettingItemResource<Postfach>;
diff --git a/alfa-client/libs/admin/postfach-shared/src/lib/postfach.service.ts b/alfa-client/libs/admin/postfach-shared/src/lib/postfach.service.ts
index 19cf4ef6cf561586b44f3afee70e4c716ec54052..3321cfc1690bd504a1e0f94ac6eda627170a29c9 100644
--- a/alfa-client/libs/admin/postfach-shared/src/lib/postfach.service.ts
+++ b/alfa-client/libs/admin/postfach-shared/src/lib/postfach.service.ts
@@ -21,13 +21,13 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { SettingName } from '@admin-client/settings-shared';
+import { SettingItem, SettingName } from '@admin-client/settings-shared';
 import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
 import { SnackBarService } from '@alfa-client/ui';
 import { inject, Injectable } from '@angular/core';
 import { Observable, startWith, tap } from 'rxjs';
 import { PostfachResourceService } from './postfach-resource.service';
-import { Postfach, PostfachResource, PostfachSettingsItem } from './postfach.model';
+import { Postfach, PostfachResource } from './postfach.model';
 
 @Injectable()
 export class PostfachService {
@@ -51,7 +51,7 @@ export class PostfachService {
     }
   }
 
-  private buildPostfachSettingItem(postfach: Postfach): PostfachSettingsItem {
+  private buildPostfachSettingItem(postfach: Postfach): SettingItem<Postfach> {
     return {
       name: SettingName.POSTFACH,
       settingBody: postfach,
diff --git a/alfa-client/libs/admin/postfach-shared/src/test/postfach.ts b/alfa-client/libs/admin/postfach-shared/src/test/postfach.ts
index 8f8df8c509f888f6027f8746045489d84dd2f77f..88132bc3d88c73d130f50caed0da9aa15ae68d5b 100644
--- a/alfa-client/libs/admin/postfach-shared/src/test/postfach.ts
+++ b/alfa-client/libs/admin/postfach-shared/src/test/postfach.ts
@@ -22,9 +22,9 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { faker } from '@faker-js/faker';
-import { SettingName } from 'libs/admin/settings-shared/src/lib/settings.model';
+import { SettingItem, SettingName } from 'libs/admin/settings-shared/src/lib/settings.model';
 import { toResource } from 'libs/tech-shared/test/resource';
-import { Postfach, PostfachResource, PostfachSettingsItem } from '../lib/postfach.model';
+import { Postfach, PostfachResource } from '../lib/postfach.model';
 
 export function createPostfach(): Postfach {
   return {
@@ -39,7 +39,7 @@ export function createPostfach(): Postfach {
   };
 }
 
-export function createPostfachSettingItem(): PostfachSettingsItem {
+export function createPostfachSettingItem(): SettingItem<Postfach> {
   return {
     name: SettingName.POSTFACH,
     settingBody: createPostfach(),
diff --git a/alfa-client/libs/admin/reporting-shared/src/index.ts b/alfa-client/libs/admin/reporting-shared/src/index.ts
index 9ddf4d3f190eb4ad70ea582988cb058322b7b186..44ab78233d97deaf497e327e28f71c431ae6960e 100644
--- a/alfa-client/libs/admin/reporting-shared/src/index.ts
+++ b/alfa-client/libs/admin/reporting-shared/src/index.ts
@@ -1,3 +1,4 @@
 export * from './lib/aggregation-mapping-resource.service';
 export * from './lib/aggregation-mapping.model';
+export * from './lib/aggregation-mapping.provider';
 export * from './lib/aggregation-mapping.service';
diff --git a/alfa-client/libs/admin/reporting-shared/src/lib/aggregation-mapping.provider.ts b/alfa-client/libs/admin/reporting-shared/src/lib/aggregation-mapping.provider.ts
new file mode 100644
index 0000000000000000000000000000000000000000..888d7154e81dbfe53fb7476e4de8835463de6d25
--- /dev/null
+++ b/alfa-client/libs/admin/reporting-shared/src/lib/aggregation-mapping.provider.ts
@@ -0,0 +1,17 @@
+import { ResourceRepository } from '@alfa-client/tech-shared';
+import { Provider } from '@angular/core';
+import { ConfigurationService } from 'libs/admin/configuration-shared/src/lib/configuration.service';
+import {
+  AggregationMappingListResourceService,
+  createAggregationMappingResourceService,
+} from './aggregation-mapping-resource.service';
+import { AggregationMappingService } from './aggregation-mapping.service';
+
+export const AggregationMappingProvider: Provider[] = [
+  {
+    provide: AggregationMappingListResourceService,
+    useFactory: createAggregationMappingResourceService,
+    deps: [ResourceRepository, ConfigurationService],
+  },
+  AggregationMappingService,
+];
diff --git a/alfa-client/libs/admin/reporting-shared/src/lib/aggregation-mapping.service.spec.ts b/alfa-client/libs/admin/reporting-shared/src/lib/aggregation-mapping.service.spec.ts
index 6bc5f3ca516ecb2bb914a45091682872f09a79f4..ecf4387ceee6a3dbdd6775f8ef4fa3a306144002 100644
--- a/alfa-client/libs/admin/reporting-shared/src/lib/aggregation-mapping.service.spec.ts
+++ b/alfa-client/libs/admin/reporting-shared/src/lib/aggregation-mapping.service.spec.ts
@@ -38,6 +38,7 @@ describe('AggregationMappingService', () => {
     beforeEach(() => {
       listResourceService.getList = jest.fn().mockReturnValue(singleCold(aggregationMappingListStateResource));
     });
+
     it('should call listResourceService', () => {
       service.getList();
 
diff --git a/alfa-client/libs/admin/reporting-shared/test/aggregation-mapping.ts b/alfa-client/libs/admin/reporting-shared/test/aggregation-mapping.ts
index 6c7c4d6d8c7d37ef208117c9a6a2b750b27f0853..acbcc9fa75722396e4a410ea77e9157a2a8ce8fc 100644
--- a/alfa-client/libs/admin/reporting-shared/test/aggregation-mapping.ts
+++ b/alfa-client/libs/admin/reporting-shared/test/aggregation-mapping.ts
@@ -25,11 +25,11 @@ export function createAggregationMappingResource(linkRelations: LinkRelationName
 }
 
 export function createAggregationMappingResources(linkRelations: LinkRelationName[] = []): AggregationMappingResource[] {
-  return times(10, () => toResource(createAggregationMappingResource(), [...linkRelations]));
+  return times(10, () => createAggregationMappingResource(linkRelations));
 }
 
 export function createAggregationMappingListResource(linkRelations: LinkRelationName[] = []): AggregationMappingListResource {
-  return toResource({}, [...linkRelations], {
+  return toResource({}, linkRelations, {
     [AggregationMappingListLinkRel.LIST]: createAggregationMappingResources(),
   });
 }
diff --git a/alfa-client/libs/admin/settings-shared/src/lib/settings-resource.service.ts b/alfa-client/libs/admin/settings-shared/src/lib/settings-resource.service.ts
index a75f91afec901a8c969c00ede9a8631766421f1f..7e9df14e6ec13929f720978ada7ebcb3e74c5ef9 100644
--- a/alfa-client/libs/admin/settings-shared/src/lib/settings-resource.service.ts
+++ b/alfa-client/libs/admin/settings-shared/src/lib/settings-resource.service.ts
@@ -4,7 +4,11 @@ import { Resource } from '@ngxp/rest';
 import { SettingListLinkRel } from './settings.linkrel';
 import { SettingItemResource, SettingListResource } from './settings.model';
 
-export class SettingListResourceService extends ResourceListService<Resource, SettingListResource, SettingItemResource> {}
+export class SettingListResourceService extends ResourceListService<
+  Resource,
+  SettingListResource,
+  SettingItemResource<unknown>
+> {}
 
 export function createSettingListResourceService(repository: ResourceRepository, configurationService: ConfigurationService) {
   return new ResourceListService(buildConfig(configurationService), repository);
diff --git a/alfa-client/libs/admin/settings-shared/src/lib/settings.model.ts b/alfa-client/libs/admin/settings-shared/src/lib/settings.model.ts
index 263fca126d53eb889e1701e931a8b32a38899145..2e97584b7934ea105c828cbb2523c0d16ce431a1 100644
--- a/alfa-client/libs/admin/settings-shared/src/lib/settings.model.ts
+++ b/alfa-client/libs/admin/settings-shared/src/lib/settings.model.ts
@@ -25,16 +25,16 @@ import { ListResource } from '@alfa-client/tech-shared';
 import { Resource } from '@ngxp/rest';
 
 export interface SettingListResource extends ListResource {
-  _embedded: { settings: SettingItemResource[] };
+  _embedded: { settings: SettingItemResource<unknown>[] };
 }
 
 export enum SettingName {
   POSTFACH = 'Postfach',
 }
 
-export interface SettingItem {
+export interface SettingItem<T> {
   name: SettingName;
-  settingBody: unknown;
+  settingBody: T;
 }
 
-export declare type SettingItemResource = Resource & SettingItem;
+export interface SettingItemResource<T> extends SettingItem<T>, Resource {}
diff --git a/alfa-client/libs/admin/settings-shared/src/lib/settings.service.ts b/alfa-client/libs/admin/settings-shared/src/lib/settings.service.ts
index aaf9eb77215703026c749a955c84a6373d6e1fa3..770c9d7da6230f67e7d92c553e97e062277b5994 100644
--- a/alfa-client/libs/admin/settings-shared/src/lib/settings.service.ts
+++ b/alfa-client/libs/admin/settings-shared/src/lib/settings.service.ts
@@ -2,16 +2,16 @@ import { StateResource } from '@alfa-client/tech-shared';
 import { inject, Injectable } from '@angular/core';
 import { map, Observable } from 'rxjs';
 import { SettingListResourceService } from './settings-resource.service';
-import { SettingListResource, SettingName } from './settings.model';
-import { getSettingItem } from './settings.util';
+import { SettingItemResource, SettingListResource, SettingName } from './settings.model';
+import { getSettingItemResource } from './settings.util';
 
 @Injectable()
 export class SettingsService {
   private settingListResourceService = inject(SettingListResourceService);
 
-  public get<T>(name: SettingName): Observable<StateResource<T>> {
+  public get<T>(name: SettingName): Observable<StateResource<SettingItemResource<T>>> {
     return this.settingListResourceService
       .getList()
-      .pipe(map((list: StateResource<SettingListResource>) => getSettingItem<T>(list, name)));
+      .pipe(map((list: StateResource<SettingListResource>) => getSettingItemResource<T>(list, name)));
   }
 }
diff --git a/alfa-client/libs/admin/settings-shared/src/lib/settings.util.spec.ts b/alfa-client/libs/admin/settings-shared/src/lib/settings.util.spec.ts
index 29d7ed769bc382c9a8384d13679c37ec23c47b56..a84eccc40f6fc9b441ee360b3cb94b56d2f2af1e 100644
--- a/alfa-client/libs/admin/settings-shared/src/lib/settings.util.spec.ts
+++ b/alfa-client/libs/admin/settings-shared/src/lib/settings.util.spec.ts
@@ -31,7 +31,6 @@ describe('get setting resource', () => {
   const settingName: SettingName = <SettingName>'DUMMY';
 
   it('should return matching setting resource as state resource if exists', () => {
-    createSettingItemResource();
     const settingItemResource: SettingItemResource = { ...createSettingItemResource(), name: settingName };
     const settingsListResource: StateResource<SettingListResource> = createStateResource(
       createFilledSettingsListResource([settingItemResource]),
diff --git a/alfa-client/libs/admin/settings-shared/src/lib/settings.util.ts b/alfa-client/libs/admin/settings-shared/src/lib/settings.util.ts
index 6b4f9b41754059c6fef0a95f7e1ee1967dd612dd..2a00f86b2a84fef05b45ccfde06c3ff8a6321745 100644
--- a/alfa-client/libs/admin/settings-shared/src/lib/settings.util.ts
+++ b/alfa-client/libs/admin/settings-shared/src/lib/settings.util.ts
@@ -31,11 +31,11 @@ import {
 import { SettingListLinkRel } from './settings.linkrel';
 import { SettingItemResource, SettingListResource, SettingName } from './settings.model';
 
-export function getSettingItem<T>(
+export function getSettingItemResource<T>(
   settingsListResource: StateResource<SettingListResource>,
   itemName: SettingName,
-): StateResource<T> {
-  const entries: SettingItemResource[] = getEmbeddedResources(settingsListResource, SettingListLinkRel.LIST);
-  const entry: SettingItemResource = entries.find((item: SettingItemResource) => item.name === itemName);
-  return isNotNil(entry) ? createStateResource(entry as T) : createEmptyStateResource<T>();
+): StateResource<SettingItemResource<T>> {
+  const entries: SettingItemResource<T>[] = getEmbeddedResources(settingsListResource, SettingListLinkRel.LIST);
+  const entry: SettingItemResource<T> = entries.find((item: SettingItemResource<T>) => item.name === itemName);
+  return isNotNil(entry) ? createStateResource(entry) : createEmptyStateResource<SettingItemResource<T>>();
 }
diff --git a/alfa-client/libs/admin/shared/src/lib/admin-cancel-button/admin-cancel-button.component.ts b/alfa-client/libs/admin/shared/src/lib/admin-cancel-button/admin-cancel-button.component.ts
index 73d37ea79298e21bbb800115520a713f47f1ea45..8c284f05c61e3d545025c8447d4d302a0fc3db85 100644
--- a/alfa-client/libs/admin/shared/src/lib/admin-cancel-button/admin-cancel-button.component.ts
+++ b/alfa-client/libs/admin/shared/src/lib/admin-cancel-button/admin-cancel-button.component.ts
@@ -1,4 +1,3 @@
-import { ROUTES } from '@admin-client/shared';
 import { CommonModule } from '@angular/common';
 import { Component, Input } from '@angular/core';
 import { RoutingButtonComponent } from '@ods/component';
@@ -12,6 +11,4 @@ import { CloseIconComponent } from '@ods/system';
 })
 export class AdminCancelButtonComponent {
   @Input() linkPath: string;
-
-  public readonly Routes = ROUTES;
 }
diff --git a/alfa-client/libs/admin/shared/src/lib/admin-save-button/admin-save-button.component.spec.ts b/alfa-client/libs/admin/shared/src/lib/admin-save-button/admin-save-button.component.spec.ts
index 562779a31a0b71f68d1942cbf7f27b4beb967aab..52a303f378e824677dd6518126ae838ebd416e3a 100644
--- a/alfa-client/libs/admin/shared/src/lib/admin-save-button/admin-save-button.component.spec.ts
+++ b/alfa-client/libs/admin/shared/src/lib/admin-save-button/admin-save-button.component.spec.ts
@@ -27,18 +27,13 @@ describe('AdminSaveButtonComponent', () => {
     await TestBed.configureTestingModule({
       imports: [AdminSaveButtonComponent],
       declarations: [MockComponent(ButtonWithSpinnerComponent)],
-    })
-      .overrideComponent(AdminSaveButtonComponent, {
-        set: {
-          providers: [
-            {
-              provide: ADMIN_FORMSERVICE,
-              useValue: formService,
-            },
-          ],
+      providers: [
+        {
+          provide: ADMIN_FORMSERVICE,
+          useValue: formService,
         },
-      })
-      .compileComponents();
+      ],
+    }).compileComponents();
 
     fixture = TestBed.createComponent(AdminSaveButtonComponent);
     component = fixture.componentInstance;
diff --git a/alfa-client/libs/admin/shared/src/lib/admin-save-button/admin-save-button.component.ts b/alfa-client/libs/admin/shared/src/lib/admin-save-button/admin-save-button.component.ts
index 0d4921c089422d210dc8bf28061d90970a86a91e..60abd08c7f311ecabe6d56ecc47fbfcd16412877 100644
--- a/alfa-client/libs/admin/shared/src/lib/admin-save-button/admin-save-button.component.ts
+++ b/alfa-client/libs/admin/shared/src/lib/admin-save-button/admin-save-button.component.ts
@@ -1,10 +1,10 @@
 import { ADMIN_FORMSERVICE } from '@admin-client/shared';
-import { AbstractFormService, createEmptyStateResource } from '@alfa-client/tech-shared';
+import { AbstractFormService, createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
 import { CommonModule } from '@angular/common';
 import { Component, inject } from '@angular/core';
 import { Resource } from '@ngxp/rest';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { of } from 'rxjs';
+import { Observable, of } from 'rxjs';
 
 @Component({
   selector: 'admin-save-button',
@@ -15,7 +15,7 @@ import { of } from 'rxjs';
 export class AdminSaveButtonComponent {
   private formService: AbstractFormService<Resource> = inject(ADMIN_FORMSERVICE);
 
-  public stateResource$ = of(createEmptyStateResource<Resource>());
+  public stateResource$: Observable<StateResource<Resource>> = of(createEmptyStateResource<Resource>());
 
   public submit(): void {
     this.stateResource$ = this.formService.submit();
diff --git a/alfa-client/libs/admin/statistik/src/index.ts b/alfa-client/libs/admin/statistik/src/index.ts
index cdc5d7b64f24d50920b721f3ab01c5b69cb41b99..157271feb3bf8625864f12faec9623307c3b7690 100644
--- a/alfa-client/libs/admin/statistik/src/index.ts
+++ b/alfa-client/libs/admin/statistik/src/index.ts
@@ -1 +1,2 @@
 export * from './lib/statistik-container/statistik-container.component';
+export * from './lib/statistik-fields-form/admin-statistik-fields-form.component';
diff --git a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.html b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.html
index 8251c9067a3a2bbf07363cc9a1f8e167fbf6de1a..27805c87fe074bae41311083bc1aed20d5aaeaef 100644
--- a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.html
+++ b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.html
@@ -16,34 +16,8 @@
         data-test-id="form-id-input"
       ></ods-text-editor>
     </div>
-
-    <div [formArrayName]="StatistikFieldsFormService.FIELD_MAPPINGS">
-      <div
-        *ngFor="let mappingControl of formService.mappings.controls; let i = index"
-        [formGroupName]="i"
-        class="flex w-full gap-2"
-      >
-        <ods-text-editor
-          class="flex-1"
-          formControlName="sourcePath"
-          label="Pfad des Datenfeldes"
-          placeholder="Tragen Sie hier den gesamten Pfad des Datenfeldes ein, das Sie auswerten möchten."
-          [attr.data-test-id]="'mapping-field-' + i"
-        ></ods-text-editor>
-        <ods-button
-          class="self-end"
-          variant="ghost"
-          size="fit"
-          destructive="true"
-          (clickEmitter)="formService.removeMapping(i)"
-          [dataTestId]="'remove-mapping-button-' + i"
-        >
-          <ods-delete-icon icon />
-        </ods-button>
-      </div>
-    </div>
+    <statistik-fields-form-mapping />
   </form>
-
   <ods-button text="Datenfeld hinzufügen" dataTestId="add-mapping-button" (clickEmitter)="formService.addMapping()">
     <ods-plus-icon icon class="fill-whitetext" />
   </ods-button>
diff --git a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.spec.ts b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.spec.ts
index a34eb6328a63ffd6a46dc22314cec534d98b829b..a0154fd3137315cfbfd12187d70f0ffb43635df5 100644
--- a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.spec.ts
+++ b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.spec.ts
@@ -1,19 +1,16 @@
 import { ADMIN_FORMSERVICE } from '@admin-client/shared';
 import { EMPTY_STRING } from '@alfa-client/tech-shared';
-import { dispatchEventFromFixture, existsAsHtmlElement, mock, Mock, MockEvent, mockGetValue } from '@alfa-client/test-utils';
+import { dispatchEventFromFixture, existsAsHtmlElement, mock, Mock, MockEvent } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
 import { TextEditorComponent } from '@ods/component';
 import { ButtonComponent, PlusIconComponent } from '@ods/system';
 import { MockComponent } from 'ng-mocks';
-import {
-  getDataTestIdAttributeOf,
-  getDataTestIdOf,
-  getDynamicDataTestIdAttributOf,
-} from '../../../../../tech-shared/test/data-test';
+import { getDataTestIdAttributeOf, getDataTestIdOf } from '../../../../../tech-shared/test/data-test';
 import { AdminCancelButtonComponent } from '../../../../shared/src/lib/admin-cancel-button/admin-cancel-button.component';
 import { AdminSaveButtonComponent } from '../../../../shared/src/lib/admin-save-button/admin-save-button.component';
 import { AdminStatistikFieldsFormComponent } from './admin-statistik-fields-form.component';
+import { AdminStatistikFieldsFormMappingComponent } from './statistik-fields-form-mapping/statistik-fields-form-mapping.component';
 import { StatistikFieldsFormService } from './statistik-fields.formservice';
 
 describe('AdminStatistikFieldsFormComponent', () => {
@@ -24,9 +21,6 @@ describe('AdminStatistikFieldsFormComponent', () => {
   const formIdInputTestId: string = getDataTestIdOf('form-id-input');
   const addMappingButton: string = getDataTestIdAttributeOf('add-mapping-button');
 
-  const mappingField: string = getDataTestIdOf('mapping-field-0');
-  const removeMappingButton: string = getDynamicDataTestIdAttributOf('remove-mapping-button-0');
-
   const formBuilder: FormBuilder = new FormBuilder();
 
   let formService: Mock<StatistikFieldsFormService>;
@@ -37,22 +31,9 @@ describe('AdminStatistikFieldsFormComponent', () => {
         [StatistikFieldsFormService.FIELD_FORM_ENGINE_NAME]: new FormControl(EMPTY_STRING),
         [StatistikFieldsFormService.FIELD_FORM_ID]: new FormControl(EMPTY_STRING),
       }),
-      [StatistikFieldsFormService.FIELD_MAPPINGS]: formBuilder.array([
-        new FormGroup({ sourcePath: new FormControl(EMPTY_STRING) }),
-      ]),
     });
 
-    formService = <any>{
-      ...mock(StatistikFieldsFormService),
-      form,
-      addMapping: jest.fn(),
-      removeMapping: jest.fn(),
-    };
-    mockGetValue(
-      formService,
-      StatistikFieldsFormService.FIELD_MAPPINGS,
-      form.controls[StatistikFieldsFormService.FIELD_MAPPINGS],
-    );
+    formService = <any>{ ...mock(StatistikFieldsFormService), form };
 
     await TestBed.configureTestingModule({
       declarations: [
@@ -62,6 +43,7 @@ describe('AdminStatistikFieldsFormComponent', () => {
         MockComponent(PlusIconComponent),
         MockComponent(AdminSaveButtonComponent),
         MockComponent(AdminCancelButtonComponent),
+        MockComponent(AdminStatistikFieldsFormMappingComponent),
       ],
       imports: [ReactiveFormsModule],
     })
@@ -126,21 +108,5 @@ describe('AdminStatistikFieldsFormComponent', () => {
         });
       });
     });
-
-    describe('mapping input', () => {
-      it('should exists', () => {
-        fixture.detectChanges();
-
-        existsAsHtmlElement(fixture, mappingField);
-      });
-    });
-
-    describe('remove mapping button', () => {
-      it('should call formservice', () => {
-        dispatchEventFromFixture(fixture, removeMappingButton, MockEvent.CLICK);
-
-        expect(formService.removeMapping).toHaveBeenCalledWith(0);
-      });
-    });
   });
 });
diff --git a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.ts b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.ts
index 91dfb6c42cd7c8880635dd394043e8d005df021c..0298196202e623a3d080468c792f3c1c800a8750 100644
--- a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.ts
+++ b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/admin-statistik-fields-form.component.ts
@@ -1,9 +1,9 @@
 import { ADMIN_FORMSERVICE, AdminCancelButtonComponent, AdminSaveButtonComponent, ROUTES } from '@admin-client/shared';
-import { CommonModule } from '@angular/common';
 import { Component, inject } from '@angular/core';
 import { ReactiveFormsModule } from '@angular/forms';
 import { TextEditorComponent } from '@ods/component';
 import { ButtonComponent, DeleteIconComponent, PlusIconComponent } from '@ods/system';
+import { AdminStatistikFieldsFormMappingComponent } from './statistik-fields-form-mapping/statistik-fields-form-mapping.component';
 import { StatistikFieldsFormService } from './statistik-fields.formservice';
 
 @Component({
@@ -11,7 +11,6 @@ import { StatistikFieldsFormService } from './statistik-fields.formservice';
   templateUrl: './admin-statistik-fields-form.component.html',
   standalone: true,
   imports: [
-    CommonModule,
     ButtonComponent,
     PlusIconComponent,
     ReactiveFormsModule,
@@ -19,6 +18,7 @@ import { StatistikFieldsFormService } from './statistik-fields.formservice';
     DeleteIconComponent,
     AdminSaveButtonComponent,
     AdminCancelButtonComponent,
+    AdminStatistikFieldsFormMappingComponent,
   ],
   providers: [{ provide: ADMIN_FORMSERVICE, useClass: StatistikFieldsFormService }],
 })
diff --git a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields-form-mapping/statistik-fields-form-mapping.component.html b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields-form-mapping/statistik-fields-form-mapping.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..2ce86b545b1039b795911cf172f154b9e2b97871
--- /dev/null
+++ b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields-form-mapping/statistik-fields-form-mapping.component.html
@@ -0,0 +1,27 @@
+<form [formGroup]="formService.form">
+  <div class="flex flex-col gap-4" [formArrayName]="StatistikFieldsFormService.FIELD_MAPPINGS">
+    <div
+      *ngFor="let mappingControl of formService.mappings.controls; let i = index"
+      [formGroupName]="i"
+      class="flex w-full gap-2"
+    >
+      <ods-text-editor
+        class="flex-1"
+        formControlName="sourcePath"
+        label="Pfad des Datenfeldes"
+        placeholder="Tragen Sie hier den gesamten Pfad des Datenfeldes ein, das Sie auswerten möchten."
+        [attr.data-test-id]="'mapping-field-' + i"
+      ></ods-text-editor>
+      <ods-button
+        class="self-end"
+        variant="ghost"
+        size="fit"
+        destructive="true"
+        (clickEmitter)="formService.removeMapping(i)"
+        [dataTestId]="'remove-mapping-button-' + i"
+      >
+        <ods-delete-icon icon />
+      </ods-button>
+    </div>
+  </div>
+</form>
diff --git a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields-form-mapping/statistik-fields-form-mapping.component.spec.ts b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields-form-mapping/statistik-fields-form-mapping.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..61cd006e429951cde3657be7688b30063cc2e6eb
--- /dev/null
+++ b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields-form-mapping/statistik-fields-form-mapping.component.spec.ts
@@ -0,0 +1,90 @@
+import { ADMIN_FORMSERVICE } from '@admin-client/shared';
+import { EMPTY_STRING } from '@alfa-client/tech-shared';
+import { dispatchEventFromFixture, existsAsHtmlElement, mock, Mock, MockEvent, mockGetValue } from '@alfa-client/test-utils';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
+import { TextEditorComponent } from '@ods/component';
+import { ButtonComponent, DeleteIconComponent } from '@ods/system';
+import { getDataTestIdOf, getDynamicDataTestIdAttributOf } from 'libs/tech-shared/test/data-test';
+import { MockComponent } from 'ng-mocks';
+import { StatistikFieldsFormService } from '../statistik-fields.formservice';
+import { AdminStatistikFieldsFormMappingComponent } from './statistik-fields-form-mapping.component';
+
+describe('AdminStatistikFieldsFormMappingComponent', () => {
+  let component: AdminStatistikFieldsFormMappingComponent;
+  let fixture: ComponentFixture<AdminStatistikFieldsFormMappingComponent>;
+
+  const mappingField: string = getDataTestIdOf('mapping-field-0');
+  const removeMappingButton: string = getDynamicDataTestIdAttributOf('remove-mapping-button-0');
+
+  const formBuilder: FormBuilder = new FormBuilder();
+
+  let formService: Mock<StatistikFieldsFormService>;
+
+  beforeEach(async () => {
+    const form: FormGroup = formBuilder.group({
+      [StatistikFieldsFormService.FIELD_MAPPINGS]: formBuilder.array([
+        new FormGroup({ sourcePath: new FormControl(EMPTY_STRING) }),
+      ]),
+    });
+
+    formService = <any>{
+      ...mock(StatistikFieldsFormService),
+      form,
+      addMapping: jest.fn(),
+      removeMapping: jest.fn(),
+    };
+
+    mockGetValue(
+      formService,
+      StatistikFieldsFormService.FIELD_MAPPINGS,
+      form.controls[StatistikFieldsFormService.FIELD_MAPPINGS],
+    );
+
+    await TestBed.configureTestingModule({
+      declarations: [
+        AdminStatistikFieldsFormMappingComponent,
+        MockComponent(TextEditorComponent),
+        MockComponent(ButtonComponent),
+        MockComponent(DeleteIconComponent),
+      ],
+      imports: [ReactiveFormsModule],
+      providers: [
+        {
+          provide: StatistikFieldsFormService,
+          useValue: formService,
+        },
+        {
+          provide: ADMIN_FORMSERVICE,
+          useValue: formService,
+        },
+      ],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(AdminStatistikFieldsFormMappingComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+
+  describe('template', () => {
+    describe('mapping input', () => {
+      it('should exists', () => {
+        fixture.detectChanges();
+
+        existsAsHtmlElement(fixture, mappingField);
+      });
+    });
+
+    describe('remove mapping button', () => {
+      it('should call formservice', () => {
+        dispatchEventFromFixture(fixture, removeMappingButton, MockEvent.CLICK);
+
+        expect(formService.removeMapping).toHaveBeenCalledWith(0);
+      });
+    });
+  });
+});
diff --git a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields-form-mapping/statistik-fields-form-mapping.component.ts b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields-form-mapping/statistik-fields-form-mapping.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..48bc3eaddd2a2fe51b983939dd8920b02e7f8dae
--- /dev/null
+++ b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields-form-mapping/statistik-fields-form-mapping.component.ts
@@ -0,0 +1,29 @@
+import { ADMIN_FORMSERVICE, AdminCancelButtonComponent, AdminSaveButtonComponent, ROUTES } from '@admin-client/shared';
+import { CommonModule } from '@angular/common';
+import { Component, inject } from '@angular/core';
+import { ReactiveFormsModule } from '@angular/forms';
+import { TextEditorComponent } from '@ods/component';
+import { ButtonComponent, DeleteIconComponent, PlusIconComponent } from '@ods/system';
+import { StatistikFieldsFormService } from '../statistik-fields.formservice';
+
+@Component({
+  selector: 'statistik-fields-form-mapping',
+  templateUrl: './statistik-fields-form-mapping.component.html',
+  standalone: true,
+  imports: [
+    CommonModule,
+    ButtonComponent,
+    PlusIconComponent,
+    ReactiveFormsModule,
+    TextEditorComponent,
+    DeleteIconComponent,
+    AdminSaveButtonComponent,
+    AdminCancelButtonComponent,
+  ],
+})
+export class AdminStatistikFieldsFormMappingComponent {
+  public readonly formService = <StatistikFieldsFormService>inject(ADMIN_FORMSERVICE);
+
+  public readonly StatistikFieldsFormService = StatistikFieldsFormService;
+  public readonly Routes = ROUTES;
+}
diff --git a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields.formservice.ts b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields.formservice.ts
index ebcfad677faae62c09e0a1736208caffc70455ce..1b746e12f42b44cc1261ce6de543380ea61d9ec4 100644
--- a/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields.formservice.ts
+++ b/alfa-client/libs/admin/statistik/src/lib/statistik-fields-form/statistik-fields.formservice.ts
@@ -25,7 +25,6 @@ export class StatistikFieldsFormService extends AbstractFormService<AggregationM
   }
 
   protected doSubmit(): Observable<StateResource<AggregationMappingResource>> {
-    console.info('FormValue: ', this.getFormValue());
     return this.service.create(this.getFormValue());
   }