Index: /ModelTranslator/resources/testdata/input/stringAndIntegerVariablesTest.rsf
===================================================================
--- /ModelTranslator/resources/testdata/input/stringAndIntegerVariablesTest.rsf	(revision 403)
+++ /ModelTranslator/resources/testdata/input/stringAndIntegerVariablesTest.rsf	(revision 404)
@@ -3,3 +3,13 @@
 Depends	STR_VAR	"INT_VAR='5'"
 Depends	INT_VAR	"STR_VAR='Hallo'"
-Depends	INT_VAR	"STR_VAR=''"
+Item	STR_WITH_MANY_COMPARISONS	string
+Item	TMP	boolean
+Depends	TMP	"STR_WITH_MANY_COMPARISONS='1'"
+Depends	TMP	"STR_WITH_MANY_COMPARISONS='2'"
+Depends	TMP	"STR_WITH_MANY_COMPARISONS='3'"
+Depends	TMP	"STR_WITH_MANY_COMPARISONS='4'"
+Depends	TMP	"STR_WITH_MANY_COMPARISONS='5'"
+Depends	TMP	"STR_WITH_MANY_COMPARISONS='6'"
+Depends	TMP	"STR_WITH_MANY_COMPARISONS='7'"
+Depends	TMP	"STR_WITH_MANY_COMPARISONS='8'"
+Depends	TMP	"STR_WITH_MANY_COMPARISONS='9'"
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 403)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 404)
@@ -1,4 +1,5 @@
 package de.uni_hildesheim.sse.trans.in.rsf;
 
+import java.util.ArrayList;
 import java.util.List;
 
@@ -13,4 +14,6 @@
 import de.uni_hildesheim.sse.trans.in.ParserException;
 import de.uni_hildesheim.sse.trans.in.ParserException.ParserExceptionType;
+import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory;
+import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory.EASyLogger;
 
 /**
@@ -20,6 +23,8 @@
  */
 abstract class RSFCondition {
-
     protected static VariablePool varPool = new VariablePool();
+    
+    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(RSFCondition.class,
+          "RSFCondition");
     
     /**
@@ -88,5 +93,18 @@
                 result = new OCLFeatureCall(variable, OclKeyWords.OR, moduleVariable);
             } else {
-                result = varPool.obtainVariable(reader.getVariable(var));
+                Variable variable = varPool.obtainVariable(reader.getVariable(var));
+                result = variable;
+                
+                int index = var.indexOf('=');
+                if (index != -1) {
+                    String originalVar = var.substring(0, index);
+                    RSFItem originalItem = reader.getItemNoCreate(originalVar);
+                    if (originalItem != null) {
+                        originalItem.addComparisonVariable(variable);
+                    } else {
+                        // TODO
+                        LOGGER.debug("RSFItem for string or int comparison missing");
+                    }
+                }
             }
         }
@@ -333,5 +351,5 @@
      * @return A {@link ConstraintSyntaxTree}.
      */
-    protected ConstraintSyntaxTree getUnselectedVariable(RSFItem variable, AbstractReader reader) {
+    protected ConstraintSyntaxTree getUnselectedVariable(RSFItem variable, RSFReader reader) {
         ConstraintSyntaxTree notVar = null;
         
@@ -340,5 +358,5 @@
         case INTEGER:
         case STRING:
-            notVar = varPool.obtainVariable(reader.getVariable(variable.getName() + "=n"));
+            notVar = getVariable(reader, variable.getName() + "=n", null);
             break;
         default:
@@ -359,5 +377,5 @@
      * @return A {@link ConstraintSyntaxTree}.
      */
-    protected ConstraintSyntaxTree getSelectedVariable(RSFItem variable, AbstractReader reader) {
+    protected ConstraintSyntaxTree getSelectedVariable(RSFItem variable, RSFReader reader) {
         ConstraintSyntaxTree var = null;
         
@@ -366,6 +384,5 @@
         case INTEGER:
         case STRING:
-            var = new OCLFeatureCall(varPool.obtainVariable(reader.getVariable(variable.getName() + "=n")),
-                    OclKeyWords.NOT);
+            var = new OCLFeatureCall(getUnselectedVariable(variable, reader), OclKeyWords.NOT);
             break;
         default:
@@ -378,3 +395,23 @@
     }
     
+    /**
+     * Creates a condition to ensure that at most one of the variables is selected.
+     * @param variables A not modified {@link List} of variables
+     * @return A List of {@link ConstraintSyntaxTree}s representing this expression. The parts should be handled as if
+     *         combined with AND. empty if expression is optimized out.
+     */
+    static List<ConstraintSyntaxTree> createComparisonVariableCondition(List<Variable> variables) {
+        List<ConstraintSyntaxTree> result = new ArrayList<ConstraintSyntaxTree>();
+        
+        for (int i = 0; i < variables.size();  i++) {
+            ConstraintSyntaxTree notVar1 = new OCLFeatureCall(variables.get(i), OclKeyWords.NOT);
+            for (int j = i + 1; j < variables.size(); j++) {
+                ConstraintSyntaxTree notVar2 = new OCLFeatureCall(variables.get(j), OclKeyWords.NOT);
+                result.add(new OCLFeatureCall(notVar1, OclKeyWords.OR, notVar2));
+            }
+        }
+        
+        return result;
+    }
+    
 }
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItem.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItem.java	(revision 403)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItem.java	(revision 404)
@@ -1,3 +1,9 @@
 package de.uni_hildesheim.sse.trans.in.rsf;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import de.uni_hildesheim.sse.model.cst.Variable;
 
 /**
@@ -12,4 +18,5 @@
     private String promptCondition;
     private RSFDefaultCondition defaultCondition;
+    private List<Variable> comparisonVariables;
     
     /**
@@ -94,4 +101,27 @@
     }
     
+    /**
+     * Adds a created comparison variable found in a constraint.
+     * @param variable The variable created from a comparison found in a constraint (e.g. STR=n)
+     */
+    public void addComparisonVariable(Variable variable) {
+        if (comparisonVariables == null) {
+            comparisonVariables = new ArrayList<Variable>();
+        }
+        comparisonVariables.add(variable);
+    }
+    
+    /**
+     * Returns a {@link List} of all variables created from comparisons found in expressions.
+     * @return An unmodifiable {@link List} of variables
+     */
+    public List<Variable> getComparisonVariables() {
+        List<Variable> result = null;
+        if (comparisonVariables != null) {
+            result = Collections.unmodifiableList(comparisonVariables);
+        }
+        return result;
+    }
+    
     @Override
     public String toString() {
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 403)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 404)
@@ -13,4 +13,5 @@
 import de.uni_hildesheim.sse.model.cst.CSTSemanticException;
 import de.uni_hildesheim.sse.model.cst.ConstraintSyntaxTree;
+import de.uni_hildesheim.sse.model.cst.Variable;
 import de.uni_hildesheim.sse.model.varModel.Constraint;
 import de.uni_hildesheim.sse.model.varModel.Project;
@@ -160,4 +161,21 @@
                 } catch (CSTSemanticException e) {
                     LOGGER.exception(e);
+                }
+            }
+        }
+        
+        // 3. Add constraints for created comparison variables
+        for (RSFItem item : items.values()) {
+            List<Variable> variables = item.getComparisonVariables();
+            if (variables != null && variables.size() > 0) {
+                List<ConstraintSyntaxTree> trees = RSFCondition.createComparisonVariableCondition(variables);
+                for (ConstraintSyntaxTree tree : trees) {
+                    Constraint constraint = new Constraint(model);
+                    try {
+                        constraint.setConsSyntax(tree);
+                        model.add(constraint);
+                    } catch (CSTSemanticException e) {
+                        LOGGER.exception(e);
+                    }
                 }
             }
Index: /ModelTranslator/test/de/uni_hildesheim/sse/trans/scenario/RsfToDimacsTranslationTest.java
===================================================================
--- /ModelTranslator/test/de/uni_hildesheim/sse/trans/scenario/RsfToDimacsTranslationTest.java	(revision 403)
+++ /ModelTranslator/test/de/uni_hildesheim/sse/trans/scenario/RsfToDimacsTranslationTest.java	(revision 404)
@@ -55,9 +55,11 @@
         // Translation
         String result = DimacsTestUtils.loadModel(input, noOptimization, true);
+        System.out.println(result);
         
         // Variables
-        DimacsTestUtils.getNumberOfVariable(result, "INT_VAR=5");
-        DimacsTestUtils.getNumberOfVariable(result, "STR_VAR=Hallo");
-        DimacsTestUtils.getNumberOfVariable(result, "STR_VAR=n");
+        int int5 = DimacsTestUtils.getNumberOfVariable(result, "INT_VAR=5");
+        int intEmpty = DimacsTestUtils.getNumberOfVariable(result, "INT_VAR=n");
+        int strHallo = DimacsTestUtils.getNumberOfVariable(result, "STR_VAR=Hallo");
+        int strEmpty = DimacsTestUtils.getNumberOfVariable(result, "STR_VAR=n");
         
         int strVar = DimacsTestUtils.getNumberOfVariableNoAssert(result, "STR_VAR");
@@ -66,4 +68,30 @@
         int intVar = DimacsTestUtils.getNumberOfVariableNoAssert(result, "INT_VAR");
         Assert.assertTrue("Integer variable without comparision included", intVar == -1);
+        
+        /*
+         * Test whether following conditions are included: (maximal 1 possible value is true)
+         * - Not(INT_VAR=5) or Not(INT_VAR=n)
+         * - Not(STR_VAR=Hallo) or Not(STR_VAR=n)
+         */
+        Assert.assertTrue("Error, missing: Not(INT_VAR=5) or Not(INT_VAR=n)",
+                DimacsTestUtils.containsConstraint(result, -int5, -intEmpty));
+        Assert.assertTrue("Error, missing: Not(STR_VAR=Hallo) or Not(STR_VAR=n)",
+                DimacsTestUtils.containsConstraint(result, -strEmpty, -strHallo));
+        
+        /*
+         * Test whether all comparison variables are found
+         */
+        int[] manyComp = new int[10];
+        for (int i = 1; i <= 9; i++) {
+            manyComp[i] = DimacsTestUtils.getNumberOfVariable(result, "STR_WITH_MANY_COMPARISONS=" + i);
+        }
+        
+        for (int i = 1; i <= 9; i++) {
+            for (int j = i + 1; j <= 9; j++) {
+                Assert.assertTrue("Error, missing constraint",
+                        DimacsTestUtils.containsConstraint(result, -manyComp[i], -manyComp[j]));
+            }
+        }
+        
     }
     
@@ -269,5 +297,4 @@
         // Translation
         String result = DimacsTestUtils.loadModel(input, noOptimization, true);
-        System.out.println(result);
         int bool1 = DimacsTestUtils.getNumberOfVariable(result, "BOOL1");
         int bool2 = DimacsTestUtils.getNumberOfVariable(result, "BOOL2");
