diff --git a/app/models/role.rb b/app/models/role.rb
index 4beb5f5cf38d705970319c0a1fbfc311adc7564d..4d4af8793c300b988ab2d788bff92062d3d7813c 100644
--- a/app/models/role.rb
+++ b/app/models/role.rb
@@ -64,5 +64,9 @@ class Role < ApplicationRecord
   def self.submitter
     find_by(name: 'submitter') || create!(name: 'submitter')
   end
-  
+
+  def self.partner
+    find_by(name: 'partner') || create!(name: 'partner')
+  end
+
 end
diff --git a/app/models/user.rb b/app/models/user.rb
index b303638600e2a15130d10694f568cefc97eb664f..d603fdd3f8e11a30ef392c71e3e1372bce5443bf 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -155,6 +155,13 @@ class User < ApplicationRecord
     false
   end
 
+  def is_partner?
+    roles.each do |role|
+      return true if role.name == 'partner'
+    end
+    false
+  end
+
   def can_edit?
     self.is_admin? || self.is_editor?
   end
diff --git a/app/policies/learning_object_policy.rb b/app/policies/learning_object_policy.rb
index e0044b498b8fd5de1321f791a8089b8128b144ba..ff55dfcec746a90f337062a1fd627bb5c1c15103 100644
--- a/app/policies/learning_object_policy.rb
+++ b/app/policies/learning_object_policy.rb
@@ -38,15 +38,15 @@ class LearningObjectPolicy < ApplicationPolicy
   end
 
   def create?
-    record if user_exists? && user.is_submitter?
+    record if (user_exists? && user.is_submitter?) || (user_exists? && user.is_partner?)
   end
 
   def update?
-    record if owns? && user.is_submitter?
+    record if (owns? && user.is_submitter?) || (owns? && user.is_partner?)
   end
 
   def publish?
-    record if user_can_curate? && record.submitted?
+    record if (user_can_curate? && record.submitted?) || user.is_partner?
   end
 
   def destroy?
diff --git a/spec/shared/contexts.rb b/spec/shared/contexts.rb
index e972b801ec3dbddf7e80e940c33936ce42885a54..90ba69ca40ca86993b00c2e59a274f92e42f34e3 100644
--- a/spec/shared/contexts.rb
+++ b/spec/shared/contexts.rb
@@ -112,3 +112,16 @@ RSpec.shared_context "authenticate_user_supervisor", shared_context: :metadata d
   end
 
 end
+
+RSpec.shared_context "authenticate_user_partner", shared_context: :metadata do
+  let(:auth_client) { @auth_headers['client'] }
+  let(:uid) { @auth_headers['uid'] }
+  let(:access_token) { @auth_headers['access-token'] }
+  let(:role) { Role.all }
+
+  before do
+    @user = create(:user, roles: [role.find_by(name: 'partner')])
+    @auth_headers = @user.create_new_auth_token
+  end
+
+end