diff --git a/lms/djangoapps/ccx/migrations/0006_set_display_name_as_override.py b/lms/djangoapps/ccx/migrations/0006_set_display_name_as_override.py
index b66ce2754e709dbc4fbf7deea73130a4a889b8aa..c6a2e2f3c070e5ed079151c97c473e9c53daedc1 100644
--- a/lms/djangoapps/ccx/migrations/0006_set_display_name_as_override.py
+++ b/lms/djangoapps/ccx/migrations/0006_set_display_name_as_override.py
@@ -3,6 +3,7 @@
 from __future__ import unicode_literals
 
 from django.db import migrations
+from django.http import Http404
 
 import json
 import logging
@@ -28,7 +29,15 @@ def save_display_name(apps, schema_editor):
 
     # Create `display_name` overrides for these CCX courses
     for ccx in ccx_list:
-        course = get_course_by_id(ccx.course_id, depth=None)
+        try:
+            course = get_course_by_id(ccx.course_id, depth=None)
+        except Http404:
+            log.error(
+                "Root course %s not found. Can't create display_name override for %s.",
+                ccx.course_id,
+                ccx.display_name
+            )
+            continue
         display_name = course.fields['display_name']
         display_name_json = display_name.to_json(ccx.display_name)
         serialized_display_name = json.dumps(display_name_json)