diff --git a/ee/app/models/ee/epic.rb b/ee/app/models/ee/epic.rb
index d330354be164c24a22fb79099ab05ac4dcef5b90..2df3ce5c1b6d00bcb82f717984ead890c2037c65 100644
--- a/ee/app/models/ee/epic.rb
+++ b/ee/app/models/ee/epic.rb
@@ -155,12 +155,12 @@ module EE
 
     # Earliest start date from issues' milestones
     def start_date_from_milestones
-      start_date_is_fixed? ? epic_issues.joins(issue: :milestone).minimum('milestones.start_date') : start_date
+      start_date_is_fixed? ? start_date_sourcing_milestone.start_date : start_date
     end
 
     # Latest end date from issues' milestones
     def due_date_from_milestones
-      due_date_is_fixed? ? epic_issues.joins(issue: :milestone).maximum('milestones.due_date') : due_date
+      due_date_is_fixed? ? due_date_sourcing_milestone.due_date : due_date
     end
 
     def to_reference(from = nil, full: false)
diff --git a/ee/spec/models/epic_spec.rb b/ee/spec/models/epic_spec.rb
index d152c3373e4ca80033dd8d21cfa0b57f58b82567..7b838205a7d7435298c7163d22a4cafa505ebe26 100644
--- a/ee/spec/models/epic_spec.rb
+++ b/ee/spec/models/epic_spec.rb
@@ -99,76 +99,40 @@ describe Epic do
 
   describe '#start_date_from_milestones' do
     context 'fixed date' do
-      subject { create(:epic, :use_fixed_dates) }
-      let(:date) { Date.new(2017, 3, 4) }
+      it 'returns start date from start date sourcing milestone' do
+        subject = create(:epic, :use_fixed_dates)
+        milestone = create(:milestone, :with_dates)
+        subject.start_date_sourcing_milestone = milestone
 
-      before do
-        milestone1 = create(
-          :milestone,
-          start_date: date,
-          due_date: date + 10.days
-        )
-        epic_issue1 = create(:epic_issue, epic: subject)
-        epic_issue1.issue.update(milestone: milestone1)
-
-        milestone2 = create(
-          :milestone,
-          start_date: date + 5.days,
-          due_date: date + 15.days
-        )
-        epic_issue2 = create(:epic_issue, epic: subject)
-        epic_issue2.issue.update(milestone: milestone2)
-      end
-
-      it 'returns earliest start date from issue milestones' do
-        expect(subject.start_date_from_milestones).to eq(date)
+        expect(subject.start_date_from_milestones).to eq(milestone.start_date)
       end
     end
 
     context 'milestone date' do
-      subject { create(:epic, start_date: date) }
-      let(:date) { Date.new(2017, 3, 4) }
-
       it 'returns start_date' do
-        expect(subject.start_date_from_milestones).to eq(date)
+        subject = create(:epic, start_date: Date.new(2017, 3, 4))
+
+        expect(subject.start_date_from_milestones).to eq(subject.start_date)
       end
     end
   end
 
   describe '#due_date_from_milestones' do
     context 'fixed date' do
-      subject { create(:epic, :use_fixed_dates) }
-      let(:date) { Date.new(2017, 3, 4) }
+      it 'returns due date from due date sourcing milestone' do
+        subject = create(:epic, :use_fixed_dates)
+        milestone = create(:milestone, :with_dates)
+        subject.due_date_sourcing_milestone = milestone
 
-      before do
-        milestone1 = create(
-          :milestone,
-          start_date: date - 30.days,
-          due_date: date - 20.days
-        )
-        epic_issue1 = create(:epic_issue, epic: subject)
-        epic_issue1.issue.update(milestone: milestone1)
-
-        milestone2 = create(
-          :milestone,
-          start_date: date - 10.days,
-          due_date: date
-        )
-        epic_issue2 = create(:epic_issue, epic: subject)
-        epic_issue2.issue.update(milestone: milestone2)
-      end
-
-      it 'returns latest due date from issue milestones' do
-        expect(subject.due_date_from_milestones).to eq(date)
+        expect(subject.due_date_from_milestones).to eq(milestone.due_date)
       end
     end
 
     context 'milestone date' do
-      subject { create(:epic, due_date: date) }
-      let(:date) { Date.new(2017, 3, 4) }
-
       it 'returns due_date' do
-        expect(subject.due_date_from_milestones).to eq(date)
+        subject = create(:epic, due_date: Date.new(2017, 3, 4))
+
+        expect(subject.due_date_from_milestones).to eq(subject.due_date)
       end
     end
   end