diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java
index 2ce7ba4cd6a62fa4f694e5a10c604f5cb3c89c7c..150bf62ead17e2c5613a7533a832c62a809998ee 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java
@@ -1,7 +1,10 @@
 package de.unikoblenz.fgbks.base.utils.boundary.bicreater;
 
 import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary;
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.Optional;
+import java.util.Set;
 
 public class BiCreaterStringCombine extends AbstractBoundaryBiCreater<StringBoundary> {
 
@@ -22,6 +25,48 @@ public class BiCreaterStringCombine extends AbstractBoundaryBiCreater<StringBoun
 
   @Override
   public Optional<StringBoundary> create(StringBoundary b1, StringBoundary b2) {
-    return Optional.empty();
+    if (b1.isMatchAny() || b2.isMatchAny()) {
+      return Optional.of(StringBoundary.getBuilder().isMatchAny(true).build());
+    }
+    if (!b1.matchesNoneOfValues() && !b2.matchesNoneOfValues()) {
+      return Optional.of(
+          StringBoundary.getBuilder().addValues(b1.getValues()).addValues(b2.getValues()).build());
+    }
+    Set<String> values = new HashSet<>();
+    if (b1.matchesNoneOfValues() && b2.matchesNoneOfValues()) {
+      values = intersection(b1.getValues(), b2.getValues());
+    }
+    if (b1.matchesNoneOfValues()) {
+      values = leftInter(b1.getValues(), b2.getValues());
+    }
+    if (b2.matchesNoneOfValues()) {
+      values = leftInter(b2.getValues(), b1.getValues());
+    }
+    return Optional.of(
+        StringBoundary.getBuilder()
+            .isMatchNoneOfValues(true)
+            .addValues(values)
+            .isMatchAny(values.size() == 0)
+            .build());
+  }
+
+  private Set<String> leftInter(String[] values1, String[] values2) {
+    Set<String> vals = new HashSet<>(Arrays.asList(values1));
+    for (String v : values2) {
+      vals.removeIf(x -> x.equals(v));
+    }
+    return vals;
+  }
+
+  private Set<String> intersection(String[] values1, String[] values2) {
+    Set<String> vals = new HashSet<>();
+    for (String v1 : values1) {
+      for (String v2 : values2) {
+        if (v1.equals(v2)) {
+          vals.add(v1);
+        }
+      }
+    }
+    return vals;
   }
 }
diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java
index 436dbc0f6b99fddab31fb313f9fd7e22ead350e9..232c476c6997ebe35e4318ec315c21573a9beaa9 100644
--- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java
@@ -21,6 +21,7 @@ import de.unikoblenz.fgbks.base.utils.boundary.Boundary;
 import de.unikoblenz.fgbks.base.utils.boundary.BoundaryParseException;
 import de.unikoblenz.fgbks.base.utils.boundary.bicreater.BiCreaterStringAppend;
 import de.unikoblenz.fgbks.base.utils.boundary.bicreater.BiCreaterStringBetween;
+import de.unikoblenz.fgbks.base.utils.boundary.bicreater.BiCreaterStringCombine;
 import de.unikoblenz.fgbks.base.utils.boundary.bicreater.BiCreaterStringIntersection;
 import de.unikoblenz.fgbks.base.utils.boundary.bicreater.BiCreaterStringLowerBounds;
 import de.unikoblenz.fgbks.base.utils.boundary.bicreater.BiCreaterStringUpperBounds;
@@ -69,7 +70,7 @@ public class StringBoundary extends AbstractBoundary<String> {
     biCreaterMap.put(UPPER_BOUNDS, BiCreaterStringUpperBounds.getInstance());
     biCreaterMap.put(BETWEEN, BiCreaterStringBetween.getInstance());
     biCreaterMap.put(APPEND, BiCreaterStringAppend.getInstance());
-    biCreaterMap.put(COMBINE, BiCreaterStringBetween.getInstance());
+    biCreaterMap.put(COMBINE, BiCreaterStringCombine.getInstance());
   }
 
   private boolean matchNoneOfValues;