diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/domain/phase/questions/Question.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/domain/phase/questions/Question.java
index fb0848cacd311d14e68b5eda171c784bb68fed32..2538a6ccc53fda15faa6894cb290f798b80b90cc 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/domain/phase/questions/Question.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/domain/phase/questions/Question.java
@@ -40,6 +40,9 @@ public class Question implements Serializable {
     )
     private Set<QuestionPhaseRelation> questionPhaseRelations = new HashSet<>();
 
+    @Column(name = "answer_required")
+    private boolean answerRequired;
+
     public Long getId() {
         return id;
     }
@@ -100,6 +103,14 @@ public class Question implements Serializable {
         this.questionPhaseRelations.add(questionPhaseRelation);
     }
 
+    public boolean isAnswerRequired() {
+        return answerRequired;
+    }
+
+    public void setAnswerRequired(boolean answerRequired) {
+        this.answerRequired = answerRequired;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
@@ -107,12 +118,13 @@ public class Question implements Serializable {
         Question question = (Question) o;
         return getOrder() == question.getOrder() &&
                 getQuestionType() == question.getQuestionType() &&
-                Objects.equals(getText(), question.getText());
+                Objects.equals(getText(), question.getText()) &&
+                Objects.equals(isAnswerRequired(), question.isAnswerRequired());
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(getQuestionType(), getText(), getOrder());
+        return Objects.hash(getQuestionType(), getText(), getOrder(), isAnswerRequired());
     }
 
     @Override
@@ -122,6 +134,7 @@ public class Question implements Serializable {
                 ", questionType=" + this.getQuestionType() +
                 ", text='" + this.getText() + '\'' +
                 ", order=" + this.getOrder() +
+                ", answerRequired=" + this.answerRequired +
                 '}';
     }
 }
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/dto/questionnaire/QuestionDTO.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/dto/questionnaire/QuestionDTO.java
index cb60689b961aa3c5b6ad5f7783d8936edcbf7f73..a833bc4dce306eeb38accce0139e2f5bffc25290 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/dto/questionnaire/QuestionDTO.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/dto/questionnaire/QuestionDTO.java
@@ -3,6 +3,8 @@ package cz.muni.ics.kypo.training.adaptive.dto.questionnaire;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import javax.persistence.Column;
+import javax.validation.constraints.NotNull;
 import java.util.Objects;
 
 @ApiModel(
@@ -12,6 +14,9 @@ public class QuestionDTO extends AbstractQuestionDTO {
 
     @ApiModelProperty(value = "Question ID. Leave blank if a new question is added", required = true, example = "1")
     private Long id;
+    @ApiModelProperty(value = "Sign if the question must be answered by the participant or not.", example = "true")
+    @NotNull(message = "{question.answerRequired.NotNull.message}")
+    private boolean answerRequired;
 
     public Long getId() {
         return id;
@@ -21,24 +26,33 @@ public class QuestionDTO extends AbstractQuestionDTO {
         this.id = id;
     }
 
+    public boolean isAnswerRequired() {
+        return answerRequired;
+    }
+
+    public void setAnswerRequired(boolean answerRequired) {
+        this.answerRequired = answerRequired;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
         if (!super.equals(o)) return false;
         QuestionDTO that = (QuestionDTO) o;
-        return Objects.equals(id, that.id);
+        return Objects.equals(id, that.id) && Objects.equals(answerRequired, that.answerRequired);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(super.hashCode(), id);
+        return Objects.hash(super.hashCode(), id, answerRequired);
     }
 
     @Override
     public String toString() {
         return "QuestionDTO{" +
                 "id=" + id +
+                "answerRequired=" + answerRequired +
                 "} " + super.toString();
     }
 }
diff --git a/src/main/resources/db/migration/V13__db_question_answer_required.sql b/src/main/resources/db/migration/V13__db_question_answer_required.sql
new file mode 100644
index 0000000000000000000000000000000000000000..4785c16394158e0953a141b578adc44f2b16e954
--- /dev/null
+++ b/src/main/resources/db/migration/V13__db_question_answer_required.sql
@@ -0,0 +1 @@
+alter table question add column answer_required boolean;