validate notification_email_ids in recurring invoice and if user is administrator set email id from profile
diff --git a/erpnext/accounts/doctype/gl_control/gl_control.py b/erpnext/accounts/doctype/gl_control/gl_control.py
index 78bfeec..5853132 100644
--- a/erpnext/accounts/doctype/gl_control/gl_control.py
+++ b/erpnext/accounts/doctype/gl_control/gl_control.py
@@ -553,6 +553,9 @@
 
 def assign_task_to_owner(inv, msg, users):
 	for d in users:
+		if d.lower() == 'administrator':
+			d = webnotes.conn.sql("select ifnull(email_id, '') \
+				from `tabProfile` where name = 'Administrator'")[0][0]
 		from webnotes.widgets.form import assign_to
 		args = {
 			'assign_to' 	:	d,
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index c69c5f8..4df061e 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -499,12 +499,9 @@
 }
 
 // Default values for recurring invoices
-cur_frm.cscript.convert_into_recurring_invoice = function(doc) {
-	if (doc.convert_into_recurring_invoice) {
-		doc.repeat_on_day_of_month = doc.posting_date.split('-')[2];
-		doc.notification_email_address = [doc.owner, doc.contact_email].join(', ');
-		refresh_field(['repeat_on_day_of_month', 'notification_email_address']);
-	}		
+cur_frm.cscript.convert_into_recurring_invoice = function(doc, dt, dn) {
+	if (doc.convert_into_recurring_invoice)
+		get_server_fields('set_default_recurring_values','','',doc, dt, dn, 0);
 }
 
 cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 82314ca..2d0a9f2 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -679,10 +679,31 @@
 		webnotes.conn.set(self.doc,'outstanding_amount',flt(self.doc.grand_total) - flt(self.doc.total_advance) - flt(self.doc.paid_amount) - flt(self.doc.write_off_amount))
 
 	#-------------------------------------------------------------------------------------
+
+	def set_default_recurring_values(self):
+		owner_email = self.doc.owner
+		if owner_email.lower() == 'administrator':
+			owner_email = webnotes.conn.sql("select ifnull(email, '') \
+				from `tabProfile` where name = 'Administrator'")[0][0]
+		ret = {
+			'repeat_on_day_of_month' : getdate(self.doc.posting_date).day,
+			'notification_email_address' : ', '.join([cstr(owner_email), self.doc.contact_email])
+		}
+		return ret
+		
+	def validate_notification_email_id(self):
+		from webnotes.utils import validate_email_add
+		email_ids = self.doc.notification_email_address.replace('\n', '').replace(' ', '').split(",")
+		for add in email_ids:
+			if add and not validate_email_add(add):
+				msgprint("%s is not a valid email address" % add, raise_exception=1)
+		
+		
 	def on_update_after_submit(self):
+		self.validate_notification_email_id()
 		self.convert_into_recurring()
 		
-
+		
 	def convert_into_recurring(self):
 		if self.doc.convert_into_recurring_invoice:
 			if not self.doc.recurring_type: