diff --git a/erpnext/patches/v12_0/set_priority_for_support.py b/erpnext/patches/v12_0/set_priority_for_support.py
index 21bb400..e41b8b1 100644
--- a/erpnext/patches/v12_0/set_priority_for_support.py
+++ b/erpnext/patches/v12_0/set_priority_for_support.py
@@ -10,6 +10,7 @@
 	set_priorities_service_level_agreement()
 
 def set_issue_priority():
+	# Adds priority from issue to Issue Priority DocType as Priority is a new DocType.
 	for priority in frappe.get_meta("Issue").get_field("priority").options.split("\n"):
 		if not frappe.db.exists("Issue Priority", priority):
 			frappe.get_doc({
@@ -18,6 +19,7 @@
 			}).insert(ignore_permissions=True)
 
 def set_priority_for_issue():
+	# Sets priority for Issues as Select field is changed to Link field.
 	issue_priority = frappe.get_list("Issue", fields=["name", "priority"])
 	frappe.reload_doc("support", "doctype", "issue")
 
@@ -25,6 +27,8 @@
 		frappe.db.set_value("Issue", issue.name, "priority", issue.priority)
 
 def set_priorities_service_level():
+	# Migrates "priority", "response_time", "response_time_period", "resolution_time", "resolution_time_period" to Child Table
+	# as a Service Level can have multiple priorities
 	try:
 		service_level_priorities = frappe.get_list("Service Level", fields=["name", "priority", "response_time", "response_time_period", "resolution_time", "resolution_time_period"])
 
@@ -45,6 +49,8 @@
 		frappe.reload_doc("support", "doctype", "service_level")
 
 def set_priorities_service_level_agreement():
+	# Migrates "priority", "response_time", "response_time_period", "resolution_time", "resolution_time_period" to Child Table
+	# as a Service Level Agreement can have multiple priorities
 	try:
 		service_level_agreement_priorities = frappe.get_list("Service Level Agreement", fields=["name", "priority", "response_time", "response_time_period", "resolution_time", "resolution_time_period"])
 
diff --git a/erpnext/support/doctype/issue/issue.js b/erpnext/support/doctype/issue/issue.js
index 05bfe97..ba54edc 100644
--- a/erpnext/support/doctype/issue/issue.js
+++ b/erpnext/support/doctype/issue/issue.js
@@ -4,34 +4,24 @@
 
 		if (frm.doc.service_level_agreement) {
 			frappe.call({
-				method: "erpnext.support.doctype.service_level_agreement.service_level_agreement.get_service_level_agreement_priorities",
+				method: "erpnext.support.doctype.service_level_agreement.service_level_agreement.get_service_level_agreement_filters",
 				args: {
 					name: frm.doc.service_level_agreement,
+					customer: frm.doc.customer
 				},
 				callback: function (r) {
 					if (r && r.message) {
 						frm.set_query('priority', function() {
 							return {
 								filters: {
-									"name": ["in", r.message],
+									"name": ["in", r.message.priority],
 								}
 							};
 						});
-					}
-				}
-			});
-
-			frappe.call({
-				method: "erpnext.support.doctype.service_level_agreement.service_level_agreement.get_valid_service_level_agreements",
-				args: {
-					customer: frm.doc.customer,
-				},
-				callback: function (r) {
-					if (r && r.message) {
 						frm.set_query('service_level_agreement', function() {
 							return {
 								filters: {
-									"name": ["in", r.message],
+									"name": ["in", r.message.service_level_agreements],
 								}
 							};
 						});
@@ -85,10 +75,6 @@
 
 	priority: function(frm) {
 		if (frm.doc.service_level_agreement) {
-			frappe.show_alert({
-				indicator: 'green',
-				message: __('Changing Priority.')
-			});
 			frm.call('change_service_level_agreement_and_priority', {
 				"priority": frm.doc.priority,
 				"service_level_agreement": frm.doc.service_level_agreement
@@ -100,10 +86,6 @@
 	},
 
 	service_level_agreement: function(frm) {
-		frappe.show_alert({
-			indicator: 'green',
-			message: __('Changing Service Level Agreement.')
-		});
 		frm.call('change_service_level_agreement_and_priority', {
 			"service_level_agreement": frm.doc.service_level_agreement
 		}).then(() => {
diff --git a/erpnext/support/doctype/issue/test_issue.py b/erpnext/support/doctype/issue/test_issue.py
index 519c107..1296b36 100644
--- a/erpnext/support/doctype/issue/test_issue.py
+++ b/erpnext/support/doctype/issue/test_issue.py
@@ -21,62 +21,50 @@
 		create_service_level_agreements_for_issues()
 
 		creation = datetime.datetime(2019, 3, 4, 12, 0)
-		"""
-			make issue with customer specific SLA
-		"""
+
+		# make issue with customer specific SLA
 		customer = create_customer("_Test Customer", "__Test SLA Customer Group", "__Test SLA Territory")
 		issue = make_issue(creation, "_Test Customer", 1)
 
 		self.assertEquals(issue.response_by, datetime.datetime(2019, 3, 4, 14, 0))
 		self.assertEquals(issue.resolution_by, datetime.datetime(2019, 3, 4, 15, 0))
 
-		"""
-			make issue with customer_group specific SLA
-		"""
+		# make issue with customer_group specific SLA
 		customer = create_customer("__Test Customer", "_Test SLA Customer Group", "__Test SLA Territory")
 		issue = make_issue(creation, "__Test Customer", 2)
 
 		self.assertEquals(issue.response_by, datetime.datetime(2019, 3, 4, 14, 0))
 		self.assertEquals(issue.resolution_by, datetime.datetime(2019, 3, 4, 15, 0))
 
-		"""
-			make issue with territory specific SLA
-		"""
+
+		# make issue with territory specific SLA
 		customer = create_customer("___Test Customer", "__Test SLA Customer Group", "_Test SLA Territory")
 		issue = make_issue(creation, "___Test Customer", 3)
 
 		self.assertEquals(issue.response_by, datetime.datetime(2019, 3, 4, 14, 0))
 		self.assertEquals(issue.resolution_by, datetime.datetime(2019, 3, 4, 15, 0))
 
-		"""
-			make issue with default SLA
-		"""
+		# make issue with default SLA
 		issue = make_issue(creation=creation, index=4)
 
 		self.assertEquals(issue.response_by, datetime.datetime(2019, 3, 4, 16, 0))
 		self.assertEquals(issue.resolution_by, datetime.datetime(2019, 3, 4, 18, 0))
 
-		"""
-			make issue with default SLA before working hours
-		"""
+		# make issue with default SLA before working hours
 		creation = datetime.datetime(2019, 3, 4, 7, 0)
 		issue = make_issue(creation=creation, index=5)
 
 		self.assertEquals(issue.response_by, datetime.datetime(2019, 3, 4, 14, 0))
 		self.assertEquals(issue.resolution_by, datetime.datetime(2019, 3, 4, 16, 0))
 
-		"""
-			make issue with default SLA after working hours
-		"""
+		# make issue with default SLA after working hours
 		creation = datetime.datetime(2019, 3, 4, 20, 0)
 		issue = make_issue(creation, index=6)
 
 		self.assertEquals(issue.response_by, datetime.datetime(2019, 3, 6, 14, 0))
 		self.assertEquals(issue.resolution_by, datetime.datetime(2019, 3, 6, 16, 0))
 
-		"""
-			make issue with default SLA next day
-		"""
+		# make issue with default SLA next day
 		creation = datetime.datetime(2019, 3, 4, 14, 0)
 		issue = make_issue(creation=creation, index=7)
 
diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
index b804581..332bf63 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
@@ -70,12 +70,16 @@
 
 	return agreement[0] if agreement else None
 
-@frappe.whitelist()
-def get_service_level_agreement_priorities(name):
-	return [priority.priority for priority in frappe.get_list("Service Level Priority", filters={"parent": name}, fields=["priority"])]
+def get_customer_group(customer):
+	if customer:
+		return frappe.db.get_value("Customer", customer, "customer_group")
+
+def get_customer_territory(customer):
+	if customer:
+		return frappe.db.get_value("Customer", customer, "territory")
 
 @frappe.whitelist()
-def get_valid_service_level_agreements(customer=None):
+def get_service_level_agreement_filters(name, customer=None):
 	if not customer:
 		or_filters = [
 			["Service Level Agreement", "default_service_level_agreement", "=", 1]
@@ -86,12 +90,7 @@
 			["Service Level Agreement", "default_service_level_agreement", "=", 1]
 		]
 
-	return [d.name for d in frappe.get_list("Service Level Agreement", or_filters=or_filters)]
-
-def get_customer_group(customer):
-	if customer:
-		return frappe.db.get_value("Customer", customer, "customer_group")
-
-def get_customer_territory(customer):
-	if customer:
-		return frappe.db.get_value("Customer", customer, "territory")
\ No newline at end of file
+	return {
+		"priority": [priority.priority for priority in frappe.get_list("Service Level Priority", filters={"parent": name}, fields=["priority"])],
+		"service_level_agreements": [d.name for d in frappe.get_list("Service Level Agreement", or_filters=or_filters)]
+	}
\ No newline at end of file
