diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d12631ad44c6de3220690201abf598ec7e2b84b3..1eecb43eebbce00b56ddbff39c1218f625e38c7e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -19,3 +19,17 @@ integration tests:
   variables:
     # app specific settings
     REDIS_HOST: redis
+
+deploy preview with prefix:
+  extends: .auto-deploy-preview-chart
+  script:
+    - !reference [.setup-k8s, script]
+    - !reference [.customize-k8s, script]
+    - !reference [.create-image-pull-secrets, script]
+    - envsubst < .gitlab/preview-prefix/values-template.yaml > tmp-values.yaml
+    - envsubst < .gitlab/preview-prefix/kubernetes-resources.yaml > tmp-resources.yaml
+    - !reference [.login-registry-ro, script]
+    - kubectl apply -f tmp-resources.yaml
+    - helm dep up helm/core-ui-middleware
+    - helm upgrade -i preview-prefix helm/core-ui-middleware -f tmp-values.yaml --wait --timeout=$ROLLOUT_TIMEOUT
+  environment: null
diff --git a/.gitlab/preview-prefix/kubernetes-resources.yaml b/.gitlab/preview-prefix/kubernetes-resources.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0eb5ef83f01d771cbb9705a7f49bacf8b8ea17c1
--- /dev/null
+++ b/.gitlab/preview-prefix/kubernetes-resources.yaml
@@ -0,0 +1,178 @@
+apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: preview-app-prefix
+spec:
+  gateways:
+    - mesh
+    - istio-system/default-gateway
+  hosts:
+    - ${PREVIEW_APP_NAME}-prefix.dev.oxui.de
+  http:
+    - match:
+        - uri:
+            prefix: /help-documents
+      name: office-user-guide
+      route:
+        - destination:
+            host: preview-app-office-user-guide
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /help
+      name: user-guide
+      route:
+        - destination:
+            host: preview-app-core-user-guide
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /api/oxguard/
+      name: guard-routes
+      rewrite:
+        uri: /oxguard/
+      route:
+        - destination:
+            host: main-core-mw-http-api
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /pks/
+      name: guard-pgp-routes
+      rewrite:
+        uri: /oxguard/pgp/
+      route:
+        - destination:
+            host: main-core-mw-http-api
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /appsuite/api/
+      name: appsuite-api
+      rewrite:
+        uri: /api/
+      route:
+        - destination:
+            host: main-core-mw-http-api
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /api
+      name: api-routes
+      route:
+        - destination:
+            host: main-core-mw-http-api
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /ajax/
+      name: ajax-routes
+      rewrite:
+        uri: /appsuite/api/
+      route:
+        - destination:
+            host: main-core-mw-http-api
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /servlet/
+      name: servlet-routes
+      route:
+        - destination:
+            host: main-core-mw-http-api
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /realtime/
+      name: realtime-routes
+      route:
+        - destination:
+            host: main-core-mw-http-api
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /infostore/
+      name: infostore-routes
+      route:
+        - destination:
+            host: main-core-mw-http-api
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /socket.io/
+      name: socket-io-routes
+      route:
+        - destination:
+            host: main-core-mw-http-api
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /rt2/
+      name: rt2-routes
+      rewrite:
+        uri: /rt2/
+      route:
+        - destination:
+            host: main-core-mw-http-api
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /webservices/
+      name: soap-routes
+      route:
+        - destination:
+            host: main-core-mw-http-api
+    - match:
+        - uri:
+            prefix: /office
+      name: office-service
+      rewrite:
+        uri: /appsuite/
+      route:
+        - destination:
+            host: preview-prefix-core-ui-middleware
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /appsuite/
+      name: ui-middleware
+      route:
+        - destination:
+            host: preview-prefix-core-ui-middleware
+            port:
+              number: 80
+    - match:
+        - uri:
+            prefix: /
+      name: ui-middleware-root
+      rewrite:
+        uri: /appsuite
+      route:
+        - destination:
+            host: preview-prefix-core-ui-middleware
+            port:
+              number: 80
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: preview-prefix-core-ui-middleware
+data:
+  config.yaml: |
+    baseUrls:
+      - http://preview-app-core-ui
+      - http://preview-app-office-web
+---
diff --git a/.gitlab/preview-prefix/values-template.yaml b/.gitlab/preview-prefix/values-template.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..39b8f557a5a74bad89394de5681626f421242587
--- /dev/null
+++ b/.gitlab/preview-prefix/values-template.yaml
@@ -0,0 +1,19 @@
+imagePullSecrets:
+  - name: gitlab-registry-credentials
+
+appRoot: /appsuite/
+
+ingress:
+  enabled: false
+image:
+  registry: ${CI_REGISTRY}
+  repository: frontend/ui-middleware
+  tag: ${TAG_NAME}
+  pullPolicy: Always
+
+redis:
+  enabled: true
+  host: preview-app-redis-master.${PREVIEW_APP_NAME}.svc.cluster.local
+  prefix: ${CI_COMMIT_REF_SLUG}-${OX_COMPONENT}-prefix
+
+existingConfigMap: preview-prefix-core-ui-middleware