diff --git a/erpnext/support/doctype/issue/issue.json b/erpnext/support/doctype/issue/issue.json
index 2e23b09..9639702 100644
--- a/erpnext/support/doctype/issue/issue.json
+++ b/erpnext/support/doctype/issue/issue.json
@@ -14,12 +14,12 @@
   "raised_by",
   "cb00",
   "status",
-  "service_level_agreement",
   "priority",
   "issue_type",
   "sb_details",
   "description",
   "service_level_section",
+  "service_level_agreement",
   "response_by",
   "cb",
   "agreement_status",
@@ -115,8 +115,7 @@
    "fieldtype": "Select",
    "in_standard_filter": 1,
    "label": "Priority",
-   "options": "Low\nMedium\nHigh",
-   "reqd": 1
+   "options": "Low\nMedium\nHigh"
   },
   {
    "fieldname": "issue_type",
@@ -151,7 +150,8 @@
    "fieldname": "service_level_agreement",
    "fieldtype": "Link",
    "label": "Service Level Agreement",
-   "options": "Service Level Agreement"
+   "options": "Service Level Agreement",
+   "read_only": 1
   },
   {
    "fieldname": "response_by",
@@ -321,7 +321,7 @@
  ],
  "icon": "fa fa-ticket",
  "idx": 7,
- "modified": "2019-05-03 11:11:50.495619",
+ "modified": "2019-05-03 14:36:19.117560",
  "modified_by": "Administrator",
  "module": "Support",
  "name": "Issue",
diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py
index d626def..0ff37d7 100644
--- a/erpnext/support/doctype/issue/issue.py
+++ b/erpnext/support/doctype/issue/issue.py
@@ -126,25 +126,29 @@
 		return replicated_issue.name
 
 	def before_insert(self):
-		self.set_response_and_resolution_time()
+		self.set_response_and_resolution_time(priority=self.priority)
 
-	def set_response_and_resolution_time(self):
-		service_level_agreement = get_active_service_level_agreement_for(self.customer)
+	def set_response_and_resolution_time(self, priority=None):
+		service_level_agreement = get_active_service_level_agreement_for(self.customer, priority)
 		if service_level_agreement:
 			self.service_level_agreement = service_level_agreement.name
-			self.priority = service_level_agreement.priority
-
-		if not self.service_level_agreement: return
+		else:
+			return
 
 		service_level = frappe.get_doc("Service Level", service_level_agreement.service_level)
+		priority = service_level.get_service_level_priority(priority)
+		priority.update({
+			"support_and_resolution": service_level.support_and_resolution,
+			"holiday_list": service_level.holiday_list
+		})
 
 		if not self.creation:
 			self.creation = now_datetime()
 
 		start_date_time = get_datetime(self.creation)
 
-		self.response_by = get_expected_time_for('response', service_level, start_date_time)
-		self.resolution_by = get_expected_time_for('resolution', service_level, start_date_time)
+		self.response_by = get_expected_time_for(parameter='response', service_level=priority, start_date_time=start_date_time)
+		self.resolution_by = get_expected_time_for(parameter='resolution', service_level=priority, start_date_time=start_date_time)
 
 def get_expected_time_for(parameter, service_level, start_date_time):
 	current_date_time = start_date_time
@@ -154,11 +158,11 @@
 
 	# lets assume response time is in days by default
 	if parameter == 'response':
-		allotted_days = service_level.response_time
-		time_period = service_level.response_time_period
+		allotted_days = service_level.get("response_time")
+		time_period = service_level.get("response_time_period")
 	elif parameter == 'resolution':
-		allotted_days = service_level.resolution_time
-		time_period = service_level.resolution_time_period
+		allotted_days = service_level.get("resolution_time")
+		time_period = service_level.get("resolution_time_period")
 	else:
 		frappe.throw(_("{0} parameter is invalid".format(parameter)))
 
@@ -172,13 +176,13 @@
 	expected_time_is_set = 1 if allotted_days == 0 and time_period in ['Day', 'Week'] else 0
 
 	support_days = {}
-	for service in service_level.support_and_resolution:
+	for service in service_level.get("support_and_resolution"):
 		support_days[service.workday] = frappe._dict({
 			'start_time': service.start_time,
 			'end_time': service.end_time,
 		})
 
-	holidays = get_holidays(service_level.holiday_list)
+	holidays = get_holidays(service_level.get("holiday_list"))
 	weekdays = get_weekdays()
 
 	while not expected_time_is_set:
@@ -248,14 +252,12 @@
 	for name in names:
 		set_status(name, status)
 
-
 @frappe.whitelist()
 def set_status(name, status):
 	st = frappe.get_doc("Issue", name)
 	st.status = status
 	st.save()
 
-
 def auto_close_tickets():
 	"""Auto-close replied support tickets after 7 days"""
 	auto_close_after_days = frappe.db.get_value("Support Settings", "Support Settings", "close_issue_after_days") or 7
@@ -295,6 +297,7 @@
 			"doctype": "Task"
 		}
 	}, target_doc)
+
 @frappe.whitelist()
 def make_issue_from_communication(communication, ignore_communication_links=False):
 	""" raise a issue from email """
diff --git a/erpnext/support/doctype/service_level/service_level.json b/erpnext/support/doctype/service_level/service_level.json
index 9dc1a8d..fb4e747 100644
--- a/erpnext/support/doctype/service_level/service_level.json
+++ b/erpnext/support/doctype/service_level/service_level.json
@@ -10,11 +10,7 @@
   "column_break_2",
   "holiday_list",
   "response_and_resoution_time",
-  "response_time",
-  "resolution_time",
-  "column_break_9",
-  "response_time_period",
-  "resolution_time_period",
+  "priority",
   "section_break_01",
   "support_and_resolution"
  ],
@@ -52,36 +48,6 @@
    "label": "Response and Resoution Time"
   },
   {
-   "fieldname": "response_time",
-   "fieldtype": "Int",
-   "label": "Response Time",
-   "reqd": 1
-  },
-  {
-   "fieldname": "resolution_time",
-   "fieldtype": "Int",
-   "label": "Resolution Time",
-   "reqd": 1
-  },
-  {
-   "fieldname": "column_break_9",
-   "fieldtype": "Column Break"
-  },
-  {
-   "fieldname": "response_time_period",
-   "fieldtype": "Select",
-   "label": "Response Time Period",
-   "options": "Hour\nDay\nWeek",
-   "reqd": 1
-  },
-  {
-   "fieldname": "resolution_time_period",
-   "fieldtype": "Select",
-   "label": "Resolution Time Period",
-   "options": "Hour\nDay\nWeek",
-   "reqd": 1
-  },
-  {
    "fieldname": "section_break_01",
    "fieldtype": "Section Break",
    "label": "Support and Resolution"
@@ -92,9 +58,16 @@
    "label": "Support and Resolution",
    "options": "Service Day",
    "reqd": 1
+  },
+  {
+   "fieldname": "priority",
+   "fieldtype": "Table",
+   "label": "Priority",
+   "options": "Service Level Priority",
+   "reqd": 1
   }
  ],
- "modified": "2019-05-03 01:09:43.571945",
+ "modified": "2019-05-04 13:08:33.381734",
  "modified_by": "Administrator",
  "module": "Support",
  "name": "Service Level",
diff --git a/erpnext/support/doctype/service_level/service_level.py b/erpnext/support/doctype/service_level/service_level.py
index 4b41e53..5389afb 100644
--- a/erpnext/support/doctype/service_level/service_level.py
+++ b/erpnext/support/doctype/service_level/service_level.py
@@ -12,35 +12,78 @@
 class ServiceLevel(Document):
 
 	def validate(self):
+		self.check_priorities()
+		self.check_support_and_resolution()
+
+	def check_priorities(self):
+		priorities = []
+		for priority in self.priority:
+			priorities.append(priority.priority)
+
+			if not (priority.response_time or priority.resolution_time):
+				frappe.throw(_("Set Response Time and Resolution for Priority {0} at index {1}.".format(priority.priority, priority.idx)))
+
+			if priority.response_time_period == "Hour":
+				response = priority.response_time * 0.0416667
+			elif priority.response_time_period == "Day":
+				response = priority.response_time
+			elif priority.response_time_period == "Week":
+				response = priority.response_time * 7
+
+			if priority.resolution_time_period == "Hour":
+				resolution = priority.resolution_time * 0.0416667
+			elif priority.resolution_time_period == "Day":
+				resolution = priority.resolution_time
+			elif priority.resolution_time_period == "Week":
+				resolution = priority.resolution_time * 7
+
+			if response > resolution:
+				frappe.throw(_("Response Time for {0} at index {1} can't be greater than Resolution Time.".format(priority.priority, priority.idx)))
+
+		if not len(set(priorities)) == len(priorities):
+			repeated_priority = get_repeated(priorities)
+			frappe.throw(_("Priority {0} has been repeated twice.".format(repeated_priority)))
+
+		# Check if values for all the priority options is set
+		priority_count = ([field.options for field in frappe.get_meta("Service Level Priority").fields if field.fieldname=='priority'][0]).split("\n")
+		if not len(set(priorities)) == len(priority_count):
+			frappe.throw(_("Set values for all the Priorities."))
+
+	def check_support_and_resolution(self):
 		week = get_weekdays()
 		indexes = []
-
-		self.check_response_and_resolution_time()
+		support_days = []
 
 		for support_and_resolution in self.support_and_resolution:
 			indexes.append(week.index(support_and_resolution.workday))
+			support_days.append(support_and_resolution.workday)
 			support_and_resolution.idx = week.index(support_and_resolution.workday) + 1
 			start_time, end_time = (datetime.strptime(support_and_resolution.start_time, '%H:%M:%S').time(),
 				datetime.strptime(support_and_resolution.end_time, '%H:%M:%S').time())
 			if start_time > end_time:
 				frappe.throw(_("Start Time can't be greater than End Time for {0}.".format(support_and_resolution.workday)))
+
 		if not len(set(indexes)) == len(indexes):
-			frappe.throw(_("Workday has been repeated twice"))
+			repeated_days = get_repeated(support_days)
+			frappe.throw(_("Workday {0} has been repeated twice".format(repeated_days)))
 
-	def check_response_and_resolution_time(self):
-		if self.response_time_period == "Hour":
-			response = self.response_time * 0.0416667
-		elif self.response_time_period == "Day":
-			response = self.response_time
-		elif self.response_time_period == "Week":
-			response = self.response_time * 7
+	def get_service_level_priority(self, priority):
+		priority = frappe.get_doc("Service Level Priority", {"priority": priority, "parent": self.name})
 
-		if self.resolution_time_period == "Hour":
-			resolution = self.resolution_time * 0.0416667
-		elif self.resolution_time_period == "Day":
-			resolution = self.resolution_time
-		elif self.resolution_time_period == "Week":
-			resolution = self.resolution_time * 7
+		return frappe._dict({
+					"priority": priority.priority,
+					"response_time": priority.response_time,
+					"response_time_period": priority.response_time_period,
+					"resolution_time": priority.resolution_time,
+					"response_time_period": priority.resolution_time_period
+				})
 
-		if response > resolution:
-			frappe.throw(_("Response Time can't be greater than Resolution Time"))
\ No newline at end of file
+def get_repeated(values):
+	unique_list = []
+	diff = []
+	for value in values:
+		if value not in unique_list:
+			unique_list.append(value)
+		else:
+			diff.append(value)
+	return " ".join(diff)
diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.js b/erpnext/support/doctype/service_level_agreement/service_level_agreement.js
index 66ec2f3..92d7abd 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.js
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.js
@@ -11,7 +11,11 @@
 				name: frm.doc.service_level
 			},
 			callback: function(data){
-				for (var i = 0; i < data.message.support_and_resolution.length; i++){
+				console.log(data);
+				for (var i in data.message.priority){
+					frm.add_child("priority", data.message.priority[i]);
+				}
+				for (var i in data.message.support_and_resolution){
 					frm.add_child("support_and_resolution", data.message.support_and_resolution[i]);
 				}
 				frm.refresh();
@@ -19,14 +23,24 @@
 		});
 	},
 
-	customer: function(frm) {
+	validate: function(frm) {
 		frm.doc.service_level_agreement_name = null;
-		frm.doc.service_level_agreement_name = frm.doc.priority + ': ' + frm.doc.customer;
+		var sla_name = 'Default Service Level Agreement';
+		if (frm.doc.customer){
+			sla_name = frm.doc.customer;
+		}
+		frm.doc.service_level_agreement_name = sla_name;
 	},
 
-	default_service_level_agreement: function(frm) {
-		frm.doc.service_level_agreement_name = null;
-		frm.doc.service_level_agreement_name = frm.doc.priority + ': Default Service Level Agreement';
-	},
-
+	priority: function(frm) {
+		if (!frm.doc.__is_local) {
+			frappe.call({
+				"method": "erpnext.support.service_level_agreement.service_level_agreement.get_active_service_level_agreement_for",
+				"args": {
+					"customer": frm.doc.customer,
+					"priority": frm.doc.priority
+				}
+			})
+		}
+	}
 });
diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.json b/erpnext/support/doctype/service_level_agreement/service_level_agreement.json
index 67400a1..30a8bfd 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.json
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.json
@@ -11,7 +11,6 @@
   "holiday_list",
   "column_break_2",
   "service_level",
-  "priority",
   "employee_group",
   "agreement_details_section",
   "start_date",
@@ -19,11 +18,7 @@
   "column_break_7",
   "end_date",
   "response_and_resolution_time_section",
-  "response_time",
-  "resolution_time",
-  "column_break_16",
-  "response_time_period",
-  "resolution_time_period",
+  "priority",
   "support_and_resolution_section_break",
   "support_and_resolution"
  ],
@@ -66,11 +61,9 @@
   },
   {
    "fieldname": "priority",
-   "fieldtype": "Select",
+   "fieldtype": "Table",
    "label": "Priority",
-   "options": "Low\nMedium\nHigh",
-   "reqd": 1,
-   "set_only_once": 1
+   "options": "Service Level Priority"
   },
   {
    "fetch_from": "service_level.employee_group",
@@ -113,43 +106,12 @@
    "label": "End Date"
   },
   {
+   "collapsible": 1,
    "fieldname": "response_and_resolution_time_section",
    "fieldtype": "Section Break",
    "label": "Response and Resolution Time"
   },
   {
-   "fetch_from": "service_level.response_time",
-   "fieldname": "response_time",
-   "fieldtype": "Int",
-   "label": "Response Time",
-   "read_only": 1
-  },
-  {
-   "fetch_from": "service_level.resolution_time",
-   "fieldname": "resolution_time",
-   "fieldtype": "Int",
-   "label": "Resolution Time",
-   "read_only": 1
-  },
-  {
-   "fieldname": "column_break_16",
-   "fieldtype": "Column Break"
-  },
-  {
-   "fetch_from": "service_level.response_time_period",
-   "fieldname": "response_time_period",
-   "fieldtype": "Data",
-   "label": "Response Time Period",
-   "read_only": 1
-  },
-  {
-   "fetch_from": "service_level.resolution_time_period",
-   "fieldname": "resolution_time_period",
-   "fieldtype": "Data",
-   "label": "Resolution Time Period",
-   "read_only": 1
-  },
-  {
    "collapsible": 1,
    "fieldname": "support_and_resolution_section_break",
    "fieldtype": "Section Break",
@@ -170,7 +132,7 @@
    "unique": 1
   }
  ],
- "modified": "2019-05-03 01:50:47.135540",
+ "modified": "2019-05-04 13:11:21.373147",
  "modified_by": "Administrator",
  "module": "Support",
  "name": "Service Level Agreement",
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 a4db835..e879b4a 100644
--- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
+++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py
@@ -9,21 +9,20 @@
 
 class ServiceLevelAgreement(Document):
 
-	def before_insert(self):
-		if self.default_service_level_agreement:
-			doc = frappe.get_list("Service Level Agreement", filters=[{"default_service_level_agreement": "1"}])
-			if doc:
-				frappe.throw(_("A Default Service Level Agreement already exists."))
-
 	def validate(self):
-		if not frm.doc.customer and not frm.doc.default_service_level_agreement:
+		if not (self.customer or self.default_service_level_agreement):
 			frappe.throw(_("Select a Customer or set as Default Service Level Agreement."))
 
-		if not self.default_service_level_agreement:
+		if self.default_service_level_agreement:
+			if frappe.db.exists("Service Level Agreement", {"default_service_level_agreement": "1"}):
+				frappe.throw(_("A Default Service Level Agreement already exists."))
+		else:
 			if not (self.start_date and self.end_date):
 				frappe.throw(_("Enter Start and End Date for the Agreement."))
 			if self.start_date >= self.end_date:
 				frappe.throw(_("Start Date of Agreement can't be greater than or equal to End Date."))
+			if self.end_date < frappe.utils.getdate():
+				frappe.throw(_("End Date of Agreement can't be less than today."))
 
 def check_agreement_status():
 	service_level_agreements = frappe.get_list("Service Level Agreement", filters=[
@@ -37,12 +36,26 @@
 			service_level_agreement.agreement_status = "Expired"
 		service_level_agreement.save()
 
-def get_active_service_level_agreement_for(customer):
-	agreement = frappe.get_list("Service Level Agreement",
-		filters=[{"agreement_status": "Active"}],
-		or_filters=[{'customer': customer},{"default_service_level_agreement": "1"}],
-		fields=["name", "service_level", "holiday_list", "priority"],
-		order_by='customer DESC',
-		limit=1)
+@frappe.whitelist()
+def get_active_service_level_agreement_for(customer, priority):
+
+	agreement = frappe.db.sql("""
+			select `tabService Level Agreement`.name, `tabService Level Agreement`.service_level,
+			`tabService Level Agreement`.holiday_list
+			from `tabService Level Agreement`
+			inner join `tabService Level Priority`
+			on `tabService Level Agreement`.name=`tabService Level Priority`.parent where
+			(
+				`tabService Level Agreement`.customer='{0}' and
+				`tabService Level Agreement`.agreement_status='Active' and
+				`tabService Level Priority`.priority='{1}'
+			) or
+			(
+				`tabService Level Agreement`.default_service_level_agreement='1'
+			)
+			 limit 1
+		""".format(customer, priority), as_dict=True, debug=True)
+
+	print(agreement)
 
 	return agreement[0] if agreement else None
\ No newline at end of file
diff --git a/erpnext/support/doctype/service_level_priority/__init__.py b/erpnext/support/doctype/service_level_priority/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/support/doctype/service_level_priority/__init__.py
diff --git a/erpnext/support/doctype/service_level_priority/service_level_priority.json b/erpnext/support/doctype/service_level_priority/service_level_priority.json
new file mode 100644
index 0000000..6693649
--- /dev/null
+++ b/erpnext/support/doctype/service_level_priority/service_level_priority.json
@@ -0,0 +1,74 @@
+{
+ "creation": "2019-05-04 05:54:03.658991",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "priority",
+  "sb_00",
+  "response_time",
+  "response_time_period",
+  "cb_00",
+  "resolution_time",
+  "resolution_time_period"
+ ],
+ "fields": [
+  {
+   "columns": 2,
+   "fieldname": "priority",
+   "fieldtype": "Select",
+   "in_list_view": 1,
+   "label": "Priority",
+   "options": "Low\nMedium\nHigh"
+  },
+  {
+   "fieldname": "sb_00",
+   "fieldtype": "Section Break"
+  },
+  {
+   "columns": 2,
+   "fieldname": "response_time",
+   "fieldtype": "Int",
+   "in_list_view": 1,
+   "label": "Response Time"
+  },
+  {
+   "columns": 2,
+   "fieldname": "resolution_time",
+   "fieldtype": "Int",
+   "in_list_view": 1,
+   "label": "Resolution Time"
+  },
+  {
+   "fieldname": "cb_00",
+   "fieldtype": "Column Break"
+  },
+  {
+   "columns": 2,
+   "fieldname": "response_time_period",
+   "fieldtype": "Select",
+   "in_list_view": 1,
+   "label": "Response Time Period",
+   "options": "Hour\nDay\nWeek"
+  },
+  {
+   "columns": 2,
+   "fieldname": "resolution_time_period",
+   "fieldtype": "Select",
+   "in_list_view": 1,
+   "label": "Resolution Time Period",
+   "options": "Hour\nDay\nWeek"
+  }
+ ],
+ "istable": 1,
+ "modified": "2019-05-04 06:04:32.956731",
+ "modified_by": "Administrator",
+ "module": "Support",
+ "name": "Service Level Priority",
+ "owner": "Administrator",
+ "permissions": [],
+ "quick_entry": 1,
+ "sort_field": "modified",
+ "sort_order": "ASC",
+ "track_changes": 1
+}
\ No newline at end of file
diff --git a/erpnext/support/doctype/service_level_priority/service_level_priority.py b/erpnext/support/doctype/service_level_priority/service_level_priority.py
new file mode 100644
index 0000000..0c0fe4a
--- /dev/null
+++ b/erpnext/support/doctype/service_level_priority/service_level_priority.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+# import frappe
+from frappe.model.document import Document
+
+class ServiceLevelPriority(Document):
+	pass
