diff --git a/main/survey/fillsurvey.php b/main/survey/fillsurvey.php
index f8cdbe36a1..14b70575a5 100755
--- a/main/survey/fillsurvey.php
+++ b/main/survey/fillsurvey.php
@@ -305,7 +305,7 @@ if (count($_POST) > 0) {
                 } else {
                     // All the other question types (open question, multiple choice, percentage, ...)
                     if (isset($types[$survey_question_id]) &&
-                        'percentage' == $types[$survey_question_id]) {
+                        'percentage' === $types[$survey_question_id]) {
                         $sql = "SELECT * FROM $table_survey_question_option
                                 WHERE
                                     c_id = $course_id AND
@@ -378,7 +378,6 @@ if (count($_POST) > 0) {
                 $result = Database::query($sql);
                 $row = Database::fetch_array($result, 'ASSOC');
                 $option_value = $row['value'];
-                //$option_value = 0;
                 $survey_question_answer = $value;
 
                 // We save the answer after making sure that a possible previous attempt is deleted
@@ -406,7 +405,6 @@ if (count($_POST) > 0) {
 }
 
 $user_id = api_get_user_id();
-
 if ($user_id == 0) {
     $user_id = $survey_invitation['user'];
 }
@@ -1079,7 +1077,7 @@ if ((isset($_GET['show']) && $_GET['show'] != '') ||
                         $questions = [];
                         while ($row = Database::fetch_array($result, 'ASSOC')) {
                             // If the type is not a pagebreak we store it in the $questions array
-                            if ('pagebreak' != $row['type']) {
+                            if ('pagebreak' !== $row['type']) {
                                 $questions[$row['sort']]['question_id'] = $row['question_id'];
                                 $questions[$row['sort']]['survey_id'] = $row['survey_id'];
                                 $questions[$row['sort']]['survey_question'] = $row['survey_question'];
@@ -1193,7 +1191,7 @@ if ((isset($_GET['show']) && $_GET['show'] != '') ||
                 $questions = [];
                 while ($row = Database :: fetch_array($result, 'ASSOC')) {
                     // If the type is not a pagebreak we store it in the $questions array
-                    if ('pagebreak' != $row['type']) {
+                    if ('pagebreak' !== $row['type']) {
                         $questions[$row['sort']]['question_id'] = $row['question_id'];
                         $questions[$row['sort']]['survey_id'] = $row['survey_id'];
                         $questions[$row['sort']]['survey_question'] = $row['survey_question'];
@@ -1270,6 +1268,11 @@ $form = new FormValidator(
 );
 $form->addHidden('language', $p_l);
 
+$showNumber = true;
+if (SurveyManager::hasDependency($survey_data)) {
+    $showNumber = false;
+}
+
 if (isset($questions) && is_array($questions)) {
     $originalShow = isset($_GET['show']) ? (int) $_GET['show'] : 0;
     $questionCounter = 1;
@@ -1306,7 +1309,9 @@ if (isset($questions) && is_array($questions)) {
 
         // @todo move this in a function.
         $form->addHtml('
');
-        $form->addHtml('
 '.$questionNumber.'. 
');
+        if ($showNumber) {
+            $form->addHtml('
 '.$questionNumber.'. 
');
+        }
         $form->addHtml('
'.Security::remove_XSS($question['survey_question']).'
 ');
 
         $userAnswerData = SurveyUtil::get_answers_of_question_by_user($question['survey_id'], $question['question_id']);
diff --git a/main/survey/preview.php b/main/survey/preview.php
index 77b45acced..bbe2c43a1b 100755
--- a/main/survey/preview.php
+++ b/main/survey/preview.php
@@ -93,13 +93,13 @@ if (isset($_GET['show'])) {
     if (Database::num_rows($result)) {
         while ($row = Database::fetch_array($result)) {
             if (1 == $survey_data['one_question_per_page']) {
-                if ('pagebreak' != $row['type']) {
+                if ('pagebreak' !== $row['type']) {
                     $paged_questions[$counter][] = $row['question_id'];
                     $counter++;
                     continue;
                 }
             } else {
-                if ('pagebreak' == $row['type']) {
+                if ('pagebreak' === $row['type']) {
                     $counter++;
                 } else {
                     $paged_questions[$counter][] = $row['question_id'];
@@ -143,7 +143,7 @@ if (isset($_GET['show'])) {
         $result = Database::query($sql);
         while ($row = Database::fetch_array($result)) {
             // If the type is not a pagebreak we store it in the $questions array
-            if ('pagebreak' != $row['type']) {
+            if ('pagebreak' !== $row['type']) {
                 $sort = $row['sort'];
                 $questions[$sort]['question_id'] = $row['question_id'];
                 $questions[$sort]['survey_id'] = $row['survey_id'];
@@ -191,6 +191,11 @@ if (is_array($questions) && count($questions) > 0) {
         $counter = $before + 1;
     }
 
+    $showNumber = true;
+    if (SurveyManager::hasDependency($survey_data)) {
+        $showNumber = false;
+    }
+
     $js = '';
     foreach ($questions as $key => &$question) {
         $ch_type = 'ch_'.$question['type'];
@@ -211,7 +216,9 @@ if (is_array($questions) && count($questions) > 0) {
         $js .= survey_question::getQuestionJs($question);
 
         $form->addHtml('
');
-        $form->addHtml('
 '.$counter.'. 
');
+        if ($showNumber) {
+            $form->addHtml('
 '.$counter.'. 
');
+        }
         $form->addHtml('
'.Security::remove_XSS($question['survey_question']).'
 ');
         $display->render($form, $question);
         $form->addHtml('
');
diff --git a/main/survey/survey.lib.php b/main/survey/survey.lib.php
index 970d9a7e54..e384344a48 100755
--- a/main/survey/survey.lib.php
+++ b/main/survey/survey.lib.php
@@ -2515,6 +2515,42 @@ class SurveyManager
         return true;
     }
 
+    public static function hasDependency($survey)
+    {
+        if (false === api_get_configuration_value('survey_question_dependency')) {
+            return false;
+        }
+
+        if (empty($survey)) {
+            return false;
+        }
+
+        if (!isset($survey['survey_id'])) {
+            return false;
+        }
+
+        $courseId = (int) $survey['c_id'];
+        $surveyId = (int) $survey['survey_id'];
+
+        $table = Database::get_course_table(TABLE_SURVEY_QUESTION);
+
+        $sql = "SELECT COUNT(iid) count FROM $table
+                WHERE
+                    c_id = $courseId AND
+                    survey_id = $surveyId AND
+                    parent_option_id <> 0
+                LIMIT 1
+                ";
+        $result = Database::query($sql);
+        $row = Database::fetch_array($result);
+
+        if ($row) {
+            return $row['count'] > 0;
+        }
+
+        return false;
+    }
+
     /**
      * @param array $survey
      *
@@ -2526,8 +2562,8 @@ class SurveyManager
             return 0;
         }
 
-        $courseId = $survey['c_id'];
-        $surveyId = $survey['survey_id'];
+        $courseId = (int) $survey['c_id'];
+        $surveyId = (int) $survey['survey_id'];
 
         $table = Database::get_course_table(TABLE_SURVEY_QUESTION);
 
@@ -2625,7 +2661,8 @@ class SurveyManager
         $groupId = 0
     ) {
         $invitationRepo = Database::getManager()->getRepository('ChamiloCourseBundle:CSurveyInvitation');
-        $invitations = $invitationRepo->findBy(
+
+        return $invitationRepo->findBy(
             [
                 'user' => $userId,
                 'cId' => $courseId,
@@ -2635,8 +2672,6 @@ class SurveyManager
             ],
             ['invitationDate' => 'DESC']
         );
-
-        return $invitations;
     }
 
     /**
@@ -2694,7 +2729,12 @@ class SurveyManager
                     if (empty($sessionId)) {
                         $subscribe = CourseManager::is_user_subscribed_in_course($userId, $courseCode);
                     } else {
-                        $subscribe = CourseManager::is_user_subscribed_in_course($userId, $courseCode, true, $sessionId);
+                        $subscribe = CourseManager::is_user_subscribed_in_course(
+                            $userId,
+                            $courseCode,
+                            true,
+                            $sessionId
+                        );
                     }
 
                     // User is not subscribe skip!