diff --git a/erpnext/config/hr.py b/erpnext/config/hr.py
index b6b4cf1..9d21600 100644
--- a/erpnext/config/hr.py
+++ b/erpnext/config/hr.py
@@ -244,8 +244,8 @@
 				},
 				{
 					"type": "doctype",
-					"name": "Daily Work Summary Settings"
-				},
+					"name": "Daily Work Summary Group"
+				}
 			]
 		},
 		{
diff --git a/erpnext/docs/user/manual/en/human-resources/daily-work-summary.md b/erpnext/docs/user/manual/en/human-resources/daily-work-summary.md
index d3ba22a..4a5c989 100644
--- a/erpnext/docs/user/manual/en/human-resources/daily-work-summary.md
+++ b/erpnext/docs/user/manual/en/human-resources/daily-work-summary.md
@@ -1,15 +1,24 @@
 # Daily Work Summary
 
-Daily Work Summary is way to get a automated way to get a summary of work done by all employees in a company. Once you set it up, each active Employee of the Company gets an email asking them what did they work on during the day.
+Daily Work Summary is way to get a automated way to get a summary of work done by users.
 
-Replies of all employees who choose to respond is collected and sent as a summary at midnight. Emails are only sent based on the Holiday List setup in the Company or Employee master.
+Replies of all users who choose to respond is collected and sent as a summary at midnight. Emails are only sent based on the Holiday List selected for the group 
 
-*Note:* You must have one active incoming email account setup for this to work.
+**Note:**
+> You must have one active incoming email account setup for this to work.
+
+
 
 ### How to Use
 
-Go to "Daily Work Summary Settings" via HR module or search bar and set the company for which you want to activate this feature.
+Go to "Daily Work Summary Group" via HR module or search bar and set the users for whom you want to send the reminder.
 
-You can also choose to Customize the Message you send to your employees:
+You can set multiple groups with different set of _users_ from your user list with different _time to send emails_ and with separate _holiday list_ for each.
 
-<img class="screenshot" alt="Department" src="{{docs_base_url}}/assets/img/human-resources/department.png">
+You can also choose to customize the _Message_ you send to users.
+
+**Note:**
+>1. If no holiday list is selected then the email will be sent every day.
+>2. Name of a "Daily Work Summary Group" will be sent as the title for daily summary email.
+>3. Mail will not be sent to the users of a disabled Daily Work Summary Group.
+
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 442ddf5..f7f1720 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -218,7 +218,7 @@
 scheduler_events = {
 	"hourly": [
 		"erpnext.accounts.doctype.subscription.subscription.make_subscription_entry",
-		'erpnext.hr.doctype.daily_work_summary_settings.daily_work_summary_settings.trigger_emails'
+		'erpnext.hr.doctype.daily_work_summary_group.daily_work_summary_group.trigger_emails'
 	],
 	"daily": [
 		"erpnext.stock.reorder_item.reorder_item",
@@ -230,7 +230,7 @@
 		"erpnext.hr.doctype.employee.employee.send_birthday_reminders",
 		"erpnext.projects.doctype.task.task.set_tasks_as_overdue",
 		"erpnext.assets.doctype.asset.depreciation.post_depreciation_entries",
-		"erpnext.hr.doctype.daily_work_summary_settings.daily_work_summary_settings.send_summary",
+		"erpnext.hr.doctype.daily_work_summary_group.daily_work_summary_group.send_summary",
 		"erpnext.stock.doctype.serial_no.serial_no.update_maintenance_status",
 		"erpnext.buying.doctype.supplier_scorecard.supplier_scorecard.refresh_scorecards",
 		"erpnext.setup.doctype.company.company.cache_companies_monthly_sales_history",
diff --git a/erpnext/hr/doctype/daily_work_summary/daily_work_summary.js b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.js
index 1ac173a..8236480 100644
--- a/erpnext/hr/doctype/daily_work_summary/daily_work_summary.js
+++ b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.js
@@ -2,7 +2,7 @@
 // For license information, please see license.txt
 
 frappe.ui.form.on('Daily Work Summary', {
-	refresh: function(frm) {
+	refresh: function (frm) {
 
 	}
 });
diff --git a/erpnext/hr/doctype/daily_work_summary/daily_work_summary.json b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.json
index b457cf2..259416e 100644
--- a/erpnext/hr/doctype/daily_work_summary/daily_work_summary.json
+++ b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.json
@@ -1,5 +1,6 @@
 {
  "allow_copy": 0, 
+ "allow_guest_to_view": 0, 
  "allow_import": 0, 
  "allow_rename": 0, 
  "beta": 0, 
@@ -12,22 +13,24 @@
  "engine": "InnoDB", 
  "fields": [
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "company", 
+   "fieldname": "daily_work_summary_group", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 1, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Company", 
+   "label": "Daily Work Summary Group", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Company", 
+   "options": "Daily Work Summary Group", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -41,6 +44,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -52,6 +56,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
    "label": "Status", 
@@ -71,6 +76,7 @@
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
@@ -81,6 +87,7 @@
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 0, 
    "in_standard_filter": 0, 
    "label": "Email Sent To", 
@@ -99,17 +106,17 @@
    "unique": 0
   }
  ], 
+ "has_web_view": 0, 
  "hide_heading": 0, 
  "hide_toolbar": 0, 
  "idx": 0, 
  "image_view": 0, 
  "in_create": 1, 
- "in_dialog": 0, 
  "is_submittable": 0, 
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-11-21 01:05:55.258867", 
+ "modified": "2018-02-16 11:02:06.727749", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Daily Work Summary", 
@@ -126,7 +133,6 @@
    "export": 0, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 0, 
    "read": 1, 
@@ -147,7 +153,6 @@
    "export": 1, 
    "if_owner": 0, 
    "import": 0, 
-   "is_custom": 0, 
    "permlevel": 0, 
    "print": 1, 
    "read": 1, 
@@ -162,7 +167,9 @@
  "quick_entry": 1, 
  "read_only": 1, 
  "read_only_onload": 0, 
+ "show_name_in_global_search": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 0, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary/daily_work_summary.py b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.py
index 9ac74aa..4d3b173 100644
--- a/erpnext/hr/doctype/daily_work_summary/daily_work_summary.py
+++ b/erpnext/hr/doctype/daily_work_summary/daily_work_summary.py
@@ -11,52 +11,66 @@
 from frappe.utils import global_date_format
 from markdown2 import markdown
 
+
 class DailyWorkSummary(Document):
-	def send_mails(self, settings, emails):
-		'''Send emails to get daily work summary to all employees'''
+	def send_mails(self, dws_group, emails):
+		'''Send emails to get daily work summary to all users \
+			in selected daily work summary group'''
 		incoming_email_account = frappe.db.get_value('Email Account',
-			dict(enable_incoming=1, default_incoming=1), 'email_id')
+			dict(enable_incoming=1, default_incoming=1),
+				'email_id')
 
 		self.db_set('email_sent_to', '\n'.join(emails))
-		frappe.sendmail(recipients = emails, message = settings.message,
-			subject = settings.subject, reference_doctype=self.doctype,
-			reference_name=self.name, reply_to = incoming_email_account)
+		frappe.sendmail(recipients=emails,
+			message=dws_group.message,
+			subject=dws_group.subject,
+			reference_doctype=self.doctype,
+			reference_name=self.name,
+			reply_to=incoming_email_account)
 
 	def send_summary(self):
 		'''Send summary of all replies. Called at midnight'''
 		args = self.get_message_details()
-
-		frappe.sendmail(recipients = get_employee_emails(self.company, False),
+		emails = get_user_emails_from_group(self.daily_work_summary_group)
+		frappe.sendmail(recipients=emails,
 			template='daily_work_summary',
 			args=args,
-			subject = _('Daily Work Summary for {0}').format(self.company),
-			reference_doctype=self.doctype, reference_name=self.name)
+			subject=_(self.daily_work_summary_group),
+			reference_doctype=self.doctype,
+			reference_name=self.name)
 
 		self.db_set('status', 'Sent')
 
 	def get_message_details(self):
 		'''Return args for template'''
-		settings = frappe.get_doc('Daily Work Summary Settings')
+		dws_group = frappe.get_doc('Daily Work Summary Group',
+			self.daily_work_summary_group)
 
-		replies = frappe.get_all('Communication', fields=['content', 'text_content', 'sender'],
-			filters=dict(reference_doctype=self.doctype, reference_name=self.name,
-				communication_type='Communication', sent_or_received='Received'),
-				order_by='creation asc')
+		replies = frappe.get_all('Communication',
+			fields=['content', 'text_content', 'sender'],
+			filters=dict(reference_doctype=self.doctype,
+				reference_name=self.name,
+				communication_type='Communication',
+				sent_or_received='Received'),
+			order_by='creation asc')
 
 		did_not_reply = self.email_sent_to.split()
 
 		for d in replies:
-			emp = frappe.db.get_values("Employee", {"user_id": d.sender},
-				["employee_name", "image"], as_dict=True)
+			user = frappe.db.get_values("User",
+				{"email": d.sender},
+				["full_name", "user_image"],
+				as_dict=True)
 
-			d.sender_name = emp[0].employee_name if emp else d.sender
-			d.image = emp[0].image if emp and emp[0].image else None
-			
+			d.sender_name = user[0].full_name if user else d.sender
+			d.image = user[0].image if user and user[0].image else None
+
 			original_image = d.image
 			# make thumbnail image
 			try:
 				if original_image:
-					file_name = frappe.get_list('File', {'file_url': original_image})
+					file_name = frappe.get_list('File',
+						{'file_url': original_image})
 
 					if file_name:
 						file_name = file_name[0].name
@@ -74,34 +88,27 @@
 			if d.sender in did_not_reply:
 				did_not_reply.remove(d.sender)
 			if d.text_content:
-				d.content = markdown(EmailReplyParser.parse_reply(d.text_content))
+				d.content = markdown(
+					EmailReplyParser.parse_reply(d.text_content)
+				)
 
-
-		did_not_reply = [(frappe.db.get_value("Employee", {"user_id": email}, "employee_name") or email)
+		did_not_reply = [(frappe.db.get_value("User", {"email": email}, "full_name") or email)
 			for email in did_not_reply]
 
 		return dict(replies=replies,
-			original_message=settings.message,
-			title=_('Daily Work Summary for {0}'.format(global_date_format(self.creation))),
-			did_not_reply= ', '.join(did_not_reply) or '',
-			did_not_reply_title = _('No replies from'))
+			original_message=dws_group.message,
+			title=_('Work Summary for {0}'.format(
+				global_date_format(self.creation)
+			)),
+			did_not_reply=', '.join(did_not_reply) or '',
+			did_not_reply_title=_('No replies from'))
 
 
-def get_employee_emails(company, only_working=True):
-	'''Returns list of Employee user ids for the given company who are working today
+def get_user_emails_from_group(group):
+	'''Returns list of email of users from the given group
 
-	:param company: Company `name`'''
-	employee_list = frappe.get_all('Employee', fields=['name', 'user_id'],
-		filters={'status': 'Active', 'company': company})
+	:param group: Daily Work Summary Group `name`'''
+	group_doc = frappe.get_doc('Daily Work Summary Group', group)
+	emails = [d.email for d in group_doc.users]
 
-	out = []
-	for e in employee_list:
-		if e.user_id:
-			if only_working and is_holiday(e.name):
-				# don't add if holiday
-				continue
-			out.append(e.user_id)
-
-	return out
-
-
+	return emails
diff --git a/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.js b/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.js
new file mode 100644
index 0000000..d2ceb8b
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.js
@@ -0,0 +1,23 @@
+/* eslint-disable */
+// rename this file from _test_[name] to test_[name] to activate
+// and remove above this line
+
+QUnit.test("test: Daily Work Summary", function (assert) {
+	let done = assert.async();
+
+	// number of asserts
+	assert.expect(1);
+
+	frappe.run_serially([
+		// insert a new Daily Work Summary
+		() => frappe.tests.make('Daily Work Summary', [
+			// values to be set
+			{ key: 'value' }
+		]),
+		() => {
+			assert.equal(cur_frm.doc.key, 'value');
+		},
+		() => done()
+	]);
+
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py b/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py
index 63e6fdf..b4c2133 100644
--- a/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py
+++ b/erpnext/hr/doctype/daily_work_summary/test_daily_work_summary.py
@@ -13,30 +13,31 @@
 class TestDailyWorkSummary(unittest.TestCase):
 	def test_email_trigger(self):
 		self.setup_and_prepare_test()
-		for d in self.employees:
-			# check that email is sent to this employee
-			self.assertTrue(d.user_id in [d.recipient for d in self.emails
-				if self.settings.subject in d.message])
+		for d in self.users:
+			# check that email is sent to users
+			self.assertTrue(d.email in [d.recipient for d in self.emails
+				if self.groups.subject in d.message])
 
 	def test_email_trigger_failed(self):
-		hour = '00'
-		if frappe.utils.nowtime().split(':')[0]=='00':
-			hour = '01'
+		hour = '00:00'
+		if frappe.utils.nowtime().split(':')[0] == '00':
+			hour = '01:00'
 
 		self.setup_and_prepare_test(hour)
 
-		for d in self.employees:
-			# check that email is sent to this employee
-			self.assertFalse(d.user_id in [d.recipient for d in self.emails
-				if self.settings.subject in d.message])
+		for d in self.users:
+			# check that email is not sent to users
+			self.assertFalse(d.email in [d.recipient for d in self.emails
+				if self.groups.subject in d.message])
 
 	def test_incoming(self):
 		# get test mail with message-id as in-reply-to
 		self.setup_and_prepare_test()
 
 		with open(os.path.join(os.path.dirname(__file__), "test_data", "test-reply.raw"), "r") as f:
-			test_mails = [f.read().replace('{{ sender }}', self.employees[-1].user_id)\
-				.replace('{{ message_id }}', self.emails[-1].message_id)]
+			test_mails = [f.read().replace('{{ sender }}',
+			self.users[-1].email).replace('{{ message_id }}',
+			self.emails[-1].message_id)]
 
 		# pull the mail
 		email_account = frappe.get_doc("Email Account", "_Test Email Account 1")
@@ -55,30 +56,38 @@
 		frappe.db.sql('delete from `tabEmail Queue`')
 		frappe.db.sql('delete from `tabEmail Queue Recipient`')
 		frappe.db.sql('delete from `tabCommunication`')
+		frappe.db.sql('delete from `tabDaily Work Summary Group`')
 
-		self.setup_settings(hour)
+		self.users = frappe.get_all('User',
+			fields=['email'],
+			filters=dict(email=('!=', 'test@example.com')))
+		self.setup_groups(hour)
 
-		from erpnext.hr.doctype.daily_work_summary_settings.daily_work_summary_settings \
+		from erpnext.hr.doctype.daily_work_summary_group.daily_work_summary_group \
 			import trigger_emails
 		trigger_emails()
 
 		# check if emails are created
-		self.employees = frappe.get_all('Employee', fields = ['user_id'],
-			filters=dict(company='_Test Company', status='Active', user_id=('!=', 'test@example.com')))
 
-		self.emails = frappe.db.sql("""select r.recipient, q.message, q.message_id from `tabEmail Queue` as q, `tabEmail Queue Recipient` as r where q.name = r.parent""", as_dict=1)
+		self.emails = frappe.db.sql("""select r.recipient, q.message, q.message_id \
+			from `tabEmail Queue` as q, `tabEmail Queue Recipient` as r \
+			where q.name = r.parent""", as_dict=1)
 
 		frappe.db.commit()
 
-	def setup_settings(self, hour=None):
-		# setup email to trigger at this our
+	def setup_groups(self, hour=None):
+		# setup email to trigger at this hour
 		if not hour:
 			hour = frappe.utils.nowtime().split(':')[0]
-		self.settings = frappe.get_doc('Daily Work Summary Settings')
-		self.settings.companies = []
+			hour = hour+':00'
 
-		self.settings.append('companies', dict(company='_Test Company',
-			send_emails_at=hour + ':00'))
-		self.settings.test_subject = 'this is a subject for testing summary emails'
-		self.settings.save()
+		groups = frappe.get_doc(dict(doctype="Daily Work Summary Group",
+			name="Daily Work Summary",
+			users=self.users,
+			send_emails_at=hour,
+			subject="this is a subject for testing summary emails",
+			message='this is a message for testing summary emails'))
+		groups.insert()
 
+		self.groups = groups
+		self.groups.save()
diff --git a/erpnext/hr/doctype/daily_work_summary_settings/__init__.py b/erpnext/hr/doctype/daily_work_summary_group/__init__.py
similarity index 100%
rename from erpnext/hr/doctype/daily_work_summary_settings/__init__.py
rename to erpnext/hr/doctype/daily_work_summary_group/__init__.py
diff --git a/erpnext/hr/doctype/daily_work_summary_group/daily_work_summary_group.js b/erpnext/hr/doctype/daily_work_summary_group/daily_work_summary_group.js
new file mode 100644
index 0000000..43206d5
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_group/daily_work_summary_group.js
@@ -0,0 +1,12 @@
+// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Daily Work Summary Group', {
+	refresh: function (frm) {
+		if (!frm.is_new()) {
+			frm.add_custom_button(__('Daily Work Summary'), function () {
+				frappe.set_route('List', 'Daily Work Summary');
+			});
+		}
+	}
+});
diff --git a/erpnext/hr/doctype/daily_work_summary_group/daily_work_summary_group.json b/erpnext/hr/doctype/daily_work_summary_group/daily_work_summary_group.json
new file mode 100644
index 0000000..562183f
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_group/daily_work_summary_group.json
@@ -0,0 +1,309 @@
+{
+ "allow_copy": 0, 
+ "allow_guest_to_view": 0, 
+ "allow_import": 0, 
+ "allow_rename": 0, 
+ "autoname": "Prompt", 
+ "beta": 0, 
+ "creation": "2018-02-12 15:06:18.767239", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "", 
+ "editable_grid": 1, 
+ "engine": "InnoDB", 
+ "fields": [
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "1", 
+   "fieldname": "enabled", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Enabled", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "select_users", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Select Users", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "users", 
+   "fieldtype": "Table", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Users", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Daily Work Summary Group User", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "send_emails_at", 
+   "fieldtype": "Select", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Send Emails At", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "00:00\n01:00\n02:00\n03:00\n04:00\n05:00\n06:00\n07:00\n08:00\n09:00\n10:00\n11:00\n12:00\n13:00\n14:00\n15:00\n16:00\n17:00\n18:00\n19:00\n20:00\n21:00\n22:00\n23:00", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "holiday_list", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Holiday List", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Holiday List", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "fieldname": "mail_details", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Reminder", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "What did you work on today?", 
+   "fieldname": "subject", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Subject", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_bulk_edit": 0, 
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "columns": 0, 
+   "default": "<p>Please share what did you do today. If you reply by midnight, your response will be recorded!</p>", 
+   "fieldname": "message", 
+   "fieldtype": "Text Editor", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
+   "in_standard_filter": 0, 
+   "label": "Message", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "remember_last_selected_value": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "has_web_view": 0, 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "idx": 0, 
+ "image_view": 0, 
+ "in_create": 0, 
+ "is_submittable": 0, 
+ "issingle": 0, 
+ "istable": 0, 
+ "max_attachments": 0, 
+ "modified": "2018-02-16 10:56:03.998495", 
+ "modified_by": "Administrator", 
+ "module": "HR", 
+ "name": "Daily Work Summary Group", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "HR Manager", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }
+ ], 
+ "quick_entry": 1, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "show_name_in_global_search": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_changes": 0, 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary_group/daily_work_summary_group.py b/erpnext/hr/doctype/daily_work_summary_group/daily_work_summary_group.py
new file mode 100644
index 0000000..a549a9b
--- /dev/null
+++ b/erpnext/hr/doctype/daily_work_summary_group/daily_work_summary_group.py
@@ -0,0 +1,58 @@
+# # -*- coding: utf-8 -*-
+# # Copyright (c) 2015, 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
+import frappe.utils
+from frappe import _
+
+
+class DailyWorkSummaryGroup(Document):
+	def validate(self):
+		if self.users:
+			if not frappe.flags.in_test and not is_incoming_account_enabled():
+				frappe.throw(_('Please enable default incoming account before creating Daily Work Summary Group'))
+
+
+def trigger_emails():
+	'''Send emails to Employees at the given hour asking
+			them what did they work on today'''
+	groups = frappe.get_all("Daily Work Summary Group")
+	for d in groups:
+		group_doc = frappe.get_doc("Daily Work Summary Group", d)
+		if (is_current_hour(group_doc.send_emails_at)
+			and not is_holiday_today(group_doc.holiday_list)
+			and group_doc.enabled):
+			emails = [d.email for d in group_doc.users]
+			# find emails relating to a company
+			if emails:
+				daily_work_summary = frappe.get_doc(
+					dict(doctype='Daily Work Summary', daily_work_summary_group=group_doc.name)
+				).insert()
+				daily_work_summary.send_mails(group_doc, emails)
+
+
+def is_current_hour(hour):
+	return frappe.utils.nowtime().split(':')[0] == hour.split(':')[0]
+
+
+def is_holiday_today(holiday_list):
+	date = frappe.utils.today()
+	if holiday_list:
+		return frappe.get_all('Holiday List',
+			dict(name=holiday_list, holiday_date=date)) and True or False
+	else:
+		return False
+
+
+def send_summary():
+	'''Send summary to everyone'''
+	for d in frappe.get_all('Daily Work Summary', dict(status='Open')):
+		daily_work_summary = frappe.get_doc('Daily Work Summary', d.name)
+		daily_work_summary.send_summary()
+
+
+def is_incoming_account_enabled():
+	return frappe.db.get_value('Email Account', dict(enable_incoming=1, default_incoming=1))
diff --git a/erpnext/hr/doctype/daily_work_summary_settings/__init__.py b/erpnext/hr/doctype/daily_work_summary_group_user/__init__.py
similarity index 100%
copy from erpnext/hr/doctype/daily_work_summary_settings/__init__.py
copy to erpnext/hr/doctype/daily_work_summary_group_user/__init__.py
diff --git a/erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.json b/erpnext/hr/doctype/daily_work_summary_group_user/daily_work_summary_group_user.json
similarity index 73%
rename from erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.json
rename to erpnext/hr/doctype/daily_work_summary_group_user/daily_work_summary_group_user.json
index be27fa3..c3edad6 100644
--- a/erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.json
+++ b/erpnext/hr/doctype/daily_work_summary_group_user/daily_work_summary_group_user.json
@@ -1,9 +1,10 @@
 {
  "allow_copy": 0, 
+ "allow_guest_to_view": 0, 
  "allow_import": 0, 
  "allow_rename": 0, 
  "beta": 0, 
- "creation": "2016-11-08 05:44:02.502527", 
+ "creation": "2018-02-12 14:57:38.332692", 
  "custom": 0, 
  "docstatus": 0, 
  "doctype": "DocType", 
@@ -12,22 +13,24 @@
  "engine": "InnoDB", 
  "fields": [
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "fieldname": "company", 
+   "fieldname": "user", 
    "fieldtype": "Link", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
+   "in_global_search": 0, 
    "in_list_view": 1, 
    "in_standard_filter": 0, 
-   "label": "Company", 
+   "label": "User", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Company", 
+   "options": "User", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -35,29 +38,30 @@
    "read_only": 0, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 1, 
+   "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
   }, 
   {
+   "allow_bulk_edit": 0, 
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "default": "17:00", 
-   "fieldname": "send_emails_at", 
-   "fieldtype": "Select", 
+   "fieldname": "email", 
+   "fieldtype": "Read Only", 
    "hidden": 0, 
    "ignore_user_permissions": 0, 
    "ignore_xss_filter": 0, 
    "in_filter": 0, 
-   "in_list_view": 1, 
+   "in_global_search": 0, 
+   "in_list_view": 0, 
    "in_standard_filter": 0, 
-   "label": "Send Emails At", 
+   "label": "email", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "00:00\n01:00\n02:00\n03:00\n04:00\n05:00\n06:00\n07:00\n08:00\n09:00\n10:00\n11:00\n12:00\n13:00\n14:00\n15:00\n16:00\n17:00\n18:00\n19:00\n20:00\n21:00\n22:00\n23:00", 
+   "options": "user.email", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -65,33 +69,35 @@
    "read_only": 0, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
-   "reqd": 1, 
+   "reqd": 0, 
    "search_index": 0, 
    "set_only_once": 0, 
    "unique": 0
   }
  ], 
+ "has_web_view": 0, 
  "hide_heading": 0, 
  "hide_toolbar": 0, 
  "idx": 0, 
  "image_view": 0, 
  "in_create": 0, 
- "in_dialog": 0, 
  "is_submittable": 0, 
  "issingle": 0, 
  "istable": 1, 
  "max_attachments": 0, 
- "modified": "2016-11-08 05:46:09.198788", 
+ "modified": "2018-02-12 15:57:01.332287", 
  "modified_by": "Administrator", 
  "module": "HR", 
- "name": "Daily Work Summary Settings Company", 
+ "name": "Daily Work Summary Group User", 
  "name_case": "", 
  "owner": "Administrator", 
  "permissions": [], 
  "quick_entry": 1, 
  "read_only": 0, 
  "read_only_onload": 0, 
+ "show_name_in_global_search": 0, 
  "sort_field": "modified", 
  "sort_order": "DESC", 
+ "track_changes": 1, 
  "track_seen": 0
 }
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.py b/erpnext/hr/doctype/daily_work_summary_group_user/daily_work_summary_group_user.py
similarity index 61%
rename from erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.py
rename to erpnext/hr/doctype/daily_work_summary_group_user/daily_work_summary_group_user.py
index cd051b4..eefcc0c 100644
--- a/erpnext/hr/doctype/daily_work_summary_settings_company/daily_work_summary_settings_company.py
+++ b/erpnext/hr/doctype/daily_work_summary_group_user/daily_work_summary_group_user.py
@@ -1,10 +1,10 @@
 # -*- coding: utf-8 -*-
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# Copyright (c) 2018, 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 DailyWorkSummarySettingsCompany(Document):
+class DailyWorkSummaryGroupUser(Document):
 	pass
diff --git a/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.js b/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.js
deleted file mode 100644
index f5c0a5c..0000000
--- a/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
-// For license information, please see license.txt
-
-frappe.ui.form.on('Daily Work Summary Settings', {
-	refresh: function(frm) {
-		frm.add_custom_button(__('Daily Work Summary'), function() {
-			frappe.set_route('List', 'Daily Work Summary');
-		});
-	}
-});
diff --git a/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.json b/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.json
deleted file mode 100644
index f52af39..0000000
--- a/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.json
+++ /dev/null
@@ -1,204 +0,0 @@
-{
- "allow_copy": 0, 
- "allow_import": 0, 
- "allow_rename": 0, 
- "beta": 0, 
- "creation": "2016-11-08 04:55:08.231715", 
- "custom": 0, 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Document", 
- "editable_grid": 1, 
- "engine": "InnoDB", 
- "fields": [
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "description": "Emails will be sent to all Active Employees of the company at the given hour, if they do not have holiday. Summary of responses will be sent at midnight.", 
-   "fieldname": "select_companies", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Select Companies", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "companies", 
-   "fieldtype": "Table", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Companies", 
-   "length": 0, 
-   "no_copy": 0, 
-   "options": "Daily Work Summary Settings Company", 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "fieldname": "message_section", 
-   "fieldtype": "Section Break", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Message", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "What did you work on today?", 
-   "fieldname": "subject", 
-   "fieldtype": "Data", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Subject", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }, 
-  {
-   "allow_on_submit": 0, 
-   "bold": 0, 
-   "collapsible": 0, 
-   "columns": 0, 
-   "default": "<p>Please share what did you do today. If you reply by midnight, your response will be recorded!</p>", 
-   "fieldname": "message", 
-   "fieldtype": "Text Editor", 
-   "hidden": 0, 
-   "ignore_user_permissions": 0, 
-   "ignore_xss_filter": 0, 
-   "in_filter": 0, 
-   "in_list_view": 0, 
-   "in_standard_filter": 0, 
-   "label": "Message", 
-   "length": 0, 
-   "no_copy": 0, 
-   "permlevel": 0, 
-   "precision": "", 
-   "print_hide": 0, 
-   "print_hide_if_no_value": 0, 
-   "read_only": 0, 
-   "remember_last_selected_value": 0, 
-   "report_hide": 0, 
-   "reqd": 0, 
-   "search_index": 0, 
-   "set_only_once": 0, 
-   "unique": 0
-  }
- ], 
- "hide_heading": 0, 
- "hide_toolbar": 0, 
- "idx": 0, 
- "image_view": 0, 
- "in_create": 0, 
- "in_dialog": 0, 
- "is_submittable": 0, 
- "issingle": 1, 
- "istable": 0, 
- "max_attachments": 0, 
- "modified": "2016-11-21 00:55:20.726328", 
- "modified_by": "Administrator", 
- "module": "HR", 
- "name": "Daily Work Summary Settings", 
- "name_case": "", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "is_custom": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 0, 
-   "role": "HR Manager", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
-  }
- ], 
- "quick_entry": 1, 
- "read_only": 0, 
- "read_only_onload": 0, 
- "sort_field": "modified", 
- "sort_order": "DESC", 
- "track_seen": 0
-}
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.py b/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.py
deleted file mode 100644
index aea4c35..0000000
--- a/erpnext/hr/doctype/daily_work_summary_settings/daily_work_summary_settings.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2015, 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
-import frappe.utils
-from frappe import _
-from erpnext.hr.doctype.daily_work_summary.daily_work_summary import get_employee_emails
-
-class DailyWorkSummarySettings(Document):
-	def validate(self):
-		if self.companies:
-			if not frappe.flags.in_test and not frappe.db.get_value('Email Account', dict(enable_incoming=1,
-				default_incoming=1)):
-				frappe.throw(_('There must be a default incoming Email Account enabled for this to work. Please setup a default incoming Email Account (POP/IMAP) and try again.'))
-
-def trigger_emails():
-	'''Send emails to Employees of the enabled companies at the give hour asking
-	them what did they work on today'''
-	settings = frappe.get_doc('Daily Work Summary Settings')
-	for d in settings.companies:
-		# if current hour
-		if frappe.utils.nowtime().split(':')[0] == d.send_emails_at.split(':')[0]:
-			emails = get_employee_emails(d.company)
-			# find emails relating to a company
-			if emails:
-				daily_work_summary = frappe.get_doc(dict(doctype='Daily Work Summary',
-					company=d.company)).insert()
-				daily_work_summary.send_mails(settings, emails)
-
-def send_summary():
-	'''Send summary to everyone'''
-	for d in frappe.get_all('Daily Work Summary', dict(status='Open')):
-		daily_work_summary = frappe.get_doc('Daily Work Summary', d.name)
-		daily_work_summary.send_summary()
\ No newline at end of file
diff --git a/erpnext/hr/doctype/daily_work_summary_settings_company/__init__.py b/erpnext/hr/doctype/daily_work_summary_settings_company/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/hr/doctype/daily_work_summary_settings_company/__init__.py
+++ /dev/null
diff --git a/erpnext/hr/page/team_updates/team_updates.js b/erpnext/hr/page/team_updates/team_updates.js
index d6dd1f4..da1f531 100644
--- a/erpnext/hr/page/team_updates/team_updates.js
+++ b/erpnext/hr/page/team_updates/team_updates.js
@@ -8,9 +8,9 @@
 	frappe.team_updates.make(page);
 	frappe.team_updates.run();
 
-	if(frappe.model.can_read('Daily Work Summary Settings')) {
-		page.add_menu_item(__('Daily Work Summary Settings'), function() {
-			frappe.set_route('Form', 'Daily Work Summary Settings');
+	if(frappe.model.can_read('Daily Work Summary Group')) {
+		page.add_menu_item(__('Daily Work Summary Group'), function() {
+			frappe.set_route('Form', 'Daily Work Summary Group');
 		});
 	}
 }
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 6b30422..331cd1e 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -501,3 +501,4 @@
 erpnext.patches.v10_0.update_translatable_fields
 erpnext.patches.v10_0.rename_offer_letter_to_job_offer
 execute:frappe.delete_doc('DocType', 'Production Planning Tool', ignore_missing=True)
+erpnext.patches.v10_0.migrate_daily_work_summary_settings_to_daily_work_summary_group
diff --git a/erpnext/patches/v10_0/migrate_daily_work_summary_settings_to_daily_work_summary_group.py b/erpnext/patches/v10_0/migrate_daily_work_summary_settings_to_daily_work_summary_group.py
new file mode 100644
index 0000000..207b96e
--- /dev/null
+++ b/erpnext/patches/v10_0/migrate_daily_work_summary_settings_to_daily_work_summary_group.py
@@ -0,0 +1,45 @@
+# Copyright (c) 2018, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+
+def execute():
+	# check if Daily Work Summary Settings Company table exists
+	try:
+		frappe.db.sql('DESC `tabDaily Work Summary Settings Company`')
+	except Exception:
+		return
+
+	# get the previously saved settings
+	previous_setting = get_previous_setting()
+	if previous_setting["companies"]:
+		for d in previous_setting["companies"]:
+			users = frappe.get_list("Employee", dict(
+				company=d.company, user_id=("!=", " ")), "user_id as user")
+			if(len(users)):
+				# create new group entry for each company entry
+				new_group = frappe.get_doc(dict(doctype="Daily Work Summary Group",
+					name="Daily Work Summary for " + d.company,
+					users=users,
+					send_emails_at=d.send_emails_at,
+					subject=previous_setting["subject"],
+					message=previous_setting["message"]))
+				new_group.insert(ignore_permissions=True)
+				new_group.save()
+	frappe.delete_doc("Daily Work Summary Settings")
+	frappe.delete_doc("Daily Work Summary Settings Company")
+
+def get_setting_companies():
+	return frappe.db.sql("select * from `tabDaily Work Summary Settings Company`", as_dict=True)
+
+
+def get_previous_setting():
+	obj = {}
+	setting_data = frappe.db.sql(
+		"select field, value from tabSingles where doctype='Daily Work Summary Settings'")
+	for field, value in setting_data:
+		obj[field] = value
+	obj["companies"] = get_setting_companies()
+	return obj
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index 81f909a..0c93be9 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -29,7 +29,7 @@
 
 def set_single_defaults():
 	for dt in ('Accounts Settings', 'Print Settings', 'HR Settings', 'Buying Settings',
-		'Selling Settings', 'Stock Settings', 'Daily Work Summary Settings'):
+		'Selling Settings', 'Stock Settings'):
 		default_values = frappe.db.sql("""select fieldname, `default` from `tabDocField`
 			where parent=%s""", dt)
 		if default_values:
