diff --git a/src/main/java/de/pta/mics/home/common/BackendConfig.java b/src/main/java/de/pta/mics/home/common/BackendConfig.java
index 0d4530a..a1e63aa 100644
--- a/src/main/java/de/pta/mics/home/common/BackendConfig.java
+++ b/src/main/java/de/pta/mics/home/common/BackendConfig.java
@@ -10,6 +10,7 @@
   private String micsCentralURL;
   private String micsDistributionCluster;
   private String micsHealthStateExtraPath;
+  private boolean micsCentralIsHttps;
 
   private static BackendConfig instance;
 
@@ -42,6 +43,10 @@
     return micsHealthStateExtraPath;
   }
 
+  public boolean isMicsCentralIsHttps() {
+    return micsCentralIsHttps;
+  }
+
   public static String getConfigFileName() {
     return configFileName;
   }
diff --git a/src/main/java/de/pta/mics/home/communication/RestServiceWrapper.java b/src/main/java/de/pta/mics/home/communication/RestServiceWrapper.java
index f473238..88a8133 100644
--- a/src/main/java/de/pta/mics/home/communication/RestServiceWrapper.java
+++ b/src/main/java/de/pta/mics/home/communication/RestServiceWrapper.java
@@ -17,6 +17,7 @@
 import de.pta.mics.home.common.Globals;
 
 
+import javax.ws.rs.core.Response;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 
@@ -54,7 +55,7 @@
         return createJson(response);
     }
 
-	public String performPostRequest(String restFunctionWithParams, String data) throws HttpStatusException {
+	public Response performPostRequestWithResponse(String restFunctionWithParams, String data) throws HttpStatusException {
 		String completeRequest = baseURL + "/" + restFunctionWithParams;
 
 		// create HTTP Client
@@ -78,7 +79,13 @@
 			LOGGER.warn(errtext, e);
             throw new HttpStatusException(HttpStatus.SC_SERVICE_UNAVAILABLE);
 		}
-		return createJson(response);
+        String ent = createJson(response);
+
+        Response.ResponseBuilder rb = Response.status(response.getStatusLine().getStatusCode());
+        if (ent != null) {
+            rb.entity(ent);
+        }
+        return rb.build();
 	}
 
     private CloseableHttpClient createHttpsClient() throws HttpStatusException {
diff --git a/src/main/java/de/pta/mics/home/rest/BackendRestService.java b/src/main/java/de/pta/mics/home/rest/BackendRestService.java
index 644d49a..5c2ec74 100644
--- a/src/main/java/de/pta/mics/home/rest/BackendRestService.java
+++ b/src/main/java/de/pta/mics/home/rest/BackendRestService.java
@@ -1,6 +1,7 @@
 package de.pta.mics.home.rest;
 
 import de.pta.mics.home.common.JsonGeneratorBase;
+import de.pta.mics.home.communication.RestServiceWrapper;
 import de.pta.mics.home.controller.BackendController;
 import de.pta.mics.home.controller.CentralProxy;
 import de.pta.mics.home.controller.ResponseBuilderWrapper;
@@ -59,6 +60,26 @@
 		}
 	}
 
+	@POST
+	@Path("/dispatch/")
+	@Produces("application/json")
+	public Response dispatch( String envelope ) {
+		try {
+			BackendConfig bc = BackendConfig.getInstance();
+			RestServiceWrapper restServiceWrapper = new RestServiceWrapper(bc.getMicsCentralURL(), bc.isMicsCentralIsHttps());
+			return restServiceWrapper.performPostRequestWithResponse(createDispatchURL(), envelope);
+		}
+		catch( Exception e) {
+			return responseFromException(e);
+
+		}
+	}
+
+	private String createDispatchURL() {
+		BackendConfig bc = BackendConfig.getInstance();
+		return "dispatch/"+bc.getMicsDistributionCluster();
+	}
+
 
 	private Response responseFromException(Exception e) {
 		int errcode;
diff --git a/src/main/java/de/pta/mics/home/viewmodel/ServiceRequestEnvelope.java b/src/main/java/de/pta/mics/home/viewmodel/ServiceRequestEnvelope.java
new file mode 100644
index 0000000..6dfff44
--- /dev/null
+++ b/src/main/java/de/pta/mics/home/viewmodel/ServiceRequestEnvelope.java
@@ -0,0 +1,93 @@
+package de.pta.mics.home.viewmodel;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ServiceRequestEnvelope {
+    public static class HttpHeader {
+        private String attribute;
+        private String value;
+
+        public String getAttribute() {
+            return attribute;
+        }
+
+        public void setAttribute(String attribute) {
+            this.attribute = attribute;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        public void setValue(String value) {
+            this.value = value;
+        }
+    }
+
+    private String serviceName;
+    private boolean isHttps;
+    private String method;
+    private String uriFragment;
+    private String payload;
+    private HttpHeader[] headers;
+
+    @JsonProperty
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    @JsonProperty
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    @JsonProperty
+    public boolean isHttps() {
+        return isHttps;
+    }
+
+    @JsonProperty
+    public void setHttps(boolean https) {
+        isHttps = https;
+    }
+
+    @JsonProperty
+    public String getMethod() {
+        return method;
+    }
+
+    @JsonProperty
+    public void setMethod(String method) {
+        this.method = method;
+    }
+
+    @JsonProperty
+    public String getUriFragment() {
+        return uriFragment;
+    }
+
+    @JsonProperty
+    public void setUriFragment(String uriFragment) {
+        this.uriFragment = uriFragment;
+    }
+
+    @JsonProperty
+    public String getPayload() {
+        return payload;
+    }
+
+    @JsonProperty
+    public void setPayload(String payload) {
+        this.payload = payload;
+    }
+
+    @JsonProperty
+    public HttpHeader[] getHeaders() {
+        return headers;
+    }
+
+    @JsonProperty
+    public void setHeaders(HttpHeader[] headers) {
+        this.headers = headers;
+    }
+}
diff --git a/src/main/resources/backendConfigCustom.json b/src/main/resources/backendConfigCustom.json
index 5d4e7f1..498bd18 100644
--- a/src/main/resources/backendConfigCustom.json
+++ b/src/main/resources/backendConfigCustom.json
@@ -1,5 +1,6 @@
 {
   "micsDistributionCluster" : "elogbook.openK",
   "micsCentralURL" : "http://localhost:9010/mics/central",
-  "micsHealthStateExtraPath" : "healthcheck?pretty=true"
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
 }
diff --git a/src/main/resources/backendConfigDevLocal.json b/src/main/resources/backendConfigDevLocal.json
index 5d4e7f1..498bd18 100644
--- a/src/main/resources/backendConfigDevLocal.json
+++ b/src/main/resources/backendConfigDevLocal.json
@@ -1,5 +1,6 @@
 {
   "micsDistributionCluster" : "elogbook.openK",
   "micsCentralURL" : "http://localhost:9010/mics/central",
-  "micsHealthStateExtraPath" : "healthcheck?pretty=true"
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
 }
diff --git a/src/main/resources/backendConfigDevServer.json b/src/main/resources/backendConfigDevServer.json
index 8a5d25b..51774fc 100644
--- a/src/main/resources/backendConfigDevServer.json
+++ b/src/main/resources/backendConfigDevServer.json
@@ -1,5 +1,6 @@
 {
   "micsDistributionCluster" : "elogbook.openK",
   "micsCentralURL" : "http://172.18.22.160:9010/mics/central",
-  "micsHealthStateExtraPath" : "healthcheck?pretty=true"
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
 }
diff --git a/src/main/resources/backendConfigDocker.json b/src/main/resources/backendConfigDocker.json
index f1f63e1..d762016 100644
--- a/src/main/resources/backendConfigDocker.json
+++ b/src/main/resources/backendConfigDocker.json
@@ -1,5 +1,6 @@
 {
   "micsDistributionCluster" : "elogbook.openK",
   "micsCentralURL" : "http://172.25.0.54:9010/mics/central",
-  "micsHealthStateExtraPath" : "healthcheck?pretty=true"
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
 }
diff --git a/src/main/resources/backendConfigProduction.json b/src/main/resources/backendConfigProduction.json
index aeb4d00..c5096ed 100644
--- a/src/main/resources/backendConfigProduction.json
+++ b/src/main/resources/backendConfigProduction.json
@@ -1,5 +1,6 @@
 {
   "micsDistributionCluster" : "elogbook.openK",
   "micsCentralURL" : "http://localhost:9010/mics/central",
-  "micsHealthStateExtraPath" : "healthcheck?pretty=true"
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
 }
\ No newline at end of file
diff --git a/src/test/java/de/pta/mics/home/viewmodel/ServiceRequestEnvelopeTest.java b/src/test/java/de/pta/mics/home/viewmodel/ServiceRequestEnvelopeTest.java
new file mode 100644
index 0000000..0de5b62
--- /dev/null
+++ b/src/test/java/de/pta/mics/home/viewmodel/ServiceRequestEnvelopeTest.java
@@ -0,0 +1,38 @@
+package de.pta.mics.home.viewmodel;
+
+
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class ServiceRequestEnvelopeTest {
+
+    @Test
+    public void testPojo() {
+        final String payload = "Testme Accurate";
+        ServiceRequestEnvelope env = new ServiceRequestEnvelope();
+        env.setHttps(true);
+        env.setMethod("POST");
+        env.setUriFragment("Fraggel");
+        env.setServiceName("Salve");
+
+        ServiceRequestEnvelope.HttpHeader[] headers = new ServiceRequestEnvelope.HttpHeader[2];
+        headers[0] = new ServiceRequestEnvelope.HttpHeader();
+        headers[0].setAttribute("1stAttr");
+        headers[0].setValue("1stValue");
+        headers[1] = new ServiceRequestEnvelope.HttpHeader();
+        headers[1].setAttribute("2ndAttr");
+        headers[1].setValue("2ndValue");
+        env.setHeaders(headers);
+
+        assertEquals(true, env.isHttps());
+        assertEquals("POST", env.getMethod());
+        env.setPayload(payload);
+        assertEquals(payload, env.getPayload());
+        assertEquals("Fraggel", env.getUriFragment());
+        assertEquals("Salve", env.getServiceName());
+        assertEquals(2, env.getHeaders().length);
+        assertEquals("2ndAttr", env.getHeaders()[1].getAttribute());
+        assertEquals("1stValue", env.getHeaders()[0].getValue());
+    }
+}
diff --git a/src/test/resources/serviceRequestEnvelope.json b/src/test/resources/serviceRequestEnvelope.json
new file mode 100644
index 0000000..9722f58
--- /dev/null
+++ b/src/test/resources/serviceRequestEnvelope.json
@@ -0,0 +1,17 @@
+{
+  "serviceName": "auth-n-auth.mics",
+  "isHttps": false,
+  "method": "GET",
+  "uriFragment": "versionInfo",
+  "payload": "eyAiYmFja2VuZFZlcnNpb24iOiAiMC4xLjMtU05BUFNIT1QifQ==",
+  "headers": [
+    {
+      "attribute": "Content-Type",
+      "value": "application/json"
+    },
+    {
+      "attribute": "accept",
+      "value": "application/json"
+    }
+  ]
+}
\ No newline at end of file
