diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py
index adac8f5..afea4a1 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.py
+++ b/erpnext/crm/doctype/opportunity/opportunity.py
@@ -9,7 +9,6 @@
 from erpnext.setup.utils import get_exchange_rate
 from erpnext.utilities.transaction_base import TransactionBase
 from erpnext.accounts.party import get_party_account_currency
-from frappe.desk.form import assign_to
 from frappe.email.inbox import link_communication_to_document
 
 subject_field = "title"
@@ -155,9 +154,6 @@
 	def on_update(self):
 		self.add_calendar_event()
 
-		# assign to customer account manager or lead owner
-		assign_to_user(self, subject_field)
-
 	def add_calendar_event(self, opts=None, force=False):
 		if not opts:
 			opts = frappe._dict()
@@ -335,21 +331,6 @@
 		doc.flags.ignore_mandatory = True
 		doc.save()
 
-def assign_to_user(doc, subject_field):
-	assign_user = None
-	if doc.customer:
-		assign_user = frappe.db.get_value('Customer', doc.customer, 'account_manager')
-	elif doc.lead:
-		assign_user = frappe.db.get_value('Lead', doc.lead, 'lead_owner')
-
-	if assign_user and assign_user not in ['Administrator', 'Guest']:
-		if not assign_to.get(dict(doctype = doc.doctype, name = doc.name)):
-			assign_to.add({
-				"assign_to": assign_user,
-				"doctype": doc.doctype,
-				"name": doc.name,
-				"description": doc.get(subject_field)
-			})
 @frappe.whitelist()
 def make_opportunity_from_communication(communication, ignore_communication_links=False):
 	from erpnext.crm.doctype.lead.lead import make_lead_from_communication
diff --git a/erpnext/crm/doctype/opportunity/test_opportunity.py b/erpnext/crm/doctype/opportunity/test_opportunity.py
index 0dab01d..9cbbb86 100644
--- a/erpnext/crm/doctype/opportunity/test_opportunity.py
+++ b/erpnext/crm/doctype/opportunity/test_opportunity.py
@@ -7,7 +7,6 @@
 from erpnext.crm.doctype.lead.lead import make_customer
 from erpnext.crm.doctype.opportunity.opportunity import make_quotation
 import unittest
-from frappe.desk.form import assign_to
 
 test_records = frappe.get_test_records('Opportunity')
 
@@ -61,20 +60,6 @@
 		self.assertEqual(opp_doc.enquiry_from, "Customer")
 		self.assertEqual(opp_doc.customer, customer.name)
 
-	def test_assignment(self):
-		# assign cutomer account manager
-		frappe.db.set_value('Customer', '_Test Customer', 'account_manager', 'test1@example.com')
-		doc = make_opportunity(with_items=0)
-
-		self.assertEqual(assign_to.get(dict(doctype = doc.doctype, name = doc.name))[0].get('owner'), 'test1@example.com')
-
-		# assign lead owner
-		frappe.db.set_value('Customer', '_Test Customer', 'account_manager', '')
-		frappe.db.set_value('Lead', '_T-Lead-00001', 'lead_owner', 'test2@example.com')
-		doc = make_opportunity(with_items=0, enquiry_from='Lead')
-
-		self.assertEqual(assign_to.get(dict(doctype = doc.doctype, name = doc.name))[0].get('owner'), 'test2@example.com')
-
 
 def make_opportunity(**args):
 	args = frappe._dict(args)
diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py
index 3b703d9..93f13f1 100644
--- a/erpnext/support/doctype/issue/issue.py
+++ b/erpnext/support/doctype/issue/issue.py
@@ -12,7 +12,6 @@
 from frappe.model.mapper import get_mapped_doc
 from frappe.utils.user import is_website_user
 from erpnext.support.doctype.service_level_agreement.service_level_agreement import get_active_service_level_agreement_for
-from erpnext.crm.doctype.opportunity.opportunity import assign_to_user
 from frappe.email.inbox import link_communication_to_document
 
 sender_field = "raised_by"
@@ -39,9 +38,6 @@
 			self.create_communication()
 			self.flags.communication_created = None
 
-		# assign to customer account manager or lead owner
-		assign_to_user(self, 'subject')
-
 	def set_lead_contact(self, email_id):
 		import email.utils
 
diff --git a/erpnext/support/doctype/issue/test_issue.py b/erpnext/support/doctype/issue/test_issue.py
index 1296b36..75d70b1 100644
--- a/erpnext/support/doctype/issue/test_issue.py
+++ b/erpnext/support/doctype/issue/test_issue.py
@@ -8,15 +8,8 @@
 from frappe.utils import now_datetime, get_datetime
 import datetime
 from datetime import timedelta
-from frappe.desk.form import assign_to
 
 class TestIssue(unittest.TestCase):
-	def test_assignment(self):
-		frappe.db.set_value('Customer', '_Test Customer', 'account_manager', 'test1@example.com')
-		doc = make_issue(customer='_Test Customer')
-		self.assertEqual(assign_to.get(dict(doctype = doc.doctype, name = doc.name))[0].get('owner'), 'test1@example.com')
-
-
 	def test_response_time_and_resolution_time_based_on_different_sla(self):
 		create_service_level_agreements_for_issues()
 
