diff --git a/common/lib/xmodule/xmodule/combined_open_ended_module.py b/common/lib/xmodule/xmodule/combined_open_ended_module.py
index fafcce6991594c9d59a22127566b4d42141fc971..14a59c900474b9cbf75d3345ac8d348ce6cad471 100644
--- a/common/lib/xmodule/xmodule/combined_open_ended_module.py
+++ b/common/lib/xmodule/xmodule/combined_open_ended_module.py
@@ -166,26 +166,14 @@ class CombinedOpenEndedModule(XModule):
         self._max_score = int(self.metadata.get('max_score', MAX_SCORE))
 
         if self._max_score > MAX_SCORE_ALLOWED:
-            error_message = "Max score {0} is higher than max score allowed {1}".format(self._max_score,
-                MAX_SCORE_ALLOWED)
+            error_message = "Max score {0} is higher than max score allowed {1} for location {2}".format(self._max_score,
+                MAX_SCORE_ALLOWED, location)
             log.error(error_message)
             raise IncorrectMaxScoreError(error_message)
 
         rubric_renderer = CombinedOpenEndedRubric(system, True)
         rubric_string = stringify_children(definition['rubric'])
-        success, rubric_feedback = rubric_renderer.render_rubric(rubric_string)
-        if not success:
-            error_message = "Could not parse rubric : {0}".format(definition['rubric'])
-            log.error(error_message)
-            raise RubricParsingError(error_message)
-
-        rubric_categories = rubric_renderer.extract_categories(stringify_children(definition['rubric']))
-        for category in rubric_categories:
-            if len(category['options']) > (MAX_SCORE_ALLOWED + 1):
-                error_message = "Number of score points in rubric {0} higher than the max allowed, which is {1}".format(
-                    len(category['options']), MAX_SCORE_ALLOWED)
-                log.error(error_message)
-                raise RubricParsingError(error_message)
+        rubric_renderer.check_if_rubric_is_parseable(rubric_string, location, MAX_SCORE_ALLOWED)
 
         #Static data is passed to the child modules to render
         self.static_data = {
diff --git a/common/lib/xmodule/xmodule/combined_open_ended_rubric.py b/common/lib/xmodule/xmodule/combined_open_ended_rubric.py
index 3e3d8e67f2cc3a8f1145299d9061c02081e0f45b..f8b23a27743780f78bb376f7b521fbba4496b736 100644
--- a/common/lib/xmodule/xmodule/combined_open_ended_rubric.py
+++ b/common/lib/xmodule/xmodule/combined_open_ended_rubric.py
@@ -36,6 +36,21 @@ class CombinedOpenEndedRubric(object):
             raise RubricParsingError("[render_rubric] Could not parse the rubric with xml: {0}".format(rubric_xml))
         return success, html
 
+    def check_if_rubric_is_parseable(self, rubric_string, location, max_score_allowed):
+        success, rubric_feedback = self.render_rubric(rubric_string)
+        if not success:
+            error_message = "Could not parse rubric : {0} for location {1}".format(rubric_string, location.url())
+            log.error(error_message)
+            raise RubricParsingError(error_message)
+
+        rubric_categories = self.extract_categories(rubric_string)
+        for category in rubric_categories:
+            if len(category['options']) > (max_score_allowed + 1):
+                error_message = "Number of score points in rubric {0} higher than the max allowed, which is {1}".format(
+                    len(category['options']), max_score_allowed)
+                log.error(error_message)
+                raise RubricParsingError(error_message)
+
     def extract_categories(self, element):
         '''
         Contstruct a list of categories such that the structure looks like: