diff --git a/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-list-container/collaboration-list-container.component.html b/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-list-container/collaboration-list-container.component.html
index 193c7bed96797ce45ed2985027e96e87b32d4c19..31b668b27ed3a68f5e9f477279a31d9da75140e7 100644
--- a/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-list-container/collaboration-list-container.component.html
+++ b/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-list-container/collaboration-list-container.component.html
@@ -2,7 +2,7 @@
   @for(collaboration of collaborations; track collaboration.zustaendigeStelle){
     @if(isOrganisationsEinheit(collaboration)){
       <alfa-organisations-einheit-list-item-container
-        [zustaendigeStelleResourceUri] = "collaboration.zustaendigeStelle"
+        [organisationsEinheitResourceUri]="collaboration.zustaendigeStelle"
         data-test-id="organisations-einheit-list-item"
       >
         <alfa-collaboration-request [collaboration]="collaboration"/>
@@ -10,7 +10,7 @@
     }
     @if(isExterneFachstelle(collaboration)){
       <alfa-externe-fachstelle-list-item-container
-        [zustaendigeStelleResourceUri] = "collaboration.zustaendigeStelle"
+        [externeFachstelleResourceUri] = "collaboration.zustaendigeStelle"
         data-test-id="externe-fachstelle-list-item"
       >
         <alfa-collaboration-request [collaboration]="collaboration"/>
diff --git a/alfa-client/libs/externe-fachstelle-shared/.eslintrc.json b/alfa-client/libs/externe-fachstelle-shared/.eslintrc.json
new file mode 100644
index 0000000000000000000000000000000000000000..b953e5d37d40148217ab14a01859ea0cb43d9ebc
--- /dev/null
+++ b/alfa-client/libs/externe-fachstelle-shared/.eslintrc.json
@@ -0,0 +1,33 @@
+{
+  "extends": ["../../.eslintrc.json"],
+  "ignorePatterns": ["!**/*"],
+  "overrides": [
+    {
+      "files": ["*.ts"],
+      "extends": ["plugin:@nx/angular", "plugin:@angular-eslint/template/process-inline-templates"],
+      "rules": {
+        "@angular-eslint/directive-selector": [
+          "error",
+          {
+            "type": "attribute",
+            "prefix": "lib",
+            "style": "camelCase"
+          }
+        ],
+        "@angular-eslint/component-selector": [
+          "error",
+          {
+            "type": "element",
+            "prefix": "lib",
+            "style": "kebab-case"
+          }
+        ]
+      }
+    },
+    {
+      "files": ["*.html"],
+      "extends": ["plugin:@nx/angular-template"],
+      "rules": {}
+    }
+  ]
+}
diff --git a/alfa-client/libs/externe-fachstelle-shared/README.md b/alfa-client/libs/externe-fachstelle-shared/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a4fdfbae7ccdb38ba3c32d6ce362939dcfea797c
--- /dev/null
+++ b/alfa-client/libs/externe-fachstelle-shared/README.md
@@ -0,0 +1,7 @@
+# externe-fachstelle-shared
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test externe-fachstelle-shared` to execute the unit tests.
diff --git a/alfa-client/libs/externe-fachstelle-shared/jest.config.ts b/alfa-client/libs/externe-fachstelle-shared/jest.config.ts
new file mode 100644
index 0000000000000000000000000000000000000000..321388b287187df0ed066b00efd6716431ab7a16
--- /dev/null
+++ b/alfa-client/libs/externe-fachstelle-shared/jest.config.ts
@@ -0,0 +1,21 @@
+export default {
+  displayName: 'externe-fachstelle-shared',
+  preset: '../../jest.preset.js',
+  setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
+  coverageDirectory: '../../coverage/libs/externe-fachstelle-shared',
+  transform: {
+    '^.+\\.(ts|mjs|js|html)$': [
+      'jest-preset-angular',
+      {
+        tsconfig: '<rootDir>/tsconfig.spec.json',
+        stringifyContentPathRegex: '\\.(html|svg)$',
+      },
+    ],
+  },
+  transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
+  snapshotSerializers: [
+    'jest-preset-angular/build/serializers/no-ng-attributes',
+    'jest-preset-angular/build/serializers/ng-snapshot',
+    'jest-preset-angular/build/serializers/html-comment',
+  ],
+};
diff --git a/alfa-client/libs/externe-fachstelle-shared/project.json b/alfa-client/libs/externe-fachstelle-shared/project.json
new file mode 100644
index 0000000000000000000000000000000000000000..e9172474937fac28e4ed17b094fbee5f24a024e1
--- /dev/null
+++ b/alfa-client/libs/externe-fachstelle-shared/project.json
@@ -0,0 +1,22 @@
+{
+  "name": "externe-fachstelle-shared",
+  "$schema": "../../node_modules/nx/schemas/project-schema.json",
+  "sourceRoot": "libs/externe-fachstelle-shared/src",
+  "prefix": "alfa",
+  "projectType": "library",
+  "tags": [],
+  "targets": {
+    "test": {
+      "executor": "@nx/jest:jest",
+      "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
+      "options": {
+        "tsConfig": "libs/externe-fachstelle-shared/tsconfig.spec.json",
+        "jestConfig": "libs/externe-fachstelle-shared/jest.config.ts"
+      }
+    },
+    "lint": {
+      "executor": "@nx/eslint:lint",
+      "outputs": ["{options.outputFile}"]
+    }
+  }
+}
diff --git a/alfa-client/libs/externe-fachstelle-shared/src/index.ts b/alfa-client/libs/externe-fachstelle-shared/src/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..df6d664a0acf84e56bffd755e96ac5803f518850
--- /dev/null
+++ b/alfa-client/libs/externe-fachstelle-shared/src/index.ts
@@ -0,0 +1 @@
+export * from './lib/externe-fachstelle-resource.service';
diff --git a/alfa-client/libs/zustaendige-stelle-shared/src/lib/zustaendige-stelle-resource.service.spec.ts b/alfa-client/libs/externe-fachstelle-shared/src/lib/externe-fachstelle-resource.service.spec.ts
similarity index 75%
rename from alfa-client/libs/zustaendige-stelle-shared/src/lib/zustaendige-stelle-resource.service.spec.ts
rename to alfa-client/libs/externe-fachstelle-shared/src/lib/externe-fachstelle-resource.service.spec.ts
index ee02181ff180148ba142ad1c8e7f2f2f364f616e..d2fa0f86a7dd1fb592c214d048caae584bc70a8b 100644
--- a/alfa-client/libs/zustaendige-stelle-shared/src/lib/zustaendige-stelle-resource.service.spec.ts
+++ b/alfa-client/libs/externe-fachstelle-shared/src/lib/externe-fachstelle-resource.service.spec.ts
@@ -3,10 +3,10 @@ import { ResourceListService } from '@alfa-client/tech-shared';
 import { mock, Mock } from '@alfa-client/test-utils';
 import { TestBed } from '@angular/core/testing';
 import { faker } from '@faker-js/faker/locale/de';
-import { ZustaendigeStelleResourceService } from './zustaendige-stelle-resource.service';
+import { ExterneFachstelleResourceService } from './externe-fachstelle-resource.service';
 
-describe('ZustaendigeStelleResourceService', () => {
-  let service: ZustaendigeStelleResourceService;
+describe('externeFachstelleResourceService', () => {
+  let service: ExterneFachstelleResourceService;
   let collaborationListResourceService: Mock<CollaborationListResourceService>;
 
   const resourceUri = faker.internet.url();
@@ -17,21 +17,21 @@ describe('ZustaendigeStelleResourceService', () => {
 
     TestBed.configureTestingModule({
       providers: [
-        ZustaendigeStelleResourceService,
+        ExterneFachstelleResourceService,
         { provide: CollaborationListResourceService, useValue: collaborationListResourceService },
       ],
     });
 
-    service = TestBed.inject(ZustaendigeStelleResourceService);
+    service = TestBed.inject(ExterneFachstelleResourceService);
   });
 
   it('should be created', () => {
     expect(service).toBeTruthy();
   });
 
-  describe('getLinkedResource', () => {
+  describe('getOrganisationsEinheit', () => {
     it('should call collaborationListService getLinkedResource', () => {
-      service.getLinkedResource(resourceUri);
+      service.getExterneFachstelle(resourceUri);
 
       expect(collaborationListResourceService.getLinkedResource).toHaveBeenCalledWith(resourceUri);
     });
diff --git a/alfa-client/libs/zustaendige-stelle-shared/src/lib/zustaendige-stelle-resource.service.ts b/alfa-client/libs/externe-fachstelle-shared/src/lib/externe-fachstelle-resource.service.ts
similarity index 59%
rename from alfa-client/libs/zustaendige-stelle-shared/src/lib/zustaendige-stelle-resource.service.ts
rename to alfa-client/libs/externe-fachstelle-shared/src/lib/externe-fachstelle-resource.service.ts
index 9c8527bd8fd387d751371f97eda7c6fbab0506ff..241728abe5f58dcf19622f256c4a1016ec7a2187 100644
--- a/alfa-client/libs/zustaendige-stelle-shared/src/lib/zustaendige-stelle-resource.service.ts
+++ b/alfa-client/libs/externe-fachstelle-shared/src/lib/externe-fachstelle-resource.service.ts
@@ -1,14 +1,14 @@
 import { CollaborationListResourceService } from '@alfa-client/collaboration-shared';
 import { StateResource } from '@alfa-client/tech-shared';
+import { ExterneFachstelleResource } from '@alfa-client/zustaendige-stelle-shared';
 import { inject, Injectable } from '@angular/core';
-import { Resource } from '@ngxp/rest';
 import { Observable } from 'rxjs';
 
 @Injectable()
-export class ZustaendigeStelleResourceService {
+export class ExterneFachstelleResourceService {
   private collaborationListResourceService = inject(CollaborationListResourceService);
 
-  getLinkedResource<F extends Resource>(resourceUri: string): Observable<StateResource<F>> {
-    return this.collaborationListResourceService.getLinkedResource<F>(resourceUri);
+  getExterneFachstelle(resourceUri: string): Observable<StateResource<ExterneFachstelleResource>> {
+    return this.collaborationListResourceService.getLinkedResource<ExterneFachstelleResource>(resourceUri);
   }
 }
diff --git a/alfa-client/libs/externe-fachstelle-shared/src/test-setup.ts b/alfa-client/libs/externe-fachstelle-shared/src/test-setup.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c408668266d2fec3a9803c0ec044bc163fb987fe
--- /dev/null
+++ b/alfa-client/libs/externe-fachstelle-shared/src/test-setup.ts
@@ -0,0 +1,12 @@
+import '@testing-library/jest-dom';
+import 'jest-preset-angular/setup-jest';
+
+import { getTestBed } from '@angular/core/testing';
+import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
+
+getTestBed().resetTestEnvironment();
+getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), {
+  teardown: { destroyAfterEach: false },
+  errorOnUnknownProperties: true,
+  errorOnUnknownElements: true,
+});
diff --git a/alfa-client/libs/externe-fachstelle-shared/tsconfig.json b/alfa-client/libs/externe-fachstelle-shared/tsconfig.json
new file mode 100644
index 0000000000000000000000000000000000000000..7cc6baf2f58ed5ccfba098131996f579979e9f18
--- /dev/null
+++ b/alfa-client/libs/externe-fachstelle-shared/tsconfig.json
@@ -0,0 +1,16 @@
+{
+  "extends": "../../tsconfig.base.json",
+  "files": [],
+  "include": [],
+  "references": [
+    {
+      "path": "./tsconfig.lib.json"
+    },
+    {
+      "path": "./tsconfig.spec.json"
+    }
+  ],
+  "compilerOptions": {
+    "target": "es2022"
+  }
+}
diff --git a/alfa-client/libs/externe-fachstelle-shared/tsconfig.lib.json b/alfa-client/libs/externe-fachstelle-shared/tsconfig.lib.json
new file mode 100644
index 0000000000000000000000000000000000000000..464f01e6b2b218c0f70e15ac25dd8580bdc38f6e
--- /dev/null
+++ b/alfa-client/libs/externe-fachstelle-shared/tsconfig.lib.json
@@ -0,0 +1,19 @@
+{
+  "extends": "./tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../../dist/out-tsc",
+    "target": "es2015",
+    "declaration": true,
+    "declarationMap": true,
+    "inlineSources": true,
+    "types": [],
+    "lib": ["dom", "es2018"]
+  },
+  "angularCompilerOptions": {
+    "skipTemplateCodegen": true,
+    "strictMetadataEmit": true,
+    "enableResourceInlining": true
+  },
+  "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
+  "include": ["**/*.ts"]
+}
diff --git a/alfa-client/libs/externe-fachstelle-shared/tsconfig.spec.json b/alfa-client/libs/externe-fachstelle-shared/tsconfig.spec.json
new file mode 100644
index 0000000000000000000000000000000000000000..3a690070a7f5e48080dd36522d6a0db384d940aa
--- /dev/null
+++ b/alfa-client/libs/externe-fachstelle-shared/tsconfig.spec.json
@@ -0,0 +1,12 @@
+{
+  "extends": "./tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../../dist/out-tsc",
+    "module": "commonjs",
+    "types": ["jest", "node"],
+    "target": "ES2022",
+    "useDefineForClassFields": false
+  },
+  "files": ["src/test-setup.ts"],
+  "include": ["**/*.spec.ts", "**/*.d.ts", "jest.config.ts"]
+}
diff --git a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.html b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.html
index 8a4fd49ad5a58a9a4011a2f65865a5a2ea203a7d..692d4c37bf16026abb0e8348d4f59bcafdeb7f29 100644
--- a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.html
+++ b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.html
@@ -1,7 +1,3 @@
-<ozgcloud-spinner [stateResource]="externeFachstelleStateResource">
-  @if(externeFachstelleStateResource.resource){
-    <alfa-externe-fachstelle-list-item [externeFachstelle]="externeFachstelleStateResource.resource">
-      <ng-content />
-    </alfa-externe-fachstelle-list-item>
-  }
-</ozgcloud-spinner>
+<alfa-externe-fachstelle-list-item [externeFachstelleStateResource]="externeFachstelleStateResource$ | async">
+  <ng-content />
+</alfa-externe-fachstelle-list-item>
\ No newline at end of file
diff --git a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.spec.ts b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.spec.ts
index 8d7cdd1e657ec1233e2e5466bb860c92ceaaa690..b3114d31bc3eaaac0bffed0d9cf0d737e9c18d96 100644
--- a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.spec.ts
+++ b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.spec.ts
@@ -1,8 +1,8 @@
-import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
 
+import { ExterneFachstelleResourceService } from '@alfa-client/externe-fachstelle-shared';
 import { createStateResource } from '@alfa-client/tech-shared';
 import { mock, Mock } from '@alfa-client/test-utils';
-import { ZustaendigeStelleResourceService } from 'libs/zustaendige-stelle-shared/src/lib/zustaendige-stelle-resource.service';
 import { createExterneFachstelle } from 'libs/zustaendige-stelle-shared/test/externe-fachstelle';
 import { of } from 'rxjs';
 import { ExterneFachstelleListItemContainerComponent } from './externe-fachstelle-list-item-container.component';
@@ -11,21 +11,21 @@ describe('ExterneFachstelleListItemContainerComponent', () => {
   let component: ExterneFachstelleListItemContainerComponent;
   let fixture: ComponentFixture<ExterneFachstelleListItemContainerComponent>;
 
-  let zustaendigeStelleResourceService: Mock<ZustaendigeStelleResourceService>;
+  let externeFachstelleResourceService: Mock<ExterneFachstelleResourceService>;
 
   const externeFachstelle = createExterneFachstelle();
   const externeFachstelleStateResource = createStateResource(externeFachstelle);
 
   beforeEach(async () => {
-    zustaendigeStelleResourceService = {
-      ...mock(ZustaendigeStelleResourceService),
-      getLinkedResource: jest.fn().mockReturnValue(of(externeFachstelleStateResource)),
+    externeFachstelleResourceService = {
+      ...mock(ExterneFachstelleResourceService),
+      getExterneFachstelle: jest.fn().mockReturnValue(of(externeFachstelleStateResource)),
     };
 
     await TestBed.configureTestingModule({ imports: [ExterneFachstelleListItemContainerComponent] })
       .overrideComponent(ExterneFachstelleListItemContainerComponent, {
         set: {
-          providers: [{ provide: ZustaendigeStelleResourceService, useValue: zustaendigeStelleResourceService }],
+          providers: [{ provide: ExterneFachstelleResourceService, useValue: externeFachstelleResourceService }],
         },
       })
       .compileComponents();
@@ -40,27 +40,10 @@ describe('ExterneFachstelleListItemContainerComponent', () => {
   });
 
   describe('ngOnInit', () => {
-    it('should call getOrganisationsEinheit', () => {
-      const getOrganisationsEinheitSpy = jest.spyOn(component, 'getExterneFachstelle');
-
+    it('should call externeFachstelleResourceService getExterneFachstelle Resource', () => {
       component.ngOnInit();
 
-      expect(getOrganisationsEinheitSpy).toHaveBeenCalled;
+      expect(externeFachstelleResourceService.getExterneFachstelle).toHaveBeenCalled();
     });
   });
-
-  describe('getExterneFachstelle', () => {
-    it('should call zustaendigeStelleResourceService getLinked Resource', () => {
-      component.ngOnInit();
-
-      expect(zustaendigeStelleResourceService.getLinkedResource).toHaveBeenCalled();
-    });
-
-    it('should get externeFachstelle', fakeAsync(() => {
-      component.ngOnInit();
-      tick();
-
-      expect(component.externeFachstelleStateResource).toBe(externeFachstelleStateResource);
-    }));
-  });
 });
diff --git a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.ts b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.ts
index fa0aa73aa3397c03754cbba202621207faf0506c..f902b18cc6d5f50f9d636066ae0f56ce63e46c24 100644
--- a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.ts
+++ b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item-container.component.ts
@@ -1,38 +1,31 @@
+import { ExterneFachstelleResourceService } from '@alfa-client/externe-fachstelle-shared';
 import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
-import { UiModule } from '@alfa-client/ui';
-import { ExterneFachstelleResource, ZustaendigeStelleResourceService } from '@alfa-client/zustaendige-stelle-shared';
+import { ExterneFachstelleResource } from '@alfa-client/zustaendige-stelle-shared';
+import { CommonModule } from '@angular/common';
 import { Component, inject, Input, OnInit } from '@angular/core';
 import { ResourceUri } from '@ngxp/rest';
-import { isNil } from 'lodash-es';
+import { Observable, of } from 'rxjs';
 import { ExterneFachstelleListItemComponent } from './externe-fachstelle-list-item/externe-fachstelle-list-item.component';
 
 @Component({
   selector: 'alfa-externe-fachstelle-list-item-container',
   standalone: true,
-  imports: [ExterneFachstelleListItemComponent, UiModule],
-  providers: [ZustaendigeStelleResourceService],
+  imports: [CommonModule, ExterneFachstelleListItemComponent],
+  providers: [ExterneFachstelleResourceService],
   templateUrl: './externe-fachstelle-list-item-container.component.html',
   styleUrl: './externe-fachstelle-list-item-container.component.scss',
 })
 export class ExterneFachstelleListItemContainerComponent implements OnInit {
-  private zustaendigeStelleResourceService: ZustaendigeStelleResourceService = inject(ZustaendigeStelleResourceService);
+  private externeFachstelleResourceService: ExterneFachstelleResourceService = inject(ExterneFachstelleResourceService);
 
-  @Input() zustaendigeStelleResourceUri: ResourceUri;
+  @Input() externeFachstelleResourceUri: ResourceUri;
 
-  externeFachstelleStateResource: StateResource<ExterneFachstelleResource> = createEmptyStateResource();
+  externeFachstelleStateResource$: Observable<StateResource<ExterneFachstelleResource>> =
+    of(createEmptyStateResource<ExterneFachstelleResource>());
 
   ngOnInit() {
-    this.getExterneFachstelle();
+    this.externeFachstelleStateResource$ = this.externeFachstelleResourceService.getExterneFachstelle(
+      this.externeFachstelleResourceUri,
+    );
   }
-
-  getExterneFachstelle() {
-    this.zustaendigeStelleResourceService
-      .getLinkedResource<ExterneFachstelleResource>(this.zustaendigeStelleResourceUri)
-      .subscribe((stateResource) => {
-        this.externeFachstelleStateResource = stateResource;
-      });
-  }
-
-  protected readonly isNaN = isNaN;
-  protected readonly isNil = isNil;
 }
diff --git a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.html b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.html
index 42b74616c6e656c638a976cc680da4c0422175e3..dccd1f674994ac6f110c1a93c53fcba67ee9ab72 100644
--- a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.html
+++ b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.html
@@ -1,16 +1,20 @@
-<div class="border border-grayborder bg-background-100 p-4 shadow shadow-grayborder">
-  <div class="flex flex-1 gap-6">
-    <div class="flex flex-1 gap-3">
-      <ods-external-unit-icon />
-      <div class="flex flex-1 flex-col text-base">
-        <p class="text-primary">Externe Fachstelle</p>
-        <p class="text-text font-bold">{{ externeFachstelle.name }}</p>
+<ozgcloud-spinner [stateResource]="externeFachstelleStateResource">
+  @if (externeFachstelleStateResource.resource; as resource) {
+    <div class="border border-grayborder bg-background-100 p-4 shadow shadow-grayborder">
+      <div class="flex flex-1 gap-6">
+        <div class="flex flex-1 gap-3">
+          <ods-external-unit-icon />
+          <div class="flex flex-1 flex-col text-base">
+            <p class="text-primary">Externe Fachstelle</p>
+            <p class="text-text font-bold">{{ resource.name }}</p>
+          </div>
+        </div>
+        <div class="flex-1">
+          <div class="block">{{ resource.anschrift }}</div>
+          <div class="block">Email: {{ resource.email }}</div>
+        </div>
       </div>
+      <ng-content />
     </div>
-    <div class="flex-1">
-      <div class="block">{{ externeFachstelle.anschrift }}</div>
-      <div class="block">Email: {{ externeFachstelle.email }}</div>
-    </div>
-  </div>
-  <ng-content/>
-</div>
+  }
+</ozgcloud-spinner>
diff --git a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.spec.ts b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.spec.ts
index b9d04c2a4947c3bf9df0b2de18081fbebacb17a1..5d78cea53d3030937c85d2c66e7a065243ca9fda 100644
--- a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.spec.ts
+++ b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.spec.ts
@@ -1,5 +1,6 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 
+import { createStateResource, StateResource } from '@alfa-client/tech-shared';
 import { ExterneFachstelleResource } from '@alfa-client/zustaendige-stelle-shared';
 import { toResource } from 'libs/tech-shared/test/resource';
 import { createExterneFachstelle } from 'libs/zustaendige-stelle-shared/test/externe-fachstelle';
@@ -10,6 +11,7 @@ describe('ExterneFachstelleListItemComponent', () => {
   let fixture: ComponentFixture<ExterneFachstelleListItemComponent>;
 
   const externeFachstelle: ExterneFachstelleResource = toResource(createExterneFachstelle());
+  const externeFachstelleState: StateResource<ExterneFachstelleResource> = createStateResource(externeFachstelle);
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
@@ -18,7 +20,7 @@ describe('ExterneFachstelleListItemComponent', () => {
 
     fixture = TestBed.createComponent(ExterneFachstelleListItemComponent);
     component = fixture.componentInstance;
-    component.externeFachstelle = externeFachstelle;
+    component.externeFachstelleStateResource = externeFachstelleState;
     fixture.detectChanges();
   });
 
diff --git a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.ts b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.ts
index c3be9086a4895d5cb36dacc4758ee7693ef85aa6..dfa121e96837efeb14af42d139bfb12ee7b47bc3 100644
--- a/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.ts
+++ b/alfa-client/libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component.ts
@@ -1,3 +1,5 @@
+import { StateResource } from '@alfa-client/tech-shared';
+import { UiModule } from '@alfa-client/ui';
 import { ExterneFachstelleResource } from '@alfa-client/zustaendige-stelle-shared';
 import { Component, Input } from '@angular/core';
 import { ExternalUnitIconComponent, PublicAdministrationIconComponent } from '@ods/system';
@@ -5,10 +7,10 @@ import { ExternalUnitIconComponent, PublicAdministrationIconComponent } from '@o
 @Component({
   selector: 'alfa-externe-fachstelle-list-item',
   standalone: true,
-  imports: [PublicAdministrationIconComponent, ExternalUnitIconComponent],
+  imports: [PublicAdministrationIconComponent, ExternalUnitIconComponent, UiModule],
   templateUrl: './externe-fachstelle-list-item.component.html',
   styleUrl: './externe-fachstelle-list-item.component.scss',
 })
 export class ExterneFachstelleListItemComponent {
-  @Input() externeFachstelle: ExterneFachstelleResource;
+  @Input() externeFachstelleStateResource: StateResource<ExterneFachstelleResource>;
 }
diff --git a/alfa-client/libs/externe-fachstelle/src/test-setup.ts b/alfa-client/libs/externe-fachstelle/src/test-setup.ts
index 03a84127dca1b63fa485fc51d162cec76921b596..c408668266d2fec3a9803c0ec044bc163fb987fe 100644
--- a/alfa-client/libs/externe-fachstelle/src/test-setup.ts
+++ b/alfa-client/libs/externe-fachstelle/src/test-setup.ts
@@ -1,26 +1,3 @@
-/*
- * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
 import '@testing-library/jest-dom';
 import 'jest-preset-angular/setup-jest';
 
diff --git a/alfa-client/libs/organisations-einheit-shared/.eslintrc.json b/alfa-client/libs/organisations-einheit-shared/.eslintrc.json
new file mode 100644
index 0000000000000000000000000000000000000000..b953e5d37d40148217ab14a01859ea0cb43d9ebc
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/.eslintrc.json
@@ -0,0 +1,33 @@
+{
+  "extends": ["../../.eslintrc.json"],
+  "ignorePatterns": ["!**/*"],
+  "overrides": [
+    {
+      "files": ["*.ts"],
+      "extends": ["plugin:@nx/angular", "plugin:@angular-eslint/template/process-inline-templates"],
+      "rules": {
+        "@angular-eslint/directive-selector": [
+          "error",
+          {
+            "type": "attribute",
+            "prefix": "lib",
+            "style": "camelCase"
+          }
+        ],
+        "@angular-eslint/component-selector": [
+          "error",
+          {
+            "type": "element",
+            "prefix": "lib",
+            "style": "kebab-case"
+          }
+        ]
+      }
+    },
+    {
+      "files": ["*.html"],
+      "extends": ["plugin:@nx/angular-template"],
+      "rules": {}
+    }
+  ]
+}
diff --git a/alfa-client/libs/organisations-einheit-shared/README.md b/alfa-client/libs/organisations-einheit-shared/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..547b880702166961734aa02432e2c0c99a585d5f
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/README.md
@@ -0,0 +1,7 @@
+# organisations-einheit-shared
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test organisations-einheit-shared` to execute the unit tests.
diff --git a/alfa-client/libs/organisations-einheit-shared/jest.config.ts b/alfa-client/libs/organisations-einheit-shared/jest.config.ts
new file mode 100644
index 0000000000000000000000000000000000000000..02c5e876cde8bafdb85a41cce363cd62343481fb
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/jest.config.ts
@@ -0,0 +1,21 @@
+export default {
+  displayName: 'organisations-einheit-shared',
+  preset: '../../jest.preset.js',
+  setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
+  coverageDirectory: '../../coverage/libs/organisations-einheit-shared',
+  transform: {
+    '^.+\\.(ts|mjs|js|html)$': [
+      'jest-preset-angular',
+      {
+        tsconfig: '<rootDir>/tsconfig.spec.json',
+        stringifyContentPathRegex: '\\.(html|svg)$',
+      },
+    ],
+  },
+  transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
+  snapshotSerializers: [
+    'jest-preset-angular/build/serializers/no-ng-attributes',
+    'jest-preset-angular/build/serializers/ng-snapshot',
+    'jest-preset-angular/build/serializers/html-comment',
+  ],
+};
diff --git a/alfa-client/libs/organisations-einheit-shared/project.json b/alfa-client/libs/organisations-einheit-shared/project.json
new file mode 100644
index 0000000000000000000000000000000000000000..e90e8c4db621944785370a8cdd0300a56afe45f2
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/project.json
@@ -0,0 +1,22 @@
+{
+  "name": "organisations-einheit-shared",
+  "$schema": "../../node_modules/nx/schemas/project-schema.json",
+  "sourceRoot": "libs/organisations-einheit-shared/src",
+  "prefix": "alfa",
+  "projectType": "library",
+  "tags": [],
+  "targets": {
+    "test": {
+      "executor": "@nx/jest:jest",
+      "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
+      "options": {
+        "tsConfig": "libs/organisations-einheit-shared/tsconfig.spec.json",
+        "jestConfig": "libs/organisations-einheit-shared/jest.config.ts"
+      }
+    },
+    "lint": {
+      "executor": "@nx/eslint:lint",
+      "outputs": ["{options.outputFile}"]
+    }
+  }
+}
diff --git a/alfa-client/libs/organisations-einheit-shared/src/index.ts b/alfa-client/libs/organisations-einheit-shared/src/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e4eb22d93c7255a283414670958912bc7022f28d
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/src/index.ts
@@ -0,0 +1 @@
+export * from './lib/organisations-einheit-resource.service';
diff --git a/alfa-client/libs/organisations-einheit-shared/src/lib/organisations-einheit-resource.service.spec.ts b/alfa-client/libs/organisations-einheit-shared/src/lib/organisations-einheit-resource.service.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..35b493a26600d5421be996df95e66e967ae8ce66
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/src/lib/organisations-einheit-resource.service.spec.ts
@@ -0,0 +1,39 @@
+import { CollaborationListResourceService } from '@alfa-client/collaboration-shared';
+import { ResourceListService } from '@alfa-client/tech-shared';
+import { mock, Mock } from '@alfa-client/test-utils';
+import { TestBed } from '@angular/core/testing';
+import { faker } from '@faker-js/faker/locale/de';
+import { OrganisationsEinheitResourceService } from './organisations-einheit-resource.service';
+
+describe('externeFachstelleResourceService', () => {
+  let service: OrganisationsEinheitResourceService;
+  let collaborationListResourceService: Mock<CollaborationListResourceService>;
+
+  const resourceUri = faker.internet.url();
+
+  beforeEach(() => {
+    // todo: repariere mock funktion zum mocken extendeter Klassen? Dann kann hier auch CollaborationListResourceService verwendet werden
+    collaborationListResourceService = mock(ResourceListService);
+
+    TestBed.configureTestingModule({
+      providers: [
+        OrganisationsEinheitResourceService,
+        { provide: CollaborationListResourceService, useValue: collaborationListResourceService },
+      ],
+    });
+
+    service = TestBed.inject(OrganisationsEinheitResourceService);
+  });
+
+  it('should be created', () => {
+    expect(service).toBeTruthy();
+  });
+
+  describe('getOrganisationsEinheit', () => {
+    it('should call collaborationListService getLinkedResource', () => {
+      service.getOrganisationsEinheit(resourceUri);
+
+      expect(collaborationListResourceService.getLinkedResource).toHaveBeenCalledWith(resourceUri);
+    });
+  });
+});
diff --git a/alfa-client/libs/organisations-einheit-shared/src/lib/organisations-einheit-resource.service.ts b/alfa-client/libs/organisations-einheit-shared/src/lib/organisations-einheit-resource.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6ce86469eabfbe4bd953b5c0e69dd6a887cdf851
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/src/lib/organisations-einheit-resource.service.ts
@@ -0,0 +1,14 @@
+import { CollaborationListResourceService } from '@alfa-client/collaboration-shared';
+import { StateResource } from '@alfa-client/tech-shared';
+import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
+import { inject, Injectable } from '@angular/core';
+import { Observable } from 'rxjs';
+
+@Injectable()
+export class OrganisationsEinheitResourceService {
+  private collaborationListResourceService = inject(CollaborationListResourceService);
+
+  getOrganisationsEinheit(resourceUri: string): Observable<StateResource<OrganisationsEinheitResource>> {
+    return this.collaborationListResourceService.getLinkedResource<OrganisationsEinheitResource>(resourceUri);
+  }
+}
diff --git a/alfa-client/libs/organisations-einheit-shared/src/test-setup.ts b/alfa-client/libs/organisations-einheit-shared/src/test-setup.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c408668266d2fec3a9803c0ec044bc163fb987fe
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/src/test-setup.ts
@@ -0,0 +1,12 @@
+import '@testing-library/jest-dom';
+import 'jest-preset-angular/setup-jest';
+
+import { getTestBed } from '@angular/core/testing';
+import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
+
+getTestBed().resetTestEnvironment();
+getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), {
+  teardown: { destroyAfterEach: false },
+  errorOnUnknownProperties: true,
+  errorOnUnknownElements: true,
+});
diff --git a/alfa-client/libs/organisations-einheit-shared/tsconfig.json b/alfa-client/libs/organisations-einheit-shared/tsconfig.json
new file mode 100644
index 0000000000000000000000000000000000000000..7cc6baf2f58ed5ccfba098131996f579979e9f18
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/tsconfig.json
@@ -0,0 +1,16 @@
+{
+  "extends": "../../tsconfig.base.json",
+  "files": [],
+  "include": [],
+  "references": [
+    {
+      "path": "./tsconfig.lib.json"
+    },
+    {
+      "path": "./tsconfig.spec.json"
+    }
+  ],
+  "compilerOptions": {
+    "target": "es2022"
+  }
+}
diff --git a/alfa-client/libs/organisations-einheit-shared/tsconfig.lib.json b/alfa-client/libs/organisations-einheit-shared/tsconfig.lib.json
new file mode 100644
index 0000000000000000000000000000000000000000..464f01e6b2b218c0f70e15ac25dd8580bdc38f6e
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/tsconfig.lib.json
@@ -0,0 +1,19 @@
+{
+  "extends": "./tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../../dist/out-tsc",
+    "target": "es2015",
+    "declaration": true,
+    "declarationMap": true,
+    "inlineSources": true,
+    "types": [],
+    "lib": ["dom", "es2018"]
+  },
+  "angularCompilerOptions": {
+    "skipTemplateCodegen": true,
+    "strictMetadataEmit": true,
+    "enableResourceInlining": true
+  },
+  "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
+  "include": ["**/*.ts"]
+}
diff --git a/alfa-client/libs/organisations-einheit-shared/tsconfig.spec.json b/alfa-client/libs/organisations-einheit-shared/tsconfig.spec.json
new file mode 100644
index 0000000000000000000000000000000000000000..3a690070a7f5e48080dd36522d6a0db384d940aa
--- /dev/null
+++ b/alfa-client/libs/organisations-einheit-shared/tsconfig.spec.json
@@ -0,0 +1,12 @@
+{
+  "extends": "./tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../../dist/out-tsc",
+    "module": "commonjs",
+    "types": ["jest", "node"],
+    "target": "ES2022",
+    "useDefineForClassFields": false
+  },
+  "files": ["src/test-setup.ts"],
+  "include": ["**/*.spec.ts", "**/*.d.ts", "jest.config.ts"]
+}
diff --git a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.html b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.html
index 8baad311c25b61c4fc462ba5dc05ba3326bd870a..fb9f5afd36f5f354c9e3dbee3b558431ef598c00 100644
--- a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.html
+++ b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.html
@@ -1,7 +1,3 @@
-<ozgcloud-spinner [stateResource]="organisationsEinheitStateResource">
-  @if(organisationsEinheitStateResource.resource){
-    <alfa-organisations-einheit-list-item [organisationsEinheit]="organisationsEinheitStateResource.resource">
-      <ng-content />
-    </alfa-organisations-einheit-list-item>
-  }
-</ozgcloud-spinner>
\ No newline at end of file
+<alfa-organisations-einheit-list-item [organisationsEinheitStateResource]="organisationsEinheitStateResource$ | async">
+  <ng-content />
+</alfa-organisations-einheit-list-item>
diff --git a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.spec.ts b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.spec.ts
index 299f0da625eb1d9a59c10a186ba3b62c47d4aeaf..d54a577a0369f42f139a0d9a5aedc7cd7f44cec9 100644
--- a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.spec.ts
+++ b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.spec.ts
@@ -1,9 +1,9 @@
+import { OrganisationsEinheitResourceService } from '@alfa-client/organisations-einheit-shared';
 import { createStateResource, StateResource } from '@alfa-client/tech-shared';
 import { mock, Mock } from '@alfa-client/test-utils';
 import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
-import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { toResource } from 'libs/tech-shared/test/resource';
-import { ZustaendigeStelleResourceService } from 'libs/zustaendige-stelle-shared/src/lib/zustaendige-stelle-resource.service';
 import { createOrganisationsEinheit } from 'libs/zustaendige-stelle-shared/test/organisations-einheit';
 import { of } from 'rxjs';
 import { OrganisationsEinheitListItemContainerComponent } from './organisations-einheit-list-item-container.component';
@@ -12,22 +12,22 @@ describe('OrganisationsEinheitListItemContainerComponent', () => {
   let component: OrganisationsEinheitListItemContainerComponent;
   let fixture: ComponentFixture<OrganisationsEinheitListItemContainerComponent>;
 
-  let zustaendigeStelleResourceService: Mock<ZustaendigeStelleResourceService>;
+  let organisationsEinheitResourceService: Mock<OrganisationsEinheitResourceService>;
 
   const organisationsEinheit: OrganisationsEinheitResource = toResource(createOrganisationsEinheit());
   const organisationsEInheitStateResource: StateResource<OrganisationsEinheitResource> =
     createStateResource(organisationsEinheit);
 
   beforeEach(async () => {
-    zustaendigeStelleResourceService = {
-      ...mock(ZustaendigeStelleResourceService),
-      getLinkedResource: jest.fn().mockReturnValue(of(organisationsEInheitStateResource)),
+    organisationsEinheitResourceService = {
+      ...mock(OrganisationsEinheitResourceService),
+      getOrganisationsEinheit: jest.fn().mockReturnValue(of(organisationsEInheitStateResource)),
     };
 
     await TestBed.configureTestingModule({ imports: [OrganisationsEinheitListItemContainerComponent] })
       .overrideComponent(OrganisationsEinheitListItemContainerComponent, {
         set: {
-          providers: [{ provide: ZustaendigeStelleResourceService, useValue: zustaendigeStelleResourceService }],
+          providers: [{ provide: OrganisationsEinheitResourceService, useValue: organisationsEinheitResourceService }],
         },
       })
       .compileComponents();
@@ -42,27 +42,10 @@ describe('OrganisationsEinheitListItemContainerComponent', () => {
   });
 
   describe('ngOnInit', () => {
-    it('should call getOrganisationsEinheit', () => {
-      const getOrganisationsEinheitSpy = jest.spyOn(component, 'getOrganisationsEinheit');
-
+    it('should call organisationsEinheitResourceService getOrganisationsEinheit Resource', () => {
       component.ngOnInit();
 
-      expect(getOrganisationsEinheitSpy).toHaveBeenCalled;
+      expect(organisationsEinheitResourceService.getOrganisationsEinheit).toHaveBeenCalled();
     });
   });
-
-  describe('getOrganisationsEinheit', () => {
-    it('should call zustaendigeStelleResourceService getLinked Resource', () => {
-      component.ngOnInit();
-
-      expect(zustaendigeStelleResourceService.getLinkedResource).toHaveBeenCalled();
-    });
-
-    it('should get organisationEinheit', fakeAsync(() => {
-      component.ngOnInit();
-      tick();
-
-      expect(component.organisationsEinheitStateResource.resource).toBe(organisationsEinheit);
-    }));
-  });
 });
diff --git a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.ts b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.ts
index ec901cffd70301f40e54d25630140868a6fc6437..9ed50c0dd72ebd711da566e9af3f41d83c9d8597 100644
--- a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.ts
+++ b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item-container.component.ts
@@ -1,36 +1,31 @@
-import { StateResource } from '@alfa-client/tech-shared';
-import { UiModule } from '@alfa-client/ui';
-import { OrganisationsEinheitResource, ZustaendigeStelleResourceService } from '@alfa-client/zustaendige-stelle-shared';
+import { OrganisationsEinheitResourceService } from '@alfa-client/organisations-einheit-shared';
+import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
+import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
 import { CommonModule } from '@angular/common';
 import { Component, inject, Input, OnInit } from '@angular/core';
 import { ResourceUri } from '@ngxp/rest';
-import { ExterneFachstelleListItemComponent } from 'libs/externe-fachstelle/src/lib/externe-fachstelle-list-item-container/externe-fachstelle-list-item/externe-fachstelle-list-item.component';
+import { Observable, of } from 'rxjs';
 import { OrganisationsEinheitListItemComponent } from './organisations-einheit-list-item/organisations-einheit-list-item.component';
 
 @Component({
   selector: 'alfa-organisations-einheit-list-item-container',
   standalone: true,
-  imports: [CommonModule, OrganisationsEinheitListItemComponent, ExterneFachstelleListItemComponent, UiModule],
-  providers: [ZustaendigeStelleResourceService],
+  imports: [CommonModule, OrganisationsEinheitListItemComponent],
+  providers: [OrganisationsEinheitResourceService],
   templateUrl: './organisations-einheit-list-item-container.component.html',
   styleUrl: './organisations-einheit-list-item-container.component.scss',
 })
 export class OrganisationsEinheitListItemContainerComponent implements OnInit {
-  private zustaendigeStelleResourceService: ZustaendigeStelleResourceService = inject(ZustaendigeStelleResourceService);
+  private organisationsEinheitResourceService: OrganisationsEinheitResourceService = inject(OrganisationsEinheitResourceService);
 
-  @Input() zustaendigeStelleResourceUri: ResourceUri;
+  @Input() organisationsEinheitResourceUri: ResourceUri;
 
-  organisationsEinheitStateResource: StateResource<OrganisationsEinheitResource>;
+  organisationsEinheitStateResource$: Observable<StateResource<OrganisationsEinheitResource>> =
+    of(createEmptyStateResource<OrganisationsEinheitResource>());
 
   ngOnInit() {
-    this.getOrganisationsEinheit();
-  }
-
-  getOrganisationsEinheit() {
-    this.zustaendigeStelleResourceService
-      .getLinkedResource<OrganisationsEinheitResource>(this.zustaendigeStelleResourceUri)
-      .subscribe((stateResource) => {
-        this.organisationsEinheitStateResource = stateResource;
-      });
+    this.organisationsEinheitStateResource$ = this.organisationsEinheitResourceService.getOrganisationsEinheit(
+      this.organisationsEinheitResourceUri,
+    );
   }
 }
diff --git a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.html b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.html
index badba55542735895c351ce80b554fe2253ecfd8c..e90fbe36c0802141c9ef87719df5fa2add8add61 100644
--- a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.html
+++ b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.html
@@ -1,15 +1,19 @@
-<div class="border border-grayborder bg-background-100 p-4 shadow shadow-grayborder">
-  <div class="flex flex-1 gap-6">
-    <div class="flex flex-1 gap-3">
-      <ods-public-administration-icon />
-      <div class="flex flex-1 flex-col text-base">
-        <p class="text-primary">Organisationseinheit</p>
-        <p class="text-text font-bold">{{ organisationsEinheit.name }}</p>
+<ozgcloud-spinner [stateResource]="organisationsEinheitStateResource">
+  @if (organisationsEinheitStateResource.resource; as resource) {
+    <div class="border border-grayborder bg-background-100 p-4 shadow shadow-grayborder">
+      <div class="flex flex-1 gap-6">
+        <div class="flex flex-1 gap-3">
+          <ods-public-administration-icon />
+          <div class="flex flex-1 flex-col text-base">
+            <p class="text-primary">Organisationseinheit</p>
+            <p class="text-text font-bold">{{ resource.name }}</p>
+          </div>
+        </div>
+        <div class="flex-1">
+          <div class="block">{{ formatAnschrift(resource.anschrift) }}</div>
+        </div>
       </div>
+      <ng-content />
     </div>
-    <div class="flex-1">
-      <div class="block">{{ formatAnschrift(organisationsEinheit.anschrift) }}</div>
-    </div>
-  </div>
-  <ng-content/>
-</div>
+  }
+</ozgcloud-spinner>
\ No newline at end of file
diff --git a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.spec.ts b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.spec.ts
index ada0466b2bebee3cae9f26c4cebaa27fae32be97..5982e818f36bd67e592538be278768d22634d2a8 100644
--- a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.spec.ts
+++ b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.spec.ts
@@ -1,5 +1,8 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 
+import { createStateResource, StateResource } from '@alfa-client/tech-shared';
+import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
+import { toResource } from 'libs/tech-shared/test/resource';
 import { createOrganisationsEinheit } from 'libs/zustaendige-stelle-shared/test/organisations-einheit';
 import { OrganisationsEinheitListItemComponent } from './organisations-einheit-list-item.component';
 
@@ -7,7 +10,9 @@ describe('OrganisationsEinheitListItemComponent', () => {
   let component: OrganisationsEinheitListItemComponent;
   let fixture: ComponentFixture<OrganisationsEinheitListItemComponent>;
 
-  const organisationsEinheit = createOrganisationsEinheit();
+  const organisationsEinheitResource: OrganisationsEinheitResource = toResource(createOrganisationsEinheit());
+  const organisationsEinheitStateResource: StateResource<OrganisationsEinheitResource> =
+    createStateResource(organisationsEinheitResource);
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
@@ -16,7 +21,7 @@ describe('OrganisationsEinheitListItemComponent', () => {
 
     fixture = TestBed.createComponent(OrganisationsEinheitListItemComponent);
     component = fixture.componentInstance;
-    component.organisationsEinheit = organisationsEinheit;
+    component.organisationsEinheitStateResource = organisationsEinheitStateResource;
     fixture.detectChanges();
   });
 
diff --git a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.ts b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.ts
index 7172e32452e27a0169338a62274b321ba0ef65ef..eaeb036fed30eff0e0bce1ffdf9428a24a9896cd 100644
--- a/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.ts
+++ b/alfa-client/libs/organisations-einheit/src/lib/organisations-einheit-list-item-container/organisations-einheit-list-item/organisations-einheit-list-item.component.ts
@@ -1,4 +1,6 @@
-import { OrganisationsEinheit } from '@alfa-client/zustaendige-stelle-shared';
+import { StateResource } from '@alfa-client/tech-shared';
+import { UiModule } from '@alfa-client/ui';
+import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
 import { Component, Input } from '@angular/core';
 import { ExternalUnitIconComponent, PublicAdministrationIconComponent } from '@ods/system';
 import { formatAnschrift } from '../../organisations-einheit.util';
@@ -6,11 +8,11 @@ import { formatAnschrift } from '../../organisations-einheit.util';
 @Component({
   selector: 'alfa-organisations-einheit-list-item',
   standalone: true,
-  imports: [ExternalUnitIconComponent, PublicAdministrationIconComponent],
+  imports: [ExternalUnitIconComponent, PublicAdministrationIconComponent, UiModule],
   templateUrl: './organisations-einheit-list-item.component.html',
   styleUrl: './organisations-einheit-list-item.component.scss',
 })
 export class OrganisationsEinheitListItemComponent {
-  @Input() organisationsEinheit: OrganisationsEinheit;
+  @Input() organisationsEinheitStateResource: StateResource<OrganisationsEinheitResource>;
   protected readonly formatAnschrift = formatAnschrift;
 }
diff --git a/alfa-client/libs/zustaendige-stelle-shared/src/index.ts b/alfa-client/libs/zustaendige-stelle-shared/src/index.ts
index 61f2d6239e3f96548c5168e7748e8cecae54b8ff..a7848f376a7054d248e5aecc97aff7a3b5a3fe76 100644
--- a/alfa-client/libs/zustaendige-stelle-shared/src/index.ts
+++ b/alfa-client/libs/zustaendige-stelle-shared/src/index.ts
@@ -3,7 +3,6 @@ export * from './lib/externe-fachstelle/externe-fachstelle.service';
 export * from './lib/organisations-einheit/organisations-einheit-resource-search.service';
 export * from './lib/organisations-einheit/organisations-einheit.model';
 export * from './lib/organisations-einheit/organisations-einheit.service';
-export * from './lib/zustaendige-stelle-resource.service';
 export * from './lib/zustaendige-stelle-shared.module';
 export * from './lib/zustaendige-stelle.service';
 export * from './lib/zustaendige-stelle.token';
diff --git a/alfa-client/package-lock.json b/alfa-client/package-lock.json
index 04d669b344edd35238983c2f5560fc9939058646..4a32b4ed0480728b868f4017337097aeb5aa6695 100644
--- a/alfa-client/package-lock.json
+++ b/alfa-client/package-lock.json
@@ -76,6 +76,9 @@
         "@storybook/addon-interactions": "^8.3.5",
         "@storybook/angular": "^8.3.5",
         "@storybook/core-server": "^8.3.5",
+        "@swc-node/register": "~1.9.1",
+        "@swc/core": "~1.5.7",
+        "@swc/helpers": "~0.5.11",
         "@testing-library/jest-dom": "^6.4.5",
         "@types/file-saver": "2.0.7",
         "@types/jest": "29.5.13",
@@ -1475,7 +1478,6 @@
       "version": "18.2.8",
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@angular/compiler/-/compiler-18.2.8.tgz",
       "integrity": "sha512-JRedHNfK1CCPVyeGQB5w3WBYqMA6X8Q240CkvjlGfn0pVXihf9DWk3nkSQJVgYxpvpHfxdgjaYZ5IpMzlkmkhw==",
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "tslib": "^2.3.0"
@@ -6237,11 +6239,10 @@
       }
     },
     "node_modules/@eslint/config-array": {
-      "version": "0.18.0",
-      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/config-array/-/config-array-0.18.0.tgz",
-      "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
+      "version": "0.19.0",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/config-array/-/config-array-0.19.0.tgz",
+      "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==",
       "dev": true,
-      "license": "Apache-2.0",
       "peer": true,
       "dependencies": {
         "@eslint/object-schema": "^2.1.4",
@@ -6257,7 +6258,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "balanced-match": "^1.0.0",
@@ -6269,7 +6269,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/minimatch/-/minimatch-3.1.2.tgz",
       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
-      "license": "ISC",
       "peer": true,
       "dependencies": {
         "brace-expansion": "^1.1.7"
@@ -6279,11 +6278,10 @@
       }
     },
     "node_modules/@eslint/core": {
-      "version": "0.7.0",
-      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/core/-/core-0.7.0.tgz",
-      "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==",
+      "version": "0.9.0",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/core/-/core-0.9.0.tgz",
+      "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==",
       "dev": true,
-      "license": "Apache-2.0",
       "peer": true,
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -6415,18 +6413,16 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/object-schema/-/object-schema-2.1.4.tgz",
       "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
       "dev": true,
-      "license": "Apache-2.0",
       "peer": true,
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       }
     },
     "node_modules/@eslint/plugin-kit": {
-      "version": "0.2.2",
-      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz",
-      "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==",
+      "version": "0.2.3",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz",
+      "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==",
       "dev": true,
-      "license": "Apache-2.0",
       "peer": true,
       "dependencies": {
         "levn": "^0.4.1"
@@ -6480,7 +6476,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@humanfs/core/-/core-0.19.1.tgz",
       "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
       "dev": true,
-      "license": "Apache-2.0",
       "peer": true,
       "engines": {
         "node": ">=18.18.0"
@@ -6491,7 +6486,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@humanfs/node/-/node-0.16.6.tgz",
       "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
       "dev": true,
-      "license": "Apache-2.0",
       "peer": true,
       "dependencies": {
         "@humanfs/core": "^0.19.1",
@@ -6501,6 +6495,20 @@
         "node": ">=18.18.0"
       }
     },
+    "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+      "version": "0.3.1",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+      "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+      "dev": true,
+      "peer": true,
+      "engines": {
+        "node": ">=18.18"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
     "node_modules/@humanwhocodes/config-array": {
       "version": "0.11.14",
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
@@ -6559,11 +6567,10 @@
       "license": "BSD-3-Clause"
     },
     "node_modules/@humanwhocodes/retry": {
-      "version": "0.3.1",
-      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@humanwhocodes/retry/-/retry-0.3.1.tgz",
-      "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+      "version": "0.4.1",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@humanwhocodes/retry/-/retry-0.4.1.tgz",
+      "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
       "dev": true,
-      "license": "Apache-2.0",
       "peer": true,
       "engines": {
         "node": ">=18.18"
@@ -8677,11 +8684,10 @@
       }
     },
     "node_modules/@nx/devkit": {
-      "version": "20.0.6",
-      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@nx/devkit/-/devkit-20.0.6.tgz",
-      "integrity": "sha512-vUjVVEJgfq/roCzDDZDXduwnhVXl1MM5No2UELUka2oNBK09pPigdFxzUNh8XvmOyFskCGDTLKH/dAO5yTD5Bg==",
+      "version": "20.1.4",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@nx/devkit/-/devkit-20.1.4.tgz",
+      "integrity": "sha512-Opz7eRPmpt3e4SGkbwZbE9Bg3MhKeivh1QTNCj4tQVAB4gucz0lW/F3mdtRDFdj6gUbqIc5rRrbO/DGlNaEzYw==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "ejs": "^3.1.7",
@@ -8769,11 +8775,10 @@
       }
     },
     "node_modules/@nx/eslint-plugin/node_modules/@eslint/eslintrc": {
-      "version": "3.1.0",
-      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
-      "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
+      "version": "3.2.0",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/eslintrc/-/eslintrc-3.2.0.tgz",
+      "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "ajv": "^6.12.4",
@@ -8798,7 +8803,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "balanced-match": "^1.0.0",
@@ -8810,7 +8814,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/globals/-/globals-14.0.0.tgz",
       "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "engines": {
         "node": ">=18"
@@ -8824,7 +8827,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/minimatch/-/minimatch-3.1.2.tgz",
       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
-      "license": "ISC",
       "peer": true,
       "dependencies": {
         "brace-expansion": "^1.1.7"
@@ -8834,11 +8836,10 @@
       }
     },
     "node_modules/@nx/eslint-plugin/node_modules/@eslint/js": {
-      "version": "9.13.0",
-      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/js/-/js-9.13.0.tgz",
-      "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==",
+      "version": "9.16.0",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@eslint/js/-/js-9.16.0.tgz",
+      "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -8988,7 +8989,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/ajv/-/ajv-6.12.6.tgz",
       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
@@ -9006,37 +9006,35 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/argparse/-/argparse-2.0.1.tgz",
       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
       "dev": true,
-      "license": "Python-2.0",
       "peer": true
     },
     "node_modules/@nx/eslint-plugin/node_modules/eslint": {
-      "version": "9.13.0",
-      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/eslint/-/eslint-9.13.0.tgz",
-      "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==",
+      "version": "9.16.0",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/eslint/-/eslint-9.16.0.tgz",
+      "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
-        "@eslint-community/regexpp": "^4.11.0",
-        "@eslint/config-array": "^0.18.0",
-        "@eslint/core": "^0.7.0",
-        "@eslint/eslintrc": "^3.1.0",
-        "@eslint/js": "9.13.0",
-        "@eslint/plugin-kit": "^0.2.0",
-        "@humanfs/node": "^0.16.5",
+        "@eslint-community/regexpp": "^4.12.1",
+        "@eslint/config-array": "^0.19.0",
+        "@eslint/core": "^0.9.0",
+        "@eslint/eslintrc": "^3.2.0",
+        "@eslint/js": "9.16.0",
+        "@eslint/plugin-kit": "^0.2.3",
+        "@humanfs/node": "^0.16.6",
         "@humanwhocodes/module-importer": "^1.0.1",
-        "@humanwhocodes/retry": "^0.3.1",
+        "@humanwhocodes/retry": "^0.4.1",
         "@types/estree": "^1.0.6",
         "@types/json-schema": "^7.0.15",
         "ajv": "^6.12.4",
         "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
+        "cross-spawn": "^7.0.5",
         "debug": "^4.3.2",
         "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^8.1.0",
-        "eslint-visitor-keys": "^4.1.0",
-        "espree": "^10.2.0",
+        "eslint-scope": "^8.2.0",
+        "eslint-visitor-keys": "^4.2.0",
+        "espree": "^10.3.0",
         "esquery": "^1.5.0",
         "esutils": "^2.0.2",
         "fast-deep-equal": "^3.1.3",
@@ -9050,8 +9048,7 @@
         "lodash.merge": "^4.6.2",
         "minimatch": "^3.1.2",
         "natural-compare": "^1.4.0",
-        "optionator": "^0.9.3",
-        "text-table": "^0.2.0"
+        "optionator": "^0.9.3"
       },
       "bin": {
         "eslint": "bin/eslint.js"
@@ -9076,7 +9073,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "balanced-match": "^1.0.0",
@@ -9088,7 +9084,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
       "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
       "dev": true,
-      "license": "Apache-2.0",
       "peer": true,
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -9102,7 +9097,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/minimatch/-/minimatch-3.1.2.tgz",
       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "dev": true,
-      "license": "ISC",
       "peer": true,
       "dependencies": {
         "brace-expansion": "^1.1.7"
@@ -9116,7 +9110,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/espree/-/espree-10.3.0.tgz",
       "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
       "dev": true,
-      "license": "BSD-2-Clause",
       "peer": true,
       "dependencies": {
         "acorn": "^8.14.0",
@@ -9135,7 +9128,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
       "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
       "dev": true,
-      "license": "Apache-2.0",
       "peer": true,
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -9149,7 +9141,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
       "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "flat-cache": "^4.0.0"
@@ -9163,7 +9154,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/flat-cache/-/flat-cache-4.0.1.tgz",
       "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "flatted": "^3.2.9",
@@ -9191,7 +9181,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/js-yaml/-/js-yaml-4.1.0.tgz",
       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "argparse": "^2.0.1"
@@ -9205,7 +9194,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
       "dev": true,
-      "license": "MIT",
       "peer": true
     },
     "node_modules/@nx/eslint/node_modules/@nx/devkit": {
@@ -12400,17 +12388,268 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/@swc-node/core": {
+      "version": "1.13.3",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc-node/core/-/core-1.13.3.tgz",
+      "integrity": "sha512-OGsvXIid2Go21kiNqeTIn79jcaX4l0G93X2rAnas4LFoDyA9wAwVK7xZdm+QsKoMn5Mus2yFLCc4OtX2dD/PWA==",
+      "devOptional": true,
+      "engines": {
+        "node": ">= 10"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/Brooooooklyn"
+      },
+      "peerDependencies": {
+        "@swc/core": ">= 1.4.13",
+        "@swc/types": ">= 0.1"
+      }
+    },
+    "node_modules/@swc-node/register": {
+      "version": "1.9.2",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc-node/register/-/register-1.9.2.tgz",
+      "integrity": "sha512-BBjg0QNuEEmJSoU/++JOXhrjWdu3PTyYeJWsvchsI0Aqtj8ICkz/DqlwtXbmZVZ5vuDPpTfFlwDBZe81zgShMA==",
+      "devOptional": true,
+      "dependencies": {
+        "@swc-node/core": "^1.13.1",
+        "@swc-node/sourcemap-support": "^0.5.0",
+        "colorette": "^2.0.20",
+        "debug": "^4.3.4",
+        "pirates": "^4.0.6",
+        "tslib": "^2.6.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/Brooooooklyn"
+      },
+      "peerDependencies": {
+        "@swc/core": ">= 1.4.13",
+        "typescript": ">= 4.3"
+      }
+    },
+    "node_modules/@swc-node/sourcemap-support": {
+      "version": "0.5.1",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc-node/sourcemap-support/-/sourcemap-support-0.5.1.tgz",
+      "integrity": "sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==",
+      "devOptional": true,
+      "dependencies": {
+        "source-map-support": "^0.5.21",
+        "tslib": "^2.6.3"
+      }
+    },
+    "node_modules/@swc/core": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core/-/core-1.5.29.tgz",
+      "integrity": "sha512-nvTtHJI43DUSOAf3h9XsqYg8YXKc0/N4il9y4j0xAkO0ekgDNo+3+jbw6MInawjKJF9uulyr+f5bAutTsOKVlw==",
+      "devOptional": true,
+      "hasInstallScript": true,
+      "dependencies": {
+        "@swc/counter": "^0.1.3",
+        "@swc/types": "^0.1.8"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/swc"
+      },
+      "optionalDependencies": {
+        "@swc/core-darwin-arm64": "1.5.29",
+        "@swc/core-darwin-x64": "1.5.29",
+        "@swc/core-linux-arm-gnueabihf": "1.5.29",
+        "@swc/core-linux-arm64-gnu": "1.5.29",
+        "@swc/core-linux-arm64-musl": "1.5.29",
+        "@swc/core-linux-x64-gnu": "1.5.29",
+        "@swc/core-linux-x64-musl": "1.5.29",
+        "@swc/core-win32-arm64-msvc": "1.5.29",
+        "@swc/core-win32-ia32-msvc": "1.5.29",
+        "@swc/core-win32-x64-msvc": "1.5.29"
+      },
+      "peerDependencies": {
+        "@swc/helpers": "*"
+      },
+      "peerDependenciesMeta": {
+        "@swc/helpers": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@swc/core-darwin-arm64": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.29.tgz",
+      "integrity": "sha512-6F/sSxpHaq3nzg2ADv9FHLi4Fu2A8w8vP8Ich8gIl16D2htStlwnaPmCLjRswO+cFkzgVqy/l01gzNGWd4DFqA==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@swc/core-darwin-x64": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core-darwin-x64/-/core-darwin-x64-1.5.29.tgz",
+      "integrity": "sha512-rF/rXkvUOTdTIfoYbmszbSUGsCyvqACqy1VeP3nXONS+LxFl4bRmRcUTRrblL7IE5RTMCKUuPbqbQSE2hK7bqg==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@swc/core-linux-arm-gnueabihf": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.29.tgz",
+      "integrity": "sha512-2OAPL8iWBsmmwkjGXqvuUhbmmoLxS1xNXiMq87EsnCNMAKohGc7wJkdAOUL6J/YFpean/vwMWg64rJD4pycBeg==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@swc/core-linux-arm64-gnu": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.29.tgz",
+      "integrity": "sha512-eH/Q9+8O5qhSxMestZnhuS1xqQMr6M7SolZYxiXJqxArXYILLCF+nq2R9SxuMl0CfjHSpb6+hHPk/HXy54eIRA==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@swc/core-linux-arm64-musl": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.29.tgz",
+      "integrity": "sha512-TERh2OICAJz+SdDIK9+0GyTUwF6r4xDlFmpoiHKHrrD/Hh3u+6Zue0d7jQ/he/i80GDn4tJQkHlZys+RZL5UZg==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@swc/core-linux-x64-gnu": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.29.tgz",
+      "integrity": "sha512-WMDPqU7Ji9dJpA+Llek2p9t7pcy7Bob8ggPUvgsIlv3R/eesF9DIzSbrgl6j3EAEPB9LFdSafsgf6kT/qnvqFg==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@swc/core-linux-x64-musl": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.29.tgz",
+      "integrity": "sha512-DO14glwpdKY4POSN0201OnGg1+ziaSVr6/RFzuSLggshwXeeyVORiHv3baj7NENhJhWhUy3NZlDsXLnRFkmhHQ==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@swc/core-win32-arm64-msvc": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.29.tgz",
+      "integrity": "sha512-V3Y1+a1zG1zpYXUMqPIHEMEOd+rHoVnIpO/KTyFwAmKVu8v+/xPEVx/AGoYE67x4vDAAvPQrKI3Aokilqa5yVg==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@swc/core-win32-ia32-msvc": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.29.tgz",
+      "integrity": "sha512-OrM6yfXw4wXhnVFosOJzarw0Fdz5Y0okgHfn9oFbTPJhoqxV5Rdmd6kXxWu2RiVKs6kGSJFZXHDeUq2w5rTIMg==",
+      "cpu": [
+        "ia32"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@swc/core-win32-x64-msvc": {
+      "version": "1.5.29",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.29.tgz",
+      "integrity": "sha512-eD/gnxqKyZQQR0hR7TMkIlJ+nCF9dzYmVVNbYZWuA1Xy94aBPUsEk3Uw3oG7q6R3ErrEUPP0FNf2ztEnv+I+dw==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@swc/counter": {
+      "version": "0.1.3",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/counter/-/counter-0.1.3.tgz",
+      "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==",
+      "devOptional": true
+    },
     "node_modules/@swc/helpers": {
       "version": "0.5.13",
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/helpers/-/helpers-0.5.13.tgz",
       "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==",
-      "dev": true,
+      "devOptional": true,
       "license": "Apache-2.0",
-      "peer": true,
       "dependencies": {
         "tslib": "^2.4.0"
       }
     },
+    "node_modules/@swc/types": {
+      "version": "0.1.17",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@swc/types/-/types-0.1.17.tgz",
+      "integrity": "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==",
+      "devOptional": true,
+      "dependencies": {
+        "@swc/counter": "^0.1.3"
+      }
+    },
     "node_modules/@testing-library/dom": {
       "version": "10.4.0",
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/@testing-library/dom/-/dom-10.4.0.tgz",
@@ -15296,7 +15535,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/browser-stdout/-/browser-stdout-1.3.1.tgz",
       "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
       "dev": true,
-      "license": "ISC",
       "peer": true
     },
     "node_modules/browserify-aes": {
@@ -16959,10 +17197,9 @@
       }
     },
     "node_modules/cross-spawn": {
-      "version": "7.0.3",
-      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cross-spawn/-/cross-spawn-7.0.3.tgz",
-      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "license": "MIT",
+      "version": "7.0.6",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cross-spawn/-/cross-spawn-7.0.6.tgz",
+      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
       "dependencies": {
         "path-key": "^3.1.0",
         "shebang-command": "^2.0.0",
@@ -17706,7 +17943,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/decamelize/-/decamelize-4.0.0.tgz",
       "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "engines": {
         "node": ">=10"
@@ -22587,7 +22823,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
       "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
       "dev": true,
-      "license": "MIT",
       "optional": true,
       "peer": true,
       "dependencies": {
@@ -22605,7 +22840,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
       "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
       "dev": true,
-      "license": "MIT",
       "optional": true,
       "peer": true,
       "dependencies": {
@@ -25504,11 +25738,10 @@
       }
     },
     "node_modules/mocha": {
-      "version": "10.8.1",
-      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mocha/-/mocha-10.8.1.tgz",
-      "integrity": "sha512-WxSpEWgF03HfgNKBuysfK40DUaOSVX5zxgLDoieMGO+zyE69iq2eQ1vBypvIJ5mOPKpuVAqWiTbt4Orj7L6wVw==",
+      "version": "10.8.2",
+      "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/mocha/-/mocha-10.8.2.tgz",
+      "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "ansi-colors": "^4.1.3",
@@ -25545,7 +25778,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/argparse/-/argparse-2.0.1.tgz",
       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
       "dev": true,
-      "license": "Python-2.0",
       "peer": true
     },
     "node_modules/mocha/node_modules/cliui": {
@@ -25553,7 +25785,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/cliui/-/cliui-7.0.4.tgz",
       "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
       "dev": true,
-      "license": "ISC",
       "peer": true,
       "dependencies": {
         "string-width": "^4.2.0",
@@ -25567,7 +25798,6 @@
       "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
       "deprecated": "Glob versions prior to v9 are no longer supported",
       "dev": true,
-      "license": "ISC",
       "peer": true,
       "dependencies": {
         "fs.realpath": "^1.0.0",
@@ -25588,7 +25818,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/js-yaml/-/js-yaml-4.1.0.tgz",
       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "argparse": "^2.0.1"
@@ -25602,7 +25831,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/minimatch/-/minimatch-5.1.6.tgz",
       "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
       "dev": true,
-      "license": "ISC",
       "peer": true,
       "dependencies": {
         "brace-expansion": "^2.0.1"
@@ -25616,7 +25844,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/strip-ansi/-/strip-ansi-6.0.1.tgz",
       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "ansi-regex": "^5.0.1"
@@ -25630,7 +25857,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/supports-color/-/supports-color-8.1.1.tgz",
       "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "has-flag": "^4.0.0"
@@ -25647,7 +25873,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
       "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "ansi-styles": "^4.0.0",
@@ -25666,7 +25891,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/yargs/-/yargs-16.2.0.tgz",
       "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "cliui": "^7.0.2",
@@ -25686,7 +25910,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/yargs-parser/-/yargs-parser-20.2.9.tgz",
       "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
       "dev": true,
-      "license": "ISC",
       "peer": true,
       "engines": {
         "node": ">=10"
@@ -35138,7 +35361,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/workerpool/-/workerpool-6.5.1.tgz",
       "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==",
       "dev": true,
-      "license": "Apache-2.0",
       "peer": true
     },
     "node_modules/wrap-ansi": {
@@ -35345,7 +35567,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
       "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "dependencies": {
         "camelcase": "^6.0.0",
@@ -35362,7 +35583,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/camelcase/-/camelcase-6.3.0.tgz",
       "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "engines": {
         "node": ">=10"
@@ -35376,7 +35596,6 @@
       "resolved": "http://nexus.ozg-sh.de/repository/npm-proxy/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
       "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
       "dev": true,
-      "license": "MIT",
       "peer": true,
       "engines": {
         "node": ">=8"
diff --git a/alfa-client/package.json b/alfa-client/package.json
index 5806078d52df813db93d93474ea05b6a89b9a5ec..0c26c4909b6d63d63da512feebd86bea5fb041ba 100644
--- a/alfa-client/package.json
+++ b/alfa-client/package.json
@@ -118,6 +118,9 @@
     "@storybook/addon-interactions": "^8.3.5",
     "@storybook/angular": "^8.3.5",
     "@storybook/core-server": "^8.3.5",
+    "@swc-node/register": "~1.9.1",
+    "@swc/core": "~1.5.7",
+    "@swc/helpers": "~0.5.11",
     "@testing-library/jest-dom": "^6.4.5",
     "@types/file-saver": "2.0.7",
     "@types/jest": "29.5.13",
@@ -160,4 +163,4 @@
     "ts-node": "10.9.1",
     "typescript": "5.5.4"
   }
-}
\ No newline at end of file
+}
diff --git a/alfa-client/tsconfig.base.json b/alfa-client/tsconfig.base.json
index 8d48c33ad2bcd00c0ffd23c8bbdb61b96033863a..c5305dcc83a25e9d9243459743806ce905bdbaa8 100644
--- a/alfa-client/tsconfig.base.json
+++ b/alfa-client/tsconfig.base.json
@@ -29,6 +29,7 @@
       "@alfa-client/common": ["libs/common/src/index.ts"],
       "@alfa-client/environment-shared": ["libs/environment-shared/src/index.ts"],
       "@alfa-client/externe-fachstelle": ["libs/externe-fachstelle/src/index.ts"],
+      "@alfa-client/externe-fachstelle-shared": ["libs/externe-fachstelle-shared/src/index.ts"],
       "@alfa-client/forwarding": ["libs/forwarding/src/index.ts"],
       "@alfa-client/forwarding-shared": ["libs/forwarding-shared/src/index.ts"],
       "@alfa-client/hint": ["libs/hint/src/index.ts"],
@@ -42,6 +43,7 @@
       "@alfa-client/navigation": ["libs/navigation/src/index.ts"],
       "@alfa-client/navigation-shared": ["libs/navigation-shared/src/index.ts"],
       "@alfa-client/organisations-einheit": ["libs/organisations-einheit/src/index.ts"],
+      "@alfa-client/organisations-einheit-shared": ["libs/organisations-einheit-shared/src/index.ts"],
       "@alfa-client/postfach": ["libs/postfach/src/index.ts"],
       "@alfa-client/postfach-shared": ["libs/postfach-shared/src/index.ts"],
       "@alfa-client/resource-redirect": ["libs/resource-redirect/src/index.ts"],
@@ -64,7 +66,7 @@
       "@alfa-client/zustaendige-stelle-shared": ["libs/zustaendige-stelle-shared/src/index.ts"],
       "@ods/component": ["libs/design-component/src/index.ts"],
       "@ods/system": ["libs/design-system/src/index.ts"],
-      "authentication": ["libs/authentication/src/index.ts"]
+      "authentication": ["libs/authentication/src/index.ts"],
     }
   },
   "exclude": ["node_modules", "tmp"]