diff --git a/lms/djangoapps/course_home_api/dates/v1/serializers.py b/lms/djangoapps/course_home_api/dates/v1/serializers.py
index 0f805d87bf59806bea569e0f3098d11fcef85b19..d8162527f9be777f3c9444bfc373dcfd9011494e 100644
--- a/lms/djangoapps/course_home_api/dates/v1/serializers.py
+++ b/lms/djangoapps/course_home_api/dates/v1/serializers.py
@@ -22,7 +22,6 @@ class DateSummarySerializer(serializers.Serializer):
     link = serializers.SerializerMethodField()
     link_text = serializers.CharField()
     title = serializers.CharField()
-    extra_info = serializers.CharField()
 
     def get_learner_has_access(self, block):
         learner_is_full_access = self.context.get('learner_is_full_access', False)
diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py
index 23b8cfbe05dd74b6ad9951bf1af028d034257fd9..91eea2ba1537603523d8c17bff52451636a6c29c 100644
--- a/lms/djangoapps/courseware/courses.py
+++ b/lms/djangoapps/courseware/courses.py
@@ -10,7 +10,6 @@ from datetime import datetime
 import pytz
 import six
 from crum import get_current_request
-from dateutil.parser import parse as parse_date
 from django.conf import settings
 from django.http import Http404, QueryDict
 from django.urls import reverse
@@ -72,7 +71,7 @@ log = logging.getLogger(__name__)
 # Used by get_course_assignments below. You shouldn't need to use this type directly.
 _Assignment = namedtuple(
     'Assignment', ['block_key', 'title', 'url', 'date', 'contains_gated_content', 'complete', 'past_due',
-                   'assignment_type', 'extra_info']
+                   'assignment_type']
 )
 
 
@@ -509,7 +508,6 @@ def get_course_assignment_date_blocks(course, user, request, num_return=None,
         date_block.past_due = assignment.past_due
         date_block.link = request.build_absolute_uri(assignment.url) if assignment.url else ''
         date_block.set_title(assignment.title, link=assignment.url)
-        date_block._extra_info = assignment.extra_info
         date_blocks.append(date_block)
     date_blocks = sorted((b for b in date_blocks if b.is_enabled or include_past_dates), key=date_block_key_fn)
     if num_return:
@@ -553,69 +551,9 @@ def get_course_assignments(course_key, user, include_access=False):
             complete = is_block_structure_complete_for_assignments(block_data, subsection_key)
             past_due = not complete and due < now
             assignments.append(_Assignment(
-                subsection_key, title, url, due, contains_gated_content, complete, past_due, assignment_type, None
+                subsection_key, title, url, due, contains_gated_content, complete, past_due, assignment_type
             ))
 
-            # Load all dates for ORA blocks as separate assignments
-            descendents = block_data.get_children(subsection_key)
-            while descendents:
-                descendent = descendents.pop()
-                descendents.extend(block_data.get_children(descendent))
-                if block_data.get_xblock_field(descendent, 'category', None) == 'openassessment':
-                    graded = block_data.get_xblock_field(descendent, 'graded', False)
-                    has_score = block_data.get_xblock_field(descendent, 'has_score', False)
-                    weight = block_data.get_xblock_field(descendent, 'weight', 1)
-                    if not (graded and has_score and (weight is None or weight > 0)):
-                        continue
-
-                    valid_assessments = [{
-                        'name': 'submission',
-                        'due': block_data.get_xblock_field(descendent, 'submission_due'),
-                        'start': block_data.get_xblock_field(descendent, 'submission_start'),
-                        'required': True
-                    }] + block_data.get_xblock_field(descendent, 'valid_assessments')
-                    gated = include_access and block_data.get_xblock_field(descendent, 'gated', False)
-                    assignment_type = block_data.get_xblock_field(descendent, 'format', None)
-                    complete = is_block_structure_complete_for_assignments(block_data, descendent)
-
-                    block_title = block_data.get_xblock_field(descendent, 'title', _('Open Response Assessment'))
-
-                    for assessment in valid_assessments:
-                        due = parse_date(assessment['due']).replace(tzinfo=pytz.UTC) if assessment['due'] else None
-                        if due is None:
-                            continue
-
-                        if assessment['name'] == 'self-assessment':
-                            assessment_type = _("Self Assessment")
-                        elif assessment['name'] == 'peer-assessment':
-                            assessment_type = _("Peer Assessment")
-                        elif assessment['name'] == 'staff-assessment':
-                            assessment_type = _("Staff Assessment")
-                        elif assessment['name'] == 'submission':
-                            assessment_type = _("Submission")
-                        else:
-                            assessment_type = assessment['name']
-                        title = "{} ({})".format(block_title, assessment_type)
-                        url = ''
-                        start = parse_date(assessment['start']).replace(tzinfo=pytz.UTC) if assessment['start'] else None
-                        assignment_released = not start or start < now
-                        if assignment_released:
-                            url = reverse('jump_to', args=[course_key, descendent])
-                            url = request and request.build_absolute_uri(url)
-
-                        past_due = not complete and due and due < now
-                        assignments.append(_Assignment(
-                            descendent,
-                            title,
-                            url,
-                            due,
-                            contains_gated_content,
-                            complete,
-                            past_due,
-                            assignment_type,
-                            _("Open Response Assessment due dates are set by your instructor and can't be shifted.")
-                        ))
-
     return assignments
 
 
diff --git a/lms/djangoapps/courseware/date_summary.py b/lms/djangoapps/courseware/date_summary.py
index 6d058a3bc9462e49088812085b71ddf53d227ae6..c63a457c51b8a81d393aa9826611bd3855860931 100644
--- a/lms/djangoapps/courseware/date_summary.py
+++ b/lms/djangoapps/courseware/date_summary.py
@@ -77,11 +77,6 @@ class DateSummary(object):
         """The detail text displayed by this summary."""
         return ''
 
-    @property
-    def extra_info(self):
-        """Extra detail to display as a tooltip."""
-        return None
-
     def register_alerts(self, request, course):
         """
         Registers any relevant course alerts given the current request.
@@ -393,7 +388,6 @@ class CourseAssignmentDate(DateSummary):
         self.contains_gated_content = False
         self.complete = None
         self.past_due = None
-        self._extra_info = None
 
     @property
     def date(self):
@@ -411,10 +405,6 @@ class CourseAssignmentDate(DateSummary):
     def link(self):
         return self.assignment_link
 
-    @property
-    def extra_info(self):
-        return self._extra_info
-
     @link.setter
     def link(self, link):
         self.assignment_link = link
diff --git a/lms/static/sass/course/_dates.scss b/lms/static/sass/course/_dates.scss
index 5a69f91acc7ad25d709eba41dda09ef0e498124f..0a9de0ab274613506aeb42da549e84bf0caedc8c 100644
--- a/lms/static/sass/course/_dates.scss
+++ b/lms/static/sass/course/_dates.scss
@@ -99,7 +99,10 @@
   }
 
   .no-access {
-    color: #767676;
+    // This is too low-contrast for a11y purposes. But since it only applies to pieces of the page that are
+    // inaccessible to users, and we have a banner explaining the parts that are inaccessible at the top,
+    // we're OK from an accessibility point of view.
+    color: #d1d2d4;
   }
 
   .timeline-date-content {
@@ -112,14 +115,10 @@
     align-items: center;
 
     &.not-released {
-      color: #b1a3a3;
+      color: #767676;
     }
   }
 
-  .timeline-date {
-    color: #2d323e;
-  }
-
   .timeline-title {
     @include font-size(14);
 
@@ -135,7 +134,7 @@
     }
 
     &.not-released {
-      color: #767676;
+      color: #d1d2d4;
     }
   }
 
@@ -150,30 +149,8 @@
       color: #2d323e;
       text-decoration: underline;
     }
-
-    &.not-released {
-        color: #767676;
-      }
   }
 
-  .timeline-extra-info {
-    @include font-size(14);
-
-    display: flex;
-    flex: 100%;
-    line-height: 1.25;
-
-    a {
-      color: #2d323e;
-      text-decoration: underline;
-    }
-
-    &.not-released {
-      color: #767676;
-    }
-  }
-
-
   .pill {
     @include font-size(12);
 
diff --git a/lms/templates/courseware/dates.html b/lms/templates/courseware/dates.html
index 78edf84a4adb93667810062c88f37920046cf49f..f140089522739dd34aea9b83a11035cdecd44296 100644
--- a/lms/templates/courseware/dates.html
+++ b/lms/templates/courseware/dates.html
@@ -82,11 +82,6 @@ from openedx.core.djangolib.markup import HTML, Text
                                     <div class="timeline-description ${access_class} ${not_released}">
                                         ${block.description}
                                     </div>
-                                    % if block.extra_info:
-                                        <div class="timeline-extra-info ${access_class} ${not_released}">
-                                            ${block.extra_info}
-                                        </div>
-                                    % endif
                                 % endif
                             </div>
                         </div>
diff --git a/openedx/features/calendar_sync/tests/test_ics.py b/openedx/features/calendar_sync/tests/test_ics.py
index fd4ff6c1e2e7273bb6a59d545825f9ee25e94f45..8e053134d1cddf84e9a6c9ff7f8c4f658a0b63a0 100644
--- a/openedx/features/calendar_sync/tests/test_ics.py
+++ b/openedx/features/calendar_sync/tests/test_ics.py
@@ -41,20 +41,10 @@ class TestIcsGeneration(TestCase):
 
     def make_assigment(
         self, block_key=None, title=None, url=None, date=None, contains_gated_content=False, complete=False,
-        past_due=False, assignment_type=None, extra_info=None
+        past_due=False, assignment_type=None
     ):
         """ Bundles given info into a namedtupled like get_course_assignments returns """
-        return _Assignment(
-            block_key,
-            title,
-            url,
-            date,
-            contains_gated_content,
-            complete,
-            past_due,
-            assignment_type,
-            extra_info
-        )
+        return _Assignment(block_key, title, url, date, contains_gated_content, complete, past_due, assignment_type)
 
     def expected_ics(self, *assignments):
         """ Returns hardcoded expected ics strings for given assignments """
diff --git a/openedx/features/content_type_gating/block_transformers.py b/openedx/features/content_type_gating/block_transformers.py
index a09f47385bfeaa0a369002c51619f9e5bb7a1ba2..db88164f75e9cf2277b4d006184ce9fbd287eb90 100644
--- a/openedx/features/content_type_gating/block_transformers.py
+++ b/openedx/features/content_type_gating/block_transformers.py
@@ -41,11 +41,10 @@ class ContentTypeGateTransformer(BlockStructureTransformer):
         inside of it is content gated. `contains_gated_content` can then be used to indicate something
         in the blocks subtree is gated.
         """
-        if block_structure.get_xblock_field(block_key, 'contains_gated_content'):
-            return
-        block_structure.override_xblock_field(block_key, 'contains_gated_content', True)
-
         for parent_block_key in block_structure.get_parents(block_key):
+            if block_structure.get_xblock_field(parent_block_key, 'contains_gated_content'):
+                continue
+            block_structure.override_xblock_field(parent_block_key, 'contains_gated_content', True)
             self._set_contains_gated_content_on_parents(block_structure, parent_block_key)
 
     def transform(self, usage_info, block_structure):
diff --git a/openedx/features/course_experience/templates/course_experience/dates-summary.html b/openedx/features/course_experience/templates/course_experience/dates-summary.html
index 08d29000bf3e3f07a7a2ae2988f7e2f75834fab6..2e9ab91422b576b7edabe7bb725cef086a6da709 100644
--- a/openedx/features/course_experience/templates/course_experience/dates-summary.html
+++ b/openedx/features/course_experience/templates/course_experience/dates-summary.html
@@ -21,9 +21,6 @@ from django.utils.translation import ugettext as _
             % if course_date.description:
                 <p class="description">${course_date.description}</p>
             % endif
-            % if course_date.extra_info:
-                <div class="extra-info">${course_date.extra_info}</div>
-            % endif
             % if course_date.link and course_date.link_text:
                 <div class="date-summary-link">
                     <a href="${course_date.link}">${course_date.link_text}</a>
diff --git a/setup.py b/setup.py
index ee1c51615ad937e910fea39b24a7abbcbcbb768e..257131cb2e1ea1e466cb4d21ce9a9dc5af3dc355 100644
--- a/setup.py
+++ b/setup.py
@@ -66,7 +66,6 @@ setup(
             "load_override_data = lms.djangoapps.course_blocks.transformers.load_override_data:OverrideDataTransformer",
             "content_type_gate = openedx.features.content_type_gating.block_transformers:ContentTypeGateTransformer",
             "access_denied_message_filter = lms.djangoapps.course_blocks.transformers.access_denied_filter:AccessDeniedMessageFilterTransformer",
-            "open_assessment_transformer = lms.djangoapps.courseware.transformers:OpenAssessmentDateTransformer",
         ],
         "openedx.ace.policy": [
             "bulk_email_optout = lms.djangoapps.bulk_email.policies:CourseEmailOptout"