diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 5228b0e..73832ce 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -228,7 +228,7 @@
 	par_flds = ['project_name', 'due_date', 'is_opening', 'source', 'total_advance', 'gross_profit',
 	'gross_profit_percent', 'get_advances_received',
 	'advance_adjustment_details', 'sales_partner', 'commission_rate',
-	'total_commission', 'advances', 'period_from', 'period_to'];
+	'total_commission', 'advances', 'from_date', 'to_date'];
 
 	item_flds_normal = ['sales_order', 'delivery_note']
 
@@ -399,9 +399,9 @@
 	})
 }
 
-cur_frm.cscript.convert_into_recurring_invoice = function(doc, dt, dn) {
+cur_frm.cscript.is_recurring = function(doc, dt, dn) {
 	// set default values for recurring invoices
-	if(doc.convert_into_recurring_invoice) {
+	if(doc.is_recurring) {
 		var owner_email = doc.owner=="Administrator"
 			? frappe.user_info("Administrator").email
 			: doc.owner;
@@ -414,18 +414,18 @@
 	refresh_many(["notification_email_address", "repeat_on_day_of_month"]);
 }
 
-cur_frm.cscript.period_from = function(doc, dt, dn) {
-	// set period_to
-	if(doc.period_from) {
+cur_frm.cscript.from_date = function(doc, dt, dn) {
+	// set to_date
+	if(doc.from_date) {
 		var recurring_type_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6,
 			'Yearly': 12};
 
 		var months = recurring_type_map[doc.recurring_type];
 		if(months) {
-			var to_date = frappe.datetime.add_months(doc.period_from,
+			var to_date = frappe.datetime.add_months(doc.from_date,
 				months);
-			doc.period_to = frappe.datetime.add_days(to_date, -1);
-			refresh_field('period_to');
+			doc.to_date = frappe.datetime.add_days(to_date, -1);
+			refresh_field('to_date');
 		}
 	}
 }
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
index 7cab4c2..c26583b 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json
@@ -173,9 +173,9 @@
    "allow_on_submit": 1, 
    "depends_on": "", 
    "description": "Start date of current invoice's period", 
-   "fieldname": "period_from", 
+   "fieldname": "from_date", 
    "fieldtype": "Date", 
-   "label": "Invoice Period From", 
+   "label": "From", 
    "no_copy": 1, 
    "permlevel": 0, 
    "print_hide": 0, 
@@ -185,9 +185,9 @@
    "allow_on_submit": 1, 
    "depends_on": "", 
    "description": "End date of current invoice's period", 
-   "fieldname": "period_to", 
+   "fieldname": "to_date", 
    "fieldtype": "Date", 
-   "label": "Invoice Period To", 
+   "label": "To", 
    "no_copy": 1, 
    "permlevel": 0, 
    "print_hide": 0, 
@@ -1088,9 +1088,9 @@
    "allow_on_submit": 1, 
    "depends_on": "eval:doc.docstatus<2", 
    "description": "Check if recurring invoice, uncheck to stop recurring or put proper End Date", 
-   "fieldname": "convert_into_recurring", 
+   "fieldname": "is_recurring", 
    "fieldtype": "Check", 
-   "label": "Convert into Recurring Invoice", 
+   "label": "Is Recurring", 
    "no_copy": 1, 
    "permlevel": 0, 
    "print_hide": 1, 
@@ -1098,7 +1098,7 @@
   }, 
   {
    "allow_on_submit": 1, 
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "Select the period when the invoice will be generated automatically", 
    "fieldname": "recurring_type", 
    "fieldtype": "Select", 
@@ -1111,7 +1111,7 @@
   }, 
   {
    "allow_on_submit": 1, 
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "The day of the month on which auto invoice will be generated e.g. 05, 28 etc ", 
    "fieldname": "repeat_on_day_of_month", 
    "fieldtype": "Int", 
@@ -1122,7 +1122,7 @@
    "read_only": 0
   }, 
   {
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "The date on which next invoice will be generated. It is generated on submit.\n", 
    "fieldname": "next_date", 
    "fieldtype": "Date", 
@@ -1134,7 +1134,7 @@
   }, 
   {
    "allow_on_submit": 1, 
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "The date on which recurring invoice will be stop", 
    "fieldname": "end_date", 
    "fieldtype": "Date", 
@@ -1154,7 +1154,7 @@
    "width": "50%"
   }, 
   {
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "The unique id for tracking all recurring invoices.\u00a0It is generated on submit.", 
    "fieldname": "recurring_id", 
    "fieldtype": "Data", 
@@ -1166,7 +1166,7 @@
   }, 
   {
    "allow_on_submit": 1, 
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "Enter email id separated by commas, invoice will be mailed automatically on particular date", 
    "fieldname": "notification_email_address", 
    "fieldtype": "Small Text", 
@@ -1193,7 +1193,7 @@
  "icon": "icon-file-text", 
  "idx": 1, 
  "is_submittable": 1, 
- "modified": "2014-08-25 17:41:35.367233", 
+ "modified": "2014-08-28 11:21:00.726344", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Sales Invoice", 
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index fc72562..a20d906 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -14,7 +14,7 @@
 from erpnext.controllers.stock_controller import update_gl_entries_after
 from frappe.model.mapper import get_mapped_doc
 
-month_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6, 'Yearly': 12}
+from erpnext.controllers.recurring_document import *
 
 from erpnext.controllers.selling_controller import SellingController
 
@@ -75,7 +75,7 @@
 		self.set_against_income_account()
 		self.validate_c_form()
 		self.validate_time_logs_are_submitted()
-		self.validate_recurring_document()
+		validate_recurring_document(self)
 		self.validate_multiple_billing("Delivery Note", "dn_detail", "amount",
 			"delivery_note_details")
 
@@ -103,7 +103,7 @@
 
 		self.update_c_form()
 		self.update_time_log_batch(self.name)
-		self.convert_to_recurring("RECINV.#####", self.posting_date)
+		convert_to_recurring(self, "RECINV.#####", self.posting_date)
 
 	def before_cancel(self):
 		self.update_time_log_batch(None)
@@ -144,8 +144,8 @@
 			})
 
 	def on_update_after_submit(self):
-		self.validate_recurring_document()
-		self.convert_to_recurring("RECINV.#####", self.posting_date)
+		validate_recurring_document(self)
+		convert_to_recurring(self, "RECINV.#####", self.posting_date)
 
 	def get_portal_page(self):
 		return "invoice" if self.docstatus==1 else None
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 4a23673..4af9f5e 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -430,30 +430,6 @@
 
 		return stock_items
 
-	def validate_recurring_document(self):
-		if self.convert_into_recurring:
-			self.validate_notification_email_id()
-
-			if not self.recurring_type:
-				msgprint(_("Please select {0}").format(self.meta.get_label("recurring_type")),
-				raise_exception=1)
-
-			elif not (self.period_from and self.period_to):
-				throw(_("Period From and Period To dates mandatory for recurring %s") % self.doctype)
-
-	def convert_to_recurring(self, autoname, posting_date):
-		if self.convert_into_recurring:
-			if not self.recurring_id:
-				frappe.db.set(self, "recurring_id",
-					make_autoname(autoname))
-
-			self.set_next_date(posting_date)
-
-		elif self.recurring_id:
-			frappe.db.sql("""update `tab%s`
-				set convert_into_recurring = 0
-				where recurring_id = %s""" % (self.doctype, '%s'), (self.recurring_id))
-
 	@property
 	def company_abbr(self):
 		if not hasattr(self, "_abbr"):
@@ -470,36 +446,6 @@
 		if total_outstanding:
 			frappe.get_doc('Account', account).check_credit_limit(total_outstanding)
 
-	def validate_notification_email_id(self):
-		if self.notification_email_address:
-			email_list = filter(None, [cstr(email).strip() for email in
-				self.notification_email_address.replace("\n", "").split(",")])
-
-			from frappe.utils import validate_email_add
-			for email in email_list:
-				if not validate_email_add(email):
-					throw(_("{0} is an invalid email address in 'Notification \
-						Email Address'").format(email))
-
-		else:
-			frappe.throw(_("'Notification Email Addresses' not specified for recurring %s") \
-				% self.doctype)
-
-	def set_next_date(self, posting_date):
-		""" Set next date on which recurring document will be created"""
-		from erpnext.controllers.recurring_document import get_next_date
-
-		month_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6, 'Yearly': 12}
-
-		if not self.repeat_on_day_of_month:
-			msgprint(_("Please enter 'Repeat on Day of Month' field value"), raise_exception=1)
-
-		next_date = get_next_date(posting_date, month_map[self.recurring_type], 
-			cint(self.repeat_on_day_of_month))
-
-		frappe.db.set(self, 'next_date', next_date)
-
-
 @frappe.whitelist()
 def get_tax_rate(account_head):
 	return frappe.db.get_value("Account", account_head, "tax_rate")
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index d3c7809..d932679 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -13,6 +13,10 @@
 
 month_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6, 'Yearly': 12}
 
+def create_recurring_documents():
+	manage_recurring_documents("Sales Order")
+	manage_recurring_documents("Sales Invoice")
+
 def manage_recurring_documents(doctype, next_date=None, commit=True):
 	"""
 		Create recurring documents on specific date by copying the original one
@@ -26,9 +30,9 @@
 		date_field = "posting_date"
 
 	recurring_documents = frappe.db.sql("""select name, recurring_id
-		from `tab%s` where ifnull(convert_into_recurring, 0)=1
-		and docstatus=1 and next_date=%s
-		and next_date <= ifnull(end_date, '2199-12-31')""" % (doctype, '%s'), (next_date))
+		from `tab{}` where ifnull(is_recurring, 0)=1
+		and docstatus=1 and next_date='{}'
+		and next_date <= ifnull(end_date, '2199-12-31')""".format(doctype, next_date))
 
 	exception_list = []
 	for ref_document, recurring_id in recurring_documents:
@@ -47,7 +51,7 @@
 
 					frappe.db.begin()
 					frappe.db.sql("update `tab%s` \
-						set convert_into_recurring = 0 where name = %s" % (doctype, '%s'), 
+						set is_recurring = 0 where name = %s" % (doctype, '%s'), 
 						(ref_document))
 					notify_errors(ref_document, doctype, ref_wrapper.customer, ref_wrapper.owner)
 					frappe.db.commit()
@@ -66,23 +70,23 @@
 	new_document = frappe.copy_doc(ref_wrapper)
 	mcount = month_map[ref_wrapper.recurring_type]
 
-	period_from = get_next_date(ref_wrapper.period_from, mcount)
+	from_date = get_next_date(ref_wrapper.from_date, mcount)
 
 	# get last day of the month to maintain period if the from date is first day of its own month
 	# and to date is the last day of its own month
-	if (cstr(get_first_day(ref_wrapper.period_from)) == \
-			cstr(ref_wrapper.period_from)) and \
-		(cstr(get_last_day(ref_wrapper.period_to)) == \
-			cstr(ref_wrapper.period_to)):
-		period_to = get_last_day(get_next_date(ref_wrapper.period_to,
+	if (cstr(get_first_day(ref_wrapper.from_date)) == \
+			cstr(ref_wrapper.from_date)) and \
+		(cstr(get_last_day(ref_wrapper.to_date)) == \
+			cstr(ref_wrapper.to_date)):
+		to_date = get_last_day(get_next_date(ref_wrapper.to_date,
 			mcount))
 	else:
-		period_to = get_next_date(ref_wrapper.period_to, mcount)
+		to_date = get_next_date(ref_wrapper.to_date, mcount)
 
 	new_document.update({
 		date_field: posting_date,
-		"period_from": period_from,
-		"period_to": period_to,
+		"from_date": from_date,
+		"to_date": to_date,
 		"fiscal_year": get_fiscal_year(posting_date)[0],
 		"owner": ref_wrapper.owner,
 	})
@@ -112,7 +116,7 @@
 		message = _("Please find attached {0} #{1}").format(new_rv.doctype, new_rv.name),
 		attachments = [{
 			"fname": new_rv.name + ".pdf",
-			"fcontent": frappe.get_print_format(new_rv.doctype, new_rv.name, as_pdf=True)
+			"fcontent": frappe.get_print_format(new_rv.doctype, new_rv.name, as_pdf=True).encode('utf-8')
 		}])
 
 def notify_errors(doc, doctype, customer, owner):
@@ -121,7 +125,7 @@
 
 	frappe.sendmail(recipients + [frappe.db.get_value("User", owner, "email")],
 		subject="[Urgent] Error while creating recurring %s for %s" % (doctype, doc),
-		message = frappe.get_template("templates/emails/recurring_sales_invoice_failed.html").render({
+		message = frappe.get_template("templates/emails/recurring_document_failed.html").render({
 			"type": doctype,
 			"name": doc,
 			"customer": customer
@@ -139,4 +143,55 @@
 			'description'	:	msg,
 			'priority'		:	'High'
 		}
-		assign_to.add(args)
\ No newline at end of file
+		assign_to.add(args)
+
+def validate_recurring_document(doc):
+	if doc.is_recurring:
+		validate_notification_email_id(doc)
+
+		if not doc.recurring_type:
+			msgprint(_("Please select {0}").format(doc.meta.get_label("recurring_type")),
+			raise_exception=1)
+
+		elif not (doc.from_date and doc.to_date):
+			throw(_("Period From and Period To dates mandatory for recurring %s") % doc.doctype)
+
+def convert_to_recurring(doc, autoname, posting_date):
+	if doc.is_recurring:
+		if not doc.recurring_id:
+			frappe.db.set(doc, "recurring_id",
+				make_autoname(autoname))
+
+		set_next_date(doc, posting_date)
+
+	elif doc.recurring_id:
+		frappe.db.sql("""update `tab%s`
+			set is_recurring = 0
+			where recurring_id = %s""" % (doc.doctype, '%s'), (doc.recurring_id))
+
+def validate_notification_email_id(doc):
+	if doc.notification_email_address:
+		email_list = filter(None, [cstr(email).strip() for email in
+			doc.notification_email_address.replace("\n", "").split(",")])
+
+		from frappe.utils import validate_email_add
+		for email in email_list:
+			if not validate_email_add(email):
+				throw(_("{0} is an invalid email address in 'Notification \
+					Email Address'").format(email))
+
+	else:
+		frappe.throw(_("'Notification Email Addresses' not specified for recurring %s") \
+			% doc.doctype)
+
+def set_next_date(doc, posting_date):
+	""" Set next date on which recurring document will be created"""
+	from erpnext.controllers.recurring_document import get_next_date
+
+	if not doc.repeat_on_day_of_month:
+		msgprint(_("Please enter 'Repeat on Day of Month' field value"), raise_exception=1)
+
+	next_date = get_next_date(posting_date, month_map[doc.recurring_type], 
+		cint(doc.repeat_on_day_of_month))
+
+	frappe.db.set(doc, 'next_date', next_date)
\ No newline at end of file
diff --git a/erpnext/controllers/tests/test_recurring_document.py b/erpnext/controllers/tests/test_recurring_document.py
index d31f632..5332ae0 100644
--- a/erpnext/controllers/tests/test_recurring_document.py
+++ b/erpnext/controllers/tests/test_recurring_document.py
@@ -16,14 +16,14 @@
 	base_doc = frappe.copy_doc(test_records[0])
 
 	base_doc.update({
-		"convert_into_recurring": 1,
+		"is_recurring": 1,
 		"recurring_type": "Monthly",
 		"notification_email_address": "test@example.com, test1@example.com, test2@example.com",
 		"repeat_on_day_of_month": getdate(today).day,
 		"due_date": None,
 		"fiscal_year": get_fiscal_year(today)[0],
-		"period_from": get_first_day(today),
-		"period_to": get_last_day(today)
+		"from_date": get_first_day(today),
+		"to_date": get_last_day(today)
 	})
 
 	if base_doc.doctype == "Sales Order":
@@ -50,8 +50,8 @@
 	# monthly without a first and last day period
 	doc2 = frappe.copy_doc(base_doc)
 	doc2.update({
-		"period_from": today,
-		"period_to": add_to_date(today, days=30)
+		"from_date": today,
+		"to_date": add_to_date(today, days=30)
 	})
 	doc2.insert()
 	doc2.submit()
@@ -61,8 +61,8 @@
 	doc3 = frappe.copy_doc(base_doc)
 	doc3.update({
 		"recurring_type": "Quarterly",
-		"period_from": get_first_day(today),
-		"period_to": get_last_day(add_to_date(today, months=3))
+		"from_date": get_first_day(today),
+		"to_date": get_last_day(add_to_date(today, months=3))
 	})
 	doc3.insert()
 	doc3.submit()
@@ -72,8 +72,8 @@
 	doc4 = frappe.copy_doc(base_doc)
 	doc4.update({
 		"recurring_type": "Quarterly",
-		"period_from": today,
-		"period_to": add_to_date(today, months=3)
+		"from_date": today,
+		"to_date": add_to_date(today, months=3)
 	})
 	doc4.insert()
 	doc4.submit()
@@ -83,8 +83,8 @@
 	doc5 = frappe.copy_doc(base_doc)
 	doc5.update({
 		"recurring_type": "Yearly",
-		"period_from": get_first_day(today),
-		"period_to": get_last_day(add_to_date(today, years=1))
+		"from_date": get_first_day(today),
+		"to_date": get_last_day(add_to_date(today, years=1))
 	})
 	doc5.insert()
 	doc5.submit()
@@ -94,8 +94,8 @@
 	doc6 = frappe.copy_doc(base_doc)
 	doc6.update({
 		"recurring_type": "Yearly",
-		"period_from": today,
-		"period_to": add_to_date(today, years=1)
+		"from_date": today,
+		"to_date": add_to_date(today, years=1)
 	})
 	doc6.insert()
 	doc6.submit()
@@ -138,23 +138,23 @@
 
 		new_doc = frappe.get_doc(base_doc.doctype, recurred_documents[0][0])
 
-		for fieldname in ["convert_into_recurring", "recurring_type",
+		for fieldname in ["is_recurring", "recurring_type",
 			"repeat_on_day_of_month", "notification_email_address"]:
 				obj.assertEquals(base_doc.get(fieldname),
 					new_doc.get(fieldname))
 
 		obj.assertEquals(new_doc.get(date_field), unicode(next_date))
 
-		obj.assertEquals(new_doc.period_from,
-			unicode(add_months(base_doc.period_from, no_of_months)))
+		obj.assertEquals(new_doc.from_date,
+			unicode(add_months(base_doc.from_date, no_of_months)))
 
 		if first_and_last_day:
-			obj.assertEquals(new_doc.period_to,
-				unicode(get_last_day(add_months(base_doc.period_to,
+			obj.assertEquals(new_doc.to_date,
+				unicode(get_last_day(add_months(base_doc.to_date,
 					no_of_months))))
 		else:
-			obj.assertEquals(new_doc.period_to,
-				unicode(add_months(base_doc.period_to, no_of_months)))
+			obj.assertEquals(new_doc.to_date,
+				unicode(add_months(base_doc.to_date, no_of_months)))
 
 
 		return new_doc
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 5466f2a..b9e8451 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -64,7 +64,7 @@
 		"erpnext.selling.doctype.lead.get_leads.get_leads"
 	],
 	"daily": [
-		"erpnext.controllers.recurring_document.manage_recurring_documents"
+		"erpnext.controllers.recurring_document.create_recurring_documents"
 		"erpnext.stock.utils.reorder_item",
 		"erpnext.setup.doctype.email_digest.email_digest.send",
 		"erpnext.support.doctype.support_ticket.support_ticket.auto_close_tickets"
diff --git a/erpnext/patches/v4_2/update_sales_order_invoice_field_name.py b/erpnext/patches/v4_2/update_sales_order_invoice_field_name.py
index 1ae3eb0..a8303a0 100644
--- a/erpnext/patches/v4_2/update_sales_order_invoice_field_name.py
+++ b/erpnext/patches/v4_2/update_sales_order_invoice_field_name.py
@@ -1,6 +1,6 @@
 import frappe
 
 def execute():
-	frappe.reload_doc('selling', 'doctype', 'sales_order')
-	frappe.db.sql("""update `tabSales Invoice` set period_from = order_period_from,
-		period_to = order_period_to, convert_into_recurring = convert_into_recurring_order""")
+	frappe.reload_doc('accounts', 'doctype', 'sales_invoice')
+	frappe.db.sql("""update `tabSales Invoice` set from_date = invoice_period_from_date,
+		to_date = invoice_period_to_date, is_recurring = convert_into_recurring_invoice""")
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 628e43e..4797230 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -195,6 +195,37 @@
 	}
 };
 
+cur_frm.cscript.is_recurring = function(doc, dt, dn) {
+	// set default values for recurring orders
+	if(doc.is_recurring) {
+		var owner_email = doc.owner=="Administrator"
+			? frappe.user_info("Administrator").email
+			: doc.owner;
+
+		doc.notification_email_address = $.map([cstr(owner_email),
+			cstr(doc.contact_email)], function(v) { return v || null; }).join(", ");
+		doc.repeat_on_day_of_month = frappe.datetime.str_to_obj(doc.posting_date).getDate();
+	}
+
+	refresh_many(["notification_email_address", "repeat_on_day_of_month"]);
+}
+
+cur_frm.cscript.from_date = function(doc, dt, dn) {
+	// set to_date
+	if(doc.from_date) {
+		var recurring_type_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6,
+			'Yearly': 12};
+
+		var months = recurring_type_map[doc.recurring_type];
+		if(months) {
+			var to_date = frappe.datetime.add_months(doc.from_date,
+				months);
+			doc.to_date = frappe.datetime.add_days(to_date, -1);
+			refresh_field('to_date');
+		}
+	}
+}
+
 cur_frm.cscript.send_sms = function() {
 	frappe.require("assets/erpnext/js/sms_manager.js");
 	var sms_man = new SMSManager(cur_frm.doc);
diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json
index e418ee9..a4b00ff 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.json
+++ b/erpnext/selling/doctype/sales_order/sales_order.json
@@ -173,18 +173,18 @@
   {
    "allow_on_submit": 1, 
    "description": "Start date of current order's period", 
-   "fieldname": "period_from", 
+   "fieldname": "from_date", 
    "fieldtype": "Date", 
-   "label": "Order Period From", 
+   "label": "From", 
    "no_copy": 1, 
    "permlevel": 0
   }, 
   {
    "allow_on_submit": 1, 
    "description": "End date of current order's period", 
-   "fieldname": "period_to", 
+   "fieldname": "to_date", 
    "fieldtype": "Date", 
-   "label": "Order Period To", 
+   "label": "To", 
    "no_copy": 1, 
    "permlevel": 0
   }, 
@@ -925,16 +925,16 @@
    "allow_on_submit": 1, 
    "depends_on": "eval:doc.docstatus<2", 
    "description": "Check if recurring order, uncheck to stop recurring or put proper End Date", 
-   "fieldname": "convert_into_recurring", 
+   "fieldname": "is_recurring", 
    "fieldtype": "Check", 
-   "label": "Convert into Recurring Order", 
+   "label": "Is Recurring", 
    "no_copy": 1, 
    "permlevel": 0, 
    "print_hide": 1
   }, 
   {
    "allow_on_submit": 1, 
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "Select the period when the invoice will be generated automatically", 
    "fieldname": "recurring_type", 
    "fieldtype": "Select", 
@@ -946,7 +946,7 @@
   }, 
   {
    "allow_on_submit": 1, 
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "The day of the month on which auto order will be generated e.g. 05, 28 etc ", 
    "fieldname": "repeat_on_day_of_month", 
    "fieldtype": "Int", 
@@ -956,7 +956,7 @@
    "print_hide": 1
   }, 
   {
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "The date on which next invoice will be generated. It is generated on submit.", 
    "fieldname": "next_date", 
    "fieldtype": "Date", 
@@ -968,7 +968,7 @@
   }, 
   {
    "allow_on_submit": 1, 
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "The date on which recurring order will be stop", 
    "fieldname": "end_date", 
    "fieldtype": "Date", 
@@ -985,7 +985,7 @@
    "print_hide": 1
   }, 
   {
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "fieldname": "recurring_id", 
    "fieldtype": "Data", 
    "label": "Recurring Id", 
@@ -996,7 +996,7 @@
   }, 
   {
    "allow_on_submit": 1, 
-   "depends_on": "eval:doc.convert_into_recurring==1", 
+   "depends_on": "eval:doc.is_recurring==1", 
    "description": "Enter email id separated by commas, order will be mailed automatically on particular date", 
    "fieldname": "notification_email_address", 
    "fieldtype": "Small Text", 
@@ -1021,7 +1021,7 @@
  "idx": 1, 
  "is_submittable": 1, 
  "issingle": 0, 
- "modified": "2014-08-25 17:41:39.456399", 
+ "modified": "2014-08-28 11:22:10.959416", 
  "modified_by": "Administrator", 
  "module": "Selling", 
  "name": "Sales Order", 
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 37aca0a..ff14f9d 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -10,6 +10,8 @@
 from frappe import _
 from frappe.model.mapper import get_mapped_doc
 
+from erpnext.controllers.recurring_document import convert_to_recurring, validate_recurring_document
+
 from erpnext.controllers.selling_controller import SellingController
 
 form_grid_templates = {
@@ -120,7 +122,7 @@
 		if not self.billing_status: self.billing_status = 'Not Billed'
 		if not self.delivery_status: self.delivery_status = 'Not Delivered'
 
-		self.validate_recurring_document()
+		validate_recurring_document(self)
 
 	def validate_warehouse(self):
 		from erpnext.stock.utils import validate_warehouse_company
@@ -164,7 +166,7 @@
 		self.update_prevdoc_status('submit')
 		frappe.db.set(self, 'status', 'Submitted')
 		
-		self.convert_to_recurring("SO/REC/.#####", self.transaction_date)
+		convert_to_recurring(self, "SO/REC/.#####", self.transaction_date)
 
 	def on_cancel(self):
 		# Cannot cancel stopped SO
@@ -254,8 +256,8 @@
 		return "order" if self.docstatus==1 else None
 
 	def on_update_after_submit(self):
-		self.validate_recurring_document()
-		self.convert_to_recurring("SO/REC/.#####", self.transaction_date)
+		validate_recurring_document(self)
+		convert_to_recurring(self, "SO/REC/.#####", self.transaction_date)
 
 
 @frappe.whitelist()
