diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 7d23456cdac0f84f054f6c266d4b24056c8b49bb..cd6ead4ded2991dffcabf564058708cf338eb978 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -213,12 +213,6 @@ module Ci
       ]
     end
 
-    def execute_hooks
-      pipeline_data = Gitlab::DataBuilder::PipelineDataBuilder.build(self)
-      project.execute_hooks(pipeline_data, :pipeline_hooks)
-      project.execute_services(pipeline_data.dup, :pipeline_hooks)
-    end
-
     private
 
     def build_builds_for_stages(stages, user, status, trigger_request)
@@ -244,6 +238,13 @@ module Ci
       self.finished_at = statuses.finished_at
       self.duration = statuses.latest.duration
       save
+      execute_hooks
+    end
+
+    def execute_hooks
+      pipeline_data = Gitlab::DataBuilder::PipelineDataBuilder.build(self)
+      project.execute_hooks(pipeline_data, :pipeline_hooks)
+      project.execute_services(pipeline_data.dup, :pipeline_hooks)
     end
 
     def keep_around_commits
diff --git a/app/services/ci/create_pipeline_service.rb b/app/services/ci/create_pipeline_service.rb
index be91bf0db85a30408b71731674fdf4c02d3fb339..7a8b0683acbbc342fdbf47f24ed93ae845943e17 100644
--- a/app/services/ci/create_pipeline_service.rb
+++ b/app/services/ci/create_pipeline_service.rb
@@ -27,6 +27,7 @@ module Ci
       end
 
       pipeline.save!
+      pipeline.touch
 
       unless pipeline.create_builds(current_user)
         pipeline.errors.add(:base, 'No builds for this pipeline.')