diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java
index 9dda134b2ea6580936e80d068055309175b645ce..b18d3421b4e18bcc9329a453f6a503537c667b51 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java
@@ -25,30 +25,44 @@ package de.ozgcloud.alfa;
 
 import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
 
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import de.ozgcloud.alfa.vorgang.VorgangProperties;
+import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty;
+
 @RestController
-@RequestMapping("/api/environment")
+@RequestMapping(EnvironmentController.PREFIX)
 public class EnvironmentController {
+	
+	static final String PREFIX = "/api/environment"; 
 
 	@Autowired
 	private OAuth2Properties oAuth2Properties;
 
-	@Value("${goofy.production}")
-	private boolean production = true;
+	@Autowired
+	private GoofyProperties goofyProperties;
+	
+	@Autowired
+	private VorgangProperties vorgangProperties;
 
 	@GetMapping
 	public FrontendEnvironment getFrontendEnvironment() {
 		return FrontendEnvironment.builder()
-				.production(production)
+				.production(goofyProperties.isProduction())
 				.remoteHost(linkTo(RootController.class).toUri().toString())
 				.authServer(oAuth2Properties.getAuthServerUrl())
 				.clientId(oAuth2Properties.getResource())
 				.realm(oAuth2Properties.getRealm())
+				.processorNames(getProcessorNames())
 				.build();
 	}
+	
+	private List<String> getProcessorNames() {
+		return vorgangProperties.getAnalogButtonProcessor().stream().map(VorgangProperty::getFormId).toList();
+	}
 }
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/FrontendEnvironment.java b/alfa-service/src/main/java/de/ozgcloud/alfa/FrontendEnvironment.java
index d380547186666d7e70155b0fe72145e2c9b818ee..218f2f1f4732c4bb0b856403f9fd0e8b9eafec73 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/FrontendEnvironment.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/FrontendEnvironment.java
@@ -23,6 +23,8 @@
  */
 package de.ozgcloud.alfa;
 
+import java.util.List;
+
 import lombok.Builder;
 import lombok.Getter;
 
@@ -35,4 +37,5 @@ public class FrontendEnvironment {
 	private String authServer;
 	private String realm;
 	private String clientId;
+	private List<String> processorNames;
 }
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/GoofyProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/GoofyProperties.java
new file mode 100644
index 0000000000000000000000000000000000000000..8af46660ac3fbf48a9d27bae0b1dad8fe927a2d4
--- /dev/null
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/GoofyProperties.java
@@ -0,0 +1,22 @@
+package de.ozgcloud.alfa;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@Configuration
+@ConfigurationProperties(prefix = GoofyProperties.PREFIX)
+class GoofyProperties {
+	
+	static final String PREFIX = "goofy";
+
+	/**
+	 * Set production mode.
+	 */
+	private boolean production = true;
+	
+}
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java
index 26dba360939dae95de5ea084c47b66d51b6d48ad..b013c2631377384cbcd3f276e0dda3a3b1bdd396 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/CommandBody.java
@@ -31,6 +31,7 @@ import de.ozgcloud.alfa.loeschanforderung.DeleteLoeschAnforderung;
 import de.ozgcloud.alfa.loeschanforderung.LoeschAnforderung;
 import de.ozgcloud.alfa.postfach.PostfachMail;
 import de.ozgcloud.alfa.vorgang.AssignUserCommandBody;
+import de.ozgcloud.alfa.vorgang.ExecuteProcessorBody;
 import de.ozgcloud.alfa.vorgang.forwarding.RedirectRequest;
 import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
 
@@ -44,7 +45,8 @@ import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
 		@Type(value = Kommentar.class, name = "KOMMENTAR"),
 		@Type(value = LoeschAnforderung.class, name = "LOESCH_ANFORDERUNG"),
 		@Type(value = DeleteLoeschAnforderung.class, name = "DELETE_LOESCH_ANFORDERUNG"),
-		@Type(value = GenericCommandBody.class, name = "CREATE_BESCHEID")
+		@Type(value = GenericCommandBody.class, name = "CREATE_BESCHEID"),
+		@Type(value = ExecuteProcessorBody.class, name = "EXECUTE_PROCESSOR")
 })
 public interface CommandBody {
 }
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ExecuteProcessorBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ExecuteProcessorBody.java
new file mode 100644
index 0000000000000000000000000000000000000000..f5fe156c97e087c5a9c7a2623674e4e067085f3b
--- /dev/null
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/ExecuteProcessorBody.java
@@ -0,0 +1,13 @@
+package de.ozgcloud.alfa.vorgang;
+
+import java.util.ArrayList;
+
+import de.ozgcloud.alfa.common.command.CommandBody;
+import lombok.Getter;
+
+@Getter
+public class ExecuteProcessorBody implements CommandBody {
+
+	private ArrayList<String> processorNames;
+	
+}
\ No newline at end of file
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java
index 5ab1498cd82c7a9ad66eb6cf0d533b442d3463a0..2140099e72633cdd29c9873ff9b425f4bbe4da3c 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java
@@ -14,7 +14,7 @@ import lombok.Setter;
 @Setter
 @Configuration
 @ConfigurationProperties(prefix = VorgangProperties.PREFIX)
-class VorgangProperties {
+public class VorgangProperties {
 
 	static final String PREFIX = "ozgcloud.vorgang";
 
@@ -31,7 +31,7 @@ class VorgangProperties {
 	@Builder
 	@Setter
 	@Getter
-	static class VorgangProperty {
+	public static class VorgangProperty {
 
 		private String formId;
 		private String formEngineName;
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java
index 7ef79567ddc28f389673dc545eab8832d6f26916..21f04f747ad386b7b89381187c1d2337352fd8ef 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/EnvironmentControllerTest.java
@@ -27,6 +27,8 @@ import static org.mockito.Mockito.*;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
+import java.util.List;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
@@ -35,16 +37,21 @@ import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.ResultActions;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
+import de.ozgcloud.alfa.vorgang.EingangHeaderTestFactory;
+import de.ozgcloud.alfa.vorgang.VorgangProperties;
+import de.ozgcloud.alfa.vorgang.VorgangPropertyTestFactory;
 import lombok.SneakyThrows;
 
 class EnvironmentControllerTest {
 
-	private final String PATH = "/api/environment";
-
 	@InjectMocks
 	private EnvironmentController controller;
 	@Mock
 	private OAuth2Properties oAuth2Properties;
+	@Mock
+	private GoofyProperties goofyProperties;
+	@Mock
+	private VorgangProperties vorgangProperties;
 
 	private MockMvc mockMvc;
 
@@ -53,31 +60,47 @@ class EnvironmentControllerTest {
 		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
 	}
 
+	@SneakyThrows
 	@Test
-	void shouldReturnOk() throws Exception {
+	void shouldReturnOk() {
 		var response = doRequest();
 
 		response.andExpect(status().isOk());
 	}
 
+	@SneakyThrows
 	@Test
-	void shouldHaveProductionTrueAsDefault() throws Exception {
+	void shouldHaveProductionTrueAsDefault() {
+		when(goofyProperties.isProduction()).thenReturn(true);
+		
 		var response = doRequest();
 
 		response.andExpect(jsonPath("$.production").value(true));
 	}
 
+	@SneakyThrows
 	@Test
-	void shouldHaveClientId() throws Exception {
+	void shouldHaveClientId() {
 		var client = "goofy";
 		when(oAuth2Properties.getResource()).thenReturn(client);
+		
 		var response = doRequest();
 
 		response.andExpect(jsonPath("$.clientId").value(client));
 	}
+	
+	@SneakyThrows
+	@Test
+	void shouldHaveProcessorNames() {
+		when(vorgangProperties.getAnalogButtonProcessor()).thenReturn(List.of(VorgangPropertyTestFactory.create()));
+	
+		var response = doRequest();
+
+		response.andExpect(jsonPath("$.processorNames").value(EingangHeaderTestFactory.FORM_ID));
+	}
 
 	@SneakyThrows
 	private ResultActions doRequest() {
-		return mockMvc.perform(get(PATH));
+		return mockMvc.perform(get(EnvironmentController.PREFIX));
 	}
 }
\ No newline at end of file
diff --git a/goofy-client/libs/environment-shared/src/lib/environment.model.ts b/goofy-client/libs/environment-shared/src/lib/environment.model.ts
index c615af927b747ff836e6346e52ceda1c9ce5ea4b..cd84fed8493b327833052aedb4ca235805c7b590 100644
--- a/goofy-client/libs/environment-shared/src/lib/environment.model.ts
+++ b/goofy-client/libs/environment-shared/src/lib/environment.model.ts
@@ -28,5 +28,6 @@ export interface Environment {
 	remoteHost: ResourceUri,
 	authServer: string,
 	realm: string,
-	clientId: string
+	clientId: string,
+	processorNames: string[]
 }
diff --git a/goofy-client/libs/environment-shared/test/environment.ts b/goofy-client/libs/environment-shared/test/environment.ts
index 39522ad0bed2ae7143c75f8eccbe4d5dc70a061e..d79cfdc39ebb8a6130d49be057e7367dda4ea256 100644
--- a/goofy-client/libs/environment-shared/test/environment.ts
+++ b/goofy-client/libs/environment-shared/test/environment.ts
@@ -25,14 +25,13 @@ import { faker } from '@faker-js/faker';
 import { cloneDeep } from 'lodash-es';
 import { Environment } from '../src/lib/environment.model';
 
-const baseUrl = faker.internet.url();
-
 const environment: Environment = {
 	production: false,
-	remoteHost: baseUrl,
+	remoteHost: faker.internet.url(),
 	authServer: faker.internet.url(),
 	realm: faker.random.word(),
-	clientId: faker.datatype.uuid()
+	clientId: faker.datatype.uuid(),
+	processorNames: [faker.name.findName()]
 };
 
 export function createEnvironment(): Environment {
diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts
index f95f807e9c51a5ec3e46d6777b8edd3da2a05f14..d5096557c75694ea9552b195ef0aeaba52d15dc6 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.spec.ts
@@ -25,6 +25,7 @@ import { HttpErrorResponse } from '@angular/common/http';
 import { ApiRootLinkRel, ApiRootResource, ApiRootService } from '@goofy-client/api-root-shared';
 import { BinaryFileListResource } from '@goofy-client/binary-file-shared';
 import { CommandOrder, CommandResource, CommandService, CreateCommandProps } from '@goofy-client/command-shared';
+import { Environment } from '@goofy-client/environment-shared';
 import { NavigationService } from '@goofy-client/navigation-shared';
 import { EMPTY_STRING, StateResource, createEmptyStateResource, createStateResource } from '@goofy-client/tech-shared';
 import { Mock, mock, useFromMock } from '@goofy-client/test-utils';
@@ -51,17 +52,17 @@ describe('VorgangService', () => {
 	let facade: Mock<VorgangFacade>;
 	let apiRootService: Mock<ApiRootService>;
 	let commandService: Mock<CommandService>;
+	let envConfig: Environment = <any>{ processorNames: ['dummyProcessorName'] };
 
 	beforeEach(() => {
 		navigationService = { ...mock(NavigationService) };
 		facade = mock(VorgangFacade);
 		apiRootService = mock(ApiRootService);
 		commandService = mock(CommandService);
-
 		navigationService.urlChanged = jest.fn();
 		navigationService.urlChanged.mockReturnValue(of({}));
 
-		service = new VorgangService(useFromMock(navigationService), useFromMock(facade), useFromMock(apiRootService), useFromMock(commandService));
+		service = new VorgangService(useFromMock(navigationService), useFromMock(facade), useFromMock(apiRootService), useFromMock(commandService), envConfig);
 	})
 
 	const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource();
@@ -499,7 +500,7 @@ describe('VorgangService', () => {
 		it('should call commandService', () => {
 			service.executeProcessor(vorgangWithEingang);
 
-			const expectedProps: CreateCommandProps = { resource: vorgangWithEingang, linkRel: VorgangWithEingangLinkRel.EXECUTE_PROCESSOR, command: { order: CommandOrder.EXECUTE_PROCESSOR, body: null }};
+			const expectedProps: CreateCommandProps = { resource: vorgangWithEingang, linkRel: VorgangWithEingangLinkRel.EXECUTE_PROCESSOR, command: { order: CommandOrder.EXECUTE_PROCESSOR, body: { processorNames: ['dummyProcessorName']} }};
 			expect(commandService.createCommandByOrder).toHaveBeenCalledWith(expectedProps);
 		})
 	})
diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts
index e7a33cf2698c3acdeea44f247bb9cd25778ded09..bc5d1ea187b1ddfff41be226126c75dcfb7e5623 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.service.ts
@@ -21,10 +21,11 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Injectable } from '@angular/core';
+import { Inject, Injectable } from '@angular/core';
 import { ApiRootService } from '@goofy-client/api-root-shared';
 import { BinaryFileListResource } from '@goofy-client/binary-file-shared';
 import { CommandOrder, CommandResource, CommandService, CreateCommandProps } from '@goofy-client/command-shared';
+import { ENVIRONMENT_CONFIG, Environment } from '@goofy-client/environment-shared';
 import { NavigationService } from '@goofy-client/navigation-shared';
 import { StateResource, createEmptyStateResource, doIfLoadingRequired, isNotNull } from '@goofy-client/tech-shared';
 import { ResourceUri, getUrl, hasLink } from '@ngxp/rest';
@@ -42,7 +43,12 @@ export class VorgangService {
 
 	public static readonly VORGANG_WITH_EINGANG_URL: string = 'vorgangWithEingangUrl';
 
-	constructor(private navigationService: NavigationService, private facade: VorgangFacade, private apiRootService: ApiRootService, private commandService: CommandService) { }
+	constructor(
+		private navigationService: NavigationService,
+		private facade: VorgangFacade,
+		private apiRootService: ApiRootService,
+		private commandService: CommandService,
+		@Inject(ENVIRONMENT_CONFIG) private envConfig: Environment) { }
 
 	public getVorgangWithEingang(): Observable<StateResource<VorgangWithEingangResource>> {
 		return combineLatest([this.facade.getVorgangWithEingang(), this.apiRootService.getApiRoot()]).pipe(
@@ -160,6 +166,6 @@ export class VorgangService {
 	}
 
 	private createExecuteProcessorCommandProps(vorgangWithEingang: VorgangWithEingangResource): CreateCommandProps {
-		return { resource: vorgangWithEingang, linkRel: VorgangWithEingangLinkRel.EXECUTE_PROCESSOR, command: createExecuteProcessorCommand() };
+		return { resource: vorgangWithEingang, linkRel: VorgangWithEingangLinkRel.EXECUTE_PROCESSOR, command: createExecuteProcessorCommand(this.envConfig.processorNames) };
 	}
 }
diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts
index de2fa7f2de46d79f63537f6bab05ef0abe1ea5ab..64851923696696f476b984243c567b40d6a9e3fd 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.spec.ts
@@ -134,9 +134,19 @@ describe('VorgangUtil', () => {
 	describe('create createExecuteProcessCommand', () => {
 
 		it('should have order',  () => {
-			const command: CreateCommand = createExecuteProcessorCommand();
+			const processorNames: string[] = ['dummyProcessorName'];
+
+			const command: CreateCommand = createExecuteProcessorCommand(processorNames);
 
 			expect(command.order).toBe(CommandOrder.EXECUTE_PROCESSOR);
 		})
+
+		it('should have processorNames',  () => {
+			const processorNames: string[] = ['dummyProcessorName'];
+
+			const command: CreateCommand = createExecuteProcessorCommand(processorNames);
+
+			expect(command.body.processorNames).toBe(processorNames);
+		})
 	})
 })
\ No newline at end of file
diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts
index a32e1815957a773186b77b9082b76ba20724c322..29da08c2f2ad053320c14160b6a547efa818eef5 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.util.ts
@@ -94,6 +94,6 @@ export function isAssignUserCommand(order: CommandOrder): boolean {
 	return order === CommandOrder.ASSIGN_USER;
 }
 
-export function createExecuteProcessorCommand(): CreateCommand {
-	return { order: CommandOrder.EXECUTE_PROCESSOR, body: null }; //TODO OZG-4514
+export function createExecuteProcessorCommand(processorNames: string[]): CreateCommand {
+	return { order: CommandOrder.EXECUTE_PROCESSOR, body: { processorNames } };
 }
\ No newline at end of file