diff --git a/db/fixtures/development/17_cycle_analytics.rb b/db/fixtures/development/17_cycle_analytics.rb
index 50155668dcabd42d0291e95e2da7adff4c454c41..0175647e71e2b9904f06710efb9faac70e5d1c37 100644
--- a/db/fixtures/development/17_cycle_analytics.rb
+++ b/db/fixtures/development/17_cycle_analytics.rb
@@ -3,6 +3,8 @@
 require './spec/support/sidekiq_middleware'
 require './spec/support/helpers/test_env'
 require 'active_support/testing/time_helpers'
+require './spec/support/helpers/cycle_analytics_helpers.rb'
+require './ee/db/seeds/shared/dora_metrics.rb' if Gitlab.ee?
 
 # Usage:
 #
@@ -21,6 +23,7 @@
 # rubocop:disable Rails/Output
 class Gitlab::Seeder::CycleAnalytics # rubocop:disable Style/ClassAndModuleChildren
   include ActiveSupport::Testing::TimeHelpers
+  include CycleAnalyticsHelpers
 
   attr_reader :project, :issues, :merge_requests, :developers
 
@@ -78,12 +81,30 @@ def seed!
     seed_review_stage!
     seed_staging_stage!
 
+    if Gitlab.ee?
+      seed_dora_metrics!
+      create_custom_value_stream!
+      create_value_stream_aggregation(project.group)
+    end
+
     puts "Successfully seeded '#{project.full_path}' for Value Stream Management!"
     puts "URL: #{Rails.application.routes.url_helpers.project_url(project)}"
   end
 
   private
 
+  def create_custom_value_stream!
+    Analytics::CycleAnalytics::ValueStreams::CreateService.new(
+      current_user: admin,
+      namespace: project.group,
+      params: { name: "vs #{suffix}", stages: Gitlab::Analytics::CycleAnalytics::DefaultStages.all }
+    ).execute
+  end
+
+  def seed_dora_metrics!
+    Gitlab::Seeder::DoraMetrics.new(project: project).execute
+  end
+
   def seed_issue_stage!
     issues.each do |issue|
       time = within_end_time(issue.created_at + rand(MAX_DURATIONS[:issue]).hours)
diff --git a/ee/db/fixtures/development/92_dora_metrics.rb b/ee/db/fixtures/development/92_dora_metrics.rb
new file mode 100644
index 0000000000000000000000000000000000000000..e903384637f2096a7d472cfe7722123365b71aac
--- /dev/null
+++ b/ee/db/fixtures/development/92_dora_metrics.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+# Usage:
+#
+# Simple invocation always creates a new project:
+#
+# SEED_DORA=1 FILTER=dora_metrics bundle exec rake db:seed_fu
+#
+#
+# Run for an existing project
+#
+# SEED_DORA=1  PROJECT_ID=10 FILTER=dora_metrics bundle exec rake db:seed_fu
+
+require './ee/db/seeds/shared/dora_metrics'
+
+# rubocop:disable Rails/Output
+Gitlab::Seeder.quiet do
+  flag = ENV['SEED_DORA']
+
+  unless flag
+    puts "Skipped. Use the SEED_DORA=1 environment variable to enable."
+    next
+  end
+
+  project_id = ENV['PROJECT_ID']
+  project = Project.find(project_id) if project_id
+
+  seeder = Gitlab::Seeder::DoraMetrics.new(project: project)
+
+  seeder.execute
+end
+# rubocop:enable Rails/Output
diff --git a/ee/db/seeds/shared/dora_metrics.rb b/ee/db/seeds/shared/dora_metrics.rb
new file mode 100644
index 0000000000000000000000000000000000000000..bb49a684b18a090e287eedc6f9c34aa2569b0e37
--- /dev/null
+++ b/ee/db/seeds/shared/dora_metrics.rb
@@ -0,0 +1,55 @@
+# frozen_string_literal: true
+
+class Gitlab::Seeder::DoraMetrics # rubocop:disable Style/ClassAndModuleChildren
+  def initialize(project: nil)
+    @project = project || create_new_project
+    @environment = @project.environments.find_by_name('production')
+    @environment ||= FactoryBot.create(:environment, name: 'production', project: @project)
+  end
+
+  def execute
+    create_dora_metrics
+
+    puts "Successfully seeded DORA metrics for '#{@project.full_path}'!"
+    puts "URL: #{Rails.application.routes.url_helpers.project_url(@project)}"
+  end
+
+  private
+
+  def create_new_project
+    namespace = FactoryBot.create(
+      :group,
+      name: "Value Stream Management Group DORA #{suffix}",
+      path: "vsmg-#{suffix}"
+    )
+
+    FactoryBot.create(
+      :project,
+      :repository,
+      name: "Value Stream Management Project DORA #{suffix}",
+      path: "vsmp-#{suffix}",
+      creator: admin,
+      namespace: namespace
+    )
+  end
+
+  def create_dora_metrics
+    100.times do |i|
+      Dora::DailyMetrics.create(
+        environment_id: @environment.id,
+        date: (i + 1).days.ago,
+        deployment_frequency: rand(50),
+        incidents_count: rand(5),
+        lead_time_for_changes_in_seconds: rand(50000),
+        time_to_restore_service_in_seconds: rand(100000))
+    end
+  end
+
+  def suffix
+    @suffix ||= Time.now.to_i
+  end
+
+  def admin
+    @admin ||= User.admins.first
+  end
+end