diff --git a/lms/djangoapps/course_home_api/outline/v1/serializers.py b/lms/djangoapps/course_home_api/outline/v1/serializers.py
index 6eb5c784012208e190fc57e9bc2404612f8fa151..06c05ad9bad8a4b7706858b4d688b21025bbec1e 100644
--- a/lms/djangoapps/course_home_api/outline/v1/serializers.py
+++ b/lms/djangoapps/course_home_api/outline/v1/serializers.py
@@ -111,7 +111,6 @@ class OutlineTabSerializer(DatesBannerSerializerMixin, VerifiedModeSerializerMix
     """
     access_expiration = serializers.DictField()
     course_blocks = CourseBlockSerializer()
-    course_expired_html = serializers.CharField()
     course_goals = CourseGoalsSerializer()
     course_tools = CourseToolSerializer(many=True)
     dates_widget = DatesWidgetSerializer()
@@ -119,6 +118,5 @@ class OutlineTabSerializer(DatesBannerSerializerMixin, VerifiedModeSerializerMix
     handouts_html = serializers.CharField()
     has_ended = serializers.BooleanField()
     offer = serializers.DictField()
-    offer_html = serializers.CharField()
     resume_course = ResumeCourseSerializer()
     welcome_message_html = serializers.CharField()
diff --git a/lms/djangoapps/course_home_api/outline/v1/tests/test_views.py b/lms/djangoapps/course_home_api/outline/v1/tests/test_views.py
index 751f92c0445167d1463782ef0c788d561c626479..7a6a8975b75009349b1f8826f37e735c2137d6c9 100644
--- a/lms/djangoapps/course_home_api/outline/v1/tests/test_views.py
+++ b/lms/djangoapps/course_home_api/outline/v1/tests/test_views.py
@@ -171,11 +171,9 @@ class OutlineTabTestViews(BaseCourseHomeTests):
 
         response = self.client.get(self.url)
         self.assertIsNone(response.data['offer'])
-        self.assertIsNone(response.data['offer_html'])
 
         with override_waffle_flag(DISCOUNT_APPLICABILITY_FLAG, active=True):
             response = self.client.get(self.url)
-            self.assertIsNotNone(response.data['offer_html'])
 
             # Just a quick spot check that the dictionary looks like what we expect
             self.assertEqual(response.data['offer']['code'], 'EDXWELCOME')
@@ -188,11 +186,9 @@ class OutlineTabTestViews(BaseCourseHomeTests):
 
         response = self.client.get(self.url)
         self.assertIsNone(response.data['access_expiration'])
-        self.assertIsNone(response.data['course_expired_html'])
 
         enrollment.update_enrollment(CourseMode.AUDIT)
         response = self.client.get(self.url)
-        self.assertIsNotNone(response.data['course_expired_html'])
 
         # Just a quick spot check that the dictionary looks like what we expect
         deadline = enrollment.created + MIN_DURATION
@@ -297,8 +293,8 @@ class OutlineTabTestViews(BaseCourseHomeTests):
     @override_experiment_waffle_flag(COURSE_HOME_MICROFRONTEND, active=True)
     @override_waffle_flag(COURSE_HOME_MICROFRONTEND_OUTLINE_TAB, active=True)
     @override_waffle_flag(COURSE_ENABLE_UNENROLLED_ACCESS_FLAG, active=True)
-    @patch('lms.djangoapps.course_home_api.outline.v1.views.generate_offer_html', new=Mock(return_value='<p>Offer</p>'))
-    @patch('lms.djangoapps.course_home_api.outline.v1.views.generate_course_expired_message', new=Mock(return_value='<p>Expired</p>'))
+    @patch('lms.djangoapps.course_home_api.outline.v1.views.generate_offer_data', new=Mock(return_value={'a': 1}))
+    @patch('lms.djangoapps.course_home_api.outline.v1.views.get_access_expiration_data', new=Mock(return_value={'b': 1}))
     @ddt.data(*itertools.product([True, False], [True, False],
                                  [None, COURSE_VISIBILITY_PUBLIC, COURSE_VISIBILITY_PUBLIC_OUTLINE]))
     @ddt.unpack
@@ -329,8 +325,8 @@ class OutlineTabTestViews(BaseCourseHomeTests):
         data = self.client.get(self.url).data
         self.assertEqual(data['course_blocks'] is not None, show_enrolled or is_public or is_public_outline)
         self.assertEqual(data['handouts_html'] is not None, show_enrolled or is_public)
-        self.assertEqual(data['offer_html'] is not None, show_enrolled)
-        self.assertEqual(data['course_expired_html'] is not None, show_enrolled)
+        self.assertEqual(data['offer'] is not None, show_enrolled)
+        self.assertEqual(data['access_expiration'] is not None, show_enrolled)
         self.assertEqual(data['resume_course']['url'] is not None, show_enrolled)
 
     @override_experiment_waffle_flag(COURSE_HOME_MICROFRONTEND, active=True)
diff --git a/lms/djangoapps/course_home_api/outline/v1/views.py b/lms/djangoapps/course_home_api/outline/v1/views.py
index 548e5733cb771268ebc1c6fd7f04a7d852ff835f..15d2298f031a4876a96d491245602291b6e8ce29 100644
--- a/lms/djangoapps/course_home_api/outline/v1/views.py
+++ b/lms/djangoapps/course_home_api/outline/v1/views.py
@@ -30,14 +30,14 @@ from lms.djangoapps.courseware.courses import get_course_date_blocks, get_course
 from lms.djangoapps.courseware.date_summary import TodaysDate
 from lms.djangoapps.courseware.masquerade import setup_masquerade
 from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
-from openedx.features.course_duration_limits.access import generate_course_expired_message, get_access_expiration_data
+from openedx.features.course_duration_limits.access import get_access_expiration_data
 from openedx.features.course_experience import COURSE_ENABLE_UNENROLLED_ACCESS_FLAG
 from openedx.features.course_experience.course_tools import CourseToolsPluginManager
 from openedx.features.course_experience.course_updates import (
     dismiss_current_update_for_user, get_current_update_for_user,
 )
 from openedx.features.course_experience.utils import get_course_outline_block_tree
-from openedx.features.discounts.utils import generate_offer_data, generate_offer_html
+from openedx.features.discounts.utils import generate_offer_data
 from common.djangoapps.student.models import CourseEnrollment
 from xmodule.course_module import COURSE_VISIBILITY_PUBLIC, COURSE_VISIBILITY_PUBLIC_OUTLINE
 from xmodule.modulestore.django import modulestore
@@ -176,11 +176,8 @@ class OutlineTabView(RetrieveAPIView):
         show_handouts = show_enrolled or allow_public
         handouts_html = get_course_info_section(request, request.user, course, 'handouts') if show_handouts else ''
 
-        # TODO: TNL-7185 Legacy: Refactor to return the offer & expired data and format the message in the MFE
         offer_data = show_enrolled and generate_offer_data(request.user, course_overview)
-        offer_html = show_enrolled and generate_offer_html(request.user, course_overview)
         access_expiration = show_enrolled and get_access_expiration_data(request.user, course_overview)
-        course_expired_html = show_enrolled and generate_course_expired_message(request.user, course_overview)
 
         welcome_message_html = show_enrolled and get_current_update_for_user(request, course)
 
@@ -259,7 +256,6 @@ class OutlineTabView(RetrieveAPIView):
         data = {
             'access_expiration': access_expiration or None,
             'course_blocks': course_blocks,
-            'course_expired_html': course_expired_html or None,
             'course_goals': course_goals,
             'course_tools': course_tools,
             'dates_widget': dates_widget,
@@ -267,7 +263,6 @@ class OutlineTabView(RetrieveAPIView):
             'handouts_html': handouts_html or None,
             'has_ended': course.has_ended(),
             'offer': offer_data or None,
-            'offer_html': offer_html or None,
             'resume_course': resume_course,
             'welcome_message_html': welcome_message_html or None,
         }
diff --git a/openedx/core/djangoapps/courseware_api/serializers.py b/openedx/core/djangoapps/courseware_api/serializers.py
index 04c7afc15a698658a33c69f3a5e8c61a134ef3a2..26786478f33cb08eeb523c0453c455c74df2e7a0 100644
--- a/openedx/core/djangoapps/courseware_api/serializers.py
+++ b/openedx/core/djangoapps/courseware_api/serializers.py
@@ -81,7 +81,6 @@ class CourseInfoSerializer(serializers.Serializer):  # pylint: disable=abstract-
     access_expiration = serializers.DictField()
     can_show_upgrade_sock = serializers.BooleanField()
     content_type_gating_enabled = serializers.BooleanField()
-    course_expired_message = serializers.CharField()
     effort = serializers.CharField()
     end = serializers.DateTimeField()
     enrollment = serializers.DictField()
@@ -93,7 +92,6 @@ class CourseInfoSerializer(serializers.Serializer):  # pylint: disable=abstract-
     name = serializers.CharField(source='display_name_with_default_escaped')
     number = serializers.CharField(source='display_number_with_default')
     offer = serializers.DictField()
-    offer_html = serializers.CharField()
     org = serializers.CharField(source='display_org_with_default')
     related_programs = CourseProgramSerializer(many=True)
     short_description = serializers.CharField()
diff --git a/openedx/core/djangoapps/courseware_api/views.py b/openedx/core/djangoapps/courseware_api/views.py
index 8e71fa7158970ed1f41fc91b38b390e1e9bdd828..5e12e1f9c61059c1479623336814c0f37d5af5bc 100644
--- a/openedx/core/djangoapps/courseware_api/views.py
+++ b/openedx/core/djangoapps/courseware_api/views.py
@@ -40,8 +40,8 @@ from openedx.core.lib.api.view_utils import DeveloperErrorViewMixin
 from openedx.core.djangoapps.programs.utils import ProgramProgressMeter
 from openedx.features.course_experience import DISPLAY_COURSE_SOCK_FLAG
 from openedx.features.content_type_gating.models import ContentTypeGatingConfig
-from openedx.features.course_duration_limits.access import generate_course_expired_message, get_access_expiration_data
-from openedx.features.discounts.utils import generate_offer_data, generate_offer_html
+from openedx.features.course_duration_limits.access import get_access_expiration_data
+from openedx.features.discounts.utils import generate_offer_data
 from common.djangoapps.student.models import (
     CourseEnrollment, CourseEnrollmentCelebration, LinkedInAddToProfileConfiguration
 )
@@ -123,20 +123,10 @@ class CoursewareMeta:
     def access_expiration(self):
         return get_access_expiration_data(self.effective_user, self.overview)
 
-    @property
-    def course_expired_message(self):
-        # TODO: TNL-7185 Legacy: Refactor to return the expiration date and format the message in the MFE
-        return generate_course_expired_message(self.effective_user, self.overview)
-
     @property
     def offer(self):
         return generate_offer_data(self.effective_user, self.overview)
 
-    @property
-    def offer_html(self):
-        # TODO: TNL-7185 Legacy: Refactor to return the offer data and format the message in the MFE
-        return generate_offer_html(self.effective_user, self.overview)
-
     @property
     def content_type_gating_enabled(self):
         return ContentTypeGatingConfig.enabled_for_enrollment(