diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
index be0c599a5b7e04df8b03cbe0c51568aed474e709..e86356acece82f9d84a903d8a71d0181ffc5c6bf 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
@@ -23,7 +23,7 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container *ngIf="vorgang | hasLink: linkRel.ABSCHLIESSEN">
+<ng-container *ngIf="isVisible">
   <ozgcloud-stroked-button-with-spinner
     *ngIf="!showAsIconButton"
     data-test-id="abschliessen-button"
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts
index 4d98aa579e9927feab12c1474ebc7dfaddb8e926..53f7eb0cbc0b54c8a83a4bba21443ce3377cd2b8 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts
@@ -22,22 +22,10 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { CommandResource } from '@alfa-client/command-shared';
-import {
-  HasLinkPipe,
-  StateResource,
-  createEmptyStateResource,
-  createStateResource,
-} from '@alfa-client/tech-shared';
+import { createEmptyStateResource, createStateResource, HasLinkPipe, StateResource, } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
-import {
-  VorgangCommandService,
-  VorgangStatus,
-  VorgangWithEingangLinkRel,
-} from '@alfa-client/vorgang-shared';
+import { IconButtonWithSpinnerComponent, OzgcloudStrokedButtonWithSpinnerComponent, } from '@alfa-client/ui';
+import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource, } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
@@ -126,7 +114,7 @@ describe('AbschliessenButtonComponent', () => {
     });
 
     it('should be hidden', () => {
-      component.vorgang = createVorgangWithEingangResource();
+      component.isVisible = false;
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(abschliessenButton);
@@ -135,9 +123,7 @@ describe('AbschliessenButtonComponent', () => {
     });
 
     it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.ABSCHLIESSEN,
-      ]);
+      component.isVisible = true;
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(abschliessenButton);
@@ -153,7 +139,7 @@ describe('AbschliessenButtonComponent', () => {
     });
 
     it('should be hidden', () => {
-      component.vorgang = createVorgangWithEingangResource();
+      component.isVisible = false;
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(abschliessenIconButton);
@@ -161,11 +147,8 @@ describe('AbschliessenButtonComponent', () => {
       expect(buttonElement).not.toBeInstanceOf(HTMLElement);
     });
 
-
     it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.ABSCHLIESSEN,
-      ]);
+      component.isVisible = true;
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(abschliessenIconButton);
@@ -173,4 +156,58 @@ describe('AbschliessenButtonComponent', () => {
       expect(buttonElement).toBeInstanceOf(HTMLElement);
     });
   });
+
+  describe('set vorgang', () => {
+    it('should set vorgang with eingang resource', () => {
+      const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource();
+
+      component.vorgang = vorgang;
+
+      expect(component.vorgangWithEingangResource).toBe(vorgang);
+    });
+
+    it('should set visible to true', () => {
+      const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([
+        VorgangWithEingangLinkRel.ABSCHLIESSEN,
+      ]);
+      component.vorgang = vorgang;
+
+      const isVisible: boolean = component.isVisible;
+
+      expect(isVisible).toBeTruthy();
+    });
+
+    it('should set visible to false', () => {
+      const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource();
+      component.vorgang = vorgang;
+
+      const isVisible: boolean = component.isVisible;
+
+      expect(isVisible).toBeFalsy();
+    });
+
+    it('should set visible to false if have createBescheidDraft link', () => {
+      const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([
+        VorgangWithEingangLinkRel.ABSCHLIESSEN,
+        VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT,
+      ]);
+      component.vorgang = vorgang;
+
+      const isVisible: boolean = component.isVisible;
+
+      expect(isVisible).toBeFalsy();
+    });
+
+    it('should set visible to false if have bescheidDraft link', () => {
+      const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([
+        VorgangWithEingangLinkRel.ABSCHLIESSEN,
+        VorgangWithEingangLinkRel.BESCHEID_DRAFT,
+      ]);
+      component.vorgang = vorgang;
+
+      const isVisible: boolean = component.isVisible;
+
+      expect(isVisible).toBeFalsy();
+    });
+  });
 });
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.ts
index 15df48ad2b497eed92ec4dfd36278e18fd3e506f..891dc472cdf377bc9ee28125b925d6a1bcd2dacf 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.ts
@@ -22,13 +22,10 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { CommandResource } from '@alfa-client/command-shared';
-import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared';
-import {
-  VorgangCommandService,
-  VorgangWithEingangLinkRel,
-  VorgangWithEingangResource,
-} from '@alfa-client/vorgang-shared';
+import { createEmptyStateResource, notHasLink, StateResource } from '@alfa-client/tech-shared';
+import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource, } from '@alfa-client/vorgang-shared';
 import { Component, Input, OnInit } from '@angular/core';
+import { hasLink } from '@ngxp/rest';
 import { Observable, of } from 'rxjs';
 
 @Component({
@@ -37,9 +34,19 @@ import { Observable, of } from 'rxjs';
   styleUrls: ['./abschliessen-button.component.scss'],
 })
 export class AbschliessenButtonComponent implements OnInit {
-  @Input() vorgang: VorgangWithEingangResource;
+  @Input() set vorgang(vorgang: VorgangWithEingangResource) {
+    this.vorgangWithEingangResource = vorgang;
+    this.isVisible =
+      hasLink(vorgang, VorgangWithEingangLinkRel.ABSCHLIESSEN) &&
+      notHasLink(vorgang, VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT) &&
+      notHasLink(vorgang, VorgangWithEingangLinkRel.BESCHEID_DRAFT);
+  }
+
   @Input() showAsIconButton: boolean = false;
 
+  public isVisible: boolean = false;
+  vorgangWithEingangResource: VorgangWithEingangResource;
+
   commandStateResource$: Observable<StateResource<CommandResource>> = of(
     createEmptyStateResource<CommandResource>(),
   );
@@ -53,6 +60,8 @@ export class AbschliessenButtonComponent implements OnInit {
   }
 
   public abschliessen(): void {
-    this.commandStateResource$ = this.vorgangCommandService.abschliessen(this.vorgang);
+    this.commandStateResource$ = this.vorgangCommandService.abschliessen(
+      this.vorgangWithEingangResource,
+    );
   }
 }
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java
index b6524e0b584102bd93baebf1e6d489e994056a98..1977b5ffb63dbf495578eeac0ebce27d6d7a4af5 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessor.java
@@ -15,6 +15,8 @@ import de.ozgcloud.alfa.bescheid.BescheidController.BescheidByVorgangController;
 import de.ozgcloud.alfa.common.FeatureToggleProperties;
 import de.ozgcloud.alfa.common.ModelBuilder;
 import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
+import de.ozgcloud.alfa.common.user.CurrentUserService;
+import de.ozgcloud.alfa.common.user.UserRole;
 import de.ozgcloud.alfa.vorgang.Vorgang;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
 import lombok.RequiredArgsConstructor;
@@ -29,11 +31,12 @@ class BescheidVorgangProcessor implements RepresentationModelProcessor<EntityMod
 
 	private final BescheidService bescheidService;
 	private final FeatureToggleProperties featureToggleProperties;
+	private final CurrentUserService currentUserService;
 
 	@Override
 	public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
 		var vorgang = model.getContent();
-		if (Objects.isNull(vorgang)) {
+		if (Objects.isNull(vorgang) || currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)) {
 			return model;
 		}
 		return ModelBuilder.fromModel(model)
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/CurrentUserService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/CurrentUserService.java
index 81ddfb139f273627653798ac0a8368ce32f6ab39..f4a517c4052a3658f8ecfc3d81e5ac5a6593c849 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/CurrentUserService.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/user/CurrentUserService.java
@@ -95,8 +95,8 @@ public class CurrentUserService {
 
 	public Optional<UserId> findUserId() {
 		return Optional.ofNullable(getSingleClaimValue(ATTRIBUTE_NAME_USER_ID)
-				.map(UserId::from)
-				.orElseGet(this::getInternalId))
+						.map(UserId::from)
+						.orElseGet(this::getInternalId))
 				.filter(Objects::nonNull);
 	}
 
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java
index 510a3f2a395f726aabb88c0c29998bd89508f462..ec24740d58cd87f75c86a04801232b5076fe03f3 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/bescheid/BescheidVorgangProcessorTest.java
@@ -22,6 +22,8 @@ import org.springframework.hateoas.Link;
 
 import de.ozgcloud.alfa.common.FeatureToggleProperties;
 import de.ozgcloud.alfa.common.UserProfileUrlProvider;
+import de.ozgcloud.alfa.common.user.CurrentUserService;
+import de.ozgcloud.alfa.common.user.UserRole;
 import de.ozgcloud.alfa.vorgang.Vorgang;
 import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
@@ -35,8 +37,11 @@ class BescheidVorgangProcessorTest {
 	@Spy
 	@InjectMocks
 	private BescheidVorgangProcessor processor;
+
 	@Mock
 	private BescheidService service;
+	@Mock
+	private CurrentUserService currentUserService;
 
 	@Mock
 	private FeatureToggleProperties featureToggleProperties;
@@ -53,6 +58,16 @@ class BescheidVorgangProcessorTest {
 			assertThat(processedModel).isEqualTo(inputModel);
 		}
 
+		@Test
+		void shouldReturnTheSameModelWhenUserIsEinheitlicherAnsprechpartner() {
+			var inputModel = EntityModel.of(VorgangWithEingangTestFactory.create());
+			when(currentUserService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER)).thenReturn(true);
+
+			var processedModel = processor.process(inputModel);
+
+			assertThat(processedModel).isEqualTo(inputModel);
+		}
+
 		@Test
 		void shouldCallExistsBescheid() {
 			initUserProfileUrlProvider(new UserProfileUrlProvider());