diff --git a/app/models/milestone.rb b/app/models/milestone.rb
index da6490611fde68061a86291c8f82b4f1bdd22969..0420aa90f526eada75b99518a2fec2ea617c63c6 100644
--- a/app/models/milestone.rb
+++ b/app/models/milestone.rb
@@ -170,6 +170,14 @@ def author_id
   alias_method :group_milestone?, :group_timebox?
   alias_method :project_milestone?, :project_timebox?
 
+  def parent
+    if group_milestone?
+      group
+    else
+      project
+    end
+  end
+
   private
 
   def milestone_format_reference(format = :iid)
diff --git a/ee/app/services/burnup_chart_service.rb b/ee/app/services/burnup_chart_service.rb
index 31f427253d044801d96b952edbe04a44a77c43c2..f42a95aec5b5a22a73d9497e6d410a040bc3b07e 100644
--- a/ee/app/services/burnup_chart_service.rb
+++ b/ee/app/services/burnup_chart_service.rb
@@ -41,15 +41,7 @@ def execute
   attr_reader :milestone, :start_date, :due_date, :end_date, :user
 
   def can_read_milestone?
-    Ability.allowed?(user, :read_milestone, milestone_parent)
-  end
-
-  def milestone_parent
-    if milestone.group_milestone?
-      milestone.group
-    else
-      milestone.project
-    end
+    Ability.allowed?(user, :read_milestone, milestone.parent)
   end
 
   def handle_added_milestone(event, assigned_milestones)
diff --git a/spec/models/milestone_spec.rb b/spec/models/milestone_spec.rb
index 9aaaf536351e6fd01d11035be6ceee2c4b207487..e51108947a7ae2c5fdeefb16ca0ac0aa888114cc 100644
--- a/spec/models/milestone_spec.rb
+++ b/spec/models/milestone_spec.rb
@@ -480,4 +480,22 @@
     it { is_expected.not_to match("#{Gitlab.config.gitlab.url}/gitlab-org/gitlab-foss/issues/123") }
     it { is_expected.not_to match("gitlab-org/gitlab-ce/milestones/123") }
   end
+
+  describe '#parent' do
+    context 'with group' do
+      it 'returns the expected parent' do
+        group = create(:group)
+
+        expect(build(:milestone, group: group).parent).to eq(group)
+      end
+    end
+
+    context 'with project' do
+      it 'returns the expected parent' do
+        project = create(:project)
+
+        expect(build(:milestone, project: project).parent).to eq(project)
+      end
+    end
+  end
 end