From efba6e45e82ed98b0b6706228015b4c753b7a243 Mon Sep 17 00:00:00 2001
From: Ned Batchelder <ned@edx.org>
Date: Thu, 5 Sep 2019 12:30:22 -0400
Subject: [PATCH] Finally import courseware properly everywhere to get rid of a
 warning

---
 .../management/commands/edit_course_tabs.py   |  2 +-
 .../tests/test_users_default_role.py          |  2 +-
 cms/envs/common.py                            |  2 +-
 .../entitlements/api/v1/permissions.py        |  2 +-
 .../entitlements/api/v1/tests/test_views.py   |  2 +-
 common/djangoapps/student/models.py           |  2 +-
 .../djangoapps/student/tests/test_models.py   |  2 +-
 common/djangoapps/student/tests/test_roles.py |  2 +-
 common/djangoapps/student/views/dashboard.py  |  2 +-
 common/djangoapps/student/views/management.py |  2 +-
 .../xmodule/modulestore/tests/django_utils.py |  2 +-
 lms/djangoapps/branding/tests/test_page.py    |  2 +-
 lms/djangoapps/branding/views.py              |  4 ++--
 lms/djangoapps/bulk_email/tasks.py            |  2 +-
 lms/djangoapps/bulk_email/tests/test_email.py |  2 +-
 .../bulk_enroll/tests/test_views.py           |  2 +-
 lms/djangoapps/ccx/api/v0/tests/test_views.py |  2 +-
 lms/djangoapps/ccx/api/v0/views.py            |  2 +-
 .../0003_add_master_course_staff_in_ccx.py    |  4 ++--
 .../0004_seed_forum_roles_in_ccx_courses.py   |  2 +-
 .../0005_change_ccx_coach_to_staff.py         |  2 +-
 .../0006_set_display_name_as_override.py      |  2 +-
 lms/djangoapps/ccx/permissions.py             |  2 +-
 lms/djangoapps/ccx/plugins.py                 |  1 -
 .../tests/test_field_override_performance.py  |  4 ++--
 lms/djangoapps/ccx/tests/test_overrides.py    |  4 ++--
 lms/djangoapps/ccx/tests/test_views.py        | 10 ++++-----
 lms/djangoapps/ccx/utils.py                   |  2 +-
 lms/djangoapps/ccx/views.py                   |  3 +--
 lms/djangoapps/certificates/tests/test_api.py |  2 +-
 lms/djangoapps/certificates/views/support.py  |  2 +-
 lms/djangoapps/certificates/views/webview.py  |  3 +--
 .../class_dashboard/dashboard_data.py         |  2 +-
 .../tests/test_dashboard_data.py              |  2 +-
 lms/djangoapps/class_dashboard/views.py       |  4 ++--
 lms/djangoapps/commerce/api/v0/views.py       |  2 +-
 .../course_api/blocks/permissions.py          |  2 +-
 .../transformers/library_content.py           |  2 +-
 .../transformers/load_override_data.py        |  2 +-
 .../transformers/tests/test_start_date.py     |  2 +-
 lms/djangoapps/course_blocks/utils.py         |  2 +-
 lms/djangoapps/course_wiki/middleware.py      |  4 ++--
 lms/djangoapps/course_wiki/tab.py             |  2 +-
 .../course_wiki/tests/test_access.py          |  2 +-
 .../tests/test_comprehensive_theming.py       |  2 +-
 .../course_wiki/tests/test_middleware.py      |  2 +-
 lms/djangoapps/course_wiki/tests/test_tab.py  |  2 +-
 lms/djangoapps/course_wiki/tests/tests.py     |  2 +-
 lms/djangoapps/course_wiki/utils.py           |  4 ++--
 lms/djangoapps/course_wiki/views.py           |  2 +-
 lms/djangoapps/courseware/access.py           |  6 ++---
 lms/djangoapps/courseware/access_utils.py     |  4 ++--
 lms/djangoapps/courseware/admin.py            |  2 +-
 lms/djangoapps/courseware/course_tools.py     |  2 +-
 lms/djangoapps/courseware/courses.py          | 12 +++++-----
 lms/djangoapps/courseware/entrance_exams.py   |  2 +-
 ..._orgdynamicupgradedeadlineconfiguration.py |  4 ++--
 .../migrations/0011_csm_id_bigint.py          |  5 +++--
 lms/djangoapps/courseware/model_data.py       |  2 +-
 lms/djangoapps/courseware/models.py           |  8 ++++++-
 lms/djangoapps/courseware/module_render.py    |  8 +++----
 .../courseware/student_field_overrides.py     |  2 +-
 lms/djangoapps/courseware/tabs.py             |  4 ++--
 lms/djangoapps/courseware/tests/factories.py  |  2 +-
 lms/djangoapps/courseware/tests/helpers.py    |  4 ++--
 .../courseware/tests/test_access.py           | 10 ++++-----
 .../tests/test_context_processor.py           |  2 +-
 .../courseware/tests/test_course_survey.py    |  2 +-
 .../courseware/tests/test_course_tools.py     |  4 ++--
 .../courseware/tests/test_courses.py          |  6 ++---
 .../courseware/tests/test_date_summary.py     |  6 ++---
 .../tests/test_discussion_xblock.py           |  2 +-
 .../courseware/tests/test_entrance_exam.py    | 10 ++++-----
 .../courseware/tests/test_field_overrides.py  |  2 +-
 .../courseware/tests/test_group_access.py     |  4 ++--
 .../courseware/tests/test_lti_integration.py  |  4 ++--
 .../courseware/tests/test_masquerade.py       | 10 +++++----
 .../courseware/tests/test_model_data.py       | 10 ++++-----
 .../courseware/tests/test_module_render.py    | 22 ++++++++++---------
 .../courseware/tests/test_navigation.py       |  4 ++--
 .../courseware/tests/test_password_reset.py   |  2 +-
 .../tests/test_self_paced_overrides.py        |  8 ++++---
 .../courseware/tests/test_split_module.py     |  4 ++--
 .../tests/test_submitting_problems.py         |  4 ++--
 lms/djangoapps/courseware/tests/test_tabs.py  | 10 ++++-----
 .../tests/test_user_state_client.py           |  4 ++--
 .../tests/test_view_authentication.py         |  6 ++---
 lms/djangoapps/courseware/tests/test_views.py | 18 +++++++--------
 lms/djangoapps/courseware/tests/tests.py      |  2 +-
 .../courseware/user_state_client.py           |  2 +-
 lms/djangoapps/courseware/views/views.py      | 20 +++++++++--------
 .../migrations/0001_initial.py                |  2 +-
 .../coursewarehistoryextended/models.py       |  4 ++--
 .../coursewarehistoryextended/tests.py        |  4 ++--
 lms/djangoapps/dashboard/sysadmin.py          |  2 +-
 .../django_comment_client/base/views.py       |  4 ++--
 .../django_comment_client/tests/test_utils.py |  4 ++--
 .../discussion/django_comment_client/utils.py |  4 ++--
 .../commands/get_discussion_link.py           |  2 +-
 lms/djangoapps/discussion/plugins.py          |  2 +-
 lms/djangoapps/discussion/rest_api/forms.py   |  2 +-
 .../discussion/rest_api/tests/test_api.py     |  2 +-
 lms/djangoapps/discussion/views.py            |  6 ++---
 lms/djangoapps/edxnotes/helpers.py            |  4 ++--
 lms/djangoapps/edxnotes/plugins.py            |  2 +-
 lms/djangoapps/edxnotes/tests.py              |  6 ++---
 lms/djangoapps/edxnotes/views.py              |  6 ++---
 lms/djangoapps/experiments/utils.py           |  4 ++--
 lms/djangoapps/gating/tests/test_api.py       |  2 +-
 .../commands/recalculate_subsection_grades.py |  2 +-
 .../grades/migrations/0001_initial.py         |  2 +-
 .../0006_persistent_course_grades.py          |  2 +-
 .../0013_persistentsubsectiongradeoverride.py |  2 +-
 lms/djangoapps/grades/models.py               |  2 +-
 .../grades/rest_api/v1/gradebook_views.py     |  2 +-
 lms/djangoapps/grades/signals/handlers.py     |  2 +-
 .../grades/subsection_grade_factory.py        |  2 +-
 lms/djangoapps/grades/tasks.py                |  2 +-
 .../grades/tests/integration/test_access.py   |  2 +-
 .../grades/tests/integration/test_events.py   |  2 +-
 .../grades/tests/integration/test_problems.py |  2 +-
 .../grades/tests/test_course_grade_factory.py |  2 +-
 .../tests/test_subsection_grade_factory.py    |  2 +-
 lms/djangoapps/grades/tests/utils.py          |  4 ++--
 lms/djangoapps/instructor/enrollment.py       |  2 +-
 .../paidcourse_enrollment_report.py           |  4 ++--
 lms/djangoapps/instructor/permissions.py      |  2 +-
 lms/djangoapps/instructor/services.py         |  2 +-
 lms/djangoapps/instructor/tests/test_api.py   |  6 ++---
 .../tests/test_api_email_localization.py      |  2 +-
 .../instructor/tests/test_certificates.py     |  2 +-
 .../instructor/tests/test_enrollment.py       |  2 +-
 .../tests/test_registration_codes.py          |  2 +-
 .../instructor/tests/test_services.py         |  2 +-
 .../instructor/tests/test_spoc_gradebook.py   |  2 +-
 .../tests/views/test_instructor_dashboard.py  |  6 ++---
 lms/djangoapps/instructor/utils.py            |  4 ++--
 lms/djangoapps/instructor/views/api.py        |  6 ++---
 .../instructor/views/gradebook_api.py         |  2 +-
 .../instructor/views/instructor_dashboard.py  |  4 ++--
 .../instructor/views/registration_codes.py    |  2 +-
 lms/djangoapps/instructor_analytics/basic.py  |  2 +-
 .../instructor_analytics/tests/test_basic.py  |  2 +-
 lms/djangoapps/instructor_task/api_helper.py  |  4 ++--
 .../tasks_helper/enrollments.py               |  2 +-
 .../instructor_task/tasks_helper/grades.py    |  4 ++--
 .../tasks_helper/module_state.py              |  8 +++----
 .../instructor_task/tests/test_api.py         |  2 +-
 .../instructor_task/tests/test_base.py        |  4 ++--
 .../instructor_task/tests/test_integration.py |  2 +-
 .../instructor_task/tests/test_tasks.py       |  4 ++--
 .../tests/test_tasks_helper.py                |  2 +-
 .../lti_provider/tests/test_views.py          |  2 +-
 lms/djangoapps/lti_provider/views.py          |  2 +-
 .../mobile_api/course_info/views.py           |  2 +-
 .../mobile_api/tests/test_milestones.py       |  4 ++--
 lms/djangoapps/mobile_api/testutils.py        |  4 ++--
 .../mobile_api/users/serializers.py           |  2 +-
 lms/djangoapps/mobile_api/users/tests.py      |  2 +-
 lms/djangoapps/mobile_api/users/views.py      | 10 ++++-----
 lms/djangoapps/oauth2_handler/handlers.py     |  2 +-
 lms/djangoapps/shoppingcart/models.py         |  2 +-
 lms/djangoapps/shoppingcart/reports.py        |  2 +-
 .../shoppingcart/tests/test_views.py          |  2 +-
 lms/djangoapps/shoppingcart/views.py          |  2 +-
 lms/djangoapps/staticbook/views.py            |  4 ++--
 lms/djangoapps/support/decorators.py          |  2 +-
 lms/djangoapps/survey/utils.py                |  2 +-
 lms/djangoapps/teams/plugins.py               |  2 +-
 lms/djangoapps/teams/tests/test_views.py      |  2 +-
 lms/djangoapps/teams/views.py                 |  2 +-
 lms/envs/common.py                            |  8 +++----
 lms/envs/production.py                        |  2 +-
 .../lms_search_initializer.py                 |  4 ++--
 .../test/test_lms_result_processor.py         |  2 +-
 lms/templates/courseware/course_about.html    |  2 +-
 .../courseware/course_navigation.html         |  2 +-
 lms/templates/courseware/info.html            |  2 +-
 lms/templates/courseware/syllabus.html        |  2 +-
 lms/templates/enroll_staff.html               |  2 +-
 .../cohort_management.html                    |  2 +-
 .../discussions_management.html               |  2 +-
 lms/templates/video_modal.html                |  2 +-
 lms/urls.py                                   | 12 +++++-----
 .../content_libraries/tests/test_runtime.py   |  2 +-
 .../core/djangoapps/course_groups/cohorts.py  |  2 +-
 .../course_groups/partition_scheme.py         |  2 +-
 .../tests/test_partition_scheme.py            |  2 +-
 .../core/djangoapps/course_groups/views.py    |  2 +-
 .../djangoapps/enrollments/permissions.py     |  2 +-
 .../schedules/content_highlights.py           |  4 ++--
 .../commands/tests/send_email_base.py         |  2 +-
 .../management/commands/tests/upsell_base.py  |  2 +-
 .../core/djangoapps/schedules/resolvers.py    |  2 +-
 openedx/core/djangoapps/schedules/signals.py  |  2 +-
 .../schedules/tests/test_signals.py           |  2 +-
 .../djangoapps/theming/tests/test_views.py    |  2 +-
 .../partition_scheme.py                       |  2 +-
 .../core/djangoapps/xblock/runtime/runtime.py |  2 +-
 openedx/features/course_bookmarks/plugins.py  |  2 +-
 .../views/course_bookmarks.py                 |  2 +-
 .../course_duration_limits/resolvers.py       |  2 +-
 .../tests/test_access.py                      |  2 +-
 openedx/features/course_experience/plugins.py |  2 +-
 .../tests/views/test_course_home.py           |  2 +-
 .../tests/views/test_course_outline.py        |  2 +-
 .../tests/views/test_course_updates.py        |  2 +-
 .../course_experience/views/course_dates.py   |  2 +-
 .../course_experience/views/course_home.py    |  4 ++--
 .../views/course_home_messages.py             |  2 +-
 .../course_experience/views/course_outline.py |  2 +-
 .../course_experience/views/course_reviews.py |  2 +-
 .../course_experience/views/course_sock.py    |  2 +-
 .../course_experience/views/course_updates.py |  2 +-
 .../course_experience/views/latest_update.py  |  2 +-
 .../views/welcome_message.py                  |  2 +-
 .../course_search/views/course_search.py      |  2 +-
 openedx/tests/settings.py                     |  2 +-
 setup.py                                      |  2 +-
 themes/edx.org/lms/templates/dashboard.html   |  2 +-
 220 files changed, 368 insertions(+), 354 deletions(-)

diff --git a/cms/djangoapps/contentstore/management/commands/edit_course_tabs.py b/cms/djangoapps/contentstore/management/commands/edit_course_tabs.py
index f59dd7bdba2..9cb787be5f9 100644
--- a/cms/djangoapps/contentstore/management/commands/edit_course_tabs.py
+++ b/cms/djangoapps/contentstore/management/commands/edit_course_tabs.py
@@ -12,7 +12,7 @@ from django.core.management.base import BaseCommand, CommandError
 from opaque_keys.edx.keys import CourseKey
 
 from contentstore.views import tabs
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 
 from .prompt import query_yes_no
 
diff --git a/cms/djangoapps/contentstore/tests/test_users_default_role.py b/cms/djangoapps/contentstore/tests/test_users_default_role.py
index bcadfde5208..f4b613a4a0e 100644
--- a/cms/djangoapps/contentstore/tests/test_users_default_role.py
+++ b/cms/djangoapps/contentstore/tests/test_users_default_role.py
@@ -6,7 +6,7 @@ from __future__ import absolute_import
 
 from contentstore.tests.utils import AjaxEnabledTestClient
 from contentstore.utils import delete_course, reverse_url
-from courseware.tests.factories import UserFactory
+from lms.djangoapps.courseware.tests.factories import UserFactory
 from student.models import CourseEnrollment
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
 
diff --git a/cms/envs/common.py b/cms/envs/common.py
index b2b7dcda2aa..8a7a81b3cac 100644
--- a/cms/envs/common.py
+++ b/cms/envs/common.py
@@ -1298,7 +1298,7 @@ INSTALLED_APPS = [
     # by installed apps.
     'openedx.core.djangoapps.oauth_dispatch.apps.OAuthDispatchAppConfig',
     'oauth_provider',
-    'courseware',
+    'lms.djangoapps.courseware',
     'coursewarehistoryextended',
     'survey.apps.SurveyConfig',
     'lms.djangoapps.verify_student.apps.VerifyStudentConfig',
diff --git a/common/djangoapps/entitlements/api/v1/permissions.py b/common/djangoapps/entitlements/api/v1/permissions.py
index 5fab2124523..66c41e55a57 100644
--- a/common/djangoapps/entitlements/api/v1/permissions.py
+++ b/common/djangoapps/entitlements/api/v1/permissions.py
@@ -7,7 +7,7 @@ from __future__ import absolute_import
 
 from rest_framework.permissions import SAFE_METHODS, BasePermission
 
-from courseware.access import has_access
+from lms.djangoapps.courseware.access import has_access
 
 
 class IsAdminOrSupportOrAuthenticatedReadOnly(BasePermission):
diff --git a/common/djangoapps/entitlements/api/v1/tests/test_views.py b/common/djangoapps/entitlements/api/v1/tests/test_views.py
index 3d6e28d087c..c0475d48ad2 100644
--- a/common/djangoapps/entitlements/api/v1/tests/test_views.py
+++ b/common/djangoapps/entitlements/api/v1/tests/test_views.py
@@ -14,7 +14,7 @@ from opaque_keys.edx.locator import CourseKey
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.models import DynamicUpgradeDeadlineConfiguration
+from lms.djangoapps.courseware.models import DynamicUpgradeDeadlineConfiguration
 from openedx.core.djangoapps.content.course_overviews.tests.factories import CourseOverviewFactory
 from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory
 from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory
diff --git a/common/djangoapps/student/models.py b/common/djangoapps/student/models.py
index 83a22d2d7e4..3b6bc4c5298 100644
--- a/common/djangoapps/student/models.py
+++ b/common/djangoapps/student/models.py
@@ -56,7 +56,7 @@ from slumber.exceptions import HttpClientError, HttpServerError
 from user_util import user_util
 
 from course_modes.models import CourseMode, get_cosmetic_verified_display_price
-from courseware.models import (
+from lms.djangoapps.courseware.models import (
     CourseDynamicUpgradeDeadlineConfiguration,
     DynamicUpgradeDeadlineConfiguration,
     OrgDynamicUpgradeDeadlineConfiguration
diff --git a/common/djangoapps/student/tests/test_models.py b/common/djangoapps/student/tests/test_models.py
index e3d83784fdc..ae597d92627 100644
--- a/common/djangoapps/student/tests/test_models.py
+++ b/common/djangoapps/student/tests/test_models.py
@@ -17,7 +17,7 @@ from opaque_keys.edx.keys import CourseKey
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.models import DynamicUpgradeDeadlineConfiguration
+from lms.djangoapps.courseware.models import DynamicUpgradeDeadlineConfiguration
 from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
 from openedx.core.djangoapps.schedules.models import Schedule
 from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory
diff --git a/common/djangoapps/student/tests/test_roles.py b/common/djangoapps/student/tests/test_roles.py
index f74d7d67b10..db029afc82b 100644
--- a/common/djangoapps/student/tests/test_roles.py
+++ b/common/djangoapps/student/tests/test_roles.py
@@ -8,7 +8,7 @@ import six
 from django.test import TestCase
 from opaque_keys.edx.keys import CourseKey
 
-from courseware.tests.factories import InstructorFactory, StaffFactory, UserFactory
+from lms.djangoapps.courseware.tests.factories import InstructorFactory, StaffFactory, UserFactory
 from student.roles import (
     CourseBetaTesterRole,
     CourseInstructorRole,
diff --git a/common/djangoapps/student/views/dashboard.py b/common/djangoapps/student/views/dashboard.py
index 47c921f352c..92bb26c3c4e 100644
--- a/common/djangoapps/student/views/dashboard.py
+++ b/common/djangoapps/student/views/dashboard.py
@@ -24,7 +24,7 @@ import track.views
 from bulk_email.api import is_bulk_email_feature_enabled
 from bulk_email.models import Optout  # pylint: disable=import-error
 from course_modes.models import CourseMode
-from courseware.access import has_access
+from lms.djangoapps.courseware.access import has_access
 from edxmako.shortcuts import render_to_response, render_to_string
 from entitlements.models import CourseEntitlement
 from lms.djangoapps.commerce.utils import EcommerceService  # pylint: disable=import-error
diff --git a/common/djangoapps/student/views/management.py b/common/djangoapps/student/views/management.py
index 692ade4a28e..711e766d9a3 100644
--- a/common/djangoapps/student/views/management.py
+++ b/common/djangoapps/student/views/management.py
@@ -46,7 +46,7 @@ from six import text_type
 import track.views
 from bulk_email.models import Optout
 from course_modes.models import CourseMode
-from courseware.courses import get_courses, sort_by_announcement, sort_by_start_date
+from lms.djangoapps.courseware.courses import get_courses, sort_by_announcement, sort_by_start_date
 from edxmako.shortcuts import marketing_link, render_to_response, render_to_string
 from entitlements.models import CourseEntitlement
 from openedx.core.djangoapps.ace_common.template_context import get_base_template_context
diff --git a/common/lib/xmodule/xmodule/modulestore/tests/django_utils.py b/common/lib/xmodule/xmodule/modulestore/tests/django_utils.py
index a3072f6d825..32952c9304b 100644
--- a/common/lib/xmodule/xmodule/modulestore/tests/django_utils.py
+++ b/common/lib/xmodule/xmodule/modulestore/tests/django_utils.py
@@ -17,7 +17,7 @@ from django.test.utils import override_settings
 from mock import patch
 from six.moves import range
 
-from courseware.tests.factories import StaffFactory
+from lms.djangoapps.courseware.tests.factories import StaffFactory
 from lms.djangoapps.courseware.field_overrides import OverrideFieldData  # pylint: disable=import-error
 from openedx.core.djangolib.testing.utils import CacheIsolationMixin, CacheIsolationTestCase, FilteredQueryCountMixin
 from openedx.core.lib.tempdir import mkdtemp_clean
diff --git a/lms/djangoapps/branding/tests/test_page.py b/lms/djangoapps/branding/tests/test_page.py
index 693ee071bff..7cbda47029e 100644
--- a/lms/djangoapps/branding/tests/test_page.py
+++ b/lms/djangoapps/branding/tests/test_page.py
@@ -17,7 +17,7 @@ from mock import Mock, patch
 from pytz import UTC
 
 from branding.views import index
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from edxmako.shortcuts import render_to_response
 from openedx.core.djangoapps.site_configuration.tests.mixins import SiteMixin
 from util.milestones_helpers import set_prerequisite_courses
diff --git a/lms/djangoapps/branding/views.py b/lms/djangoapps/branding/views.py
index 59bcec7dc27..5d262ae0df2 100644
--- a/lms/djangoapps/branding/views.py
+++ b/lms/djangoapps/branding/views.py
@@ -17,7 +17,7 @@ from django.views.decorators.cache import cache_control
 from django.views.decorators.csrf import ensure_csrf_cookie
 
 import branding.api as branding_api
-import courseware.views.views
+import lms.djangoapps.courseware.views.views as courseware_views
 import student.views
 from edxmako.shortcuts import marketing_link, render_to_response
 from openedx.core.djangoapps.lang_pref.api import released_languages
@@ -90,7 +90,7 @@ def courses(request):
 
     #  we do not expect this case to be reached in cases where
     #  marketing is enabled or the courses are not browsable
-    return courseware.views.views.courses(request)
+    return courseware_views.courses(request)
 
 
 def _footer_static_url(request, name):
diff --git a/lms/djangoapps/bulk_email/tasks.py b/lms/djangoapps/bulk_email/tasks.py
index 106d600797d..4a512fd9091 100644
--- a/lms/djangoapps/bulk_email/tasks.py
+++ b/lms/djangoapps/bulk_email/tasks.py
@@ -41,7 +41,7 @@ from markupsafe import escape
 from six import text_type
 
 from bulk_email.models import CourseEmail, Optout
-from courseware.courses import get_course
+from lms.djangoapps.courseware.courses import get_course
 from lms.djangoapps.instructor_task.models import InstructorTask
 from lms.djangoapps.instructor_task.subtasks import (
     SubtaskStatus,
diff --git a/lms/djangoapps/bulk_email/tests/test_email.py b/lms/djangoapps/bulk_email/tests/test_email.py
index 67d50b398c6..a6b526dbfd3 100644
--- a/lms/djangoapps/bulk_email/tests/test_email.py
+++ b/lms/djangoapps/bulk_email/tests/test_email.py
@@ -24,7 +24,7 @@ from mock import Mock, patch
 from bulk_email.models import BulkEmailFlag, Optout
 from bulk_email.tasks import _get_course_email_context, _get_source_address
 from course_modes.models import CourseMode
-from courseware.tests.factories import InstructorFactory, StaffFactory
+from lms.djangoapps.courseware.tests.factories import InstructorFactory, StaffFactory
 from lms.djangoapps.instructor_task.subtasks import update_subtask_status
 from openedx.core.djangoapps.course_groups.cohorts import add_user_to_cohort
 from openedx.core.djangoapps.course_groups.models import CourseCohort
diff --git a/lms/djangoapps/bulk_enroll/tests/test_views.py b/lms/djangoapps/bulk_enroll/tests/test_views.py
index 3b9ee7ee1b2..d55dd81353c 100644
--- a/lms/djangoapps/bulk_enroll/tests/test_views.py
+++ b/lms/djangoapps/bulk_enroll/tests/test_views.py
@@ -17,7 +17,7 @@ from rest_framework.test import APIRequestFactory, APITestCase, force_authentica
 
 from bulk_enroll.serializers import BulkEnrollmentSerializer
 from bulk_enroll.views import BulkEnrollView
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from openedx.core.djangoapps.course_groups.cohorts import get_cohort_id
 from openedx.core.djangoapps.course_groups.tests.helpers import config_course_cohorts
 from openedx.core.djangoapps.site_configuration.helpers import get_value as get_site_value
diff --git a/lms/djangoapps/ccx/api/v0/tests/test_views.py b/lms/djangoapps/ccx/api/v0/tests/test_views.py
index df8f1aa4096..144186a07a0 100644
--- a/lms/djangoapps/ccx/api/v0/tests/test_views.py
+++ b/lms/djangoapps/ccx/api/v0/tests/test_views.py
@@ -27,7 +27,7 @@ from rest_framework import status
 from rest_framework.test import APITestCase
 from six.moves import range, zip
 
-from courseware import courses
+from lms.djangoapps.courseware import courses
 from lms.djangoapps.ccx.api.v0 import views
 from lms.djangoapps.ccx.models import CcxFieldOverride, CustomCourseForEdX
 from lms.djangoapps.ccx.overrides import override_field_for_ccx
diff --git a/lms/djangoapps/ccx/api/v0/views.py b/lms/djangoapps/ccx/api/v0/views.py
index 2549be8ce7e..f46e100312e 100644
--- a/lms/djangoapps/ccx/api/v0/views.py
+++ b/lms/djangoapps/ccx/api/v0/views.py
@@ -21,7 +21,7 @@ from rest_framework.generics import GenericAPIView
 from rest_framework.permissions import IsAuthenticated
 from rest_framework.response import Response
 
-from courseware import courses
+from lms.djangoapps.courseware import courses
 from lms.djangoapps.ccx.models import CcxFieldOverride, CustomCourseForEdX
 from lms.djangoapps.ccx.overrides import override_field_for_ccx
 from lms.djangoapps.ccx.utils import add_master_course_staff_to_ccx, assign_staff_role_to_ccx, is_email
diff --git a/lms/djangoapps/ccx/migrations/0003_add_master_course_staff_in_ccx.py b/lms/djangoapps/ccx/migrations/0003_add_master_course_staff_in_ccx.py
index 46da286f64f..a68b3161902 100644
--- a/lms/djangoapps/ccx/migrations/0003_add_master_course_staff_in_ccx.py
+++ b/lms/djangoapps/ccx/migrations/0003_add_master_course_staff_in_ccx.py
@@ -8,7 +8,7 @@ from ccx_keys.locator import CCXLocator
 from django.db import migrations
 from django.http import Http404
 
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from lms.djangoapps.ccx.utils import add_master_course_staff_to_ccx, remove_master_course_staff_from_ccx
 
 log = logging.getLogger("edx.ccx")
@@ -83,7 +83,7 @@ class Migration(migrations.Migration):
         ('ccx', '0001_initial'),
         ('ccx', '0002_customcourseforedx_structure_json'),
         ('course_overviews','0010_auto_20160329_2317'), # because we use course overview and are in the same release as that table is modified
-        ('verified_track_content','0001_initial'), # because we use enrollement code and are in the same release as an enrollement related table is created 
+        ('verified_track_content','0001_initial'), # because we use enrollement code and are in the same release as an enrollement related table is created
     ]
 
     operations = [
diff --git a/lms/djangoapps/ccx/migrations/0004_seed_forum_roles_in_ccx_courses.py b/lms/djangoapps/ccx/migrations/0004_seed_forum_roles_in_ccx_courses.py
index c67e28ee51d..726b23da544 100644
--- a/lms/djangoapps/ccx/migrations/0004_seed_forum_roles_in_ccx_courses.py
+++ b/lms/djangoapps/ccx/migrations/0004_seed_forum_roles_in_ccx_courses.py
@@ -8,7 +8,7 @@ from ccx_keys.locator import CCXLocator
 from django.db import migrations
 from django.http import Http404
 
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from openedx.core.djangoapps.django_comment_common.models import (
     FORUM_ROLE_ADMINISTRATOR,
     FORUM_ROLE_COMMUNITY_TA,
diff --git a/lms/djangoapps/ccx/migrations/0005_change_ccx_coach_to_staff.py b/lms/djangoapps/ccx/migrations/0005_change_ccx_coach_to_staff.py
index a42d0f0119d..f81e52d0447 100644
--- a/lms/djangoapps/ccx/migrations/0005_change_ccx_coach_to_staff.py
+++ b/lms/djangoapps/ccx/migrations/0005_change_ccx_coach_to_staff.py
@@ -9,7 +9,7 @@ from django.contrib.auth.models import User
 from django.db import migrations
 from django.http import Http404
 
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from lms.djangoapps.instructor.access import allow_access, revoke_access
 
 log = logging.getLogger("edx.ccx")
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 4fd5d62fdfb..28265dd498e 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
@@ -9,7 +9,7 @@ from ccx_keys.locator import CCXLocator
 from django.db import migrations
 from django.http import Http404
 
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 
 log = logging.getLogger(__name__)
 
diff --git a/lms/djangoapps/ccx/permissions.py b/lms/djangoapps/ccx/permissions.py
index 252078a089e..ba36b3cdb26 100644
--- a/lms/djangoapps/ccx/permissions.py
+++ b/lms/djangoapps/ccx/permissions.py
@@ -3,7 +3,7 @@ Permission definitions for the ccx djangoapp
 """
 
 from bridgekeeper import perms
-from courseware.rules import HasAccessRule
+from lms.djangoapps.courseware.rules import HasAccessRule
 
 VIEW_CCX_COACH_DASHBOARD = 'ccx.view_ccx_coach_dashboard'
 perms[VIEW_CCX_COACH_DASHBOARD] = HasAccessRule('staff')
diff --git a/lms/djangoapps/ccx/plugins.py b/lms/djangoapps/ccx/plugins.py
index 5520743f2ff..a0b5d67b94d 100644
--- a/lms/djangoapps/ccx/plugins.py
+++ b/lms/djangoapps/ccx/plugins.py
@@ -7,7 +7,6 @@ from __future__ import absolute_import
 from django.conf import settings
 from django.utils.translation import ugettext_noop
 
-from courseware.access import has_access
 from student.roles import CourseCcxCoachRole
 from xmodule.tabs import CourseTab
 
diff --git a/lms/djangoapps/ccx/tests/test_field_override_performance.py b/lms/djangoapps/ccx/tests/test_field_override_performance.py
index c8303a41522..a9a6f5f707f 100644
--- a/lms/djangoapps/ccx/tests/test_field_override_performance.py
+++ b/lms/djangoapps/ccx/tests/test_field_override_performance.py
@@ -23,8 +23,8 @@ from opaque_keys.edx.keys import CourseKey
 from pytz import UTC
 from xblock.core import XBlock
 
-from courseware.testutils import FieldOverrideTestMixin
-from courseware.views.views import progress
+from lms.djangoapps.courseware.testutils import FieldOverrideTestMixin
+from lms.djangoapps.courseware.views.views import progress
 from lms.djangoapps.ccx.tests.factories import CcxFactory
 from lms.djangoapps.courseware.field_overrides import OverrideFieldData
 from openedx.core.djangoapps.content.block_structure.api import get_course_in_cache
diff --git a/lms/djangoapps/ccx/tests/test_overrides.py b/lms/djangoapps/ccx/tests/test_overrides.py
index a3132dd220d..bb76abc23fd 100644
--- a/lms/djangoapps/ccx/tests/test_overrides.py
+++ b/lms/djangoapps/ccx/tests/test_overrides.py
@@ -13,8 +13,8 @@ from django.test.utils import override_settings
 from edx_django_utils.cache import RequestCache
 from six.moves import range
 
-from courseware.courses import get_course_by_id
-from courseware.testutils import FieldOverrideTestMixin
+from lms.djangoapps.courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.testutils import FieldOverrideTestMixin
 from lms.djangoapps.ccx.models import CustomCourseForEdX
 from lms.djangoapps.ccx.overrides import override_field_for_ccx
 from lms.djangoapps.ccx.tests.utils import flatten, iter_blocks
diff --git a/lms/djangoapps/ccx/tests/test_views.py b/lms/djangoapps/ccx/tests/test_views.py
index 347fd893421..9633f6351bb 100644
--- a/lms/djangoapps/ccx/tests/test_views.py
+++ b/lms/djangoapps/ccx/tests/test_views.py
@@ -23,11 +23,11 @@ from opaque_keys.edx.keys import CourseKey
 from pytz import UTC
 
 from capa.tests.response_xml_factory import StringResponseXMLFactory
-from courseware.courses import get_course_by_id
-from courseware.tabs import get_course_tab_list
-from courseware.tests.factories import StudentModuleFactory
-from courseware.tests.helpers import LoginEnrollmentTestCase
-from courseware.testutils import FieldOverrideTestMixin
+from lms.djangoapps.courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.tabs import get_course_tab_list
+from lms.djangoapps.courseware.tests.factories import StudentModuleFactory
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.testutils import FieldOverrideTestMixin
 from edxmako.shortcuts import render_to_response
 from lms.djangoapps.ccx.models import CustomCourseForEdX
 from lms.djangoapps.ccx.overrides import get_override_for_ccx, override_field_for_ccx
diff --git a/lms/djangoapps/ccx/utils.py b/lms/djangoapps/ccx/utils.py
index 91f55b18f43..2984dd98af1 100644
--- a/lms/djangoapps/ccx/utils.py
+++ b/lms/djangoapps/ccx/utils.py
@@ -18,7 +18,7 @@ from django.urls import reverse
 from django.utils.translation import ugettext as _
 from six.moves import map
 
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from lms.djangoapps.ccx.custom_exception import CCXUserValidationException
 from lms.djangoapps.ccx.models import CustomCourseForEdX
 from lms.djangoapps.ccx.overrides import get_override_for_ccx
diff --git a/lms/djangoapps/ccx/views.py b/lms/djangoapps/ccx/views.py
index fdd77e9708c..df81662e1d4 100644
--- a/lms/djangoapps/ccx/views.py
+++ b/lms/djangoapps/ccx/views.py
@@ -26,8 +26,7 @@ from django.views.decorators.cache import cache_control
 from django.views.decorators.csrf import ensure_csrf_cookie
 from opaque_keys.edx.keys import CourseKey
 
-from courseware.access import has_access
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from edxmako.shortcuts import render_to_response
 from lms.djangoapps.ccx.models import CustomCourseForEdX
 from lms.djangoapps.ccx.overrides import (
diff --git a/lms/djangoapps/certificates/tests/test_api.py b/lms/djangoapps/certificates/tests/test_api.py
index 8bcf21287a9..f27c767a26f 100644
--- a/lms/djangoapps/certificates/tests/test_api.py
+++ b/lms/djangoapps/certificates/tests/test_api.py
@@ -21,7 +21,7 @@ from opaque_keys.edx.locator import CourseLocator
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.tests.factories import GlobalStaffFactory
+from lms.djangoapps.courseware.tests.factories import GlobalStaffFactory
 from lms.djangoapps.certificates import api as certs_api
 from lms.djangoapps.certificates.models import (
     CertificateGenerationConfiguration,
diff --git a/lms/djangoapps/certificates/views/support.py b/lms/djangoapps/certificates/views/support.py
index b7b11c2a1ec..0dc75e158dd 100644
--- a/lms/djangoapps/certificates/views/support.py
+++ b/lms/djangoapps/certificates/views/support.py
@@ -22,7 +22,7 @@ from django.views.decorators.http import require_GET, require_POST
 from opaque_keys import InvalidKeyError
 from opaque_keys.edx.keys import CourseKey
 
-from courseware.access import has_access
+from lms.djangoapps.courseware.access import has_access
 from lms.djangoapps.certificates import api
 from lms.djangoapps.certificates.models import CertificateInvalidation
 from lms.djangoapps.instructor_task.api import generate_certificates_for_students
diff --git a/lms/djangoapps/certificates/views/webview.py b/lms/djangoapps/certificates/views/webview.py
index de46716523c..fd6f23eec7c 100644
--- a/lms/djangoapps/certificates/views/webview.py
+++ b/lms/djangoapps/certificates/views/webview.py
@@ -25,8 +25,7 @@ from opaque_keys.edx.keys import CourseKey
 
 from badges.events.course_complete import get_completion_badge
 from badges.utils import badges_enabled
-from courseware.access import has_access
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from edxmako.shortcuts import render_to_response
 from edxmako.template import Template
 from lms.djangoapps.certificates.api import (
diff --git a/lms/djangoapps/class_dashboard/dashboard_data.py b/lms/djangoapps/class_dashboard/dashboard_data.py
index ede9d871700..a53007b2cc7 100644
--- a/lms/djangoapps/class_dashboard/dashboard_data.py
+++ b/lms/djangoapps/class_dashboard/dashboard_data.py
@@ -11,7 +11,7 @@ from django.utils.translation import ugettext as _
 from opaque_keys.edx.locator import BlockUsageLocator
 from six import text_type
 
-from courseware import models
+from lms.djangoapps.courseware import models
 from lms.djangoapps.instructor_analytics.csvs import create_csv_response
 from util.json_request import JsonResponse
 from xmodule.modulestore.django import modulestore
diff --git a/lms/djangoapps/class_dashboard/tests/test_dashboard_data.py b/lms/djangoapps/class_dashboard/tests/test_dashboard_data.py
index 18ab6f83b54..9becffc0f47 100644
--- a/lms/djangoapps/class_dashboard/tests/test_dashboard_data.py
+++ b/lms/djangoapps/class_dashboard/tests/test_dashboard_data.py
@@ -26,7 +26,7 @@ from class_dashboard.dashboard_data import (
     get_students_problem_grades
 )
 from class_dashboard.views import has_instructor_access_for_class
-from courseware.tests.factories import StudentModuleFactory
+from lms.djangoapps.courseware.tests.factories import StudentModuleFactory
 from student.tests.factories import AdminFactory, CourseEnrollmentFactory, UserFactory
 from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
 from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
diff --git a/lms/djangoapps/class_dashboard/views.py b/lms/djangoapps/class_dashboard/views.py
index 33cf3754144..3c21bedb214 100644
--- a/lms/djangoapps/class_dashboard/views.py
+++ b/lms/djangoapps/class_dashboard/views.py
@@ -11,8 +11,8 @@ from django.http import HttpResponse
 from opaque_keys.edx.keys import CourseKey
 
 from class_dashboard import dashboard_data
-from courseware.access import has_access
-from courseware.courses import get_course_overview_with_access
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.courses import get_course_overview_with_access
 
 log = logging.getLogger(__name__)
 
diff --git a/lms/djangoapps/commerce/api/v0/views.py b/lms/djangoapps/commerce/api/v0/views.py
index 5fef2900cac..31ce66630a6 100644
--- a/lms/djangoapps/commerce/api/v0/views.py
+++ b/lms/djangoapps/commerce/api/v0/views.py
@@ -16,7 +16,7 @@ from rest_framework.views import APIView
 from six import text_type
 
 from course_modes.models import CourseMode
-from courseware import courses
+from lms.djangoapps.courseware import courses
 from entitlements.models import CourseEntitlement
 from openedx.core.djangoapps.commerce.utils import ecommerce_api_client
 from openedx.core.djangoapps.embargo import api as embargo_api
diff --git a/lms/djangoapps/course_api/blocks/permissions.py b/lms/djangoapps/course_api/blocks/permissions.py
index b8320cf8ed9..2951fc3679f 100644
--- a/lms/djangoapps/course_api/blocks/permissions.py
+++ b/lms/djangoapps/course_api/blocks/permissions.py
@@ -4,7 +4,7 @@ Encapsulates permissions checks for Course Blocks API
 
 from __future__ import absolute_import
 
-from courseware.access import has_access
+from lms.djangoapps.courseware.access import has_access
 from student.models import CourseEnrollment
 from student.roles import CourseStaffRole
 
diff --git a/lms/djangoapps/course_blocks/transformers/library_content.py b/lms/djangoapps/course_blocks/transformers/library_content.py
index 4f782c317af..6cbaa9ad39f 100644
--- a/lms/djangoapps/course_blocks/transformers/library_content.py
+++ b/lms/djangoapps/course_blocks/transformers/library_content.py
@@ -8,7 +8,7 @@ import json
 import six
 from eventtracking import tracker
 
-from courseware.models import StudentModule
+from lms.djangoapps.courseware.models import StudentModule
 from openedx.core.djangoapps.content.block_structure.transformer import (
     BlockStructureTransformer,
     FilteringTransformerMixin
diff --git a/lms/djangoapps/course_blocks/transformers/load_override_data.py b/lms/djangoapps/course_blocks/transformers/load_override_data.py
index f3219583945..468f7d2b048 100644
--- a/lms/djangoapps/course_blocks/transformers/load_override_data.py
+++ b/lms/djangoapps/course_blocks/transformers/load_override_data.py
@@ -5,7 +5,7 @@ from __future__ import absolute_import
 
 import json
 
-from courseware.models import StudentFieldOverride
+from lms.djangoapps.courseware.models import StudentFieldOverride
 from openedx.core.djangoapps.content.block_structure.transformer import BlockStructureTransformer
 
 # The list of fields are in support of Individual due dates and could be expanded for other use cases.
diff --git a/lms/djangoapps/course_blocks/transformers/tests/test_start_date.py b/lms/djangoapps/course_blocks/transformers/tests/test_start_date.py
index 5558a72dbd5..9454f8a3d8f 100644
--- a/lms/djangoapps/course_blocks/transformers/tests/test_start_date.py
+++ b/lms/djangoapps/course_blocks/transformers/tests/test_start_date.py
@@ -10,7 +10,7 @@ import six
 from django.utils.timezone import now
 from mock import patch
 
-from courseware.tests.factories import BetaTesterFactory
+from lms.djangoapps.courseware.tests.factories import BetaTesterFactory
 
 from ..start_date import DEFAULT_START_DATE, StartDateTransformer
 from .helpers import BlockParentsMapTestCase, update_block
diff --git a/lms/djangoapps/course_blocks/utils.py b/lms/djangoapps/course_blocks/utils.py
index 66c7b62ca34..6f2e5e87e0b 100644
--- a/lms/djangoapps/course_blocks/utils.py
+++ b/lms/djangoapps/course_blocks/utils.py
@@ -5,7 +5,7 @@ from __future__ import absolute_import
 
 import json
 
-from courseware.models import StudentModule
+from lms.djangoapps.courseware.models import StudentModule
 
 
 def get_student_module_as_dict(user, course_key, block_key):
diff --git a/lms/djangoapps/course_wiki/middleware.py b/lms/djangoapps/course_wiki/middleware.py
index 15bb7354316..7903b25f204 100644
--- a/lms/djangoapps/course_wiki/middleware.py
+++ b/lms/djangoapps/course_wiki/middleware.py
@@ -9,8 +9,8 @@ from six import text_type
 from six.moves.urllib.parse import urlparse  # pylint: disable=import-error
 from wiki.models import reverse
 
-from courseware.access import has_access
-from courseware.courses import get_course_overview_with_access, get_course_with_access
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.courses import get_course_overview_with_access, get_course_with_access
 from openedx.core.lib.request_utils import course_id_from_url
 from openedx.features.enterprise_support.api import get_enterprise_consent_url
 from student.models import CourseEnrollment
diff --git a/lms/djangoapps/course_wiki/tab.py b/lms/djangoapps/course_wiki/tab.py
index a40944b1824..f39c9ed3ead 100644
--- a/lms/djangoapps/course_wiki/tab.py
+++ b/lms/djangoapps/course_wiki/tab.py
@@ -8,7 +8,7 @@ from __future__ import absolute_import
 from django.conf import settings
 from django.utils.translation import ugettext_noop
 
-from courseware.tabs import EnrolledTab
+from lms.djangoapps.courseware.tabs import EnrolledTab
 
 
 class WikiTab(EnrolledTab):
diff --git a/lms/djangoapps/course_wiki/tests/test_access.py b/lms/djangoapps/course_wiki/tests/test_access.py
index b4e653ec2d5..ff7ec85037b 100644
--- a/lms/djangoapps/course_wiki/tests/test_access.py
+++ b/lms/djangoapps/course_wiki/tests/test_access.py
@@ -9,7 +9,7 @@ from django.contrib.auth.models import Group
 from course_wiki import settings
 from course_wiki.utils import course_wiki_slug, user_is_article_course_staff
 from course_wiki.views import get_or_create_root
-from courseware.tests.factories import InstructorFactory, StaffFactory
+from lms.djangoapps.courseware.tests.factories import InstructorFactory, StaffFactory
 from student.tests.factories import UserFactory
 from wiki.models import URLPath
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
diff --git a/lms/djangoapps/course_wiki/tests/test_comprehensive_theming.py b/lms/djangoapps/course_wiki/tests/test_comprehensive_theming.py
index 110927008ef..5519cb9593f 100644
--- a/lms/djangoapps/course_wiki/tests/test_comprehensive_theming.py
+++ b/lms/djangoapps/course_wiki/tests/test_comprehensive_theming.py
@@ -8,7 +8,7 @@ from unittest import skip
 from django.test.client import Client
 
 from course_wiki.views import get_or_create_root
-from courseware.tests.factories import InstructorFactory
+from lms.djangoapps.courseware.tests.factories import InstructorFactory
 from openedx.core.djangoapps.theming.tests.test_util import with_comprehensive_theme
 from wiki.models import URLPath
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
diff --git a/lms/djangoapps/course_wiki/tests/test_middleware.py b/lms/djangoapps/course_wiki/tests/test_middleware.py
index e6e19db5a98..687987e3a15 100644
--- a/lms/djangoapps/course_wiki/tests/test_middleware.py
+++ b/lms/djangoapps/course_wiki/tests/test_middleware.py
@@ -7,7 +7,7 @@ from __future__ import absolute_import
 from django.test.client import Client
 
 from course_wiki.views import get_or_create_root
-from courseware.tests.factories import InstructorFactory
+from lms.djangoapps.courseware.tests.factories import InstructorFactory
 from wiki.models import URLPath
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
 from xmodule.modulestore.tests.factories import CourseFactory
diff --git a/lms/djangoapps/course_wiki/tests/test_tab.py b/lms/djangoapps/course_wiki/tests/test_tab.py
index aa6eb350663..4a31d505c00 100644
--- a/lms/djangoapps/course_wiki/tests/test_tab.py
+++ b/lms/djangoapps/course_wiki/tests/test_tab.py
@@ -7,7 +7,7 @@ from __future__ import absolute_import
 from django.conf import settings
 from django.test.client import RequestFactory
 
-from courseware.tabs import get_course_tab_list
+from lms.djangoapps.courseware.tabs import get_course_tab_list
 from student.tests.factories import AdminFactory, UserFactory
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
 from xmodule.modulestore.tests.factories import CourseFactory
diff --git a/lms/djangoapps/course_wiki/tests/tests.py b/lms/djangoapps/course_wiki/tests/tests.py
index 23f7c97123d..ba57e91cf27 100644
--- a/lms/djangoapps/course_wiki/tests/tests.py
+++ b/lms/djangoapps/course_wiki/tests/tests.py
@@ -9,7 +9,7 @@ from django.urls import reverse
 from mock import patch
 from six import text_type
 
-from courseware.tests.tests import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tests.tests import LoginEnrollmentTestCase
 from openedx.features.enterprise_support.tests.mixins.enterprise import EnterpriseTestConsentRequired
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
 from xmodule.modulestore.tests.factories import CourseFactory
diff --git a/lms/djangoapps/course_wiki/utils.py b/lms/djangoapps/course_wiki/utils.py
index fd615520a58..1457456c555 100644
--- a/lms/djangoapps/course_wiki/utils.py
+++ b/lms/djangoapps/course_wiki/utils.py
@@ -6,7 +6,7 @@ from __future__ import absolute_import
 
 from django.core.exceptions import ObjectDoesNotExist
 
-import courseware
+import lms.djangoapps.courseware
 from xmodule import modulestore
 
 
@@ -47,7 +47,7 @@ def _has_wiki_staff_access(user, wiki_slug, modstore):
 
     for course_key in course_keys:
         course = modstore.get_course(course_key)
-        if courseware.access.has_access(user, 'staff', course, course_key):
+        if lms.djangoapps.courseware.access.has_access(user, 'staff', course, course_key):
             return True
     return False
 
diff --git a/lms/djangoapps/course_wiki/views.py b/lms/djangoapps/course_wiki/views.py
index acf926eaffe..8c07c41b251 100644
--- a/lms/djangoapps/course_wiki/views.py
+++ b/lms/djangoapps/course_wiki/views.py
@@ -14,7 +14,7 @@ from wiki.core.exceptions import NoRootURL
 from wiki.models import Article, URLPath
 
 from course_wiki.utils import course_wiki_slug
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
 from openedx.core.djangolib.markup import Text
 from openedx.features.enterprise_support.api import data_sharing_consent_required
diff --git a/lms/djangoapps/courseware/access.py b/lms/djangoapps/courseware/access.py
index a34b86df65f..d19cc9f6476 100644
--- a/lms/djangoapps/courseware/access.py
+++ b/lms/djangoapps/courseware/access.py
@@ -23,14 +23,14 @@ from pytz import UTC
 from six import text_type
 from xblock.core import XBlock
 
-from courseware.access_response import (
+from lms.djangoapps.courseware.access_response import (
     IncorrectPartitionGroupError,
     MilestoneAccessError,
     MobileAvailabilityError,
     NoAllowedPartitionGroupsError,
     VisibilityError
 )
-from courseware.access_utils import (
+from lms.djangoapps.courseware.access_utils import (
     ACCESS_DENIED,
     ACCESS_GRANTED,
     adjust_start_date,
@@ -39,7 +39,7 @@ from courseware.access_utils import (
     debug,
     in_preview_mode
 )
-from courseware.masquerade import get_masquerade_role, is_masquerading_as_student
+from lms.djangoapps.courseware.masquerade import get_masquerade_role, is_masquerading_as_student
 from lms.djangoapps.ccx.custom_exception import CCXLocatorValidationException
 from lms.djangoapps.ccx.models import CustomCourseForEdX
 from mobile_api.models import IgnoreMobileAvailableFlagConfig
diff --git a/lms/djangoapps/courseware/access_utils.py b/lms/djangoapps/courseware/access_utils.py
index f434d6fcaa7..d6ad23932de 100644
--- a/lms/djangoapps/courseware/access_utils.py
+++ b/lms/djangoapps/courseware/access_utils.py
@@ -12,8 +12,8 @@ from django.conf import settings
 from django.utils.translation import ugettext as _
 from pytz import UTC
 
-from courseware.access_response import AccessResponse, StartDateError
-from courseware.masquerade import get_course_masquerade, is_masquerading_as_student
+from lms.djangoapps.courseware.access_response import AccessResponse, StartDateError
+from lms.djangoapps.courseware.masquerade import get_course_masquerade, is_masquerading_as_student
 from openedx.core.djangoapps.util.user_messages import PageLevelMessages
 from openedx.core.djangolib.markup import HTML
 from openedx.features.course_experience import COURSE_PRE_START_ACCESS_FLAG
diff --git a/lms/djangoapps/courseware/admin.py b/lms/djangoapps/courseware/admin.py
index 57fa242a69e..c32fa80dd77 100644
--- a/lms/djangoapps/courseware/admin.py
+++ b/lms/djangoapps/courseware/admin.py
@@ -6,7 +6,7 @@ from __future__ import absolute_import
 from config_models.admin import ConfigurationModelAdmin, KeyedConfigurationModelAdmin
 from django.contrib import admin
 
-from courseware import models
+from lms.djangoapps.courseware import models
 
 admin.site.register(models.DynamicUpgradeDeadlineConfiguration, ConfigurationModelAdmin)
 admin.site.register(models.OfflineComputedGrade)
diff --git a/lms/djangoapps/courseware/course_tools.py b/lms/djangoapps/courseware/course_tools.py
index 9d7d7fd2901..5c4b85dfb76 100644
--- a/lms/djangoapps/courseware/course_tools.py
+++ b/lms/djangoapps/courseware/course_tools.py
@@ -11,7 +11,7 @@ from crum import get_current_request
 from django.utils.translation import ugettext as _
 
 from course_modes.models import CourseMode
-from courseware.date_summary import verified_upgrade_deadline_link
+from lms.djangoapps.courseware.date_summary import verified_upgrade_deadline_link
 from openedx.features.course_experience.course_tools import CourseTool
 from student.models import CourseEnrollment
 
diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py
index 506a4b6f4c8..cb6e786eb00 100644
--- a/lms/djangoapps/courseware/courses.py
+++ b/lms/djangoapps/courseware/courses.py
@@ -22,9 +22,9 @@ from six import text_type
 
 import branding
 from course_modes.models import CourseMode
-from courseware.access import has_access
-from courseware.access_response import MilestoneAccessError, StartDateError
-from courseware.date_summary import (
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.access_response import MilestoneAccessError, StartDateError
+from lms.djangoapps.courseware.date_summary import (
     CertificateAvailableDate,
     CourseEndDate,
     CourseStartDate,
@@ -32,9 +32,9 @@ from courseware.date_summary import (
     VerificationDeadlineDate,
     VerifiedUpgradeDeadlineDate
 )
-from courseware.masquerade import check_content_start_date_for_masquerade_user
-from courseware.model_data import FieldDataCache
-from courseware.module_render import get_module
+from lms.djangoapps.courseware.masquerade import check_content_start_date_for_masquerade_user
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.module_render import get_module
 from edxmako.shortcuts import render_to_string
 from lms.djangoapps.certificates import api as certs_api
 from lms.djangoapps.courseware.courseware_access_exception import CoursewareAccessException
diff --git a/lms/djangoapps/courseware/entrance_exams.py b/lms/djangoapps/courseware/entrance_exams.py
index 5427e00af50..8c51c53d68c 100644
--- a/lms/djangoapps/courseware/entrance_exams.py
+++ b/lms/djangoapps/courseware/entrance_exams.py
@@ -6,7 +6,7 @@ from __future__ import absolute_import
 
 from opaque_keys.edx.keys import UsageKey
 
-from courseware.access import has_access
+from lms.djangoapps.courseware.access import has_access
 from student.models import EntranceExamConfiguration
 from util.milestones_helpers import get_required_content, is_entrance_exams_enabled
 from xmodule.modulestore.django import modulestore
diff --git a/lms/djangoapps/courseware/migrations/0005_orgdynamicupgradedeadlineconfiguration.py b/lms/djangoapps/courseware/migrations/0005_orgdynamicupgradedeadlineconfiguration.py
index 43dbdff62de..48872de823b 100644
--- a/lms/djangoapps/courseware/migrations/0005_orgdynamicupgradedeadlineconfiguration.py
+++ b/lms/djangoapps/courseware/migrations/0005_orgdynamicupgradedeadlineconfiguration.py
@@ -5,7 +5,7 @@ import django.db.models.deletion
 from django.conf import settings
 from django.db import migrations, models
 
-import courseware.models
+import lms.djangoapps.courseware.models
 
 
 class Migration(migrations.Migration):
@@ -31,7 +31,7 @@ class Migration(migrations.Migration):
                 'ordering': ('-change_date',),
                 'abstract': False,
             },
-            bases=(courseware.models.OptOutDynamicUpgradeDeadlineMixin, models.Model),
+            bases=(lms.djangoapps.courseware.models.OptOutDynamicUpgradeDeadlineMixin, models.Model),
         ),
         migrations.AlterModelOptions(
             name='coursedynamicupgradedeadlineconfiguration',
diff --git a/lms/djangoapps/courseware/migrations/0011_csm_id_bigint.py b/lms/djangoapps/courseware/migrations/0011_csm_id_bigint.py
index 54ab08f77ee..6a7d6572f4f 100644
--- a/lms/djangoapps/courseware/migrations/0011_csm_id_bigint.py
+++ b/lms/djangoapps/courseware/migrations/0011_csm_id_bigint.py
@@ -2,7 +2,8 @@
 # Generated by Django 1.11.23 on 2019-08-28 15:50
 from __future__ import unicode_literals
 
-import courseware.fields
+import lms.djangoapps.courseware.fields
+
 from django.conf import settings
 from django.db import migrations
 from django.db.migrations import AlterField
@@ -36,6 +37,6 @@ class Migration(migrations.Migration):
         CsmBigInt(
             model_name='studentmodule',
             name='id',
-            field=courseware.fields.UnsignedBigIntAutoField(primary_key=True, serialize=False),
+            field=lms.djangoapps.courseware.fields.UnsignedBigIntAutoField(primary_key=True, serialize=False),
         )
     ]
diff --git a/lms/djangoapps/courseware/model_data.py b/lms/djangoapps/courseware/model_data.py
index 7c8c092c676..1fcf5468e5d 100644
--- a/lms/djangoapps/courseware/model_data.py
+++ b/lms/djangoapps/courseware/model_data.py
@@ -39,7 +39,7 @@ from xblock.exceptions import InvalidScopeError, KeyValueMultiSaveError
 from xblock.fields import Scope, UserScope
 from xblock.runtime import KeyValueStore
 
-from courseware.user_state_client import DjangoXBlockUserStateClient
+from lms.djangoapps.courseware.user_state_client import DjangoXBlockUserStateClient
 from xmodule.modulestore.django import modulestore
 
 from .models import StudentModule, XModuleStudentInfoField, XModuleStudentPrefsField, XModuleUserStateSummaryField
diff --git a/lms/djangoapps/courseware/models.py b/lms/djangoapps/courseware/models.py
index 0dfa1b892e5..84838b61d1e 100644
--- a/lms/djangoapps/courseware/models.py
+++ b/lms/djangoapps/courseware/models.py
@@ -27,7 +27,7 @@ from django.utils.encoding import python_2_unicode_compatible
 from django.utils.translation import ugettext_lazy as _
 from model_utils.models import TimeStampedModel
 from opaque_keys.edx.django.models import BlockTypeKeyField, CourseKeyField, LearningContextKeyField, UsageKeyField
-from courseware.fields import UnsignedBigIntAutoField
+from lms.djangoapps.courseware.fields import UnsignedBigIntAutoField
 from six import text_type
 from six.moves import range
 
@@ -447,6 +447,9 @@ class CourseDynamicUpgradeDeadlineConfiguration(OptOutDynamicUpgradeDeadlineMixi
 
     .. no_pii:
     """
+    class Meta(object):
+        app_label = "courseware"
+
     KEY_FIELDS = ('course_id',)
 
     course_id = CourseKeyField(max_length=255, db_index=True)
@@ -471,6 +474,9 @@ class OrgDynamicUpgradeDeadlineConfiguration(OptOutDynamicUpgradeDeadlineMixin,
 
     .. no_pii:
     """
+    class Meta(object):
+        app_label = "courseware"
+
     KEY_FIELDS = ('org_id',)
 
     org_id = models.CharField(max_length=255, db_index=True)
diff --git a/lms/djangoapps/courseware/module_render.py b/lms/djangoapps/courseware/module_render.py
index 84a9f60cc30..43c5ae8fc01 100644
--- a/lms/djangoapps/courseware/module_render.py
+++ b/lms/djangoapps/courseware/module_render.py
@@ -46,15 +46,15 @@ from xblock.runtime import KvsFieldData
 
 import static_replace
 from capa.xqueue_interface import XQueueInterface
-from courseware.access import get_user_role, has_access
-from courseware.entrance_exams import user_can_skip_entrance_exam, user_has_passed_entrance_exam
-from courseware.masquerade import (
+from lms.djangoapps.courseware.access import get_user_role, has_access
+from lms.djangoapps.courseware.entrance_exams import user_can_skip_entrance_exam, user_has_passed_entrance_exam
+from lms.djangoapps.courseware.masquerade import (
     MasqueradingKeyValueStore,
     filter_displayed_blocks,
     is_masquerading_as_specific_student,
     setup_masquerade
 )
-from courseware.model_data import DjangoKeyValueStore, FieldDataCache
+from lms.djangoapps.courseware.model_data import DjangoKeyValueStore, FieldDataCache
 from edxmako.shortcuts import render_to_string
 from lms.djangoapps.courseware.field_overrides import OverrideFieldData
 from lms.djangoapps.grades.api import GradesUtilService
diff --git a/lms/djangoapps/courseware/student_field_overrides.py b/lms/djangoapps/courseware/student_field_overrides.py
index 40c938477a3..7b20e772c6f 100644
--- a/lms/djangoapps/courseware/student_field_overrides.py
+++ b/lms/djangoapps/courseware/student_field_overrides.py
@@ -6,7 +6,7 @@ from __future__ import absolute_import
 
 import json
 
-from courseware.models import StudentFieldOverride
+from lms.djangoapps.courseware.models import StudentFieldOverride
 from openedx.core.lib.xblock_utils import is_xblock_aside
 
 from .field_overrides import FieldOverrideProvider
diff --git a/lms/djangoapps/courseware/tabs.py b/lms/djangoapps/courseware/tabs.py
index c8a8f86192d..bf7869011d3 100644
--- a/lms/djangoapps/courseware/tabs.py
+++ b/lms/djangoapps/courseware/tabs.py
@@ -9,8 +9,8 @@ from django.conf import settings
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext_noop
 
-from courseware.access import has_access
-from courseware.entrance_exams import user_can_skip_entrance_exam
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.entrance_exams import user_can_skip_entrance_exam
 from openedx.core.lib.course_tabs import CourseTabPluginManager
 from openedx.features.course_experience import UNIFIED_COURSE_TAB_FLAG, default_course_url_name
 from student.models import CourseEnrollment
diff --git a/lms/djangoapps/courseware/tests/factories.py b/lms/djangoapps/courseware/tests/factories.py
index 171f564701f..76e7d8e7857 100644
--- a/lms/djangoapps/courseware/tests/factories.py
+++ b/lms/djangoapps/courseware/tests/factories.py
@@ -11,7 +11,7 @@ from factory.django import DjangoModelFactory
 from opaque_keys.edx.keys import CourseKey
 from opaque_keys.edx.locator import CourseLocator
 
-from courseware.models import (
+from lms.djangoapps.courseware.models import (
     StudentModule,
     XModuleStudentInfoField,
     XModuleStudentPrefsField,
diff --git a/lms/djangoapps/courseware/tests/helpers.py b/lms/djangoapps/courseware/tests/helpers.py
index 19241f16da8..e1aab364d4f 100644
--- a/lms/djangoapps/courseware/tests/helpers.py
+++ b/lms/djangoapps/courseware/tests/helpers.py
@@ -17,8 +17,8 @@ from six import text_type
 from six.moves import range
 from xblock.field_data import DictFieldData
 
-from courseware.access import has_access
-from courseware.masquerade import handle_ajax, setup_masquerade
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.masquerade import handle_ajax, setup_masquerade
 from edxmako.shortcuts import render_to_string
 from lms.djangoapps.courseware.date_summary import verified_upgrade_deadline_link
 from lms.djangoapps.lms_xblock.field_data import LmsFieldData
diff --git a/lms/djangoapps/courseware/tests/test_access.py b/lms/djangoapps/courseware/tests/test_access.py
index 78473c6d5ae..cb13e48e277 100644
--- a/lms/djangoapps/courseware/tests/test_access.py
+++ b/lms/djangoapps/courseware/tests/test_access.py
@@ -19,17 +19,17 @@ from milestones.tests.utils import MilestonesTestCaseMixin
 from mock import Mock, patch
 from opaque_keys.edx.locator import CourseLocator
 
-import courseware.access as access
-import courseware.access_response as access_response
-from courseware.masquerade import CourseMasquerade
-from courseware.tests.factories import (
+import lms.djangoapps.courseware.access as access
+import lms.djangoapps.courseware.access_response as access_response
+from lms.djangoapps.courseware.masquerade import CourseMasquerade
+from lms.djangoapps.courseware.tests.factories import (
     BetaTesterFactory,
     GlobalStaffFactory,
     InstructorFactory,
     StaffFactory,
     UserFactory
 )
-from courseware.tests.helpers import LoginEnrollmentTestCase, masquerade_as_group_member
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase, masquerade_as_group_member
 from lms.djangoapps.ccx.models import CustomCourseForEdX
 from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
 from openedx.core.djangoapps.waffle_utils.testutils import WAFFLE_TABLES
diff --git a/lms/djangoapps/courseware/tests/test_context_processor.py b/lms/djangoapps/courseware/tests/test_context_processor.py
index 1ab44b91b61..539d7938f64 100644
--- a/lms/djangoapps/courseware/tests/test_context_processor.py
+++ b/lms/djangoapps/courseware/tests/test_context_processor.py
@@ -6,7 +6,7 @@ from __future__ import absolute_import
 from django.contrib.auth.models import AnonymousUser
 from mock import Mock
 
-from courseware.context_processor import user_timezone_locale_prefs
+from lms.djangoapps.courseware.context_processor import user_timezone_locale_prefs
 from openedx.core.djangoapps.user_api.preferences.api import set_user_preference
 from student.tests.factories import UserFactory
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
diff --git a/lms/djangoapps/courseware/tests/test_course_survey.py b/lms/djangoapps/courseware/tests/test_course_survey.py
index dd9069384e1..2e419d53e9a 100644
--- a/lms/djangoapps/courseware/tests/test_course_survey.py
+++ b/lms/djangoapps/courseware/tests/test_course_survey.py
@@ -13,7 +13,7 @@ from django.urls import reverse
 from six.moves import range
 
 from common.test.utils import XssTestMixin
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from survey.models import SurveyAnswer, SurveyForm
 from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
 from xmodule.modulestore.tests.factories import CourseFactory
diff --git a/lms/djangoapps/courseware/tests/test_course_tools.py b/lms/djangoapps/courseware/tests/test_course_tools.py
index 836e2546900..9a2f17e4e2c 100644
--- a/lms/djangoapps/courseware/tests/test_course_tools.py
+++ b/lms/djangoapps/courseware/tests/test_course_tools.py
@@ -13,8 +13,8 @@ from mock import patch
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.course_tools import VerifiedUpgradeTool
-from courseware.models import DynamicUpgradeDeadlineConfiguration
+from lms.djangoapps.courseware.course_tools import VerifiedUpgradeTool
+from lms.djangoapps.courseware.models import DynamicUpgradeDeadlineConfiguration
 from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
 from openedx.core.djangoapps.schedules.config import CREATE_SCHEDULE_WAFFLE_FLAG
 from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory
diff --git a/lms/djangoapps/courseware/tests/test_courses.py b/lms/djangoapps/courseware/tests/test_courses.py
index d0e682e56ea..095c87a712b 100644
--- a/lms/djangoapps/courseware/tests/test_courses.py
+++ b/lms/djangoapps/courseware/tests/test_courses.py
@@ -20,7 +20,7 @@ from opaque_keys.edx.keys import CourseKey
 from six import text_type
 from six.moves import range
 
-from courseware.courses import (
+from lms.djangoapps.courseware.courses import (
     course_open_for_self_enrollment,
     get_cms_block_link,
     get_cms_course_link,
@@ -33,8 +33,8 @@ from courseware.courses import (
     get_courses,
     get_current_child
 )
-from courseware.model_data import FieldDataCache
-from courseware.module_render import get_module_for_descriptor
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.module_render import get_module_for_descriptor
 from lms.djangoapps.courseware.courseware_access_exception import CoursewareAccessException
 from openedx.core.djangolib.testing.utils import get_mock_request
 from openedx.core.lib.courses import course_image_url
diff --git a/lms/djangoapps/courseware/tests/test_date_summary.py b/lms/djangoapps/courseware/tests/test_date_summary.py
index ecb56191533..6466636de17 100644
--- a/lms/djangoapps/courseware/tests/test_date_summary.py
+++ b/lms/djangoapps/courseware/tests/test_date_summary.py
@@ -15,8 +15,8 @@ from pytz import utc
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.courses import get_course_date_blocks
-from courseware.date_summary import (
+from lms.djangoapps.courseware.courses import get_course_date_blocks
+from lms.djangoapps.courseware.date_summary import (
     CertificateAvailableDate,
     CourseEndDate,
     CourseStartDate,
@@ -24,7 +24,7 @@ from courseware.date_summary import (
     VerificationDeadlineDate,
     VerifiedUpgradeDeadlineDate
 )
-from courseware.models import (
+from lms.djangoapps.courseware.models import (
     CourseDynamicUpgradeDeadlineConfiguration,
     DynamicUpgradeDeadlineConfiguration,
     OrgDynamicUpgradeDeadlineConfiguration
diff --git a/lms/djangoapps/courseware/tests/test_discussion_xblock.py b/lms/djangoapps/courseware/tests/test_discussion_xblock.py
index b48cec6c119..c570edf09d5 100644
--- a/lms/djangoapps/courseware/tests/test_discussion_xblock.py
+++ b/lms/djangoapps/courseware/tests/test_discussion_xblock.py
@@ -20,7 +20,7 @@ from web_fragments.fragment import Fragment
 from xblock.field_data import DictFieldData
 
 from course_api.blocks.tests.helpers import deserialize_usage_key
-from courseware.module_render import get_module_for_descriptor_internal
+from lms.djangoapps.courseware.module_render import get_module_for_descriptor_internal
 from lms.djangoapps.courseware.tests.helpers import XModuleRenderingTestBase
 from student.tests.factories import CourseEnrollmentFactory, UserFactory
 from xblock_discussion import DiscussionXBlock, loader
diff --git a/lms/djangoapps/courseware/tests/test_entrance_exam.py b/lms/djangoapps/courseware/tests/test_entrance_exam.py
index 619c350f4a5..3d688d6bbfe 100644
--- a/lms/djangoapps/courseware/tests/test_entrance_exam.py
+++ b/lms/djangoapps/courseware/tests/test_entrance_exam.py
@@ -10,16 +10,16 @@ from milestones.tests.utils import MilestonesTestCaseMixin
 from mock import Mock, patch
 
 from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
-from courseware.entrance_exams import (
+from lms.djangoapps.courseware.entrance_exams import (
     course_has_entrance_exam,
     get_entrance_exam_content,
     user_can_skip_entrance_exam,
     user_has_passed_entrance_exam
 )
-from courseware.model_data import FieldDataCache
-from courseware.module_render import get_module, handle_xblock_callback, toc_for_course
-from courseware.tests.factories import InstructorFactory, RequestFactoryNoCsrf, StaffFactory, UserFactory
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.module_render import get_module, handle_xblock_callback, toc_for_course
+from lms.djangoapps.courseware.tests.factories import InstructorFactory, RequestFactoryNoCsrf, StaffFactory, UserFactory
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from openedx.core.djangoapps.waffle_utils.testutils import override_waffle_flag
 from openedx.core.djangolib.testing.utils import get_mock_request
 from openedx.features.course_experience import COURSE_OUTLINE_PAGE_FLAG, UNIFIED_COURSE_TAB_FLAG
diff --git a/lms/djangoapps/courseware/tests/test_field_overrides.py b/lms/djangoapps/courseware/tests/test_field_overrides.py
index bca92598bfd..c8df052a3b6 100644
--- a/lms/djangoapps/courseware/tests/test_field_overrides.py
+++ b/lms/djangoapps/courseware/tests/test_field_overrides.py
@@ -133,7 +133,7 @@ class OverrideFieldDataTests(OverrideFieldBase):
 
 
 @override_settings(
-    MODULESTORE_FIELD_OVERRIDE_PROVIDERS=['courseware.tests.test_field_overrides.TestOverrideProvider']
+    MODULESTORE_FIELD_OVERRIDE_PROVIDERS=['lms.djangoapps.courseware.tests.test_field_overrides.TestOverrideProvider']
 )
 class OverrideModulestoreFieldDataTests(FieldOverrideTestMixin, OverrideFieldDataTests):
     def make_one(self):
diff --git a/lms/djangoapps/courseware/tests/test_group_access.py b/lms/djangoapps/courseware/tests/test_group_access.py
index 4fd55a78cca..11c10b72dd6 100644
--- a/lms/djangoapps/courseware/tests/test_group_access.py
+++ b/lms/djangoapps/courseware/tests/test_group_access.py
@@ -8,8 +8,8 @@ from __future__ import absolute_import
 import ddt
 from stevedore.extension import Extension, ExtensionManager
 
-import courseware.access as access
-from courseware.tests.factories import StaffFactory, UserFactory
+import lms.djangoapps.courseware.access as access
+from lms.djangoapps.courseware.tests.factories import StaffFactory, UserFactory
 from xmodule.modulestore.django import modulestore
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
 from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
diff --git a/lms/djangoapps/courseware/tests/test_lti_integration.py b/lms/djangoapps/courseware/tests/test_lti_integration.py
index 7baeb6e8924..94bed42e03b 100644
--- a/lms/djangoapps/courseware/tests/test_lti_integration.py
+++ b/lms/djangoapps/courseware/tests/test_lti_integration.py
@@ -14,8 +14,8 @@ from django.conf import settings
 from django.urls import reverse
 from six import text_type
 
-from courseware.tests.helpers import BaseTestXmodule
-from courseware.views.views import get_course_lti_endpoints
+from lms.djangoapps.courseware.tests.helpers import BaseTestXmodule
+from lms.djangoapps.courseware.views.views import get_course_lti_endpoints
 from openedx.core.lib.url_utils import quote_slashes
 from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
 from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
diff --git a/lms/djangoapps/courseware/tests/test_masquerade.py b/lms/djangoapps/courseware/tests/test_masquerade.py
index a6ce93ff17f..f0bae1c137a 100644
--- a/lms/djangoapps/courseware/tests/test_masquerade.py
+++ b/lms/djangoapps/courseware/tests/test_masquerade.py
@@ -18,10 +18,12 @@ from pytz import UTC
 from xblock.runtime import DictKeyValueStore
 
 from capa.tests.response_xml_factory import OptionResponseXMLFactory
-from courseware.masquerade import CourseMasquerade, MasqueradingKeyValueStore, get_masquerading_user_group
-from courseware.tests.factories import StaffFactory
-from courseware.tests.helpers import LoginEnrollmentTestCase, masquerade_as_group_member
-from courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin
+from lms.djangoapps.courseware.masquerade import (
+    CourseMasquerade, MasqueradingKeyValueStore, get_masquerading_user_group,
+)
+from lms.djangoapps.courseware.tests.factories import StaffFactory
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase, masquerade_as_group_member
+from lms.djangoapps.courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin
 from openedx.core.djangoapps.lang_pref import LANGUAGE_KEY
 from openedx.core.djangoapps.self_paced.models import SelfPacedConfiguration
 from openedx.core.djangoapps.user_api.preferences.api import get_user_preference, set_user_preference
diff --git a/lms/djangoapps/courseware/tests/test_model_data.py b/lms/djangoapps/courseware/tests/test_model_data.py
index c12557194ed..bb66ca772e8 100644
--- a/lms/djangoapps/courseware/tests/test_model_data.py
+++ b/lms/djangoapps/courseware/tests/test_model_data.py
@@ -13,16 +13,16 @@ from xblock.core import XBlock
 from xblock.exceptions import KeyValueMultiSaveError
 from xblock.fields import BlockScope, Scope, ScopeIds
 
-from courseware.model_data import DjangoKeyValueStore, FieldDataCache, InvalidScopeError
-from courseware.models import (
+from lms.djangoapps.courseware.model_data import DjangoKeyValueStore, FieldDataCache, InvalidScopeError
+from lms.djangoapps.courseware.models import (
     StudentModule,
     XModuleStudentInfoField,
     XModuleStudentPrefsField,
     XModuleUserStateSummaryField
 )
-from courseware.tests.factories import StudentInfoFactory
-from courseware.tests.factories import StudentModuleFactory as cmfStudentModuleFactory
-from courseware.tests.factories import StudentPrefsFactory, UserStateSummaryFactory, course_id, location
+from lms.djangoapps.courseware.tests.factories import StudentInfoFactory
+from lms.djangoapps.courseware.tests.factories import StudentModuleFactory as cmfStudentModuleFactory
+from lms.djangoapps.courseware.tests.factories import StudentPrefsFactory, UserStateSummaryFactory, course_id, location
 from student.tests.factories import UserFactory
 
 
diff --git a/lms/djangoapps/courseware/tests/test_module_render.py b/lms/djangoapps/courseware/tests/test_module_render.py
index 4ee1b6ca1d1..dad40d99f81 100644
--- a/lms/djangoapps/courseware/tests/test_module_render.py
+++ b/lms/djangoapps/courseware/tests/test_module_render.py
@@ -45,16 +45,18 @@ from xblock.test.tools import TestRuntime
 
 from capa.tests.response_xml_factory import OptionResponseXMLFactory
 from course_modes.models import CourseMode
-from courseware import module_render as render
-from courseware.access_response import AccessResponse
-from courseware.courses import get_course_info_section, get_course_with_access
-from courseware.masquerade import CourseMasquerade
-from courseware.model_data import FieldDataCache
-from courseware.models import StudentModule
-from courseware.module_render import get_module_for_descriptor, hash_resource
-from courseware.tests.factories import GlobalStaffFactory, RequestFactoryNoCsrf, StudentModuleFactory, UserFactory
-from courseware.tests.test_submitting_problems import TestSubmittingProblems
-from courseware.tests.tests import LoginEnrollmentTestCase
+from lms.djangoapps.courseware import module_render as render
+from lms.djangoapps.courseware.access_response import AccessResponse
+from lms.djangoapps.courseware.courses import get_course_info_section, get_course_with_access
+from lms.djangoapps.courseware.masquerade import CourseMasquerade
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.models import StudentModule
+from lms.djangoapps.courseware.module_render import get_module_for_descriptor, hash_resource
+from lms.djangoapps.courseware.tests.factories import (
+    GlobalStaffFactory, RequestFactoryNoCsrf, StudentModuleFactory, UserFactory,
+)
+from lms.djangoapps.courseware.tests.test_submitting_problems import TestSubmittingProblems
+from lms.djangoapps.courseware.tests.tests import LoginEnrollmentTestCase
 from lms.djangoapps.courseware.field_overrides import OverrideFieldData
 from lms.djangoapps.lms_xblock.field_data import LmsFieldData
 from openedx.core.djangoapps.credit.api import set_credit_requirement_status, set_credit_requirements
diff --git a/lms/djangoapps/courseware/tests/test_navigation.py b/lms/djangoapps/courseware/tests/test_navigation.py
index b07889c2d87..ad20a5c94de 100644
--- a/lms/djangoapps/courseware/tests/test_navigation.py
+++ b/lms/djangoapps/courseware/tests/test_navigation.py
@@ -12,8 +12,8 @@ from mock import patch
 from six import text_type
 from six.moves import range
 
-from courseware.tests.factories import GlobalStaffFactory
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tests.factories import GlobalStaffFactory
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from openedx.core.djangoapps.waffle_utils.testutils import override_waffle_flag
 from openedx.features.course_experience import COURSE_OUTLINE_PAGE_FLAG
 from student.tests.factories import UserFactory
diff --git a/lms/djangoapps/courseware/tests/test_password_reset.py b/lms/djangoapps/courseware/tests/test_password_reset.py
index a0fc597e2e9..e603c862692 100644
--- a/lms/djangoapps/courseware/tests/test_password_reset.py
+++ b/lms/djangoapps/courseware/tests/test_password_reset.py
@@ -11,7 +11,7 @@ from django.contrib.auth.tokens import default_token_generator
 from django.test.utils import override_settings
 from django.utils.http import int_to_base36
 
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from util.password_policy_validators import create_validator_config
 
 
diff --git a/lms/djangoapps/courseware/tests/test_self_paced_overrides.py b/lms/djangoapps/courseware/tests/test_self_paced_overrides.py
index f4fbeb32afa..4769fd7278a 100644
--- a/lms/djangoapps/courseware/tests/test_self_paced_overrides.py
+++ b/lms/djangoapps/courseware/tests/test_self_paced_overrides.py
@@ -8,8 +8,8 @@ import pytz
 from django.test.utils import override_settings
 from mock import patch
 
-from courseware.access import has_access
-from courseware.tests.factories import BetaTesterFactory
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.tests.factories import BetaTesterFactory
 from lms.djangoapps.ccx.tests.test_overrides import inject_field_overrides
 from lms.djangoapps.courseware.field_overrides import OverrideFieldData, OverrideModulestoreFieldData
 from lms.djangoapps.discussion.django_comment_client.utils import get_accessible_discussion_xblocks
@@ -19,7 +19,9 @@ from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
 
 @override_settings(
     XBLOCK_FIELD_DATA_WRAPPERS=['lms.djangoapps.courseware.field_overrides:OverrideModulestoreFieldData.wrap'],
-    MODULESTORE_FIELD_OVERRIDE_PROVIDERS=['courseware.self_paced_overrides.SelfPacedDateOverrideProvider'],
+    MODULESTORE_FIELD_OVERRIDE_PROVIDERS=[
+        'lms.djangoapps.courseware.self_paced_overrides.SelfPacedDateOverrideProvider'
+    ],
 )
 class SelfPacedDateOverrideTest(ModuleStoreTestCase):
     """
diff --git a/lms/djangoapps/courseware/tests/test_split_module.py b/lms/djangoapps/courseware/tests/test_split_module.py
index ddb7ff41e64..06c22aa0f8e 100644
--- a/lms/djangoapps/courseware/tests/test_split_module.py
+++ b/lms/djangoapps/courseware/tests/test_split_module.py
@@ -8,8 +8,8 @@ from django.urls import reverse
 from mock import MagicMock
 from six import text_type
 
-from courseware.model_data import FieldDataCache
-from courseware.module_render import get_module_for_descriptor
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.module_render import get_module_for_descriptor
 from openedx.core.djangoapps.user_api.tests.factories import UserCourseTagFactory
 from student.tests.factories import CourseEnrollmentFactory, UserFactory
 from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
diff --git a/lms/djangoapps/courseware/tests/test_submitting_problems.py b/lms/djangoapps/courseware/tests/test_submitting_problems.py
index 6b690fa8dab..243d1bb51e5 100644
--- a/lms/djangoapps/courseware/tests/test_submitting_problems.py
+++ b/lms/djangoapps/courseware/tests/test_submitting_problems.py
@@ -30,8 +30,8 @@ from capa.tests.response_xml_factory import (
     SchematicResponseXMLFactory
 )
 from course_modes.models import CourseMode
-from courseware.models import BaseStudentModuleHistory, StudentModule
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.models import BaseStudentModuleHistory, StudentModule
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from lms.djangoapps.grades.api import CourseGradeFactory, task_compute_all_grades_for_course
 from openedx.core.djangoapps.credit.api import get_credit_requirement_status, set_credit_requirements
 from openedx.core.djangoapps.credit.models import CreditCourse, CreditProvider
diff --git a/lms/djangoapps/courseware/tests/test_tabs.py b/lms/djangoapps/courseware/tests/test_tabs.py
index 394c519b0d0..a26aebfd9e3 100644
--- a/lms/djangoapps/courseware/tests/test_tabs.py
+++ b/lms/djangoapps/courseware/tests/test_tabs.py
@@ -13,8 +13,8 @@ from mock import MagicMock, Mock, patch
 from six import text_type
 from six.moves import range
 
-from courseware.courses import get_course_by_id
-from courseware.tabs import (
+from lms.djangoapps.courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.tabs import (
     CourseInfoTab,
     CoursewareTab,
     ExternalDiscussionCourseTab,
@@ -22,9 +22,9 @@ from courseware.tabs import (
     ProgressTab,
     get_course_tab_list
 )
-from courseware.tests.factories import InstructorFactory, StaffFactory
-from courseware.tests.helpers import LoginEnrollmentTestCase
-from courseware.views.views import StaticCourseTabView, get_static_tab_fragment
+from lms.djangoapps.courseware.tests.factories import InstructorFactory, StaffFactory
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.views.views import StaticCourseTabView, get_static_tab_fragment
 from openedx.core.djangoapps.waffle_utils.testutils import override_waffle_flag
 from openedx.core.djangolib.testing.utils import get_mock_request
 from openedx.features.course_experience import UNIFIED_COURSE_TAB_FLAG
diff --git a/lms/djangoapps/courseware/tests/test_user_state_client.py b/lms/djangoapps/courseware/tests/test_user_state_client.py
index b12b8069328..a220dbd77da 100644
--- a/lms/djangoapps/courseware/tests/test_user_state_client.py
+++ b/lms/djangoapps/courseware/tests/test_user_state_client.py
@@ -9,8 +9,8 @@ from collections import defaultdict
 
 from edx_user_state_client.tests import UserStateClientTestBase
 
-from courseware.tests.factories import UserFactory
-from courseware.user_state_client import DjangoXBlockUserStateClient
+from lms.djangoapps.courseware.tests.factories import UserFactory
+from lms.djangoapps.courseware.user_state_client import DjangoXBlockUserStateClient
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
 
 
diff --git a/lms/djangoapps/courseware/tests/test_view_authentication.py b/lms/djangoapps/courseware/tests/test_view_authentication.py
index 6892397fa26..21bbe53f24a 100644
--- a/lms/djangoapps/courseware/tests/test_view_authentication.py
+++ b/lms/djangoapps/courseware/tests/test_view_authentication.py
@@ -12,8 +12,8 @@ from mock import patch
 from six import text_type
 from six.moves import range
 
-from courseware.access import has_access
-from courseware.tests.factories import (
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.tests.factories import (
     BetaTesterFactory,
     GlobalStaffFactory,
     InstructorFactory,
@@ -21,7 +21,7 @@ from courseware.tests.factories import (
     OrgStaffFactory,
     StaffFactory
 )
-from courseware.tests.helpers import CourseAccessTestMixin, LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tests.helpers import CourseAccessTestMixin, LoginEnrollmentTestCase
 from openedx.features.enterprise_support.tests.mixins.enterprise import EnterpriseTestConsentRequired
 from student.tests.factories import CourseEnrollmentFactory, UserFactory
 from xmodule.modulestore.django import modulestore
diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py
index e27aa3c1737..7cb2876f4f0 100644
--- a/lms/djangoapps/courseware/tests/test_views.py
+++ b/lms/djangoapps/courseware/tests/test_views.py
@@ -36,20 +36,20 @@ from web_fragments.fragment import Fragment
 from xblock.core import XBlock
 from xblock.fields import Scope, String
 
-import courseware.views.views as views
+import lms.djangoapps.courseware.views.views as views
 import shoppingcart
 
 from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.access_utils import check_course_open_for_learner
-from courseware.model_data import FieldDataCache, set_score
-from courseware.module_render import get_module, handle_xblock_callback
-from courseware.tests.factories import GlobalStaffFactory, RequestFactoryNoCsrf, StudentModuleFactory
-from courseware.tests.helpers import get_expiration_banner_text
-from courseware.testutils import RenderXBlockTestMixin
-from courseware.url_helpers import get_redirect_url
-from courseware.user_state_client import DjangoXBlockUserStateClient
+from lms.djangoapps.courseware.access_utils import check_course_open_for_learner
+from lms.djangoapps.courseware.model_data import FieldDataCache, set_score
+from lms.djangoapps.courseware.module_render import get_module, handle_xblock_callback
+from lms.djangoapps.courseware.tests.factories import GlobalStaffFactory, RequestFactoryNoCsrf, StudentModuleFactory
+from lms.djangoapps.courseware.tests.helpers import get_expiration_banner_text
+from lms.djangoapps.courseware.testutils import RenderXBlockTestMixin
+from lms.djangoapps.courseware.url_helpers import get_redirect_url
+from lms.djangoapps.courseware.user_state_client import DjangoXBlockUserStateClient
 from lms.djangoapps.certificates import api as certs_api
 from lms.djangoapps.certificates.models import (
     CertificateGenerationConfiguration,
diff --git a/lms/djangoapps/courseware/tests/tests.py b/lms/djangoapps/courseware/tests/tests.py
index 947b77e9a72..0645c4e7f50 100644
--- a/lms/djangoapps/courseware/tests/tests.py
+++ b/lms/djangoapps/courseware/tests/tests.py
@@ -11,7 +11,7 @@ from django.urls import reverse
 from opaque_keys.edx.keys import CourseKey
 from six import text_type
 
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from lms.djangoapps.lms_xblock.field_data import LmsFieldData
 from xmodule.error_module import ErrorDescriptor
 from xmodule.modulestore.django import modulestore
diff --git a/lms/djangoapps/courseware/user_state_client.py b/lms/djangoapps/courseware/user_state_client.py
index 156ee52db2f..422dfe0e76f 100644
--- a/lms/djangoapps/courseware/user_state_client.py
+++ b/lms/djangoapps/courseware/user_state_client.py
@@ -20,7 +20,7 @@ from edx_django_utils import monitoring as monitoring_utils
 from edx_user_state_client.interface import XBlockUserState, XBlockUserStateClient
 from xblock.fields import Scope
 
-from courseware.models import BaseStudentModuleHistory, StudentModule
+from lms.djangoapps.courseware.models import BaseStudentModuleHistory, StudentModule
 
 try:
     import simplejson as json
diff --git a/lms/djangoapps/courseware/views/views.py b/lms/djangoapps/courseware/views/views.py
index c6fe2f06d85..ee6baf91acd 100644
--- a/lms/djangoapps/courseware/views/views.py
+++ b/lms/djangoapps/courseware/views/views.py
@@ -51,9 +51,9 @@ from web_fragments.fragment import Fragment
 import shoppingcart
 import survey.views
 from course_modes.models import CourseMode, get_course_prices
-from courseware.access import has_access, has_ccx_coach_role
-from courseware.access_utils import check_course_open_for_learner
-from courseware.courses import (
+from lms.djangoapps.courseware.access import has_access, has_ccx_coach_role
+from lms.djangoapps.courseware.access_utils import check_course_open_for_learner
+from lms.djangoapps.courseware.courses import (
     can_self_enroll_in_course,
     course_open_for_self_enrollment,
     get_course,
@@ -66,12 +66,14 @@ from courseware.courses import (
     sort_by_announcement,
     sort_by_start_date
 )
-from courseware.masquerade import setup_masquerade
-from courseware.model_data import FieldDataCache
-from courseware.models import BaseStudentModuleHistory, StudentModule
-from courseware.permissions import MASQUERADE_AS_STUDENT, VIEW_COURSE_HOME, VIEW_COURSEWARE, VIEW_XQA_INTERFACE
-from courseware.url_helpers import get_redirect_url
-from courseware.user_state_client import DjangoXBlockUserStateClient
+from lms.djangoapps.courseware.masquerade import setup_masquerade
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.models import BaseStudentModuleHistory, StudentModule
+from lms.djangoapps.courseware.permissions import (
+    MASQUERADE_AS_STUDENT, VIEW_COURSE_HOME, VIEW_COURSEWARE, VIEW_XQA_INTERFACE,
+)
+from lms.djangoapps.courseware.url_helpers import get_redirect_url
+from lms.djangoapps.courseware.user_state_client import DjangoXBlockUserStateClient
 from edxmako.shortcuts import marketing_link, render_to_response, render_to_string
 from lms.djangoapps.ccx.custom_exception import CCXLocatorValidationException
 from lms.djangoapps.certificates import api as certs_api
diff --git a/lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py b/lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py
index 851584fbec1..c01336ccd2e 100644
--- a/lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py
+++ b/lms/djangoapps/coursewarehistoryextended/migrations/0001_initial.py
@@ -4,7 +4,7 @@ from __future__ import unicode_literals
 from __future__ import absolute_import
 from django.db import migrations, models
 import django.db.models.deletion
-from courseware.fields import UnsignedBigIntAutoField
+from lms.djangoapps.courseware.fields import UnsignedBigIntAutoField
 from django.conf import settings
 
 def bump_pk_start(apps, schema_editor):
diff --git a/lms/djangoapps/coursewarehistoryextended/models.py b/lms/djangoapps/coursewarehistoryextended/models.py
index b9347f8ec41..d5ee483d760 100644
--- a/lms/djangoapps/coursewarehistoryextended/models.py
+++ b/lms/djangoapps/coursewarehistoryextended/models.py
@@ -20,8 +20,8 @@ from django.db.models.signals import post_delete, post_save
 from django.dispatch import receiver
 from django.utils.encoding import python_2_unicode_compatible
 
-from courseware.models import BaseStudentModuleHistory, StudentModule
-from courseware.fields import UnsignedBigIntAutoField
+from lms.djangoapps.courseware.models import BaseStudentModuleHistory, StudentModule
+from lms.djangoapps.courseware.fields import UnsignedBigIntAutoField
 
 
 @python_2_unicode_compatible
diff --git a/lms/djangoapps/coursewarehistoryextended/tests.py b/lms/djangoapps/coursewarehistoryextended/tests.py
index e97317f8508..868afae1417 100644
--- a/lms/djangoapps/coursewarehistoryextended/tests.py
+++ b/lms/djangoapps/coursewarehistoryextended/tests.py
@@ -14,8 +14,8 @@ from django.conf import settings
 from django.test import TestCase
 from mock import patch
 
-from courseware.models import BaseStudentModuleHistory, StudentModule, StudentModuleHistory
-from courseware.tests.factories import StudentModuleFactory, course_id, location
+from lms.djangoapps.courseware.models import BaseStudentModuleHistory, StudentModule, StudentModuleHistory
+from lms.djangoapps.courseware.tests.factories import StudentModuleFactory, course_id, location
 
 
 @skipUnless(settings.FEATURES["ENABLE_CSMH_EXTENDED"], "CSMH Extended needs to be enabled")
diff --git a/lms/djangoapps/dashboard/sysadmin.py b/lms/djangoapps/dashboard/sysadmin.py
index 08930c32b24..f09b6b311eb 100644
--- a/lms/djangoapps/dashboard/sysadmin.py
+++ b/lms/djangoapps/dashboard/sysadmin.py
@@ -31,7 +31,7 @@ from six import text_type
 
 import dashboard.git_import as git_import
 import track.views
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from dashboard.git_import import GitImportError
 from dashboard.models import CourseImportLog
 from edxmako.shortcuts import render_to_response
diff --git a/lms/djangoapps/discussion/django_comment_client/base/views.py b/lms/djangoapps/discussion/django_comment_client/base/views.py
index 113dce95ead..06a4770c907 100644
--- a/lms/djangoapps/discussion/django_comment_client/base/views.py
+++ b/lms/djangoapps/discussion/django_comment_client/base/views.py
@@ -25,8 +25,8 @@ from six import text_type
 
 import lms.djangoapps.discussion.django_comment_client.settings as cc_settings
 import openedx.core.djangoapps.django_comment_common.comment_client as cc
-from courseware.access import has_access
-from courseware.courses import get_course_by_id, get_course_overview_with_access, get_course_with_access
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.courses import get_course_by_id, get_course_overview_with_access, get_course_with_access
 from lms.djangoapps.courseware.exceptions import CourseAccessRedirect
 from lms.djangoapps.discussion.django_comment_client.permissions import (
     check_permissions_by_view,
diff --git a/lms/djangoapps/discussion/django_comment_client/tests/test_utils.py b/lms/djangoapps/discussion/django_comment_client/tests/test_utils.py
index 64f08952599..dc095c5dabd 100644
--- a/lms/djangoapps/discussion/django_comment_client/tests/test_utils.py
+++ b/lms/djangoapps/discussion/django_comment_client/tests/test_utils.py
@@ -18,8 +18,8 @@ from six import text_type
 import lms.djangoapps.discussion.django_comment_client.utils as utils
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.tabs import get_course_tab_list
-from courseware.tests.factories import InstructorFactory
+from lms.djangoapps.courseware.tabs import get_course_tab_list
+from lms.djangoapps.courseware.tests.factories import InstructorFactory
 from lms.djangoapps.discussion.django_comment_client.constants import TYPE_ENTRY, TYPE_SUBCATEGORY
 from lms.djangoapps.discussion.django_comment_client.tests.factories import RoleFactory
 from lms.djangoapps.discussion.django_comment_client.tests.unicode import UnicodeTestMixin
diff --git a/lms/djangoapps/discussion/django_comment_client/utils.py b/lms/djangoapps/discussion/django_comment_client/utils.py
index ffc994769a0..d09195116a2 100644
--- a/lms/djangoapps/discussion/django_comment_client/utils.py
+++ b/lms/djangoapps/discussion/django_comment_client/utils.py
@@ -18,8 +18,8 @@ from pytz import UTC
 from six import text_type
 from six.moves import map
 
-from courseware import courses
-from courseware.access import has_access
+from lms.djangoapps.courseware import courses
+from lms.djangoapps.courseware.access import has_access
 from lms.djangoapps.discussion.django_comment_client.constants import TYPE_ENTRY, TYPE_SUBCATEGORY
 from lms.djangoapps.discussion.django_comment_client.permissions import (
     check_permissions_by_view,
diff --git a/lms/djangoapps/discussion/management/commands/get_discussion_link.py b/lms/djangoapps/discussion/management/commands/get_discussion_link.py
index f275ecdfb3f..99b6b690e00 100644
--- a/lms/djangoapps/discussion/management/commands/get_discussion_link.py
+++ b/lms/djangoapps/discussion/management/commands/get_discussion_link.py
@@ -4,7 +4,7 @@ from __future__ import absolute_import
 from django.core.management.base import BaseCommand, CommandError
 from opaque_keys.edx.keys import CourseKey
 
-from courseware.courses import get_course
+from lms.djangoapps.courseware.courses import get_course
 
 
 class Command(BaseCommand):
diff --git a/lms/djangoapps/discussion/plugins.py b/lms/djangoapps/discussion/plugins.py
index e66de9b8d8a..c64d409763e 100644
--- a/lms/djangoapps/discussion/plugins.py
+++ b/lms/djangoapps/discussion/plugins.py
@@ -8,7 +8,7 @@ from django.conf import settings
 from django.utils.translation import ugettext_noop
 
 import lms.djangoapps.discussion.django_comment_client.utils as utils
-from courseware.tabs import EnrolledTab
+from lms.djangoapps.courseware.tabs import EnrolledTab
 from xmodule.tabs import TabFragmentViewMixin
 
 from .config import USE_BOOTSTRAP_FLAG
diff --git a/lms/djangoapps/discussion/rest_api/forms.py b/lms/djangoapps/discussion/rest_api/forms.py
index fd25459c187..d0a995473e3 100644
--- a/lms/djangoapps/discussion/rest_api/forms.py
+++ b/lms/djangoapps/discussion/rest_api/forms.py
@@ -13,7 +13,7 @@ from opaque_keys.edx.keys import CourseKey
 from opaque_keys.edx.locator import CourseLocator
 from six import text_type
 
-from courseware.courses import get_course_with_access
+from lms.djangoapps.courseware.courses import get_course_with_access
 from openedx.core.djangoapps.django_comment_common.models import (
     FORUM_ROLE_COMMUNITY_TA,
     FORUM_ROLE_GROUP_MODERATOR,
diff --git a/lms/djangoapps/discussion/rest_api/tests/test_api.py b/lms/djangoapps/discussion/rest_api/tests/test_api.py
index 17746205dd8..ee8d7486e14 100644
--- a/lms/djangoapps/discussion/rest_api/tests/test_api.py
+++ b/lms/djangoapps/discussion/rest_api/tests/test_api.py
@@ -19,7 +19,7 @@ from six.moves import range
 from six.moves.urllib.parse import parse_qs, urlencode, urlparse, urlunparse  # pylint: disable=import-error
 
 from common.test.utils import MockSignalHandlerMixin, disable_signal
-from courseware.tests.factories import BetaTesterFactory, StaffFactory
+from lms.djangoapps.courseware.tests.factories import BetaTesterFactory, StaffFactory
 from lms.djangoapps.discussion.django_comment_client.tests.utils import ForumsEnableMixin
 from lms.djangoapps.discussion.rest_api import api
 from lms.djangoapps.discussion.rest_api.api import (
diff --git a/lms/djangoapps/discussion/views.py b/lms/djangoapps/discussion/views.py
index a82c2796313..92838fcc107 100644
--- a/lms/djangoapps/discussion/views.py
+++ b/lms/djangoapps/discussion/views.py
@@ -26,9 +26,9 @@ from web_fragments.fragment import Fragment
 
 import lms.djangoapps.discussion.django_comment_client.utils as utils
 import openedx.core.djangoapps.django_comment_common.comment_client as cc
-from courseware.access import has_access
-from courseware.courses import get_course_with_access
-from courseware.views.views import CourseTabView
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.courses import get_course_with_access
+from lms.djangoapps.courseware.views.views import CourseTabView
 from lms.djangoapps.discussion.django_comment_client.base.views import track_thread_viewed_event
 from lms.djangoapps.discussion.django_comment_client.constants import TYPE_ENTRY
 from lms.djangoapps.discussion.django_comment_client.permissions import get_team, has_permission
diff --git a/lms/djangoapps/edxnotes/helpers.py b/lms/djangoapps/edxnotes/helpers.py
index 835c0f13643..fb8de803af6 100644
--- a/lms/djangoapps/edxnotes/helpers.py
+++ b/lms/djangoapps/edxnotes/helpers.py
@@ -21,8 +21,8 @@ from oauth2_provider.models import Application
 from opaque_keys.edx.keys import UsageKey
 from requests.exceptions import RequestException
 
-from courseware.access import has_access
-from courseware.courses import get_current_child
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.courses import get_current_child
 from edxnotes.exceptions import EdxNotesParseError, EdxNotesServiceUnavailable
 from edxnotes.plugins import EdxNotesTab
 from lms.lib.utils import get_parent_unit
diff --git a/lms/djangoapps/edxnotes/plugins.py b/lms/djangoapps/edxnotes/plugins.py
index ef94555fecf..87e60fd3d74 100644
--- a/lms/djangoapps/edxnotes/plugins.py
+++ b/lms/djangoapps/edxnotes/plugins.py
@@ -6,7 +6,7 @@ from __future__ import absolute_import
 from django.conf import settings
 from django.utils.translation import ugettext_noop
 
-from courseware.tabs import EnrolledTab
+from lms.djangoapps.courseware.tabs import EnrolledTab
 
 
 class EdxNotesTab(EnrolledTab):
diff --git a/lms/djangoapps/edxnotes/tests.py b/lms/djangoapps/edxnotes/tests.py
index dc6d9a80857..44a45fbfcb1 100644
--- a/lms/djangoapps/edxnotes/tests.py
+++ b/lms/djangoapps/edxnotes/tests.py
@@ -22,9 +22,9 @@ from django.urls import reverse
 from mock import MagicMock, patch
 from oauth2_provider.models import Application
 
-from courseware.model_data import FieldDataCache
-from courseware.module_render import get_module_for_descriptor
-from courseware.tabs import get_course_tab_list
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.module_render import get_module_for_descriptor
+from lms.djangoapps.courseware.tabs import get_course_tab_list
 from edxmako.shortcuts import render_to_string
 from edxnotes import helpers
 from edxnotes.decorators import edxnotes
diff --git a/lms/djangoapps/edxnotes/views.py b/lms/djangoapps/edxnotes/views.py
index 6833f19be42..818b34cd7d6 100644
--- a/lms/djangoapps/edxnotes/views.py
+++ b/lms/djangoapps/edxnotes/views.py
@@ -18,9 +18,9 @@ from rest_framework.response import Response
 from rest_framework.views import APIView
 from six import text_type
 
-from courseware.courses import get_course_with_access
-from courseware.model_data import FieldDataCache
-from courseware.module_render import get_module_for_descriptor
+from lms.djangoapps.courseware.courses import get_course_with_access
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.module_render import get_module_for_descriptor
 from edxmako.shortcuts import render_to_response
 from edxnotes.exceptions import EdxNotesParseError, EdxNotesServiceUnavailable
 from edxnotes.helpers import (
diff --git a/lms/djangoapps/experiments/utils.py b/lms/djangoapps/experiments/utils.py
index 29dca2073a4..4026ec9b977 100644
--- a/lms/djangoapps/experiments/utils.py
+++ b/lms/djangoapps/experiments/utils.py
@@ -13,8 +13,8 @@ from opaque_keys import InvalidKeyError
 from opaque_keys.edx.keys import CourseKey
 
 from course_modes.models import format_course_price, get_cosmetic_verified_display_price, CourseMode
-from courseware.access import has_staff_access_to_preview_mode
-from courseware.date_summary import verified_upgrade_deadline_link, verified_upgrade_link_is_valid
+from lms.djangoapps.courseware.access import has_staff_access_to_preview_mode
+from lms.djangoapps.courseware.date_summary import verified_upgrade_deadline_link, verified_upgrade_link_is_valid
 from entitlements.models import CourseEntitlement
 from lms.djangoapps.commerce.utils import EcommerceService
 from openedx.core.djangoapps.catalog.utils import get_programs
diff --git a/lms/djangoapps/gating/tests/test_api.py b/lms/djangoapps/gating/tests/test_api.py
index 7afc1042982..02f8cb4299a 100644
--- a/lms/djangoapps/gating/tests/test_api.py
+++ b/lms/djangoapps/gating/tests/test_api.py
@@ -8,7 +8,7 @@ from milestones import api as milestones_api
 from milestones.tests.utils import MilestonesTestCaseMixin
 from mock import Mock, patch
 
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from gating.api import evaluate_prerequisite
 from openedx.core.lib.gating import api as gating_api
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
diff --git a/lms/djangoapps/grades/management/commands/recalculate_subsection_grades.py b/lms/djangoapps/grades/management/commands/recalculate_subsection_grades.py
index e4f7895297e..a1f6948c11a 100644
--- a/lms/djangoapps/grades/management/commands/recalculate_subsection_grades.py
+++ b/lms/djangoapps/grades/management/commands/recalculate_subsection_grades.py
@@ -13,7 +13,7 @@ from django.core.management.base import BaseCommand, CommandError
 from pytz import utc
 from submissions.models import Submission
 
-from courseware.models import StudentModule
+from lms.djangoapps.courseware.models import StudentModule
 from lms.djangoapps.grades.constants import ScoreDatabaseTableEnum
 from lms.djangoapps.grades.events import PROBLEM_SUBMITTED_EVENT_TYPE
 from lms.djangoapps.grades.tasks import recalculate_subsection_grade_v3
diff --git a/lms/djangoapps/grades/migrations/0001_initial.py b/lms/djangoapps/grades/migrations/0001_initial.py
index 47842aa377f..6ad43b0df7f 100644
--- a/lms/djangoapps/grades/migrations/0001_initial.py
+++ b/lms/djangoapps/grades/migrations/0001_initial.py
@@ -6,7 +6,7 @@ import model_utils.fields
 from django.db import migrations, models
 from opaque_keys.edx.django.models import CourseKeyField, UsageKeyField
 
-from courseware.fields import UnsignedBigIntAutoField
+from lms.djangoapps.courseware.fields import UnsignedBigIntAutoField
 
 
 class Migration(migrations.Migration):
diff --git a/lms/djangoapps/grades/migrations/0006_persistent_course_grades.py b/lms/djangoapps/grades/migrations/0006_persistent_course_grades.py
index 0ea85675d69..f5b1534932d 100644
--- a/lms/djangoapps/grades/migrations/0006_persistent_course_grades.py
+++ b/lms/djangoapps/grades/migrations/0006_persistent_course_grades.py
@@ -6,7 +6,7 @@ import model_utils.fields
 from django.db import migrations, models
 from opaque_keys.edx.django.models import CourseKeyField
 
-from courseware.fields import UnsignedBigIntAutoField
+from lms.djangoapps.courseware.fields import UnsignedBigIntAutoField
 
 
 class Migration(migrations.Migration):
diff --git a/lms/djangoapps/grades/migrations/0013_persistentsubsectiongradeoverride.py b/lms/djangoapps/grades/migrations/0013_persistentsubsectiongradeoverride.py
index 28f5ed61e0d..ecd104e45e3 100644
--- a/lms/djangoapps/grades/migrations/0013_persistentsubsectiongradeoverride.py
+++ b/lms/djangoapps/grades/migrations/0013_persistentsubsectiongradeoverride.py
@@ -3,7 +3,7 @@ from __future__ import absolute_import, unicode_literals
 
 from django.db import migrations, models
 
-from courseware.fields import UnsignedBigIntOneToOneField
+from lms.djangoapps.courseware.fields import UnsignedBigIntOneToOneField
 
 
 class Migration(migrations.Migration):
diff --git a/lms/djangoapps/grades/models.py b/lms/djangoapps/grades/models.py
index dc412594fea..9411712c291 100644
--- a/lms/djangoapps/grades/models.py
+++ b/lms/djangoapps/grades/models.py
@@ -29,7 +29,7 @@ from opaque_keys.edx.keys import CourseKey, UsageKey
 from simple_history.models import HistoricalRecords
 from six.moves import map
 
-from courseware.fields import UnsignedBigIntAutoField, UnsignedBigIntOneToOneField
+from lms.djangoapps.courseware.fields import UnsignedBigIntAutoField, UnsignedBigIntOneToOneField
 from lms.djangoapps.grades import constants, events
 from openedx.core.lib.cache_utils import get_cache
 
diff --git a/lms/djangoapps/grades/rest_api/v1/gradebook_views.py b/lms/djangoapps/grades/rest_api/v1/gradebook_views.py
index 1266172b0ec..3a13719f304 100644
--- a/lms/djangoapps/grades/rest_api/v1/gradebook_views.py
+++ b/lms/djangoapps/grades/rest_api/v1/gradebook_views.py
@@ -20,7 +20,7 @@ from rest_framework.response import Response
 from rest_framework.views import APIView
 from six import text_type
 
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from lms.djangoapps.grades.api import CourseGradeFactory, clear_prefetched_course_and_subsection_grades
 from lms.djangoapps.grades.api import constants as grades_constants
 from lms.djangoapps.grades.api import context as grades_context
diff --git a/lms/djangoapps/grades/signals/handlers.py b/lms/djangoapps/grades/signals/handlers.py
index bb5bf19b98d..a59643d7127 100644
--- a/lms/djangoapps/grades/signals/handlers.py
+++ b/lms/djangoapps/grades/signals/handlers.py
@@ -12,7 +12,7 @@ from opaque_keys.edx.keys import LearningContextKey
 from submissions.models import score_reset, score_set
 from xblock.scorable import ScorableXBlockMixin, Score
 
-from courseware.model_data import get_score, set_score
+from lms.djangoapps.courseware.model_data import get_score, set_score
 from openedx.core.djangoapps.course_groups.signals.signals import COHORT_MEMBERSHIP_UPDATED
 from openedx.core.lib.grade_utils import is_score_higher_or_equal
 from student.models import user_by_anonymous_id
diff --git a/lms/djangoapps/grades/subsection_grade_factory.py b/lms/djangoapps/grades/subsection_grade_factory.py
index ac47cc6149f..c7f89b8cc52 100644
--- a/lms/djangoapps/grades/subsection_grade_factory.py
+++ b/lms/djangoapps/grades/subsection_grade_factory.py
@@ -10,7 +10,7 @@ from logging import getLogger
 from lazy import lazy
 from submissions import api as submissions_api
 
-from courseware.model_data import ScoresClient
+from lms.djangoapps.courseware.model_data import ScoresClient
 from lms.djangoapps.grades.config import assume_zero_if_absent, should_persist_grades
 from lms.djangoapps.grades.models import PersistentSubsectionGrade
 from lms.djangoapps.grades.scores import possibly_scored
diff --git a/lms/djangoapps/grades/tasks.py b/lms/djangoapps/grades/tasks.py
index ccf6f0edecb..5c715537bc0 100644
--- a/lms/djangoapps/grades/tasks.py
+++ b/lms/djangoapps/grades/tasks.py
@@ -18,7 +18,7 @@ from opaque_keys.edx.keys import CourseKey, UsageKey
 from opaque_keys.edx.locator import CourseLocator
 from submissions import api as sub_api
 
-from courseware.model_data import get_score
+from lms.djangoapps.courseware.model_data import get_score
 from lms.djangoapps.course_blocks.api import get_course_blocks
 from lms.djangoapps.grades.config.models import ComputeGradesSetting
 from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
diff --git a/lms/djangoapps/grades/tests/integration/test_access.py b/lms/djangoapps/grades/tests/integration/test_access.py
index 923705507f6..08c5653b59a 100644
--- a/lms/djangoapps/grades/tests/integration/test_access.py
+++ b/lms/djangoapps/grades/tests/integration/test_access.py
@@ -6,7 +6,7 @@ from __future__ import absolute_import
 from crum import set_current_request
 
 from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
-from courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin
+from lms.djangoapps.courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin
 from lms.djangoapps.course_blocks.api import get_course_blocks
 from openedx.core.djangolib.testing.utils import get_mock_request
 from student.models import CourseEnrollment
diff --git a/lms/djangoapps/grades/tests/integration/test_events.py b/lms/djangoapps/grades/tests/integration/test_events.py
index 829e37a9fa1..68a6d7f4c6f 100644
--- a/lms/djangoapps/grades/tests/integration/test_events.py
+++ b/lms/djangoapps/grades/tests/integration/test_events.py
@@ -10,7 +10,7 @@ from mock import call as mock_call
 from mock import patch
 
 from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
-from courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin
+from lms.djangoapps.courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin
 from lms.djangoapps.instructor.enrollment import reset_student_attempts
 from lms.djangoapps.instructor_task.api import submit_rescore_problem_for_student
 from openedx.core.djangolib.testing.utils import get_mock_request
diff --git a/lms/djangoapps/grades/tests/integration/test_problems.py b/lms/djangoapps/grades/tests/integration/test_problems.py
index c52afb99c42..3c2984353e9 100644
--- a/lms/djangoapps/grades/tests/integration/test_problems.py
+++ b/lms/djangoapps/grades/tests/integration/test_problems.py
@@ -10,7 +10,7 @@ from crum import set_current_request
 from six.moves import range
 
 from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
-from courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin
+from lms.djangoapps.courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin
 from lms.djangoapps.course_blocks.api import get_course_blocks
 from openedx.core.djangolib.testing.utils import get_mock_request
 from student.models import CourseEnrollment
diff --git a/lms/djangoapps/grades/tests/test_course_grade_factory.py b/lms/djangoapps/grades/tests/test_course_grade_factory.py
index b64ddee3e31..8bba6c151c7 100644
--- a/lms/djangoapps/grades/tests/test_course_grade_factory.py
+++ b/lms/djangoapps/grades/tests/test_course_grade_factory.py
@@ -10,7 +10,7 @@ from django.conf import settings
 from mock import patch
 from six import text_type
 
-from courseware.access import has_access
+from lms.djangoapps.courseware.access import has_access
 from lms.djangoapps.grades.config.tests.utils import persistent_grades_feature_flags
 from openedx.core.djangoapps.content.block_structure.factory import BlockStructureFactory
 from student.tests.factories import UserFactory
diff --git a/lms/djangoapps/grades/tests/test_subsection_grade_factory.py b/lms/djangoapps/grades/tests/test_subsection_grade_factory.py
index 93aa9899843..53068d855d1 100644
--- a/lms/djangoapps/grades/tests/test_subsection_grade_factory.py
+++ b/lms/djangoapps/grades/tests/test_subsection_grade_factory.py
@@ -7,7 +7,7 @@ import ddt
 from django.conf import settings
 from mock import patch
 
-from courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin
+from lms.djangoapps.courseware.tests.test_submitting_problems import ProblemSubmissionTestMixin
 from lms.djangoapps.grades.config.tests.utils import persistent_grades_feature_flags
 from student.tests.factories import UserFactory
 
diff --git a/lms/djangoapps/grades/tests/utils.py b/lms/djangoapps/grades/tests/utils.py
index a0b97b8ab19..996fbe88f32 100644
--- a/lms/djangoapps/grades/tests/utils.py
+++ b/lms/djangoapps/grades/tests/utils.py
@@ -9,8 +9,8 @@ from datetime import datetime
 import pytz
 from mock import MagicMock, patch
 
-from courseware.model_data import FieldDataCache
-from courseware.module_render import get_module
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.module_render import get_module
 from xmodule.graders import ProblemScore
 
 
diff --git a/lms/djangoapps/instructor/enrollment.py b/lms/djangoapps/instructor/enrollment.py
index a6a57cee4f9..dc70eaff243 100644
--- a/lms/djangoapps/instructor/enrollment.py
+++ b/lms/djangoapps/instructor/enrollment.py
@@ -26,7 +26,7 @@ from submissions import api as sub_api  # installed from the edx-submissions rep
 from submissions.models import score_set
 
 from course_modes.models import CourseMode
-from courseware.models import StudentModule
+from lms.djangoapps.courseware.models import StudentModule
 from lms.djangoapps.grades.api import constants as grades_constants
 from lms.djangoapps.grades.api import disconnect_submissions_signal_receiver
 from lms.djangoapps.grades.api import events as grades_events
diff --git a/lms/djangoapps/instructor/paidcourse_enrollment_report.py b/lms/djangoapps/instructor/paidcourse_enrollment_report.py
index 479761b2fff..d4b67f30b1e 100644
--- a/lms/djangoapps/instructor/paidcourse_enrollment_report.py
+++ b/lms/djangoapps/instructor/paidcourse_enrollment_report.py
@@ -9,8 +9,8 @@ import collections
 from django.conf import settings
 from django.utils.translation import ugettext as _
 
-from courseware.access import has_access
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.courses import get_course_by_id
 from lms.djangoapps.instructor.enrollment_report import BaseAbstractEnrollmentReportProvider
 from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
 from shoppingcart.models import (
diff --git a/lms/djangoapps/instructor/permissions.py b/lms/djangoapps/instructor/permissions.py
index d47a4b28f10..e1d75a235b6 100644
--- a/lms/djangoapps/instructor/permissions.py
+++ b/lms/djangoapps/instructor/permissions.py
@@ -4,7 +4,7 @@ Permissions for the instructor dashboard and associated actions
 
 from bridgekeeper import perms
 from bridgekeeper.rules import is_staff
-from courseware.rules import HasAccessRule
+from lms.djangoapps.courseware.rules import HasAccessRule
 
 ALLOW_STUDENT_TO_BYPASS_ENTRANCE_EXAM = 'instructor.allow_student_to_bypass_entrance_exam'
 ASSIGN_TO_COHORTS = 'instructor.assign_to_cohorts'
diff --git a/lms/djangoapps/instructor/services.py b/lms/djangoapps/instructor/services.py
index b20208eaab2..200eafa27ec 100644
--- a/lms/djangoapps/instructor/services.py
+++ b/lms/djangoapps/instructor/services.py
@@ -12,7 +12,7 @@ from opaque_keys import InvalidKeyError
 from opaque_keys.edx.keys import CourseKey, UsageKey
 
 import lms.djangoapps.instructor.enrollment as enrollment
-from courseware.models import StudentModule
+from lms.djangoapps.courseware.models import StudentModule
 from lms.djangoapps.commerce.utils import create_zendesk_ticket
 from lms.djangoapps.instructor.views.tools import get_student_from_identifier
 from student import auth
diff --git a/lms/djangoapps/instructor/tests/test_api.py b/lms/djangoapps/instructor/tests/test_api.py
index 122f60910f5..40b5759ca4e 100644
--- a/lms/djangoapps/instructor/tests/test_api.py
+++ b/lms/djangoapps/instructor/tests/test_api.py
@@ -38,15 +38,15 @@ from testfixtures import LogCapture
 from bulk_email.models import BulkEmailFlag, CourseEmail, CourseEmailTemplate
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.models import StudentModule
-from courseware.tests.factories import (
+from lms.djangoapps.courseware.models import StudentModule
+from lms.djangoapps.courseware.tests.factories import (
     BetaTesterFactory,
     GlobalStaffFactory,
     InstructorFactory,
     StaffFactory,
     UserProfileFactory
 )
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from lms.djangoapps.certificates.api import generate_user_certificates
 from lms.djangoapps.certificates.models import CertificateStatuses
 from lms.djangoapps.certificates.tests.factories import GeneratedCertificateFactory
diff --git a/lms/djangoapps/instructor/tests/test_api_email_localization.py b/lms/djangoapps/instructor/tests/test_api_email_localization.py
index b818358bdec..248b9b05102 100644
--- a/lms/djangoapps/instructor/tests/test_api_email_localization.py
+++ b/lms/djangoapps/instructor/tests/test_api_email_localization.py
@@ -10,7 +10,7 @@ from django.test.utils import override_settings
 from django.urls import reverse
 from six import text_type
 
-from courseware.tests.factories import InstructorFactory
+from lms.djangoapps.courseware.tests.factories import InstructorFactory
 from openedx.core.djangoapps.lang_pref import LANGUAGE_KEY
 from openedx.core.djangoapps.user_api.preferences.api import delete_user_preference, set_user_preference
 from student.models import CourseEnrollment
diff --git a/lms/djangoapps/instructor/tests/test_certificates.py b/lms/djangoapps/instructor/tests/test_certificates.py
index 6d3104823d5..af5113cdd5f 100644
--- a/lms/djangoapps/instructor/tests/test_certificates.py
+++ b/lms/djangoapps/instructor/tests/test_certificates.py
@@ -19,7 +19,7 @@ from django.urls import reverse
 
 from capa.xqueue_interface import XQueueInterface
 from course_modes.models import CourseMode
-from courseware.tests.factories import GlobalStaffFactory, InstructorFactory, UserFactory
+from lms.djangoapps.courseware.tests.factories import GlobalStaffFactory, InstructorFactory, UserFactory
 from lms.djangoapps.certificates import api as certs_api
 from lms.djangoapps.certificates.models import (
     CertificateGenerationConfiguration,
diff --git a/lms/djangoapps/instructor/tests/test_enrollment.py b/lms/djangoapps/instructor/tests/test_enrollment.py
index 721604dddf4..e037c848121 100644
--- a/lms/djangoapps/instructor/tests/test_enrollment.py
+++ b/lms/djangoapps/instructor/tests/test_enrollment.py
@@ -20,7 +20,7 @@ from six import text_type
 from submissions import api as sub_api
 
 from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
-from courseware.models import StudentModule
+from lms.djangoapps.courseware.models import StudentModule
 from grades.subsection_grade_factory import SubsectionGradeFactory
 from grades.tests.utils import answer_problem
 from lms.djangoapps.ccx.tests.factories import CcxFactory
diff --git a/lms/djangoapps/instructor/tests/test_registration_codes.py b/lms/djangoapps/instructor/tests/test_registration_codes.py
index 15967584db7..29a0416ec17 100644
--- a/lms/djangoapps/instructor/tests/test_registration_codes.py
+++ b/lms/djangoapps/instructor/tests/test_registration_codes.py
@@ -14,7 +14,7 @@ from six.moves import range
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.tests.factories import InstructorFactory
+from lms.djangoapps.courseware.tests.factories import InstructorFactory
 from shoppingcart.models import (
     CourseRegCodeItem,
     CourseRegistrationCode,
diff --git a/lms/djangoapps/instructor/tests/test_services.py b/lms/djangoapps/instructor/tests/test_services.py
index ee2723051d5..970624854cd 100644
--- a/lms/djangoapps/instructor/tests/test_services.py
+++ b/lms/djangoapps/instructor/tests/test_services.py
@@ -9,7 +9,7 @@ import json
 import mock
 import six
 
-from courseware.models import StudentModule
+from lms.djangoapps.courseware.models import StudentModule
 from lms.djangoapps.instructor.access import allow_access
 from lms.djangoapps.instructor.services import InstructorService
 from lms.djangoapps.instructor.tests.test_tools import msk_from_problem_urlname
diff --git a/lms/djangoapps/instructor/tests/test_spoc_gradebook.py b/lms/djangoapps/instructor/tests/test_spoc_gradebook.py
index e335d18569a..f4c0036bc17 100644
--- a/lms/djangoapps/instructor/tests/test_spoc_gradebook.py
+++ b/lms/djangoapps/instructor/tests/test_spoc_gradebook.py
@@ -9,7 +9,7 @@ from six import text_type
 from six.moves import range
 
 from capa.tests.response_xml_factory import StringResponseXMLFactory
-from courseware.tests.factories import StudentModuleFactory
+from lms.djangoapps.courseware.tests.factories import StudentModuleFactory
 from lms.djangoapps.grades.api import task_compute_all_grades_for_course
 from student.tests.factories import AdminFactory, CourseEnrollmentFactory, UserFactory
 from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
diff --git a/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py b/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py
index fe8a7d1cb89..229bf43300f 100644
--- a/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py
+++ b/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py
@@ -20,9 +20,9 @@ from six.moves import range
 
 from common.test.utils import XssTestMixin
 from course_modes.models import CourseMode
-from courseware.tabs import get_course_tab_list
-from courseware.tests.factories import StaffFactory, StudentModuleFactory, UserFactory
-from courseware.tests.helpers import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.tabs import get_course_tab_list
+from lms.djangoapps.courseware.tests.factories import StaffFactory, StudentModuleFactory, UserFactory
+from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase
 from edxmako.shortcuts import render_to_response
 from lms.djangoapps.grades.config.waffle import WRITABLE_GRADEBOOK, waffle_flags
 from lms.djangoapps.instructor.views.gradebook_api import calculate_page_info
diff --git a/lms/djangoapps/instructor/utils.py b/lms/djangoapps/instructor/utils.py
index 752d969916a..c17213d7ea7 100644
--- a/lms/djangoapps/instructor/utils.py
+++ b/lms/djangoapps/instructor/utils.py
@@ -4,8 +4,8 @@ Helpers for instructor app.
 
 from __future__ import absolute_import
 
-from courseware.model_data import FieldDataCache
-from courseware.module_render import get_module
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.module_render import get_module
 from xmodule.modulestore.django import modulestore
 
 
diff --git a/lms/djangoapps/instructor/views/api.py b/lms/djangoapps/instructor/views/api.py
index 6e9b65055e6..df483f74697 100644
--- a/lms/djangoapps/instructor/views/api.py
+++ b/lms/djangoapps/instructor/views/api.py
@@ -50,9 +50,9 @@ import instructor_analytics.csvs
 import instructor_analytics.distributions
 from bulk_email.api import is_bulk_email_feature_enabled
 from bulk_email.models import CourseEmail
-from courseware.access import has_access
-from courseware.courses import get_course_by_id, get_course_with_access
-from courseware.models import StudentModule
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.courses import get_course_by_id, get_course_with_access
+from lms.djangoapps.courseware.models import StudentModule
 from edxmako.shortcuts import render_to_string
 from lms.djangoapps.certificates import api as certs_api
 from lms.djangoapps.certificates.models import (
diff --git a/lms/djangoapps/instructor/views/gradebook_api.py b/lms/djangoapps/instructor/views/gradebook_api.py
index 6e6fe7bd725..532180f54d1 100644
--- a/lms/djangoapps/instructor/views/gradebook_api.py
+++ b/lms/djangoapps/instructor/views/gradebook_api.py
@@ -13,7 +13,7 @@ from django.urls import reverse
 from django.views.decorators.cache import cache_control
 from opaque_keys.edx.keys import CourseKey
 
-from courseware.courses import get_course_with_access
+from lms.djangoapps.courseware.courses import get_course_with_access
 from edxmako.shortcuts import render_to_response
 from lms.djangoapps.grades.api import CourseGradeFactory
 from lms.djangoapps.instructor.views.api import require_level
diff --git a/lms/djangoapps/instructor/views/instructor_dashboard.py b/lms/djangoapps/instructor/views/instructor_dashboard.py
index 93da9f22d75..712bf4f12fa 100644
--- a/lms/djangoapps/instructor/views/instructor_dashboard.py
+++ b/lms/djangoapps/instructor/views/instructor_dashboard.py
@@ -32,8 +32,8 @@ from xblock.fields import ScopeIds
 from bulk_email.api import is_bulk_email_feature_enabled
 from class_dashboard.dashboard_data import get_array_section_has_problem, get_section_display_name
 from course_modes.models import CourseMode, CourseModesArchive
-from courseware.access import has_access
-from courseware.courses import get_course_by_id, get_studio_url
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.courses import get_course_by_id, get_studio_url
 from edxmako.shortcuts import render_to_response
 from lms.djangoapps.certificates import api as certs_api
 from lms.djangoapps.certificates.models import (
diff --git a/lms/djangoapps/instructor/views/registration_codes.py b/lms/djangoapps/instructor/views/registration_codes.py
index 063802b4f9a..01e199f4d51 100644
--- a/lms/djangoapps/instructor/views/registration_codes.py
+++ b/lms/djangoapps/instructor/views/registration_codes.py
@@ -12,7 +12,7 @@ from django.views.decorators.cache import cache_control
 from django.views.decorators.http import require_GET, require_POST
 from opaque_keys.edx.locator import CourseKey
 
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from lms.djangoapps.instructor.enrollment import get_email_params, send_mail_to_student
 from lms.djangoapps.instructor.views.api import require_level
 from shoppingcart.models import CourseRegistrationCode, RegistrationCodeRedemption
diff --git a/lms/djangoapps/instructor_analytics/basic.py b/lms/djangoapps/instructor_analytics/basic.py
index d4eedf26803..d45d792446f 100644
--- a/lms/djangoapps/instructor_analytics/basic.py
+++ b/lms/djangoapps/instructor_analytics/basic.py
@@ -21,7 +21,7 @@ from opaque_keys.edx.keys import CourseKey, UsageKey
 from six import text_type
 
 import xmodule.graders as xmgraders
-from courseware.models import StudentModule
+from lms.djangoapps.courseware.models import StudentModule
 from lms.djangoapps.certificates.models import CertificateStatuses, GeneratedCertificate
 from lms.djangoapps.grades.api import context as grades_context
 from lms.djangoapps.verify_student.services import IDVerificationService
diff --git a/lms/djangoapps/instructor_analytics/tests/test_basic.py b/lms/djangoapps/instructor_analytics/tests/test_basic.py
index aab5aab0769..eebfaec3df1 100644
--- a/lms/djangoapps/instructor_analytics/tests/test_basic.py
+++ b/lms/djangoapps/instructor_analytics/tests/test_basic.py
@@ -20,7 +20,7 @@ from six.moves import range, zip
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.tests.factories import InstructorFactory
+from lms.djangoapps.courseware.tests.factories import InstructorFactory
 from lms.djangoapps.instructor_analytics.basic import (
     AVAILABLE_FEATURES,
     PROFILE_FEATURES,
diff --git a/lms/djangoapps/instructor_task/api_helper.py b/lms/djangoapps/instructor_task/api_helper.py
index 349ec1e6b1a..bf49deda9d6 100644
--- a/lms/djangoapps/instructor_task/api_helper.py
+++ b/lms/djangoapps/instructor_task/api_helper.py
@@ -17,8 +17,8 @@ from opaque_keys.edx.keys import UsageKey
 import six
 from six import text_type
 
-from courseware.courses import get_problems_in_section
-from courseware.module_render import get_xqueue_callback_url_prefix
+from lms.djangoapps.courseware.courses import get_problems_in_section
+from lms.djangoapps.courseware.module_render import get_xqueue_callback_url_prefix
 from lms.djangoapps.instructor_task.models import PROGRESS, InstructorTask
 from util.db import outer_atomic
 from xmodule.modulestore.django import modulestore
diff --git a/lms/djangoapps/instructor_task/tasks_helper/enrollments.py b/lms/djangoapps/instructor_task/tasks_helper/enrollments.py
index f23d3d66308..5e06cc68edc 100644
--- a/lms/djangoapps/instructor_task/tasks_helper/enrollments.py
+++ b/lms/djangoapps/instructor_task/tasks_helper/enrollments.py
@@ -12,7 +12,7 @@ from django.conf import settings
 from django.utils.translation import ugettext as _
 from pytz import UTC
 
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from edxmako.shortcuts import render_to_string
 from lms.djangoapps.instructor_analytics.basic import enrolled_students_features, list_may_enroll
 from lms.djangoapps.instructor_analytics.csvs import format_dictlist
diff --git a/lms/djangoapps/instructor_task/tasks_helper/grades.py b/lms/djangoapps/instructor_task/tasks_helper/grades.py
index 5ca6f833f2a..dc4026b0366 100644
--- a/lms/djangoapps/instructor_task/tasks_helper/grades.py
+++ b/lms/djangoapps/instructor_task/tasks_helper/grades.py
@@ -20,8 +20,8 @@ from six import text_type
 from six.moves import zip, zip_longest
 
 from course_blocks.api import get_course_blocks
-from courseware.courses import get_course_by_id
-from courseware.user_state_client import DjangoXBlockUserStateClient
+from lms.djangoapps.courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.user_state_client import DjangoXBlockUserStateClient
 from lms.djangoapps.instructor_analytics.basic import list_problem_responses
 from lms.djangoapps.instructor_analytics.csvs import format_dictlist
 from lms.djangoapps.certificates.models import CertificateWhitelist, GeneratedCertificate, certificate_info_for_user
diff --git a/lms/djangoapps/instructor_task/tasks_helper/module_state.py b/lms/djangoapps/instructor_task/tasks_helper/module_state.py
index 39cb7581e16..d1c1461bcc5 100644
--- a/lms/djangoapps/instructor_task/tasks_helper/module_state.py
+++ b/lms/djangoapps/instructor_task/tasks_helper/module_state.py
@@ -14,10 +14,10 @@ from xblock.runtime import KvsFieldData
 from xblock.scorable import Score
 
 from capa.responsetypes import LoncapaProblemError, ResponseError, StudentInputError
-from courseware.courses import get_course_by_id, get_problems_in_section
-from courseware.model_data import DjangoKeyValueStore, FieldDataCache
-from courseware.models import StudentModule
-from courseware.module_render import get_module_for_descriptor_internal
+from lms.djangoapps.courseware.courses import get_course_by_id, get_problems_in_section
+from lms.djangoapps.courseware.model_data import DjangoKeyValueStore, FieldDataCache
+from lms.djangoapps.courseware.models import StudentModule
+from lms.djangoapps.courseware.module_render import get_module_for_descriptor_internal
 from lms.djangoapps.grades.api import events as grades_events
 from student.models import get_user_by_username_or_email
 from track.event_transaction_utils import create_new_event_transaction_id, set_event_transaction_type
diff --git a/lms/djangoapps/instructor_task/tests/test_api.py b/lms/djangoapps/instructor_task/tests/test_api.py
index eae423d5b07..b7041397b5d 100644
--- a/lms/djangoapps/instructor_task/tests/test_api.py
+++ b/lms/djangoapps/instructor_task/tests/test_api.py
@@ -10,7 +10,7 @@ from six.moves import range
 
 from bulk_email.models import SEND_TO_LEARNERS, SEND_TO_MYSELF, SEND_TO_STAFF, CourseEmail
 from common.test.utils import normalize_repr
-from courseware.tests.factories import UserFactory
+from lms.djangoapps.courseware.tests.factories import UserFactory
 from lms.djangoapps.certificates.models import CertificateGenerationHistory, CertificateStatuses
 from lms.djangoapps.instructor_task.api import (
     SpecificStudentIdMissingError,
diff --git a/lms/djangoapps/instructor_task/tests/test_base.py b/lms/djangoapps/instructor_task/tests/test_base.py
index 24fd6915e3a..53205f6dfef 100644
--- a/lms/djangoapps/instructor_task/tests/test_base.py
+++ b/lms/djangoapps/instructor_task/tests/test_base.py
@@ -22,8 +22,8 @@ from opaque_keys.edx.locations import Location
 from six import text_type
 
 from capa.tests.response_xml_factory import OptionResponseXMLFactory
-from courseware.model_data import StudentModule
-from courseware.tests.tests import LoginEnrollmentTestCase
+from lms.djangoapps.courseware.model_data import StudentModule
+from lms.djangoapps.courseware.tests.tests import LoginEnrollmentTestCase
 from lms.djangoapps.instructor_task.api_helper import encode_problem_and_student_input
 from lms.djangoapps.instructor_task.models import PROGRESS, QUEUING, ReportStore
 from lms.djangoapps.instructor_task.tests.factories import InstructorTaskFactory
diff --git a/lms/djangoapps/instructor_task/tests/test_integration.py b/lms/djangoapps/instructor_task/tests/test_integration.py
index a0137041f59..d77532f3fe3 100644
--- a/lms/djangoapps/instructor_task/tests/test_integration.py
+++ b/lms/djangoapps/instructor_task/tests/test_integration.py
@@ -23,7 +23,7 @@ from six.moves import range
 
 from capa.responsetypes import StudentInputError
 from capa.tests.response_xml_factory import CodeResponseXMLFactory, CustomResponseXMLFactory
-from courseware.model_data import StudentModule
+from lms.djangoapps.courseware.model_data import StudentModule
 from lms.djangoapps.grades.api import CourseGradeFactory
 from lms.djangoapps.instructor_task.api import (
     submit_delete_problem_state_for_all_students,
diff --git a/lms/djangoapps/instructor_task/tests/test_tasks.py b/lms/djangoapps/instructor_task/tests/test_tasks.py
index 603d6acfbd0..0ed37069821 100644
--- a/lms/djangoapps/instructor_task/tests/test_tasks.py
+++ b/lms/djangoapps/instructor_task/tests/test_tasks.py
@@ -19,8 +19,8 @@ from opaque_keys.edx.locations import i4xEncoder
 from six.moves import range
 
 from course_modes.models import CourseMode
-from courseware.models import StudentModule
-from courseware.tests.factories import StudentModuleFactory
+from lms.djangoapps.courseware.models import StudentModule
+from lms.djangoapps.courseware.tests.factories import StudentModuleFactory
 from lms.djangoapps.instructor_task.exceptions import UpdateProblemModuleStateError
 from lms.djangoapps.instructor_task.models import InstructorTask
 from lms.djangoapps.instructor_task.tasks import (
diff --git a/lms/djangoapps/instructor_task/tests/test_tasks_helper.py b/lms/djangoapps/instructor_task/tests/test_tasks_helper.py
index 2eab66f088e..8468e273018 100644
--- a/lms/djangoapps/instructor_task/tests/test_tasks_helper.py
+++ b/lms/djangoapps/instructor_task/tests/test_tasks_helper.py
@@ -32,7 +32,7 @@ import openedx.core.djangoapps.user_api.course_tag.api as course_tag_api
 from capa.tests.response_xml_factory import MultipleChoiceResponseXMLFactory
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.tests.factories import InstructorFactory
+from lms.djangoapps.courseware.tests.factories import InstructorFactory
 from lms.djangoapps.certificates.models import CertificateStatuses, GeneratedCertificate
 from lms.djangoapps.certificates.tests.factories import CertificateWhitelistFactory, GeneratedCertificateFactory
 from lms.djangoapps.grades.models import PersistentCourseGrade
diff --git a/lms/djangoapps/lti_provider/tests/test_views.py b/lms/djangoapps/lti_provider/tests/test_views.py
index 430eb5ba40d..5ad29b7930a 100644
--- a/lms/djangoapps/lti_provider/tests/test_views.py
+++ b/lms/djangoapps/lti_provider/tests/test_views.py
@@ -11,7 +11,7 @@ from django.urls import reverse
 from mock import MagicMock, patch
 from opaque_keys.edx.locator import BlockUsageLocator, CourseLocator
 
-from courseware.testutils import RenderXBlockTestMixin
+from lms.djangoapps.courseware.testutils import RenderXBlockTestMixin
 from lti_provider import models, views
 from student.tests.factories import UserFactory
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
diff --git a/lms/djangoapps/lti_provider/views.py b/lms/djangoapps/lti_provider/views.py
index ec80bcfaebb..d67e16ab1c7 100644
--- a/lms/djangoapps/lti_provider/views.py
+++ b/lms/djangoapps/lti_provider/views.py
@@ -146,7 +146,7 @@ def render_courseware(request, usage_key):
     context to render the courseware.
     """
     # return an HttpResponse object that contains the template and necessary context to render the courseware.
-    from courseware.views.views import render_xblock
+    from lms.djangoapps.courseware.views.views import render_xblock
     return render_xblock(request, six.text_type(usage_key), check_if_enrolled=False)
 
 
diff --git a/lms/djangoapps/mobile_api/course_info/views.py b/lms/djangoapps/mobile_api/course_info/views.py
index 7e8d5271959..ab66f7853e9 100644
--- a/lms/djangoapps/mobile_api/course_info/views.py
+++ b/lms/djangoapps/mobile_api/course_info/views.py
@@ -7,7 +7,7 @@ from __future__ import absolute_import
 from rest_framework import generics
 from rest_framework.response import Response
 
-from courseware.courses import get_course_info_section_module
+from lms.djangoapps.courseware.courses import get_course_info_section_module
 from openedx.core.lib.xblock_utils import get_course_update_items
 from static_replace import make_static_urls_absolute
 
diff --git a/lms/djangoapps/mobile_api/tests/test_milestones.py b/lms/djangoapps/mobile_api/tests/test_milestones.py
index 9515a254608..7aab67c34fb 100644
--- a/lms/djangoapps/mobile_api/tests/test_milestones.py
+++ b/lms/djangoapps/mobile_api/tests/test_milestones.py
@@ -8,8 +8,8 @@ from crum import set_current_request
 from django.conf import settings
 from mock import patch
 
-from courseware.access_response import MilestoneAccessError
-from courseware.tests.test_entrance_exam import add_entrance_exam_milestone, answer_entrance_exam_problem
+from lms.djangoapps.courseware.access_response import MilestoneAccessError
+from lms.djangoapps.courseware.tests.test_entrance_exam import add_entrance_exam_milestone, answer_entrance_exam_problem
 from openedx.core.djangolib.testing.utils import get_mock_request
 from util.milestones_helpers import add_prerequisite_course, fulfill_course_milestone
 from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
diff --git a/lms/djangoapps/mobile_api/testutils.py b/lms/djangoapps/mobile_api/testutils.py
index e056d5035bf..50bf949e415 100644
--- a/lms/djangoapps/mobile_api/testutils.py
+++ b/lms/djangoapps/mobile_api/testutils.py
@@ -25,8 +25,8 @@ from mock import patch
 from opaque_keys.edx.keys import CourseKey
 from rest_framework.test import APITestCase
 
-from courseware.access_response import MobileAvailabilityError, StartDateError, VisibilityError
-from courseware.tests.factories import UserFactory
+from lms.djangoapps.courseware.access_response import MobileAvailabilityError, StartDateError, VisibilityError
+from lms.djangoapps.courseware.tests.factories import UserFactory
 from mobile_api.models import IgnoreMobileAvailableFlagConfig
 from mobile_api.tests.test_milestones import MobileAPIMilestonesMixin
 from mobile_api.utils import API_V1
diff --git a/lms/djangoapps/mobile_api/users/serializers.py b/lms/djangoapps/mobile_api/users/serializers.py
index 45f9f96779c..c985dfba9b1 100644
--- a/lms/djangoapps/mobile_api/users/serializers.py
+++ b/lms/djangoapps/mobile_api/users/serializers.py
@@ -8,7 +8,7 @@ import six
 from rest_framework import serializers
 from rest_framework.reverse import reverse
 
-from courseware.access import has_access
+from lms.djangoapps.courseware.access import has_access
 from lms.djangoapps.certificates.api import certificate_downloadable_status
 from openedx.features.course_duration_limits.access import get_user_course_expiration_date
 from openedx.features.course_duration_limits.models import CourseDurationLimitConfig
diff --git a/lms/djangoapps/mobile_api/users/tests.py b/lms/djangoapps/mobile_api/users/tests.py
index 8eb2dbdee1b..ee6eeba9655 100644
--- a/lms/djangoapps/mobile_api/users/tests.py
+++ b/lms/djangoapps/mobile_api/users/tests.py
@@ -19,7 +19,7 @@ from six.moves import range
 from six.moves.urllib.parse import parse_qs  # pylint: disable=import-error
 
 from course_modes.models import CourseMode
-from courseware.access_response import MilestoneAccessError, StartDateError, VisibilityError
+from lms.djangoapps.courseware.access_response import MilestoneAccessError, StartDateError, VisibilityError
 from lms.djangoapps.certificates.api import generate_user_certificates
 from lms.djangoapps.certificates.models import CertificateStatuses
 from lms.djangoapps.certificates.tests.factories import GeneratedCertificateFactory
diff --git a/lms/djangoapps/mobile_api/users/views.py b/lms/djangoapps/mobile_api/users/views.py
index 9c89da99e01..70f879f1774 100644
--- a/lms/djangoapps/mobile_api/users/views.py
+++ b/lms/djangoapps/mobile_api/users/views.py
@@ -15,11 +15,11 @@ from rest_framework.response import Response
 from xblock.fields import Scope
 from xblock.runtime import KeyValueStore
 
-from courseware.access import is_mobile_available_for_user
-from courseware.courses import get_current_child
-from courseware.model_data import FieldDataCache
-from courseware.module_render import get_module_for_descriptor
-from courseware.views.index import save_positions_recursively_up
+from lms.djangoapps.courseware.access import is_mobile_available_for_user
+from lms.djangoapps.courseware.courses import get_current_child
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.module_render import get_module_for_descriptor
+from lms.djangoapps.courseware.views.index import save_positions_recursively_up
 from lms.djangoapps.courseware.access_utils import ACCESS_GRANTED
 from mobile_api.utils import API_V05
 from openedx.features.course_duration_limits.access import check_course_expired
diff --git a/lms/djangoapps/oauth2_handler/handlers.py b/lms/djangoapps/oauth2_handler/handlers.py
index c8b8ad9211f..85bf6cedf51 100644
--- a/lms/djangoapps/oauth2_handler/handlers.py
+++ b/lms/djangoapps/oauth2_handler/handlers.py
@@ -6,7 +6,7 @@ import six
 from django.conf import settings
 from django.core.cache import cache
 
-from courseware.access import has_access
+from lms.djangoapps.courseware.access import has_access
 from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
 from openedx.core.djangoapps.lang_pref import LANGUAGE_KEY
 from openedx.core.djangoapps.user_api.models import UserPreference
diff --git a/lms/djangoapps/shoppingcart/models.py b/lms/djangoapps/shoppingcart/models.py
index a3669f83083..f49c9ff7285 100644
--- a/lms/djangoapps/shoppingcart/models.py
+++ b/lms/djangoapps/shoppingcart/models.py
@@ -35,7 +35,7 @@ from six import text_type
 from six.moves import range
 
 from course_modes.models import CourseMode
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from edxmako.shortcuts import render_to_string
 from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
 from openedx.core.djangolib.markup import HTML, Text
diff --git a/lms/djangoapps/shoppingcart/reports.py b/lms/djangoapps/shoppingcart/reports.py
index 15b30a664e9..322903c5e7b 100644
--- a/lms/djangoapps/shoppingcart/reports.py
+++ b/lms/djangoapps/shoppingcart/reports.py
@@ -11,7 +11,7 @@ import six
 from six import text_type
 
 from course_modes.models import CourseMode
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from shoppingcart.models import CertificateItem, OrderItem
 from student.models import CourseEnrollment
 from util.query import use_read_replica_if_available
diff --git a/lms/djangoapps/shoppingcart/tests/test_views.py b/lms/djangoapps/shoppingcart/tests/test_views.py
index 43dc7c01dea..db448838ce5 100644
--- a/lms/djangoapps/shoppingcart/tests/test_views.py
+++ b/lms/djangoapps/shoppingcart/tests/test_views.py
@@ -31,7 +31,7 @@ from six.moves.urllib.parse import urlparse  # pylint: disable=import-error
 from common.test.utils import XssTestMixin
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.tests.factories import InstructorFactory
+from lms.djangoapps.courseware.tests.factories import InstructorFactory
 from edxmako.shortcuts import render_to_response
 from openedx.core.djangoapps.embargo.test_utils import restrict_course
 from shoppingcart.admin import SoftDeleteCouponAdmin
diff --git a/lms/djangoapps/shoppingcart/views.py b/lms/djangoapps/shoppingcart/views.py
index 1295341e3bf..645ffb0a6c2 100644
--- a/lms/djangoapps/shoppingcart/views.py
+++ b/lms/djangoapps/shoppingcart/views.py
@@ -33,7 +33,7 @@ from opaque_keys.edx.keys import CourseKey
 from opaque_keys.edx.locator import CourseLocator
 
 from course_modes.models import CourseMode
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from edxmako.shortcuts import render_to_response
 from openedx.core.djangoapps.embargo import api as embargo_api
 from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
diff --git a/lms/djangoapps/staticbook/views.py b/lms/djangoapps/staticbook/views.py
index 2e0e33198b5..d184bfe1e40 100644
--- a/lms/djangoapps/staticbook/views.py
+++ b/lms/djangoapps/staticbook/views.py
@@ -9,8 +9,8 @@ from django.http import Http404
 from django.views.decorators.clickjacking import xframe_options_exempt
 from opaque_keys.edx.keys import CourseKey
 
-from courseware.access import has_access
-from courseware.courses import get_course_with_access
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.courses import get_course_with_access
 from edxmako.shortcuts import render_to_response
 from static_replace import replace_static_urls
 
diff --git a/lms/djangoapps/support/decorators.py b/lms/djangoapps/support/decorators.py
index 7bf63b60412..a1971e218ee 100644
--- a/lms/djangoapps/support/decorators.py
+++ b/lms/djangoapps/support/decorators.py
@@ -8,7 +8,7 @@ from functools import wraps
 from django.contrib.auth.decorators import login_required
 from django.http import HttpResponseForbidden
 
-from courseware.access import has_access
+from lms.djangoapps.courseware.access import has_access
 
 
 def require_support_permission(func):
diff --git a/lms/djangoapps/survey/utils.py b/lms/djangoapps/survey/utils.py
index a8ebf60b14d..5cc90a574ef 100644
--- a/lms/djangoapps/survey/utils.py
+++ b/lms/djangoapps/survey/utils.py
@@ -3,7 +3,7 @@ Utilities for determining whether or not a survey needs to be completed.
 """
 from __future__ import absolute_import
 
-from courseware.access import has_access
+from lms.djangoapps.courseware.access import has_access
 from survey.models import SurveyAnswer, SurveyForm
 
 
diff --git a/lms/djangoapps/teams/plugins.py b/lms/djangoapps/teams/plugins.py
index 15ca141de69..3aefdd4b47d 100644
--- a/lms/djangoapps/teams/plugins.py
+++ b/lms/djangoapps/teams/plugins.py
@@ -5,7 +5,7 @@ from __future__ import absolute_import
 
 from django.utils.translation import ugettext_noop
 
-from courseware.tabs import EnrolledTab
+from lms.djangoapps.courseware.tabs import EnrolledTab
 
 from . import is_feature_enabled
 
diff --git a/lms/djangoapps/teams/tests/test_views.py b/lms/djangoapps/teams/tests/test_views.py
index 566ff6a0cd3..0e65314ba5c 100644
--- a/lms/djangoapps/teams/tests/test_views.py
+++ b/lms/djangoapps/teams/tests/test_views.py
@@ -20,7 +20,7 @@ from search.search_engine_base import SearchEngine
 from six.moves import range
 
 from common.test.utils import skip_signal
-from courseware.tests.factories import StaffFactory
+from lms.djangoapps.courseware.tests.factories import StaffFactory
 from openedx.core.djangoapps.django_comment_common.models import FORUM_ROLE_COMMUNITY_TA, Role
 from openedx.core.djangoapps.django_comment_common.utils import seed_permissions_roles
 from student.models import CourseEnrollment
diff --git a/lms/djangoapps/teams/views.py b/lms/djangoapps/teams/views.py
index 95668815f78..bf95e1a5329 100644
--- a/lms/djangoapps/teams/views.py
+++ b/lms/djangoapps/teams/views.py
@@ -25,7 +25,7 @@ from rest_framework.reverse import reverse
 from rest_framework.views import APIView
 from rest_framework_oauth.authentication import OAuth2Authentication
 
-from courseware.courses import get_course_with_access, has_access
+from lms.djangoapps.courseware.courses import get_course_with_access, has_access
 from lms.djangoapps.discussion.django_comment_client.utils import has_discussion_privileges
 from lms.djangoapps.teams.models import CourseTeam, CourseTeamMembership
 from openedx.core.lib.api.parsers import MergePatchParser
diff --git a/lms/envs/common.py b/lms/envs/common.py
index fd14163cf2a..6dd24088cf5 100644
--- a/lms/envs/common.py
+++ b/lms/envs/common.py
@@ -669,7 +669,7 @@ CONTEXT_PROCESSORS = [
     'shoppingcart.context_processor.user_has_cart_context_processor',
 
     # Timezone processor (sends language and time_zone preference)
-    'courseware.context_processor.user_timezone_locale_prefs',
+    'lms.djangoapps.courseware.context_processor.user_timezone_locale_prefs',
 
     # Online contextual help
     'help_tokens.context_processor',
@@ -1498,8 +1498,8 @@ MIDDLEWARE_CLASSES = [
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
 
     # to redirected unenrolled students to the course info page
-    'courseware.middleware.CacheCourseIdMiddleware',
-    'courseware.middleware.RedirectMiddleware',
+    'lms.djangoapps.courseware.middleware.CacheCourseIdMiddleware',
+    'lms.djangoapps.courseware.middleware.RedirectMiddleware',
 
     'course_wiki.middleware.WikiAccessMiddleware',
 
@@ -2272,7 +2272,7 @@ INSTALLED_APPS = [
     'openedx.core.djangoapps.video_pipeline',
 
     # Our courseware
-    'courseware',
+    'lms.djangoapps.courseware',
     'coursewarehistoryextended',
     'student.apps.StudentConfig',
 
diff --git a/lms/envs/production.py b/lms/envs/production.py
index 0652f11dcee..ad69fc733d0 100644
--- a/lms/envs/production.py
+++ b/lms/envs/production.py
@@ -859,7 +859,7 @@ XBLOCK_FIELD_DATA_WRAPPERS += (
 )
 
 MODULESTORE_FIELD_OVERRIDE_PROVIDERS += (
-    'courseware.self_paced_overrides.SelfPacedDateOverrideProvider',
+    'lms.djangoapps.courseware.self_paced_overrides.SelfPacedDateOverrideProvider',
 )
 
 # PROFILE IMAGE CONFIG
diff --git a/lms/lib/courseware_search/lms_search_initializer.py b/lms/lib/courseware_search/lms_search_initializer.py
index f668cd245ef..fc5ed25af4c 100644
--- a/lms/lib/courseware_search/lms_search_initializer.py
+++ b/lms/lib/courseware_search/lms_search_initializer.py
@@ -8,8 +8,8 @@ from __future__ import absolute_import
 from opaque_keys.edx.keys import CourseKey
 from search.initializer import SearchInitializer
 
-from courseware.access import has_access
-from courseware.masquerade import setup_masquerade
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.masquerade import setup_masquerade
 
 
 class LmsSearchInitializer(SearchInitializer):
diff --git a/lms/lib/courseware_search/test/test_lms_result_processor.py b/lms/lib/courseware_search/test/test_lms_result_processor.py
index b55b7238aaa..4731bbbe122 100644
--- a/lms/lib/courseware_search/test/test_lms_result_processor.py
+++ b/lms/lib/courseware_search/test/test_lms_result_processor.py
@@ -5,7 +5,7 @@ from __future__ import absolute_import
 
 import six
 
-from courseware.tests.factories import UserFactory
+from lms.djangoapps.courseware.tests.factories import UserFactory
 from lms.lib.courseware_search.lms_result_processor import LmsSearchResultProcessor
 from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
 from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
diff --git a/lms/templates/courseware/course_about.html b/lms/templates/courseware/course_about.html
index 3eea1aedc5b..cb999d85463 100644
--- a/lms/templates/courseware/course_about.html
+++ b/lms/templates/courseware/course_about.html
@@ -4,7 +4,7 @@
 from django.utils.translation import ugettext as _
 from django.utils.translation import pgettext
 from django.urls import reverse
-from courseware.courses import get_course_about_section
+from lms.djangoapps.courseware.courses import get_course_about_section
 from django.conf import settings
 from six import text_type
 from edxmako.shortcuts import marketing_link
diff --git a/lms/templates/courseware/course_navigation.html b/lms/templates/courseware/course_navigation.html
index 44958122af8..5946d7319b3 100644
--- a/lms/templates/courseware/course_navigation.html
+++ b/lms/templates/courseware/course_navigation.html
@@ -4,7 +4,7 @@
 <%namespace name='static' file='/static_content.html'/>
 
 <%!
-from courseware.tabs import get_course_tab_list
+from lms.djangoapps.courseware.tabs import get_course_tab_list
 from django.conf import settings
 from django.urls import reverse
 from django.utils.translation import ugettext as _
diff --git a/lms/templates/courseware/info.html b/lms/templates/courseware/info.html
index 29067cfecbf..4fea8989a9c 100644
--- a/lms/templates/courseware/info.html
+++ b/lms/templates/courseware/info.html
@@ -9,7 +9,7 @@ from pytz import timezone, utc
 from django.urls import reverse
 from django.utils.translation import ugettext as _
 
-from courseware.courses import get_course_info_section, get_course_date_blocks
+from lms.djangoapps.courseware.courses import get_course_info_section, get_course_date_blocks
 from openedx.core.djangoapps.self_paced.models import SelfPacedConfiguration
 from openedx.core.djangolib.markup import HTML, Text
 %>
diff --git a/lms/templates/courseware/syllabus.html b/lms/templates/courseware/syllabus.html
index e4c05cf6faa..f2cff56fb03 100644
--- a/lms/templates/courseware/syllabus.html
+++ b/lms/templates/courseware/syllabus.html
@@ -3,7 +3,7 @@
 <%namespace name='static' file='/static_content.html'/>
 <%!
 from django.utils.translation import ugettext as _
-from courseware.courses import get_course_syllabus_section
+from lms.djangoapps.courseware.courses import get_course_syllabus_section
 %>
 
 <%block name="headextra">
diff --git a/lms/templates/enroll_staff.html b/lms/templates/enroll_staff.html
index 3a5a093d5ef..9a2e534769c 100644
--- a/lms/templates/enroll_staff.html
+++ b/lms/templates/enroll_staff.html
@@ -4,7 +4,7 @@
 <%!
     from django.utils.translation import ugettext as _
     from django.utils.translation import pgettext
-    from courseware.courses import get_course_about_section
+    from lms.djangoapps.courseware.courses import get_course_about_section
 %>
 
 <%block name="headextra">
diff --git a/lms/templates/instructor/instructor_dashboard_2/cohort_management.html b/lms/templates/instructor/instructor_dashboard_2/cohort_management.html
index 9aa5c6c863f..bcdb171c3f4 100644
--- a/lms/templates/instructor/instructor_dashboard_2/cohort_management.html
+++ b/lms/templates/instructor/instructor_dashboard_2/cohort_management.html
@@ -4,7 +4,7 @@
 <%!
 from django.utils.translation import ugettext as _
 from openedx.core.djangolib.js_utils import js_escaped_string, dump_js_escaped_json
-from courseware.courses import get_studio_url
+from lms.djangoapps.courseware.courses import get_studio_url
 from openedx.core.djangoapps.course_groups.partition_scheme import get_cohorted_user_partition
 %>
 
diff --git a/lms/templates/instructor/instructor_dashboard_2/discussions_management.html b/lms/templates/instructor/instructor_dashboard_2/discussions_management.html
index 326bd8ea8c1..5b90141bb11 100644
--- a/lms/templates/instructor/instructor_dashboard_2/discussions_management.html
+++ b/lms/templates/instructor/instructor_dashboard_2/discussions_management.html
@@ -4,7 +4,7 @@
 <%!
 from django.utils.translation import ugettext as _
 from openedx.core.djangolib.js_utils import js_escaped_string, dump_js_escaped_json
-from courseware.courses import get_studio_url
+from lms.djangoapps.courseware.courses import get_studio_url
 from openedx.core.djangoapps.course_groups.partition_scheme import get_cohorted_user_partition
 %>
 
diff --git a/lms/templates/video_modal.html b/lms/templates/video_modal.html
index be276e42598..5ca22b1b417 100644
--- a/lms/templates/video_modal.html
+++ b/lms/templates/video_modal.html
@@ -1,5 +1,5 @@
 <%!
-  from courseware.courses import get_course_about_section
+  from lms.djangoapps.courseware.courses import get_course_about_section
 %>
 <%namespace name='static' file='static_content.html'/>
 
diff --git a/lms/urls.py b/lms/urls.py
index 6cac692fbfc..bb8f2d6c3a7 100644
--- a/lms/urls.py
+++ b/lms/urls.py
@@ -14,11 +14,13 @@ from django.views.generic.base import RedirectView
 from ratelimitbackend import admin
 
 from branding import views as branding_views
-from courseware.masquerade import handle_ajax as courseware_masquerade_handle_ajax
-from courseware.module_render import handle_xblock_callback, handle_xblock_callback_noauth, xblock_view, xqueue_callback
-from courseware.views import views as courseware_views
-from courseware.views.index import CoursewareIndex
-from courseware.views.views import CourseTabView, EnrollStaffView, StaticCourseTabView
+from lms.djangoapps.courseware.masquerade import handle_ajax as courseware_masquerade_handle_ajax
+from lms.djangoapps.courseware.module_render import (
+    handle_xblock_callback, handle_xblock_callback_noauth, xblock_view, xqueue_callback,
+)
+from lms.djangoapps.courseware.views import views as courseware_views
+from lms.djangoapps.courseware.views.index import CoursewareIndex
+from lms.djangoapps.courseware.views.views import CourseTabView, EnrollStaffView, StaticCourseTabView
 from debug import views as debug_views
 from lms.djangoapps.certificates import views as certificates_views
 from lms.djangoapps.discussion import views as discussion_views
diff --git a/openedx/core/djangoapps/content_libraries/tests/test_runtime.py b/openedx/core/djangoapps/content_libraries/tests/test_runtime.py
index 365e209caf6..c863e7afa18 100644
--- a/openedx/core/djangoapps/content_libraries/tests/test_runtime.py
+++ b/openedx/core/djangoapps/content_libraries/tests/test_runtime.py
@@ -13,7 +13,7 @@ from rest_framework.test import APIClient
 from xblock.core import XBlock, Scope
 from xblock import fields
 
-from courseware.model_data import get_score
+from lms.djangoapps.courseware.model_data import get_score
 from openedx.core.djangoapps.content_libraries import api as library_api
 from openedx.core.djangoapps.content_libraries.tests.test_content_libraries import (
     URL_BLOCK_RENDER_VIEW,
diff --git a/openedx/core/djangoapps/course_groups/cohorts.py b/openedx/core/djangoapps/course_groups/cohorts.py
index f4d0245b450..3b6950704c0 100644
--- a/openedx/core/djangoapps/course_groups/cohorts.py
+++ b/openedx/core/djangoapps/course_groups/cohorts.py
@@ -20,7 +20,7 @@ from django.utils.translation import ugettext as _
 from edx_django_utils.cache import RequestCache
 from eventtracking import tracker
 
-from courseware import courses
+from lms.djangoapps.courseware import courses
 from openedx.core.lib.cache_utils import request_cached
 from student.models import get_user_by_username_or_email
 
diff --git a/openedx/core/djangoapps/course_groups/partition_scheme.py b/openedx/core/djangoapps/course_groups/partition_scheme.py
index fc5b062b63b..2b851971bb6 100644
--- a/openedx/core/djangoapps/course_groups/partition_scheme.py
+++ b/openedx/core/djangoapps/course_groups/partition_scheme.py
@@ -5,7 +5,7 @@ from __future__ import absolute_import
 
 import logging
 
-from courseware.masquerade import (
+from lms.djangoapps.courseware.masquerade import (
     get_course_masquerade,
     get_masquerading_user_group,
     is_masquerading_as_specific_student
diff --git a/openedx/core/djangoapps/course_groups/tests/test_partition_scheme.py b/openedx/core/djangoapps/course_groups/tests/test_partition_scheme.py
index 3751fe46e69..80cc1d324d4 100644
--- a/openedx/core/djangoapps/course_groups/tests/test_partition_scheme.py
+++ b/openedx/core/djangoapps/course_groups/tests/test_partition_scheme.py
@@ -8,7 +8,7 @@ import django.test
 from mock import patch
 from six.moves import range
 
-from courseware.tests.test_masquerade import StaffMasqueradeTestCase
+from lms.djangoapps.courseware.tests.test_masquerade import StaffMasqueradeTestCase
 from openedx.core.djangoapps.user_api.partition_schemes import RandomUserPartitionScheme
 from openedx.core.djangolib.testing.utils import skip_unless_lms
 from student.tests.factories import UserFactory
diff --git a/openedx/core/djangoapps/course_groups/views.py b/openedx/core/djangoapps/course_groups/views.py
index 696e0fcc469..10581fc79d0 100644
--- a/openedx/core/djangoapps/course_groups/views.py
+++ b/openedx/core/djangoapps/course_groups/views.py
@@ -26,7 +26,7 @@ from rest_framework.generics import GenericAPIView
 from rest_framework.response import Response
 from rest_framework.serializers import Serializer
 
-from courseware.courses import get_course, get_course_with_access
+from lms.djangoapps.courseware.courses import get_course, get_course_with_access
 from edxmako.shortcuts import render_to_response
 from openedx.core.djangoapps.course_groups.models import CohortMembership
 from openedx.core.lib.api.authentication import OAuth2AuthenticationAllowInactiveUser
diff --git a/openedx/core/djangoapps/enrollments/permissions.py b/openedx/core/djangoapps/enrollments/permissions.py
index 85edfca43b3..b4a6754ecc7 100644
--- a/openedx/core/djangoapps/enrollments/permissions.py
+++ b/openedx/core/djangoapps/enrollments/permissions.py
@@ -3,7 +3,7 @@ Permission definitions for the enrollments djangoapp
 """
 
 from bridgekeeper import perms
-from courseware.rules import HasAccessRule
+from lms.djangoapps.courseware.rules import HasAccessRule
 
 ENROLL_IN_COURSE = 'enrollment.enroll_in_course'
 
diff --git a/openedx/core/djangoapps/schedules/content_highlights.py b/openedx/core/djangoapps/schedules/content_highlights.py
index 1962472325c..c9f47fc2cf7 100644
--- a/openedx/core/djangoapps/schedules/content_highlights.py
+++ b/openedx/core/djangoapps/schedules/content_highlights.py
@@ -6,8 +6,8 @@ from __future__ import absolute_import
 
 import logging
 
-from courseware.model_data import FieldDataCache
-from courseware.module_render import get_module_for_descriptor
+from lms.djangoapps.courseware.model_data import FieldDataCache
+from lms.djangoapps.courseware.module_render import get_module_for_descriptor
 from openedx.core.djangoapps.schedules.config import COURSE_UPDATE_WAFFLE_FLAG
 from openedx.core.djangoapps.schedules.exceptions import CourseUpdateDoesNotExist
 from openedx.core.lib.request_utils import get_request_or_stub
diff --git a/openedx/core/djangoapps/schedules/management/commands/tests/send_email_base.py b/openedx/core/djangoapps/schedules/management/commands/tests/send_email_base.py
index e80dae6bdae..73de50ba80d 100644
--- a/openedx/core/djangoapps/schedules/management/commands/tests/send_email_base.py
+++ b/openedx/core/djangoapps/schedules/management/commands/tests/send_email_base.py
@@ -24,7 +24,7 @@ from six.moves import range
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.models import DynamicUpgradeDeadlineConfiguration
+from lms.djangoapps.courseware.models import DynamicUpgradeDeadlineConfiguration
 from lms.djangoapps.commerce.models import CommerceConfiguration
 from openedx.core.djangoapps.schedules import resolvers, tasks
 from openedx.core.djangoapps.schedules.resolvers import _get_datetime_beginning_of_day
diff --git a/openedx/core/djangoapps/schedules/management/commands/tests/upsell_base.py b/openedx/core/djangoapps/schedules/management/commands/tests/upsell_base.py
index c6d3359ba39..75c27ae0f6c 100644
--- a/openedx/core/djangoapps/schedules/management/commands/tests/upsell_base.py
+++ b/openedx/core/djangoapps/schedules/management/commands/tests/upsell_base.py
@@ -13,7 +13,7 @@ from edx_ace.utils.date import serialize
 from freezegun import freeze_time
 from mock import PropertyMock, patch
 
-from courseware.models import DynamicUpgradeDeadlineConfiguration
+from lms.djangoapps.courseware.models import DynamicUpgradeDeadlineConfiguration
 
 
 @ddt.ddt
diff --git a/openedx/core/djangoapps/schedules/resolvers.py b/openedx/core/djangoapps/schedules/resolvers.py
index 13fda216970..aef414639d7 100644
--- a/openedx/core/djangoapps/schedules/resolvers.py
+++ b/openedx/core/djangoapps/schedules/resolvers.py
@@ -14,7 +14,7 @@ from edx_ace.recipient import Recipient
 from edx_ace.recipient_resolver import RecipientResolver
 from edx_django_utils.monitoring import function_trace, set_custom_metric
 
-from courseware.date_summary import verified_upgrade_deadline_link, verified_upgrade_link_is_valid
+from lms.djangoapps.courseware.date_summary import verified_upgrade_deadline_link, verified_upgrade_link_is_valid
 from openedx.core.djangoapps.ace_common.template_context import get_base_template_context
 from openedx.core.djangoapps.schedules.content_highlights import get_week_highlights
 from openedx.core.djangoapps.schedules.exceptions import CourseUpdateDoesNotExist
diff --git a/openedx/core/djangoapps/schedules/signals.py b/openedx/core/djangoapps/schedules/signals.py
index 8e01b9a79bb..96c320ef6f9 100644
--- a/openedx/core/djangoapps/schedules/signals.py
+++ b/openedx/core/djangoapps/schedules/signals.py
@@ -10,7 +10,7 @@ from django.dispatch import receiver
 from edx_ace.utils import date
 
 from course_modes.models import CourseMode
-from courseware.models import (
+from lms.djangoapps.courseware.models import (
     CourseDynamicUpgradeDeadlineConfiguration,
     DynamicUpgradeDeadlineConfiguration,
     OrgDynamicUpgradeDeadlineConfiguration
diff --git a/openedx/core/djangoapps/schedules/tests/test_signals.py b/openedx/core/djangoapps/schedules/tests/test_signals.py
index e5fe9302684..6d94e84feaf 100644
--- a/openedx/core/djangoapps/schedules/tests/test_signals.py
+++ b/openedx/core/djangoapps/schedules/tests/test_signals.py
@@ -12,7 +12,7 @@ from pytz import utc
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.models import DynamicUpgradeDeadlineConfiguration
+from lms.djangoapps.courseware.models import DynamicUpgradeDeadlineConfiguration
 from openedx.core.djangoapps.schedules.models import ScheduleExperience
 from openedx.core.djangoapps.schedules.signals import CREATE_SCHEDULE_WAFFLE_FLAG
 from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory
diff --git a/openedx/core/djangoapps/theming/tests/test_views.py b/openedx/core/djangoapps/theming/tests/test_views.py
index e69a0baf468..0da252a511c 100644
--- a/openedx/core/djangoapps/theming/tests/test_views.py
+++ b/openedx/core/djangoapps/theming/tests/test_views.py
@@ -9,7 +9,7 @@ from django.contrib.messages.middleware import MessageMiddleware
 from django.contrib.sites.models import Site
 from django.test import TestCase
 
-from courseware.tests.factories import GlobalStaffFactory
+from lms.djangoapps.courseware.tests.factories import GlobalStaffFactory
 from openedx.core.djangoapps.theming.middleware import CurrentSiteThemeMiddleware
 from student.tests.factories import UserFactory
 
diff --git a/openedx/core/djangoapps/verified_track_content/partition_scheme.py b/openedx/core/djangoapps/verified_track_content/partition_scheme.py
index 05d82c7311f..c0579f71541 100644
--- a/openedx/core/djangoapps/verified_track_content/partition_scheme.py
+++ b/openedx/core/djangoapps/verified_track_content/partition_scheme.py
@@ -7,7 +7,7 @@ import logging
 import six
 
 from course_modes.models import CourseMode
-from courseware.masquerade import (
+from lms.djangoapps.courseware.masquerade import (
     get_course_masquerade,
     get_masquerading_user_group,
     is_masquerading_as_specific_student
diff --git a/openedx/core/djangoapps/xblock/runtime/runtime.py b/openedx/core/djangoapps/xblock/runtime/runtime.py
index be68a187847..e891e9698c3 100644
--- a/openedx/core/djangoapps/xblock/runtime/runtime.py
+++ b/openedx/core/djangoapps/xblock/runtime/runtime.py
@@ -18,7 +18,7 @@ from xblock.fields import Scope
 from xblock.runtime import DictKeyValueStore, KvsFieldData, NullI18nService, MemoryIdManager, Runtime
 from web_fragments.fragment import Fragment
 
-from courseware.model_data import DjangoKeyValueStore, FieldDataCache
+from lms.djangoapps.courseware.model_data import DjangoKeyValueStore, FieldDataCache
 from lms.djangoapps.grades.api import signals as grades_signals
 from openedx.core.djangoapps.xblock.apps import get_xblock_app_config
 from openedx.core.djangoapps.xblock.runtime.blockstore_field_data import BlockstoreFieldData
diff --git a/openedx/features/course_bookmarks/plugins.py b/openedx/features/course_bookmarks/plugins.py
index 7ec78dca966..7a73a7ac9d2 100644
--- a/openedx/features/course_bookmarks/plugins.py
+++ b/openedx/features/course_bookmarks/plugins.py
@@ -7,7 +7,7 @@ from __future__ import absolute_import
 from django.urls import reverse
 from django.utils.translation import ugettext as _
 
-from courseware.permissions import EDIT_BOOKMARK
+from lms.djangoapps.courseware.permissions import EDIT_BOOKMARK
 from openedx.features.course_experience.course_tools import CourseTool
 from student.models import CourseEnrollment
 
diff --git a/openedx/features/course_bookmarks/views/course_bookmarks.py b/openedx/features/course_bookmarks/views/course_bookmarks.py
index e8333425ad6..6d27e99a2db 100644
--- a/openedx/features/course_bookmarks/views/course_bookmarks.py
+++ b/openedx/features/course_bookmarks/views/course_bookmarks.py
@@ -18,7 +18,7 @@ from django.views.generic import View
 from opaque_keys.edx.keys import CourseKey
 from web_fragments.fragment import Fragment
 
-from courseware.courses import get_course_with_access
+from lms.djangoapps.courseware.courses import get_course_with_access
 from openedx.core.djangoapps.plugin_api.views import EdxFragmentView
 from openedx.core.djangoapps.user_api.models import UserPreference
 from openedx.features.course_experience import default_course_url_name
diff --git a/openedx/features/course_duration_limits/resolvers.py b/openedx/features/course_duration_limits/resolvers.py
index d22a36b83e5..9d3dfc68ede 100644
--- a/openedx/features/course_duration_limits/resolvers.py
+++ b/openedx/features/course_duration_limits/resolvers.py
@@ -14,7 +14,7 @@ from django.utils.translation import ugettext as _
 from eventtracking import tracker
 
 from course_modes.models import CourseMode
-from courseware.date_summary import verified_upgrade_deadline_link
+from lms.djangoapps.courseware.date_summary import verified_upgrade_deadline_link
 from lms.djangoapps.experiments.stable_bucketing import stable_bucketing_hash_group
 from openedx.core.djangoapps.catalog.utils import get_course_run_details
 from openedx.core.djangoapps.schedules.resolvers import (
diff --git a/openedx/features/course_duration_limits/tests/test_access.py b/openedx/features/course_duration_limits/tests/test_access.py
index bb16792afda..e870888ea21 100644
--- a/openedx/features/course_duration_limits/tests/test_access.py
+++ b/openedx/features/course_duration_limits/tests/test_access.py
@@ -11,7 +11,7 @@ from pytz import UTC
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.models import DynamicUpgradeDeadlineConfiguration
+from lms.djangoapps.courseware.models import DynamicUpgradeDeadlineConfiguration
 from openedx.core.djangoapps.schedules.tests.factories import ScheduleFactory
 from openedx.core.djangolib.testing.utils import CacheIsolationTestCase
 from openedx.features.course_duration_limits.access import (
diff --git a/openedx/features/course_experience/plugins.py b/openedx/features/course_experience/plugins.py
index 9b25ada0b10..e53d70a1996 100644
--- a/openedx/features/course_experience/plugins.py
+++ b/openedx/features/course_experience/plugins.py
@@ -8,7 +8,7 @@ from __future__ import absolute_import
 from django.urls import reverse
 from django.utils.translation import ugettext as _
 
-from courseware.courses import get_course_by_id
+from lms.djangoapps.courseware.courses import get_course_by_id
 from student.models import CourseEnrollment
 
 from . import SHOW_REVIEWS_TOOL_FLAG, UNIFIED_COURSE_TAB_FLAG
diff --git a/openedx/features/course_experience/tests/views/test_course_home.py b/openedx/features/course_experience/tests/views/test_course_home.py
index 5dc36870dba..95a6aaeb970 100644
--- a/openedx/features/course_experience/tests/views/test_course_home.py
+++ b/openedx/features/course_experience/tests/views/test_course_home.py
@@ -20,7 +20,7 @@ from waffle.testutils import override_flag
 
 from course_modes.models import CourseMode
 from course_modes.tests.factories import CourseModeFactory
-from courseware.tests.helpers import get_expiration_banner_text
+from lms.djangoapps.courseware.tests.helpers import get_expiration_banner_text
 from experiments.models import ExperimentData
 from lms.djangoapps.commerce.models import CommerceConfiguration
 from lms.djangoapps.commerce.utils import EcommerceService
diff --git a/openedx/features/course_experience/tests/views/test_course_outline.py b/openedx/features/course_experience/tests/views/test_course_outline.py
index 6b7266c5c33..bcc2030fc9d 100644
--- a/openedx/features/course_experience/tests/views/test_course_outline.py
+++ b/openedx/features/course_experience/tests/views/test_course_outline.py
@@ -22,7 +22,7 @@ from six import text_type
 from waffle.models import Switch
 from waffle.testutils import override_switch
 
-from courseware.tests.factories import StaffFactory
+from lms.djangoapps.courseware.tests.factories import StaffFactory
 from gating import api as lms_gating_api
 from lms.djangoapps.course_api.blocks.transformers.milestones import MilestonesAndSpecialExamsTransformer
 from openedx.core.lib.gating import api as gating_api
diff --git a/openedx/features/course_experience/tests/views/test_course_updates.py b/openedx/features/course_experience/tests/views/test_course_updates.py
index 4a00d6c8868..e56705cfa18 100644
--- a/openedx/features/course_experience/tests/views/test_course_updates.py
+++ b/openedx/features/course_experience/tests/views/test_course_updates.py
@@ -8,7 +8,7 @@ from datetime import datetime
 import six
 from django.urls import reverse
 
-from courseware.courses import get_course_info_usage_key
+from lms.djangoapps.courseware.courses import get_course_info_usage_key
 from openedx.core.djangoapps.waffle_utils.testutils import WAFFLE_TABLES
 from openedx.features.content_type_gating.models import ContentTypeGatingConfig
 from openedx.features.course_experience.views.course_updates import STATUS_VISIBLE
diff --git a/openedx/features/course_experience/views/course_dates.py b/openedx/features/course_experience/views/course_dates.py
index d272c037daf..3fdd70d6c8a 100644
--- a/openedx/features/course_experience/views/course_dates.py
+++ b/openedx/features/course_experience/views/course_dates.py
@@ -9,7 +9,7 @@ from django.utils.translation import get_language_bidi
 from opaque_keys.edx.keys import CourseKey
 from web_fragments.fragment import Fragment
 
-from courseware.courses import get_course_date_blocks, get_course_with_access
+from lms.djangoapps.courseware.courses import get_course_date_blocks, get_course_with_access
 from openedx.core.djangoapps.plugin_api.views import EdxFragmentView
 
 
diff --git a/openedx/features/course_experience/views/course_home.py b/openedx/features/course_experience/views/course_home.py
index 3704918838a..aeace743fa7 100644
--- a/openedx/features/course_experience/views/course_home.py
+++ b/openedx/features/course_experience/views/course_home.py
@@ -14,8 +14,8 @@ from django.views.decorators.csrf import ensure_csrf_cookie
 from opaque_keys.edx.keys import CourseKey
 from web_fragments.fragment import Fragment
 
-from courseware.access import has_access
-from courseware.courses import can_self_enroll_in_course, get_course_info_section, get_course_with_access
+from lms.djangoapps.courseware.access import has_access
+from lms.djangoapps.courseware.courses import can_self_enroll_in_course, get_course_info_section, get_course_with_access
 from lms.djangoapps.commerce.utils import EcommerceService
 from lms.djangoapps.course_goals.api import (
     get_course_goal,
diff --git a/openedx/features/course_experience/views/course_home_messages.py b/openedx/features/course_experience/views/course_home_messages.py
index 655fb140925..e89bfd3619b 100644
--- a/openedx/features/course_experience/views/course_home_messages.py
+++ b/openedx/features/course_experience/views/course_home_messages.py
@@ -17,7 +17,7 @@ from pytz import UTC
 from web_fragments.fragment import Fragment
 
 from course_modes.models import CourseMode
-from courseware.courses import get_course_date_blocks, get_course_with_access
+from lms.djangoapps.courseware.courses import get_course_date_blocks, get_course_with_access
 from lms.djangoapps.course_goals.api import (
     get_course_goal,
     get_course_goal_options,
diff --git a/openedx/features/course_experience/views/course_outline.py b/openedx/features/course_experience/views/course_outline.py
index 66bf66bb3cf..7c524bf034a 100644
--- a/openedx/features/course_experience/views/course_outline.py
+++ b/openedx/features/course_experience/views/course_outline.py
@@ -15,7 +15,7 @@ from pytz import UTC
 from waffle.models import Switch
 from web_fragments.fragment import Fragment
 
-from courseware.courses import get_course_overview_with_access
+from lms.djangoapps.courseware.courses import get_course_overview_with_access
 from openedx.core.djangoapps.plugin_api.views import EdxFragmentView
 from student.models import CourseEnrollment
 from util.milestones_helpers import get_course_content_milestones
diff --git a/openedx/features/course_experience/views/course_reviews.py b/openedx/features/course_experience/views/course_reviews.py
index 5fac94e7c11..6a78e5817cb 100644
--- a/openedx/features/course_experience/views/course_reviews.py
+++ b/openedx/features/course_experience/views/course_reviews.py
@@ -13,7 +13,7 @@ from django.views.decorators.cache import cache_control
 from opaque_keys.edx.keys import CourseKey
 from web_fragments.fragment import Fragment
 
-from courseware.courses import get_course_with_access
+from lms.djangoapps.courseware.courses import get_course_with_access
 from lms.djangoapps.courseware.views.views import CourseTabView
 from openedx.core.djangoapps.plugin_api.views import EdxFragmentView
 from openedx.features.course_experience import default_course_url_name
diff --git a/openedx/features/course_experience/views/course_sock.py b/openedx/features/course_experience/views/course_sock.py
index f0ea47f2192..0961521ed53 100644
--- a/openedx/features/course_experience/views/course_sock.py
+++ b/openedx/features/course_experience/views/course_sock.py
@@ -6,7 +6,7 @@ from __future__ import absolute_import
 from django.template.loader import render_to_string
 from web_fragments.fragment import Fragment
 
-from courseware.date_summary import verified_upgrade_deadline_link, verified_upgrade_link_is_valid
+from lms.djangoapps.courseware.date_summary import verified_upgrade_deadline_link, verified_upgrade_link_is_valid
 from openedx.core.djangoapps.plugin_api.views import EdxFragmentView
 from openedx.features.discounts.utils import format_strikeout_price
 from student.models import CourseEnrollment
diff --git a/openedx/features/course_experience/views/course_updates.py b/openedx/features/course_experience/views/course_updates.py
index e6a417fbc5e..58dcb8108ee 100644
--- a/openedx/features/course_experience/views/course_updates.py
+++ b/openedx/features/course_experience/views/course_updates.py
@@ -15,7 +15,7 @@ from django.views.decorators.cache import cache_control
 from opaque_keys.edx.keys import CourseKey
 from web_fragments.fragment import Fragment
 
-from courseware.courses import get_course_info_section_module, get_course_with_access
+from lms.djangoapps.courseware.courses import get_course_info_section_module, get_course_with_access
 from lms.djangoapps.courseware.views.views import CourseTabView
 from openedx.core.djangoapps.plugin_api.views import EdxFragmentView
 from openedx.features.course_experience import default_course_url_name
diff --git a/openedx/features/course_experience/views/latest_update.py b/openedx/features/course_experience/views/latest_update.py
index c70b154c158..b12e8b600f6 100644
--- a/openedx/features/course_experience/views/latest_update.py
+++ b/openedx/features/course_experience/views/latest_update.py
@@ -12,7 +12,7 @@ from django.template.loader import render_to_string
 from opaque_keys.edx.keys import CourseKey
 from web_fragments.fragment import Fragment
 
-from courseware.courses import get_course_with_access
+from lms.djangoapps.courseware.courses import get_course_with_access
 from openedx.core.djangoapps.plugin_api.views import EdxFragmentView
 from openedx.features.course_experience.views.course_updates import get_ordered_updates
 
diff --git a/openedx/features/course_experience/views/welcome_message.py b/openedx/features/course_experience/views/welcome_message.py
index 5edcf5d7e24..2dc4d102f19 100644
--- a/openedx/features/course_experience/views/welcome_message.py
+++ b/openedx/features/course_experience/views/welcome_message.py
@@ -12,7 +12,7 @@ from django.views.decorators.csrf import ensure_csrf_cookie
 from opaque_keys.edx.keys import CourseKey
 from web_fragments.fragment import Fragment
 
-from courseware.courses import get_course_with_access
+from lms.djangoapps.courseware.courses import get_course_with_access
 from openedx.core.djangoapps.plugin_api.views import EdxFragmentView
 from openedx.core.djangoapps.user_api.course_tag.api import get_course_tag, set_course_tag
 
diff --git a/openedx/features/course_search/views/course_search.py b/openedx/features/course_search/views/course_search.py
index 149267fb394..2d0414e7dae 100644
--- a/openedx/features/course_search/views/course_search.py
+++ b/openedx/features/course_search/views/course_search.py
@@ -15,7 +15,7 @@ from django.views.decorators.csrf import ensure_csrf_cookie
 from opaque_keys.edx.keys import CourseKey
 from web_fragments.fragment import Fragment
 
-from courseware.courses import get_course_overview_with_access
+from lms.djangoapps.courseware.courses import get_course_overview_with_access
 from lms.djangoapps.courseware.views.views import CourseTabView
 from openedx.core.djangoapps.plugin_api.views import EdxFragmentView
 from openedx.features.course_experience import default_course_url_name
diff --git a/openedx/tests/settings.py b/openedx/tests/settings.py
index 434ee0da83a..c8923e151c6 100644
--- a/openedx/tests/settings.py
+++ b/openedx/tests/settings.py
@@ -70,7 +70,7 @@ INSTALLED_APPS = (
     'openedx.core.djangoapps.video_pipeline',
     'openedx.core.djangoapps.bookmarks.apps.BookmarksConfig',
     'edxval',
-    'courseware',
+    'lms.djangoapps.courseware',
     'student',
     'openedx.core.djangoapps.site_configuration',
     'lms.djangoapps.grades.apps.GradesConfig',
diff --git a/setup.py b/setup.py
index 027ba4891d2..f1dff5cec67 100644
--- a/setup.py
+++ b/setup.py
@@ -39,7 +39,7 @@ setup(
             "course_bookmarks = openedx.features.course_bookmarks.plugins:CourseBookmarksTool",
             "course_updates = openedx.features.course_experience.plugins:CourseUpdatesTool",
             "course_reviews = openedx.features.course_experience.plugins:CourseReviewsTool",
-            "verified_upgrade = courseware.course_tools:VerifiedUpgradeTool",
+            "verified_upgrade = lms.djangoapps.courseware.course_tools:VerifiedUpgradeTool",
         ],
         "openedx.user_partition_scheme": [
             "random = openedx.core.djangoapps.user_api.partition_schemes:RandomUserPartitionScheme",
diff --git a/themes/edx.org/lms/templates/dashboard.html b/themes/edx.org/lms/templates/dashboard.html
index 04e2c84cad6..8dbbd82db73 100644
--- a/themes/edx.org/lms/templates/dashboard.html
+++ b/themes/edx.org/lms/templates/dashboard.html
@@ -6,7 +6,7 @@
 import json
 import pytz
 import six
-from courseware.context_processor import user_timezone_locale_prefs
+from lms.djangoapps.courseware.context_processor import user_timezone_locale_prefs
 from datetime import datetime, timedelta
 from django.utils import timezone
 from django.utils.translation import ugettext as _
-- 
GitLab