diff --git a/erpnext/patches/april_2012/naming_series_patch.py b/erpnext/patches/april_2012/naming_series_patch.py
new file mode 100644
index 0000000..574d036
--- /dev/null
+++ b/erpnext/patches/april_2012/naming_series_patch.py
@@ -0,0 +1,12 @@
+def execute():
+	import webnotes
+	from webnotes.model.code import get_obj
+	ns_list = webnotes.conn.sql("""\
+		SELECT `tabDocField`.`parent`, `tabDocField`.`options`
+		FROM `tabDocField`, `tabDocType`
+		WHERE `tabDocField`.`fieldname` = 'naming_series'
+		AND `tabDocType`.name=`tabDocField`.parent""")
+	ns_obj = get_obj('Naming Series')
+	for ns in ns_list:
+		if ns[0] and isinstance(ns[1], basestring):			
+			ns_obj.set_series_for(ns[0], ns[1].split("\n"))
diff --git a/erpnext/patches/mar_2012/doctype_get_refactor.py b/erpnext/patches/mar_2012/doctype_get_refactor.py
index 1c84044..fb8c65a 100644
--- a/erpnext/patches/mar_2012/doctype_get_refactor.py
+++ b/erpnext/patches/mar_2012/doctype_get_refactor.py
@@ -8,10 +8,11 @@
 		* Remove 'no_column' from DocField
 		* Drop table DocFormat
 	"""
+	change_property_setter_fieldnames()
+	
 	import webnotes.model.sync
 	webnotes.model.sync.sync_all(force=1)
 	
-	change_property_setter_fieldnames()
 	handle_custom_fields()
 	create_file_list()
 
@@ -19,6 +20,8 @@
 	change_to_decimal()
 
 def change_property_setter_fieldnames():
+	import webnotes.model.sync
+	webnotes.model.sync.sync('core', 'property_setter')
 	docfield_list = webnotes.conn.sql("""\
 		SELECT name, fieldname FROM `tabDocField`""", as_list=1)
 	custom_field_list = webnotes.conn.sql("""\
@@ -94,22 +97,23 @@
 			WHERE name = %s""", (similar_idx_label[0], f.get('name')))
 
 		prev_field = field_list[label_index]
-		webnotes.conn.sql("""\
-			DELETE FROM `tabProperty Setter`
+		res = webnotes.conn.sql("""\
+			SELECT name FROM `tabProperty Setter`
 			WHERE doc_type = %s
 			AND field_name = %s
 			AND property = 'previous_field'""", (f.get('dt'), f.get('fieldname')))
 
-		ps = Document('Property Setter', fielddata = {
-			'doctype_or_field': 'DocField',
-			'doc_type': f.get('dt'),
-			'field_name': f.get('fieldname'),
-			'property': 'previous_field',
-			'value': prev_field,
-			'property_type': 'Data',
-			'select_doctype': f.get('dt')
-		})
-		ps.save(1)
+		if not res:
+			ps = Document('Property Setter', fielddata = {
+				'doctype_or_field': 'DocField',
+				'doc_type': f.get('dt'),
+				'field_name': f.get('fieldname'),
+				'property': 'previous_field',
+				'value': prev_field,
+				'property_type': 'Data',
+				'select_doctype': f.get('dt')
+			})
+			ps.save(1)
 
 def remove_custom_from_docfield(cf):
 	for f in cf:
diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py
index 1dfd0b5..94164f0 100644
--- a/erpnext/patches/patch_list.py
+++ b/erpnext/patches/patch_list.py
@@ -262,4 +262,9 @@
 		'patch_file': 'reload_c_form',
 		'description': 'Added attchemnt option and total field'
 	},
+	{
+		'patch_module': 'patches.april_2012',
+		'patch_file': 'naming_series_patch',
+		'description': 'Move naming series options into property setter'
+	},
 ]
diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/erpnext/setup/doctype/naming_series/naming_series.py
index 3b820b8..5a9a265 100644
--- a/erpnext/setup/doctype/naming_series/naming_series.py
+++ b/erpnext/setup/doctype/naming_series/naming_series.py
@@ -34,14 +34,6 @@
 	def get_transactions(self):
 		return "\n".join([''] + [i[0] for i in sql("SELECT `tabDocField`.`parent` FROM `tabDocField`, `tabDocType` WHERE `tabDocField`.`fieldname` = 'naming_series' and `tabDocType`.name=`tabDocField`.parent order by `tabDocField`.parent")])
 	
-	#-----------------------------------------------------------------------------------------------------------------------------------
-	def get_options_for(self, doctype):
-		sr = webnotes.model.doctype.get_property(doctype, 'naming_series')
-		if sr:
-			return sr.split("\n")
-		else:
-			return []
-	
 	def scrub_options_list(self, ol):
 		options = filter(lambda x: x, [cstr(n.upper()).strip() for n in ol])
 		return options
@@ -60,6 +52,7 @@
 			default = options[0]
 		
 		# update in property setter
+		from webnotes.model.doc import Document
 		prop_dict = {'options': "\n".join(options), 'default': default}
 		for prop in prop_dict:
 			ps_exists = webnotes.conn.sql("""SELECT name FROM `tabProperty Setter`
@@ -82,6 +75,9 @@
 				ps.save(1)
 
 		self.doc.set_options = "\n".join(options)
+
+		from webnotes.utils.cache import CacheItem
+		CacheItem(doctype).clear()
 	
 	#-----------------------------------------------------------------------------------------------------------------------------------
 	def update_series(self):
@@ -95,7 +91,7 @@
 		dt = DocType()
 	
 		parent = sql("select parent from `tabDocField` where fieldname='naming_series' and parent != %s", self.doc.select_doc_for_series)
-		sr = ([p[0], webnotes.model.doctype.get_property(p[0], 'naming_series')] for p in parent)
+		sr = ([webnotes.model.doctype.get_property(p[0], 'options', 'naming_series'), p[0]] for p in parent)
 		options = self.scrub_options_list(self.doc.set_options.split("\n"))
 		for series in options:
 			dt.validate_series(series, self.doc.select_doc_for_series)
@@ -113,9 +109,8 @@
 		
 	#-----------------------------------------------------------------------------------------------------------------------------------
 	def get_options(self, arg=''):
-		so = sql("select options from `tabDocField` where parent=%s and fieldname='naming_series'", self.doc.select_doc_for_series)
-		if so:
-			return so[0][0] or ''
+		sr = webnotes.model.doctype.get_property(self.doc.select_doc_for_series, 'options', 'naming_series')
+		return sr
 
 
 	#-----------------------------------------------------------------------------------------------------------------------------------
