diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
index 1e9f78a37482d4ef9456ad77606db038dcade435..6838ccfaaab4330e58dced4b462bc249b705f6c4 100644
--- a/app/models/ci/runner.rb
+++ b/app/models/ci/runner.rb
@@ -41,6 +41,10 @@ module Ci
             query: "%#{query.try(:downcase)}%")
     end
 
+    def gl_projects_ids
+      projects.select(:gitlab_id)
+    end
+
     def set_default_values
       self.token = SecureRandom.hex(15) if self.token.blank?
     end
diff --git a/app/services/ci/register_build_service.rb b/app/services/ci/register_build_service.rb
index 33f1c1e918d6e6bd51de95d9f27c7cf97771f47f..78cc51d31bbd583976815bb6ade2ff45aeb4e247 100644
--- a/app/services/ci/register_build_service.rb
+++ b/app/services/ci/register_build_service.rb
@@ -8,10 +8,10 @@ module Ci
       builds =
         if current_runner.shared?
           # don't run projects which have not enables shared runners
-          builds.includes(:project).where(ci_projects: { shared_runners_enabled: true })
+          builds.joins(commit: {gl_project: :gitlab_ci_project}).where(ci_projects: {shared_runners_enabled: true})
         else
           # do run projects which are only assigned to this runner
-          builds.where(project_id: current_runner.projects)
+          builds.joins(:commit).where(ci_commits: {gl_project_id: current_runner.gl_projects_ids})
         end
 
       builds = builds.order('created_at ASC')
@@ -19,7 +19,7 @@ module Ci
       build = builds.find do |build|
         (build.tag_list - current_runner.tag_list).empty?
       end
-        
+
 
       if build
         # In case when 2 runners try to assign the same build, second runner will be declined
diff --git a/spec/services/ci/register_build_service_spec.rb b/spec/services/ci/register_build_service_spec.rb
index 9057791ca43b910d1c418adb209741be360374fb..ae4239be821fc385fbb143845979da2f258dd08f 100644
--- a/spec/services/ci/register_build_service_spec.rb
+++ b/spec/services/ci/register_build_service_spec.rb
@@ -3,15 +3,15 @@ require 'spec_helper'
 module Ci
   describe RegisterBuildService do
     let!(:service) { RegisterBuildService.new }
-    let!(:project) { FactoryGirl.create :ci_project }
-    let!(:gl_project) { FactoryGirl.create :empty_project, gitlab_ci_project: project }
+    let!(:gl_project) { FactoryGirl.create :empty_project }
     let!(:commit) { FactoryGirl.create :ci_commit, gl_project: gl_project }
     let!(:pending_build) { FactoryGirl.create :ci_build, commit: commit }
     let!(:shared_runner) { FactoryGirl.create(:ci_runner, is_shared: true) }
     let!(:specific_runner) { FactoryGirl.create(:ci_runner, is_shared: false) }
 
     before do
-      specific_runner.assign_to(project)
+      gl_project.ensure_ci_project
+      specific_runner.assign_to(gl_project.gitlab_ci_project)
     end
 
     describe :execute do
@@ -48,8 +48,7 @@ module Ci
 
       context 'allow shared runners' do
         before do
-          project.shared_runners_enabled = true
-          project.save
+          gl_project.gitlab_ci_project.update(shared_runners_enabled: true)
         end
 
         context 'shared runner' do