diff --git a/erpnext/patches/1312/p02_update_user_properties.py b/erpnext/patches/1312/p02_update_user_properties.py
deleted file mode 100644
index 085f2c1..0000000
--- a/erpnext/patches/1312/p02_update_user_properties.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-import webnotes.permissions
-import webnotes.model.doctype
-import webnotes.defaults
-
-def execute():
-	webnotes.reload_doc("core", "doctype", "docperm")
-	update_user_properties()
-	update_user_match()
-	add_employee_restrictions_to_leave_approver()
-	update_permissions()
-	remove_duplicate_restrictions()
-	webnotes.defaults.clear_cache()
-	webnotes.clear_cache()
-
-def update_user_properties():
-	webnotes.reload_doc("core", "doctype", "docfield")
-	
-	for d in webnotes.conn.sql("""select parent, defkey, defvalue from tabDefaultValue
-		where parent not in ('__global', 'Control Panel')""", as_dict=True):
-		df = webnotes.conn.sql("""select options from tabDocField
-			where fieldname=%s and fieldtype='Link'""", d.defkey, as_dict=True)
-		
-		if df:
-			webnotes.conn.sql("""update tabDefaultValue
-				set defkey=%s, parenttype='Restriction'
-				where defkey=%s and
-				parent not in ('__global', 'Control Panel')""", (df[0].options, d.defkey))
-
-def update_user_match():
-	import webnotes.defaults
-	doctype_matches = {}
-	for doctype, match in webnotes.conn.sql("""select parent, `match` from `tabDocPerm`
-		where `match` like %s and ifnull(`match`, '')!="leave_approver:user" """, "%:user"):
-		doctype_matches.setdefault(doctype, []).append(match)
-	
-	for doctype, user_matches in doctype_matches.items():
-		meta = webnotes.get_doctype(doctype)
-		
-		# for each user with roles of this doctype, check if match condition applies
-		for profile in webnotes.conn.sql_list("""select name from `tabProfile`
-			where enabled=1 and user_type='System User'"""):
-			
-			perms = webnotes.permissions.get_user_perms(meta, "read", profile)
-			# user does not have required roles
-			if not perms:
-				continue
-			
-			# assume match
-			user_match = True
-			for perm in perms:
-				if not perm.match:
-					# aha! non match found
-					user_match = False
-					break
-			
-			if not user_match:
-				continue
-			
-			# if match condition applies, restrict that user
-			# add that doc's restriction to that user
-			for match in user_matches:
-				for name in webnotes.conn.sql_list("""select name from `tab{doctype}`
-					where `{field}`=%s""".format(doctype=doctype, field=match.split(":")[0]), profile):
-					
-					webnotes.defaults.add_default(doctype, name, profile, "Restriction")
-					
-def add_employee_restrictions_to_leave_approver():
-	from webnotes.core.page.user_properties import user_properties
-	
-	# add restrict rights to HR User and HR Manager
-	webnotes.conn.sql("""update `tabDocPerm` set `restrict`=1 where parent in ('Employee', 'Leave Application')
-		and role in ('HR User', 'HR Manager') and permlevel=0 and `read`=1""")
-	webnotes.model.doctype.clear_cache()
-	
-	# add Employee restrictions (in on_update method)
-	for employee in webnotes.conn.sql_list("""select name from `tabEmployee`
-		where exists(select leave_approver from `tabEmployee Leave Approver`
-			where `tabEmployee Leave Approver`.parent=`tabEmployee`.name)
-		or ifnull(`reports_to`, '')!=''"""):
-		
-		webnotes.bean("Employee", employee).save()
-
-def update_permissions():
-	# clear match conditions other than owner
-	webnotes.conn.sql("""update tabDocPerm set `match`=''
-		where ifnull(`match`,'') not in ('', 'owner')""")
-
-def remove_duplicate_restrictions():
-	# remove duplicate restrictions (if they exist)
-	for d in webnotes.conn.sql("""select parent, defkey, defvalue,
-		count(*) as cnt from tabDefaultValue
-		where parent not in ('__global', 'Control Panel')
-		group by parent, defkey, defvalue""", as_dict=1):
-		if d.cnt > 1:
-			# order by parenttype so that restriction does not get removed!
-			webnotes.conn.sql("""delete from tabDefaultValue where parent=%s, defkey=%s,
-				defvalue=%s order by parenttype limit %s""", (d.parent, d.defkey, d.defvalue, d.cnt-1))
diff --git a/erpnext/patches/1312/p03_move_warehouse_user_to_restrictions.py b/erpnext/patches/1312/p03_move_warehouse_user_to_restrictions.py
deleted file mode 100644
index 4e6a2ed..0000000
--- a/erpnext/patches/1312/p03_move_warehouse_user_to_restrictions.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-def execute():
-	from webnotes.core.page.user_properties import user_properties
-	for warehouse, profile in webnotes.conn.sql("""select parent, user from `tabWarehouse User`"""):
-		user_properties.add(profile, "Warehouse", warehouse)
-		
-	webnotes.delete_doc("DocType", "Warehouse User")
\ No newline at end of file
diff --git a/erpnext/patches/1312/p04_new_permissions.py b/erpnext/patches/1312/p04_new_permissions.py
deleted file mode 100644
index 9dffdd4..0000000
--- a/erpnext/patches/1312/p04_new_permissions.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import webnotes
-
-def execute():
-	# reset Page perms
-	from webnotes.core.page.permission_manager.permission_manager import reset
-	reset("Page")
-	reset("Report")
-	
-	# patch to move print, email into DocPerm
-	for doctype, hide_print, hide_email in webnotes.conn.sql("""select name, ifnull(allow_print, 0), ifnull(allow_email, 0)
-		from `tabDocType` where ifnull(issingle, 0)=0 and ifnull(istable, 0)=0 and
-		(ifnull(allow_print, 0)=0 or ifnull(allow_email, 0)=0)"""):
-		
-		if not hide_print:
-			webnotes.conn.sql("""update `tabDocPerm` set `print`=1
-				where permlevel=0 and `read`=1 and parent=%s""", doctype)
-		
-		if not hide_email:
-			webnotes.conn.sql("""update `tabDocPerm` set `email`=1
-				where permlevel=0 and `read`=1 and parent=%s""", doctype)
diff --git a/erpnext/utilities/demo/__init__.py b/erpnext/utilities/demo/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/utilities/demo/__init__.py
+++ /dev/null
diff --git a/erpnext/utilities/demo/demo-login.css b/erpnext/utilities/demo/demo-login.css
deleted file mode 100644
index f3464a3..0000000
--- a/erpnext/utilities/demo/demo-login.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body, #container, .outer {
-	background-color: #888 !important;
-}
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo-login.html b/erpnext/utilities/demo/demo-login.html
deleted file mode 100644
index 4595cb7..0000000
--- a/erpnext/utilities/demo/demo-login.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<div class="container">
-	<div class="row" style="margin-top: 100px;">
-		<div class="col-sm-offset-3 col-sm-6">
-			<div class="panel panel-default">
-				<div class="panel-heading">
-					Start ERPNext Demo
-				</div>
-				<div class="panel-body">
-					<p>
-					<input id="lead-email" type="email"
-						class="form-control" placeholder="Your Email Id (optional)">
-					</p>
-					<p>
-						<button type="submit" id="login_btn" 
-							class="btn btn-primary btn-large">Launch Demo</button>
-					</p>
-					<hr>
-					<p class="text-muted small">Some functionality is disabled for the demo app. The demo data will be cleared regulary. To start your own ERPNext Trial, <a href="https://erpnext.com/pricing-and-signup">click here</a></p>
-				</div>
-			</div>
-		</div>
-	</div>
-	<div class="row">
-	</div>
-</div>
diff --git a/erpnext/utilities/demo/demo-login.js b/erpnext/utilities/demo/demo-login.js
deleted file mode 100644
index 509057b..0000000
--- a/erpnext/utilities/demo/demo-login.js
+++ /dev/null
@@ -1,27 +0,0 @@
-$(document).ready(function() {
-    $(".navbar, footer, .banner, #user-tools").toggle(false);
-    
-    $("#login_btn").click(function() {
-        var me = this;
-        $(this).html("Logging In...").prop("disabled", true);
-        wn.call({
-            "method": "login",
-            args: {
-                usr: "demo@erpnext.com",
-                pwd: "demo",
-                lead_email: $("#lead-email").val(),
-            },
-            callback: function(r) {
-                $(me).prop("disabled", false);
-                if(r.exc) {
-                    alert("Error, please contact support@erpnext.com");
-                } else {
-                    console.log("Logged In");
-                    window.location.href = "app.html";
-                }
-            }
-        })
-        return false;
-    })
-    .prop("disabled", false);
-})
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo_control_panel.py b/erpnext/utilities/demo/demo_control_panel.py
deleted file mode 100644
index cb80373..0000000
--- a/erpnext/utilities/demo/demo_control_panel.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from __future__ import unicode_literals
-import webnotes
-
-class CustomDocType(DocType):
-	def on_login(self):
-		from webnotes.utils import validate_email_add
-		from webnotes import conf
-		if "demo_notify_url" in conf:
-			if webnotes.form_dict.lead_email and validate_email_add(webnotes.form_dict.lead_email):
-				import requests
-				response = requests.post(conf.demo_notify_url, data={
-					"cmd":"erpnext.templates.utils.send_message",
-					"subject":"Logged into Demo",
-					"sender": webnotes.form_dict.lead_email,
-					"message": "via demo.erpnext.com"
-				})
diff --git a/erpnext/utilities/demo/demo_docs/Address.csv b/erpnext/utilities/demo/demo_docs/Address.csv
deleted file mode 100644
index 51c34b5..0000000
--- a/erpnext/utilities/demo/demo_docs/Address.csv
+++ /dev/null
@@ -1,46 +0,0 @@
-Data Import Template,,,,,,,,,,,,,,,,,,,,,
-Table:,Address,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,
-Notes:,,,,,,,,,,,,,,,,,,,,,
-Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,
-First data column must be blank.,,,,,,,,,,,,,,,,,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,
-Column Labels,ID,Address Type,Address Title,Address Line1,City/Town,Country,Phone,Customer,Customer Name,Supplier,Supplier Name,Address Line2,Pincode,State,Email Id,Fax,Preferred Billing Address,Preferred Shipping Address,Sales Partner,Lead,Lead Name
-Column Name:,name,address_type,address_title,address_line1,city,country,phone,customer,customer_name,supplier,supplier_name,address_line2,pincode,state,email_id,fax,is_primary_address,is_shipping_address,sales_partner,lead,lead_name
-Mandatory:,Yes,Yes,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No
-Type:,Data (text),Select,Data,Data,Data,Select,Data,Link,Data,Link,Data,Data,Data,Data,Data,Data,Check,Check,Link,Link,Data
-Info:,,"One of: Billing, Shipping, Office, Personal, Plant, Postal, Shop, Subsidiary, Warehouse, Other",,,,Valid Country,,Valid Customer,,Valid Supplier,,,,,,,0 or 1,0 or 1,Valid Sales Partner,Valid Lead,
-Start entering data below this line,,,,,,,,,,,,,,,,,,,,,
-,,Office,,254 Theotokopoulou Str.,Larnaka,Cyprus,23566775757,Adaptas,Adaptas,,,,,,,,,,,,
-,,Office,,R Patrão Caramelho 116,Fajozes,Portugal,23566775757,Asian Fusion,Asian Fusion,,,,,,,,,,,,
-,,Office,,30 Fulford Road,PENTRE-PIOD,United Kingdom,23566775757,Asian Junction,Asian Junction,,,,,,,,,,,,
-,,Office,,Schoenebergerstrasse 13,Raschau,Germany,23566775757,Big D Supermarkets,Big D Supermarkets,,,,,,,,,,,,
-,,Office,,Hoheluftchaussee 43,Kieritzsch,Germany,23566775757,Buttrey Food & Drug,Buttrey Food & Drug,,,,,,,,,,,,
-,,Office,,R Cimo Vila 6,Rebordosa,Portugal,23566775757,Chi-Chis,Chi-Chis,,,,,,,,,,,,
-,,Office,,R 5 Outubro 9,Quinta Nova São Domingos,Portugal,23566775757,Choices,Choices,,,,,,,,,,,,
-,,Office,,Avenida Macambira 953,Goiânia,Brazil,23566775757,Consumers and Consumers Express,Consumers and Consumers Express,,,,,,,,,,,,
-,,Office,,2342 Goyeau Ave,Windsor,Canada,23566775757,Crafts Canada,Crafts Canada,,,,,,,,,,,,
-,,Office,,Laukaantie 82,KOKKOLA,Finland,23566775757,Endicott Shoes,Endicott Shoes,,,,,,,,,,,,
-,,Office,,9 Brown Street,PETERSHAM,Australia,23566775757,Fayva,Fayva,,,,,,,,,,,,
-,,Office,,Via Donnalbina 41,Cala Gonone,Italy,23566775757,Intelacard,Intelacard,,,,,,,,,,,,
-,,Office,,Liljerum Grenadjärtorpet 69,TOMTEBODA,Sweden,23566775757,Landskip Yard Care,Landskip Yard Care,,,,,,,,,,,,
-,,Office,,72 Bishopgate Street,SEAHAM,United Kingdom,23566775757,Life Plan Counselling,Life Plan Counselling,,,,,,,,,,,,
-,,Office,,Σκαφίδια 105,ΠΑΡΕΚΚΛΗΣΙΑ,Cyprus,23566775757,Mr Fables,Mr Fables,,,,,,,,,,,,
-,,Office,,Mellemvej 7,Aabybro,Denmark,23566775757,Nelson Brothers,Nelson Brothers,,,,,,,,,,,,
-,,Office,,Plouggårdsvej 98,Karby,Denmark,23566775757,Netobill,Netobill,,,,,,,,,,,,
-,,Office,,176 Michalakopoulou Street,Agio Georgoudi,Cyprus,23566775757,,,Helios Air,Helios Air,,,,,,,,,,
-,,Office,,Fibichova 1102,Kokorín,Czech Republic,23566775757,,,Ks Merchandise,Ks Merchandise,,,,,,,,,,
-,,Office,,Zahradní 888,Cechtín,Czech Republic,23566775757,,,HomeBase,HomeBase,,,,,,,,,,
-,,Office,,ul. Grochowska 94,Warszawa,Poland,23566775757,,,Scott Ties,Scott Ties,,,,,,,,,,
-,,Office,,Norra Esplanaden 87,HELSINKI,Finland,23566775757,,,Reliable Investments,Reliable Investments,,,,,,,,,,
-,,Office,,2038 Fallon Drive,Dresden,Canada,23566775757,,,Nan Duskin,Nan Duskin,,,,,,,,,,
-,,Office,,77 cours Franklin Roosevelt,MARSEILLE,France,23566775757,,,Rainbow Records,Rainbow Records,,,,,,,,,,
-,,Office,,ul. Tuwima Juliana 85,Łódź,Poland,23566775757,,,New World Realty,New World Realty,,,,,,,,,,
-,,Office,,Gl. Sygehusvej 41,Narsaq,Greenland,23566775757,,,Asiatic Solutions,Asiatic Solutions,,,,,,,,,,
-,,Office,,Gosposka ulica 50,Nova Gorica,Slovenia,23566775757,,,Eagle Hardware,Eagle Hardware,,,,,,,,,,
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo_docs/BOM.csv b/erpnext/utilities/demo/demo_docs/BOM.csv
deleted file mode 100644
index ab0d6f5..0000000
--- a/erpnext/utilities/demo/demo_docs/BOM.csv
+++ /dev/null
@@ -1,47 +0,0 @@
-Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Table:,BOM,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Notes:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-DocType:,BOM,,,,,,,,,,,,,,,~,BOM Operation,bom_operations,,,,,,~,BOM Item,bom_materials,,,,,,,,,~,BOM Explosion Item,flat_bom_details,,,,,,
-Column Labels:,ID,Item,Quantity,Is Active,Is Default,With Operations,Rate Of Materials Based On,Price List,Total Cost,Total Raw Material Cost,Total Operating Cost,Item UOM,Project Name,Item Desription,Amended From,,ID,Operation No,Operation Description,Workstation,Hour Rate,Operation Time (mins),Operating Cost,,ID,Item Code,Qty,Stock UOM,Operation No,BOM No,Rate,Amount,Scrap %,Item Description,,ID,Item Code,Description,Qty,Rate,Amount,Stock UOM,Qty Consumed Per Unit
-Column Name:,name,item,quantity,is_active,is_default,with_operations,rm_cost_as_per,buying_price_list,total_cost,raw_material_cost,operating_cost,uom,project_name,description,amended_from,~,name,operation_no,opn_description,workstation,hour_rate,time_in_mins,operating_cost,~,name,item_code,qty,stock_uom,operation_no,bom_no,rate,amount,scrap,description,~,name,item_code,description,qty,rate,amount,stock_uom,qty_consumed_per_unit
-Mandatory:,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,,Yes,Yes,Yes,No,No,No,No,,Yes,Yes,Yes,Yes,No,No,No,No,No,No,,Yes,No,No,No,No,No,No,No
-Type:,Data (text),Link,Float,Check,Check,Check,Select,Link,Float,Float,Float,Select,Link,Small Text,Link,,Data,Data,Text,Link,Float,Float,Float,,Data,Link,Float,Link,Select,Link,Float,Float,Float,Text,,Data,Link,Text,Float,Float,Float,Link,Float
-Info:,,Valid Item,,0 or 1,0 or 1,0 or 1,"One of: Valuation Rate, Last Purchase Rate, Price List",Valid Price List,,,,Valid UOM,Valid Project,,Valid BOM,,Leave blank for new records,,,Valid Workstation,,,,,Leave blank for new records,Valid Item,,Valid UOM,,Valid BOM,,,,,,Leave blank for new records,Valid Item,,,,,Valid UOM,
-Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,BOM/Bearing Assembly/001,Bearing Assembly,1,1,1,,Price List,Standard Buying,130,130,0,Nos,,Bearing Assembly,,,,,,,,,,,,Base Bearing Plate,1,Nos,,,15,15,,1/4 in. x 6 in. x 6 in. Mild Steel Plate,,,Bearing Pipe,1.5 in. Diameter x 36 in. Mild Steel Tubing,1,15,15,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Bearing Block,1,Nos,,,10,10,,"CAST IRON, MCMASTER PART NO. 3710T13",,,Bearing Collar,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,2,20,40,Nos,2
-,,,,,,,,,,,,,,,,,,,,,,,,,,Bearing Collar,2,Nos,,,20,40,,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,,,Bearing Block,"CAST IRON, MCMASTER PART NO. 3710T13",1,10,10,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Bearing Pipe,1,Nos,,,15,15,,1.5 in. Diameter x 36 in. Mild Steel Tubing,,,Upper Bearing Plate,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,1,50,50,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Upper Bearing Plate,1,Nos,,,50,50,,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,,,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1,15,15,Nos,1
-,BOM/Wind Mill A Series/001,Wind Mill A Series,1,1,1,,Price List,Standard Buying,223,223,0,Nos,,Wind Mill A Series for Home Use 9ft,,,,,,,,,,,,Base Bearing Plate,1,Nos,,,15,15,,1/4 in. x 6 in. x 6 in. Mild Steel Plate,,,Shaft,1.25 in. Diameter x 6 ft. Mild Steel Tubing,1,30,30,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Base Plate,1,Nos,,,20,20,,3/4 in. x 2 ft. x 4 ft. Pine Plywood,,,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1,15,15,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Bearing Block,1,Nos,,,10,10,,"CAST IRON, MCMASTER PART NO. 3710T13",,,External Disc,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,1,45,45,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Bearing Pipe,1,Nos,,,15,15,,1.5 in. Diameter x 36 in. Mild Steel Tubing,,,Bearing Pipe,1.5 in. Diameter x 36 in. Mild Steel Tubing,1,15,15,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,External Disc,1,Nos,,,45,45,,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,,,Wing Sheet,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,4,22,88,Nos,4
-,,,,,,,,,,,,,,,,,,,,,,,,,,Shaft,1,Nos,,,30,30,,1.25 in. Diameter x 6 ft. Mild Steel Tubing,,,Base Plate,3/4 in. x 2 ft. x 4 ft. Pine Plywood,1,20,20,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Wing Sheet,4,Nos,,,22,88,,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,,,Bearing Block,"CAST IRON, MCMASTER PART NO. 3710T13",1,10,10,Nos,1
-,BOM/Wind MIll C Series/001,Wind MIll C Series,1,1,1,,Price List,Standard Buying,314,314,0,Nos,,Wind Mill C Series for Commercial Use 18ft,,,,,,,,,,,,Base Plate,2,Nos,,,20,40,,3/4 in. x 2 ft. x 4 ft. Pine Plywood,,,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1,15,15,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Internal Disc,1,Nos,,,33,33,,For Bearing Collar,,,Bearing Collar,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,2,20,40,Nos,2
-,,,,,,,,,,,,,,,,,,,,,,,,,,External Disc,1,Nos,,,45,45,,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,,,Base Plate,3/4 in. x 2 ft. x 4 ft. Pine Plywood,2,20,40,Nos,2
-,,,,,,,,,,,,,,,,,,,,,,,,,,Bearing Assembly,1,Nos,,BOM/Bearing Assembly/001,130,130,,Bearing Assembly,,,Bearing Pipe,1.5 in. Diameter x 36 in. Mild Steel Tubing,1,15,15,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Wing Sheet,3,Nos,,,22,66,,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,,,Internal Disc,For Bearing Collar,1,33,33,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Upper Bearing Plate,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,1,50,50,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Wing Sheet,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,3,22,66,Nos,3
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,External Disc,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,1,45,45,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Bearing Block,"CAST IRON, MCMASTER PART NO. 3710T13",1,10,10,Nos,1
-,BOM/Wind Turbine/001,Wind Turbine,1,1,1,,Price List,Standard Buying,139,139,0,Nos,,Small Wind Turbine for Home Use,,,,,,,,,,,,Base Bearing Plate,1,Nos,,,15,15,,1/4 in. x 6 in. x 6 in. Mild Steel Plate,,,Shaft,1.25 in. Diameter x 6 ft. Mild Steel Tubing,1,30,30,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Base Plate,1,Nos,,,20,20,,3/4 in. x 2 ft. x 4 ft. Pine Plywood,,,Bearing Collar,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,1,20,20,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Bearing Collar,1,Nos,,,20,20,,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,,,Base Plate,3/4 in. x 2 ft. x 4 ft. Pine Plywood,1,20,20,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Blade Rib,1,Nos,,,10,10,,1/2 in. x 2 ft. x 4 ft. Pine Plywood,,,Base Bearing Plate,1/4 in. x 6 in. x 6 in. Mild Steel Plate,1,15,15,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Shaft,1,Nos,,,30,30,,1.25 in. Diameter x 6 ft. Mild Steel Tubing,,,Blade Rib,1/2 in. x 2 ft. x 4 ft. Pine Plywood,1,10,10,Nos,1
-,,,,,,,,,,,,,,,,,,,,,,,,,,Wing Sheet,2,Nos,,,22,44,,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,,,Wing Sheet,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,2,22,44,Nos,2
diff --git a/erpnext/utilities/demo/demo_docs/Contact.csv b/erpnext/utilities/demo/demo_docs/Contact.csv
deleted file mode 100644
index be3dddc..0000000
--- a/erpnext/utilities/demo/demo_docs/Contact.csv
+++ /dev/null
@@ -1,46 +0,0 @@
-Data Import Template,,,,,,,,,,,,,,,
-Table:,Contact,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,
-Notes:,,,,,,,,,,,,,,,
-Please do not change the template headings.,,,,,,,,,,,,,,,
-First data column must be blank.,,,,,,,,,,,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,,,,,,,,,
-"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,
-"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,
-Column Labels,First Name,Email Id,Phone,Last Name,Status,Customer,Customer Name,Supplier,Supplier Name,Sales Partner,Is Primary Contact,Mobile No,Department,Designation,Unsubscribed
-Column Name:,first_name,email_id,phone,last_name,status,customer,customer_name,supplier,supplier_name,sales_partner,is_primary_contact,mobile_no,department,designation,unsubscribed
-Mandatory:,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No
-Type:,Data,Data,Data,Data,Select,Link,Data,Link,Data,Link,Check,Data,Data,Data,Check
-Info:,,,,,"One of: Open, Replied",Valid Customer,,Valid Supplier,,Valid Sales Partner,0 or 1,,,,0 or 1
-Start entering data below this line,,,,,,,,,,,,,,,
-,Jan,JanVaclavik@dayrep.com,456675757,Václavík,,Adaptas,Adaptas,,,,,,,,
-,Chidumaga,ChidumagaTobeolisa@armyspy.com,456675757,Tobeolisa,,Asian Fusion,Asian Fusion,,,,,,,,
-,Jana,JanaKubanova@superrito.com,456675757,Kubáňová,,Asian Junction,Asian Junction,,,,,,,,
-,紹萱,XuChaoXuan@gustr.com,456675757,于,,Big D Supermarkets,Big D Supermarkets,,,,,,,,
-,Özlem,OzlemVerwijmeren@dayrep.com,456675757,Verwijmeren,,Buttrey Food & Drug,Buttrey Food & Drug,,,,,,,,
-,Hans,HansRasmussen@superrito.com,456675757,Rasmussen,,Chi-Chis,Chi-Chis,,,,,,,,
-,Satomi,SatomiShigeki@superrito.com,456675757,Shigeki,,Choices,Choices,,,,,,,,
-,Simon,SimonVJessen@superrito.com,456675757,Jessen,,Consumers and Consumers Express,Consumers and Consumers Express,,,,,,,,
-,نگارین,NeguaranShahsaah@teleworm.us,456675757,شاه سیاه,,Crafts Canada,Crafts Canada,,,,,,,,
-,Lom-Ali,Lom-AliBataev@dayrep.com,456675757,Bataev,,Endicott Shoes,Endicott Shoes,,,,,,,,
-,Tiên,VanNgocTien@einrot.com,456675757,Văn,,Fayva,Fayva,,,,,,,,
-,Quimey,QuimeyOsorioRuelas@gustr.com,456675757,Osorio,,Intelacard,Intelacard,,,,,,,,
-,Edgarda,EdgardaSalcedoRaya@teleworm.us,456675757,Salcedo,,Landskip Yard Care,Landskip Yard Care,,,,,,,,
-,Hafsteinn,HafsteinnBjarnarsonar@armyspy.com,456675757,Bjarnarsonar,,Life Plan Counselling,Life Plan Counselling,,,,,,,,
-,Даниил,@superrito.com,456675757,Коновалов,,Mr Fables,Mr Fables,,,,,,,,
-,Selma,SelmaMAndersen@teleworm.us,456675757,Andersen,,Nelson Brothers,Nelson Brothers,,,,,,,,
-,Ladislav,LadislavKolaja@armyspy.com,456675757,Kolaja,,Netobill,Netobill,,,,,,,,
-,Tewolde,TewoldeAbaalom@teleworm.us,456675757,Abaalom,,,,Helios Air,Helios Air,,,,,,
-,Leila,LeilaFernandesRodrigues@gustr.com,456675757,Rodrigues,,,,Ks Merchandise,Ks Merchandise,,,,,,
-,Dmitry,DmitryBulgakov@gustr.com,456675757,Bulgakov,,,,HomeBase,HomeBase,,,,,,
-,Haiduc,HaiducWhitfoot@dayrep.com,456675757,Whitfoot,,,,Scott Ties,Scott Ties,,,,,,
-,Sesselja,SesseljaPetursdottir@cuvox.de,456675757,Pétursdóttir,,,,Reliable Investments,Reliable Investments,,,,,,
-,Hajdar,HajdarPignar@superrito.com,456675757,Pignar,,,,Nan Duskin,Nan Duskin,,,,,,
-,Gustava,GustavaLorenzo@teleworm.us,456675757,Lorenzo,,,,Rainbow Records,Rainbow Records,,,,,,
-,Bethany,BethanyWood@teleworm.us,456675757,Wood,,,,New World Realty,New World Realty,,,,,,
-,Gloriana,GlorianaBrownlock@cuvox.de,456675757,Brownlock,,,,Asiatic Solutions,Asiatic Solutions,,,,,,
-,Jenson,JensonFraser@gustr.com,456675757,Fraser,,,,Eagle Hardware,Eagle Hardware,,,,,,
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo_docs/Customer.csv b/erpnext/utilities/demo/demo_docs/Customer.csv
deleted file mode 100644
index 2ed0e1c..0000000
--- a/erpnext/utilities/demo/demo_docs/Customer.csv
+++ /dev/null
@@ -1,38 +0,0 @@
-Data Import Template,,,,,,,,,,,,,,,,
-Table:,Customer,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,
-Notes:,,,,,,,,,,,,,,,,
-Please do not change the template headings.,,,,,,,,,,,,,,,,
-First data column must be blank.,,,,,,,,,,,,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,
-"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,
-"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,
-Column Labels,ID,Customer Name,Customer Type,Customer Group,Territory,Company,Series,Lead Ref,Default Price List,Default Currency,Customer Details,Credit Days,Credit Limit,Website,Default Sales Partner,Default Commission Rate
-Column Name:,name,customer_name,customer_type,customer_group,territory,company,naming_series,lead_name,default_price_list,default_currency,customer_details,credit_days,credit_limit,website,default_sales_partner,default_commission_rate
-Mandatory:,Yes,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No
-Type:,Data (text),Data,Select,Link,Link,Link,Select,Link,Link,Link,Text,Int,Currency,Data,Link,Float
-Info:,,,"One of: Company, Individual",Valid Customer Group,Valid Territory,Valid Company,"One of: CUST, CUSTMUM",Valid Lead,Valid Price List,Valid Currency,,Integer,,,Valid Sales Partner,
-Start entering data below this line,,,,,,,,,,,,,,,,
-,,Asian Junction,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Life Plan Counselling,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Two Pesos,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Mr Fables,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Intelacard,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Big D Supermarkets,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Adaptas,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Nelson Brothers,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Landskip Yard Care,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Buttrey Food & Drug,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Fayva,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Asian Fusion,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Crafts Canada,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Consumers and Consumers Express,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Netobill,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Choices,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Chi-Chis,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Red Food,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
-,,Endicott Shoes,Company,Commercial,Rest Of The World,Wind Power LLC,,,,,,,,,,
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo_docs/Employee.csv b/erpnext/utilities/demo/demo_docs/Employee.csv
deleted file mode 100644
index c9b340a..0000000
--- a/erpnext/utilities/demo/demo_docs/Employee.csv
+++ /dev/null
@@ -1,40 +0,0 @@
-Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Table:,Employee,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Notes:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-DocType:,Employee,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Column Labels:,ID,Full Name,Date of Joining,Date of Birth,Gender,Company,Status,Naming Series,Salutation,Image,User ID,Employee Number,Employment Type,Holiday List,Scheduled Confirmation Date,Final Confirmation Date,Contract End Date,Date Of Retirement,Branch,Department,Designation,Grade,Email (By company),Notice - Number of Days,Salary Mode,Bank Name,Bank A/C No.,ESIC CARD No,PF Number,Gratuity LIC ID,Reports to,Cell Number,Personal Email,Person To Be Contacted,Relation,Emergency Phone Number,Permanent Accommodation Type,Permanent Address,Current Accommodation Type,Current Address,Bio,PAN Number,Passport Number,Date of Issue,Valid Upto,Place of Issue,Marital Status,Blood Group,Family Background,Health Details,Resignation Letter Date,Relieving Date,Reason for Leaving,Leave Encashed?,Encashment Date,Held On,Reason for Resignation,New Workplace,Feedback
-Column Name:,name,employee_name,date_of_joining,date_of_birth,gender,company,status,naming_series,salutation,image,user_id,employee_number,employment_type,holiday_list,scheduled_confirmation_date,final_confirmation_date,contract_end_date,date_of_retirement,branch,department,designation,grade,company_email,notice_number_of_days,salary_mode,bank_name,bank_ac_no,esic_card_no,pf_number,gratuity_lic_id,reports_to,cell_number,personal_email,person_to_be_contacted,relation,emergency_phone_number,permanent_accommodation_type,permanent_address,current_accommodation_type,current_address,bio,pan_number,passport_number,date_of_issue,valid_upto,place_of_issue,marital_status,blood_group,family_background,health_details,resignation_letter_date,relieving_date,reason_for_leaving,leave_encashed,encashment_date,held_on,reason_for_resignation,new_workplace,feedback
-Mandatory:,Yes,Yes,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No
-Type:,Data (text),Data,Date,Date,Select,Select,Select,Select,Select,Select,Link,Data,Link,Link,Date,Date,Date,Date,Link,Link,Link,Link,Data,Int,Select,Data,Data,Data,Data,Data,Link,Data,Data,Data,Data,Data,Select,Small Text,Select,Small Text,Text Editor,Data,Data,Date,Date,Data,Select,Select,Small Text,Small Text,Date,Date,Data,Select,Date,Date,Select,Data,Small Text
-Info:,,,,,"One of: Male, Female",Valid Company,"One of: Active, Left",One of: EMP/,"One of: Mr, Ms",One of: attach_files:,Valid Profile,,Valid Employment Type,Valid Holiday List,,,,,Valid Branch,Valid Department,Valid Designation,Valid Grade,,Integer,"One of: Bank, Cash, Cheque",,,,,,Valid Employee,,,,,,"One of: Rented, Owned",,"One of: Rented, Owned",,,,,,,,"One of: Single, Married, Divorced, Widowed","One of: A+, A-, B+, B-, AB+, AB-, O+, O-",,,,,,"One of: Yes, No",,,"One of: Better Prospects, Health Concerns",,
-Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Dikman Shervashidze Shervashidze,10-10-2001,03-01-1982,Female,Wind Power LLC,Active,EMP/,,,DikmanShervashidze@armyspy.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Zukutakitoteka ,09-16-1976,03-02-1959,Female,Wind Power LLC,Active,EMP/,,,Zukutakitoteka@teleworm.us,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Hatsue Kashiwagi,06-16-2000,03-03-1982,Female,Wind Power LLC,Active,EMP/,,,HatsueKashiwagi@cuvox.de,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Nuran Verkleij,07-01-1969,04-04-1945,Female,Wind Power LLC,Active,EMP/,,,NuranVerkleij@einrot.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Дмитрий Пирогов,12-24-1999,03-05-1978,Male,Wind Power LLC,Active,EMP/,,,aromn@armyspy.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Tilde Lindqvist,08-05-1981,03-06-1964,Female,Wind Power LLC,Active,EMP/,,,TildeLindqvist@cuvox.de,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Michał Sobczak,06-10-2006,03-07-1982,Male,Wind Power LLC,Active,EMP/,,,MichalSobczak@teleworm.us,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Gabrielle Loftus,10-21-1993,03-08-1969,Female,Wind Power LLC,Active,EMP/,,,GabrielleLoftus@superrito.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Vakhita Ryzaev,09-06-2005,03-09-1982,Male,Wind Power LLC,Active,EMP/,,,VakhitaRyzaev@teleworm.us,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Charmaine Gaudreau,12-25-2007,03-10-1985,Female,Wind Power LLC,Active,EMP/,,,CharmaineGaudreau@cuvox.de,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Rafaëla Maartens,09-02-2002,03-11-1982,Female,Wind Power LLC,Active,EMP/,,,RafaelaMaartens@cuvox.de,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Nuguse Yohannes,08-24-1984,07-12-1966,Male,Wind Power LLC,Active,EMP/,,,NuguseYohannes@dayrep.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Раиса Белякова,12-04-2002,03-13-1982,Female,Wind Power LLC,Active,EMP/,,,panca@armyspy.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,胤隆 蔡,03-14-2011,06-14-1991,Male,Wind Power LLC,Active,EMP/,,,CaYinLong@gustr.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Freddie Scott,12-14-2004,03-15-1982,Male,Wind Power LLC,Active,EMP/,,,FreddieScott@armyspy.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Bergþóra Vigfúsdóttir,05-17-2004,03-16-1982,Female,Wind Power LLC,Active,EMP/,,,BergoraVigfusdottir@superrito.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Ward Kalb,05-13-1994,03-17-1973,Male,Wind Power LLC,Active,EMP/,,,WardNajmalDinKalb@cuvox.de,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Wan Mai,12-15-2003,09-18-1982,Female,Wind Power LLC,Active,EMP/,,,WanMai@teleworm.us,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Leon Abdulov,03-15-1999,03-19-1982,Male,Wind Power LLC,Active,EMP/,,,LeonAbdulov@superrito.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,Sabina Novotná,01-25-1991,03-20-1974,Female,Wind Power LLC,Active,EMP/,,,SabinaNovotna@superrito.com,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo_docs/Fiscal_Year.csv b/erpnext/utilities/demo/demo_docs/Fiscal_Year.csv
deleted file mode 100644
index d56b1b9..0000000
--- a/erpnext/utilities/demo/demo_docs/Fiscal_Year.csv
+++ /dev/null
@@ -1,23 +0,0 @@
-Data Import Template,,,,
-Table:,Fiscal Year,,,
-,,,,
-,,,,
-Notes:,,,,
-Please do not change the template headings.,,,,
-First data column must be blank.,,,,
-"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,
-"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,
-"For updating, you can update only selective columns.",,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,
-,,,,
-DocType:,Fiscal Year,,,
-Column Labels:,ID,Year Name,Year Start Date,Year Closed
-Column Name:,name,year,year_start_date,year_end_date,is_fiscal_year_closed
-Mandatory:,Yes,Yes,Yes,Yes,No
-Type:,Data (text),Data,Date,Date,Select
-Info:,,,,,"One of: No, Yes"
-Start entering data below this line,,,,
-,,2009,01-01-2009,31-12-2009,No
-,,2010,01-01-2010,31-12-2010,No
-,,2011,01-01-2011,31-12-2011,No
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo_docs/Item.csv b/erpnext/utilities/demo/demo_docs/Item.csv
deleted file mode 100644
index eeb18c5..0000000
--- a/erpnext/utilities/demo/demo_docs/Item.csv
+++ /dev/null
@@ -1,37 +0,0 @@
-Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Table:,Item,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Notes:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-DocType:,Item,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,~,Item Reorder,item_reorder,,,,~,UOM Conversion Detail,uom_conversion_details,,~,Item Supplier,item_supplier_details,,~,Item Customer Detail,item_customer_details,,~,Item Tax,item_tax,,~,Item Quality Inspection Parameter,item_specification_details,,~,Website Item Group,website_item_groups,~,Item Website Specification,item_website_specifications,
-Column Labels:,ID,Item Name,Item Group,Default Unit of Measure,Description,Is Stock Item,Is Asset Item,Has Batch No,Has Serial No,Is Purchase Item,Is Sales Item,Is Service Item,Inspection Required,Allow Bill of Materials,Allow Production Order,Is Sub Contracted Item,Document Numbering Series,Item Code,Brand,Barcode,Image,Description HTML,Default Warehouse,Allowance Percent,Valuation Method,Minimum Order Qty,Serial Number Series,Warranty Period (in days),End of Life,Net Weight,Weight UOM,Re-Order Level,Re-Order Qty,Default Supplier,Lead Time Days,Default Expense Account,Default Cost Center,Last Purchase Rate,Standard Rate,Manufacturer,Manufacturer Part Number,Max Discount (%),Default Income Account,Cost Center,Default BOM,Show in Website,Page Name,Weightage,Slideshow,Image,Website Warehouse,Website Description,,ID,Warehouse,Re-order Level,Material Request Type,Re-order Qty,,ID,UOM,Conversion Factor,,ID,Supplier,Supplier Part Number,,ID,Customer Name,Ref Code,,ID,Tax,Tax Rate,,ID,Parameter,Acceptance Criteria,,ID,Item Group,,ID,Label,Description
-Column Name:,name,item_name,item_group,stock_uom,description,is_stock_item,is_asset_item,has_batch_no,has_serial_no,is_purchase_item,is_sales_item,is_service_item,inspection_required,is_manufactured_item,is_pro_applicable,is_sub_contracted_item,naming_series,item_code,brand,barcode,image,description_html,default_warehouse,tolerance,valuation_method,min_order_qty,serial_no_series,warranty_period,end_of_life,net_weight,weight_uom,re_order_level,re_order_qty,default_supplier,lead_time_days,purchase_account,cost_center,last_purchase_rate,standard_rate,manufacturer,manufacturer_part_no,max_discount,default_income_account,default_sales_cost_center,default_bom,show_in_website,page_name,weightage,slideshow,website_image,website_warehouse,web_long_description,~,name,warehouse,warehouse_reorder_level,material_request_type,warehouse_reorder_qty,~,name,uom,conversion_factor,~,name,supplier,supplier_part_no,~,name,customer_name,ref_code,~,name,tax_type,tax_rate,~,name,specification,value,~,name,item_group,~,name,label,description
-Mandatory:,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,,Yes,Yes,Yes,Yes,No,,Yes,No,No,,Yes,No,No,,Yes,Yes,Yes,,Yes,Yes,No,,Yes,Yes,No,,Yes,No,,Yes,No,No
-Type:,Data (text),Data,Link,Link,Small Text,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Select,Data,Link,Data,Select,Small Text,Link,Float,Select,Float,Data,Data,Date,Float,Link,Float,Float,Link,Int,Link,Link,Float,Float,Data,Data,Float,Link,Link,Link,Check,Data,Int,Link,Select,Link,Text Editor,,Data,Link,Float,Select,Float,,Data,Link,Float,,Data,Link,Data,,Data,Link,Data,,Data,Link,Float,,Data,Data,Data,,Data,Link,,Data,Data,Text
-Info:,,,Valid Item Group,Valid UOM,,"One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No","One of: Yes, No",One of: ITEM,,Valid Brand,,One of: attach_files:,,Valid Warehouse,,"One of: FIFO, Moving Average",,,,,,Valid UOM,,,Valid Supplier,Integer,Valid Account,Valid Cost Center,,,,,,Valid Account,Valid Cost Center,Valid BOM,0 or 1,,Integer,Valid Website Slideshow,One of: attach_files:,Valid Warehouse,,,Leave blank for new records,Valid Warehouse,,"One of: Purchase, Transfer",,,Leave blank for new records,Valid UOM,,,Leave blank for new records,Valid Supplier,,,Leave blank for new records,Valid Customer,,,Leave blank for new records,Valid Account,,,Leave blank for new records,,,,Leave blank for new records,Valid Item Group,,Leave blank for new records,,
-Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-,Base Bearing Plate,Base Bearing Plate,Raw Material,Nos,1/4 in. x 6 in. x 6 in. Mild Steel Plate,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Base Bearing Plate,,,,,Stores - WP,0,,0,,,,0,,0,0,Eagle Hardware,0,,,15,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Base Plate,Base Plate,Raw Material,Nos,3/4 in. x 2 ft. x 4 ft. Pine Plywood,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Base Plate,,,,,Stores - WP,0,,0,,,,0,,0,0,HomeBase,0,,,20,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Bearing Assembly,Bearing Assembly,Sub Assemblies,Nos,Bearing Assembly,Yes,No,No,No,No,Yes,No,No,Yes,Yes,No,,Bearing Assembly,,,,,Stores - WP,0,,0,,,,0,,0,0,Asiatic Solutions,0,,,0,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Bearing Block,Bearing Block,Raw Material,Nos,"CAST IRON, MCMASTER PART NO. 3710T13",Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Bearing Block,,,,,Stores - WP,0,,0,,,,0,,0,0,Nan Duskin,0,,,10,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Bearing Collar,Bearing Collar,Raw Material,Nos,1 in. x 3 in. x 1 ft. Multipurpose Al Alloy Bar,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Bearing Collar,,,,,Stores - WP,0,,0,,,,0,,0,0,Eagle Hardware,0,,,20,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Bearing Pipe,Bearing Pipe,Raw Material,Nos,1.5 in. Diameter x 36 in. Mild Steel Tubing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Bearing Pipe,,,,,Stores - WP,0,,0,,,,0,,0,0,HomeBase,0,,,15,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Blade Rib,Blade Rib,Raw Material,Nos,1/2 in. x 2 ft. x 4 ft. Pine Plywood,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Blade Rib,,,,,Stores - WP,0,,0,,,,0,,0,0,Ks Merchandise,0,,,0,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Disc Collars,Disc Collars,Raw Material,Nos,For Upper Bearing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Disc Collars,,,,,Stores - WP,0,,0,,,,0,,0,0,Asiatic Solutions,0,,,0,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,External Disc,External Disc,Raw Material,Nos,15/32 in. x 4 ft. x 8 ft. 3-Ply Rtd Sheathing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,External Disc,,,,,Stores - WP,0,,0,,,,0,,0,0,HomeBase,0,,,45,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Internal Disc,Internal Disc,Raw Material,Nos,For Bearing Collar,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Internal Disc,,,,,Stores - WP,0,,0,,,,0,,0,0,HomeBase,0,,,33,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Shaft,Shaft,Raw Material,Nos,1.25 in. Diameter x 6 ft. Mild Steel Tubing,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Shaft,,,,,Stores - WP,0,,0,,,,0,,0,0,Eagle Hardware,0,,,30,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Stand,Stand,Raw Material,Nos,N/A,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Stand,,,,,Stores - WP,0,,0,,,,0,,0,0,Scott Ties,0,,,0,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Upper Bearing Plate,Upper Bearing Plate,Raw Material,Nos,3/16 in. x 6 in. x 6 in. Low Carbon Steel Plate,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Upper Bearing Plate,,,,,Stores - WP,0,,0,,,,0,,0,0,Eagle Hardware,0,,,50,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Wind Mill A Series,Wind Mill A Series,Products,Nos,Wind Mill A Series for Home Use 9ft,Yes,No,No,Yes,No,Yes,Yes,No,Yes,Yes,No,,Wind Mill A Series,,,,,Finished Goods - WP,0,,0,WMA,,,0,,0,0,,0,,,0,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Wind MIll C Series,Wind MIll C Series,Products,Nos,Wind Mill C Series for Commercial Use 18ft,Yes,No,No,Yes,No,Yes,Yes,No,Yes,Yes,No,,Wind MIll C Series,,,,,Finished Goods - WP,0,,0,WMC,,,0,,0,0,,0,,,0,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Wind Turbine,Wind Turbine,Products,Nos,Small Wind Turbine for Home Use,Yes,No,No,Yes,No,Yes,Yes,No,Yes,Yes,No,,Wind Turbine,,,,,Finished Goods - WP,0,,0,WTU,,,0,,0,0,,0,,,0,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
-,Wing Sheet,Wing Sheet,Raw Material,Nos,1/32 in. x 24 in. x 47 in. HDPE Opaque Sheet,Yes,No,No,No,Yes,Yes,Yes,No,No,No,No,,Wing Sheet,,,,,Stores - WP,0,,0,,,,0,,0,0,New World Realty,0,,,22,0,,,0,,,,0,,0,,,,,,,,,,,,,Nos,1,,,,,,,,,,,,,,,,,,,,,,,
diff --git a/erpnext/utilities/demo/demo_docs/Item_Price.csv b/erpnext/utilities/demo/demo_docs/Item_Price.csv
deleted file mode 100644
index d70b7b3..0000000
--- a/erpnext/utilities/demo/demo_docs/Item_Price.csv
+++ /dev/null
@@ -1,49 +0,0 @@
-Data Import Template,,,,,,,
-Table:,Item Price,,,,,,
-,,,,,,,
-,,,,,,,
-Notes:,,,,,,,
-Please do not change the template headings.,,,,,,,
-First data column must be blank.,,,,,,,
-"If you are uploading new records, leave the ""name"""" (ID) column blank.""",,,,,,,
-"If you are uploading new records, ""Naming Series"""" becomes mandatory"," if present.""",,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,
-,,,,,,,
-DocType:,Item Price,,,,,,
-Column Labels:,ID,Price List,Item Code,Rate,Valid for Buying or Selling?,Item Name,Item Description
-Column Name:,name,price_list,item_code,ref_rate,buying_or_selling,item_name,item_description
-Mandatory:,Yes,Yes,Yes,Yes,No,No,No
-Type:,Data (text),Link,Link,Currency,Select,Data,Text
-Info:,,Valid Price List,Valid Item,,"One of: Selling, Buying",,
-Start entering data below this line,,,,,,,
-,,Standard Buying,Base Bearing Plate,15,Buying,,
-,,Standard Buying,Base Plate,20,Buying,,
-,,Standard Buying,Bearing Block,10,Buying,,
-,,Standard Buying,Bearing Collar,20,Buying,,
-,,Standard Buying,Bearing Pipe,15,Buying,,
-,,Standard Buying,Blade Rib,10,Buying,,
-,,Standard Buying,Disc Collars,74,Buying,,
-,,Standard Buying,External Disc,45,Buying,,
-,,Standard Buying,Internal Disc,33,Buying,,
-,,Standard Buying,Shaft,30,Buying,,
-,,Standard Buying,Stand,40,Buying,,
-,,Standard Buying,Upper Bearing Plate,50,Buying,,
-,,Standard Buying,Wing Sheet,22,Buying,,
-,,Standard Selling,Wind Turbine,21,Selling,,
-,,Standard Selling,Wind Mill A Series,28,Selling,,
-,,Standard Selling,Wind MIll C Series,14,Selling,,
-,,Standard Selling,Base Bearing Plate,28,Selling,,
-,,Standard Selling,Base Plate,21,Selling,,
-,,Standard Selling,Bearing Block,14,Selling,,
-,,Standard Selling,Bearing Collar,103.6,Selling,,
-,,Standard Selling,Bearing Pipe,63,Selling,,
-,,Standard Selling,Blade Rib,46.2,Selling,,
-,,Standard Selling,Disc Collars,42,Selling,,
-,,Standard Selling,External Disc,56,Selling,,
-,,Standard Selling,Internal Disc,70,Selling,,
-,,Standard Selling,Shaft,340,Selling,,
-,,Standard Selling,Stand,400,Selling,,
-,,Standard Selling,Upper Bearing Plate,300,Selling,,
-,,Standard Selling,Wing Sheet,30.8,Selling,,
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo_docs/Lead.csv b/erpnext/utilities/demo/demo_docs/Lead.csv
deleted file mode 100644
index 948a68d..0000000
--- a/erpnext/utilities/demo/demo_docs/Lead.csv
+++ /dev/null
@@ -1,68 +0,0 @@
-Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,
-Table:,Lead,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,
-Notes:,,,,,,,,,,,,,,,,,,,,,,,,
-Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,
-First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, leave the ""name"""" (ID) column blank.""",,,,,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, ""Naming Series"""" becomes mandatory"," if present.""",,,,,,,,,,,,,,,,,,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,
-Column Labels,ID,Contact Name,Status,Naming Series,Company Name,Email Id,Source,From Customer,Campaign Name,Phone,Mobile No.,Fax,Website,Territory,Lead Type,Lead Owner,Market Segment,Industry,Request Type,Next Contact By,Next Contact Date,Company,Unsubscribed,Blog Subscriber
-Column Name:,name,lead_name,status,naming_series,company_name,email_id,source,customer,campaign_name,phone,mobile_no,fax,website,territory,type,lead_owner,market_segment,industry,request_type,contact_by,contact_date,company,unsubscribed,blog_subscriber
-Mandatory:,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No
-Type:,Data (text),Data,Select,Select,Data,Data,Select,Link,Link,Data,Data,Data,Data,Link,Select,Link,Select,Link,Select,Link,Date,Link,Check,Check
-Info:,,,"Lead, Open, Replied, Opportunity, Interested, Converted, Do Not Contact","One of: LEAD, LEAD/10-11/, LEAD/MUMBAI/",,,"One of: Advertisement, Blog Post, Campaign, Call, Customer, Exhibition, Supplier, Website, Email",Valid Customer,Valid Campaign,,,,,Valid Territory,"One of: Client, Channel Partner, Consultant",Valid Profile,"One of: Lower Income, Middle Income, Upper Income",Valid Industry Type,"One of: Product Enquiry, Request for Information, Suggestions, Other",Valid Profile,,Valid Company,0 or 1,0 or 1
-Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,
-,,Mart Lakeman,Lead,,Zany Brainy,MartLakeman@einrot.com,,,,,,,,,,,,,,,,,,
-,,Saga Lundqvist,Lead,,Patterson-Fletcher,SagaLundqvist@dayrep.com,,,,,,,,,,,,,,,,,,
-,,Adna Sjöberg,Lead,,Griff's Hamburgers,AdnaSjoberg@gustr.com,,,,,,,,,,,,,,,,,,
-,,Ida Svendsen,Lead,,Rhodes Furniture,IdaDSvendsen@superrito.com,,,,,,,,,,,,,,,,,,
-,,Emppu Hämeenniemi,Lead,,Burger Chef,EmppuHameenniemi@teleworm.us,,,,,,,,,,,,,,,,,,
-,,Eugenio Pisano,Lead,,Stratabiz,EugenioPisano@cuvox.de,,,,,,,,,,,,,,,,,,
-,,Semhar Hagos,Lead,,Home Quarters Warehouse,SemharHagos@einrot.com,,,,,,,,,,,,,,,,,,
-,,Branimira Ivanković,Lead,,Enviro Architectural Designs,BranimiraIvankovic@einrot.com,,,,,,,,,,,,,,,,,,
-,,Shelly Fields,Lead,,Ideal Garden Management,ShellyLFields@superrito.com,,,,,,,,,,,,,,,,,,
-,,Leo Mikulić,Lead,,Listen Up,LeoMikulic@gustr.com,,,,,,,,,,,,,,,,,,
-,,Denisa Jarošová,Lead,,I. Magnin,DenisaJarosova@teleworm.us,,,,,,,,,,,,,,,,,,
-,,Janek Rutkowski,Lead,,First Rate Choice,JanekRutkowski@dayrep.com,,,,,,,,,,,,,,,,,,
-,,美月 宇藤,Lead,,Multi Tech Development,mm@gustr.com,,,,,,,,,,,,,,,,,,
-,,Даниил Афанасьев,Lead,,National Auto Parts,dd@einrot.com,,,,,,,,,,,,,,,,,,
-,,Zorislav Petković,Lead,,Integra Investment Plan,ZorislavPetkovic@cuvox.de,,,,,,,,,,,,,,,,,,
-,,Nanao Niwa,Lead,,The Lawn Guru,NanaoNiwa@superrito.com,,,,,,,,,,,,,,,,,,
-,,Hreiðar Jörundsson,Lead,,Buena Vista Realty Service,HreiarJorundsson@armyspy.com,,,,,,,,,,,,,,,,,,
-,,Lai Chu,Lead,,Bountiful Harvest Health Food Store,ChuThiBichLai@einrot.com,,,,,,,,,,,,,,,,,,
-,,Victor Aksakov,Lead,,P. Samuels Men's Clothiers,VictorAksakov@dayrep.com,,,,,,,,,,,,,,,,,,
-,,Saidalim Bisliev,Lead,,Vinyl Fever,SaidalimBisliev@cuvox.de,,,,,,,,,,,,,,,,,,
-,,Totte Jakobsson,Lead,,Garden Master,TotteJakobsson@armyspy.com,,,,,,,,,,,,,,,,,,
-,,Naná Armas,Lead,,Big Apple,NanaArmasRobles@cuvox.de,,,,,,,,,,,,,,,,,,
-,,Walerian Duda,Lead,,Monk House Sales,WalerianDuda@dayrep.com,,,,,,,,,,,,,,,,,,
-,,Moarimikashi ,Lead,,ManCharm,Moarimikashi@teleworm.us,,,,,,,,,,,,,,,,,,
-,,Dobromił Dąbrowski ,Lead,,Custom Lawn Care,DobromilDabrowski@dayrep.com,,,,,,,,,,,,,,,,,,
-,,Teigan Sinclair,Lead,,The Serendipity Dip,TeiganSinclair@gustr.com,,,,,,,,,,,,,,,,,,
-,,Fahad Guirguis,Lead,,Cavages,FahadSaidGuirguis@gustr.com,,,,,,,,,,,,,,,,,,
-,,Morten Olsen,Lead,,Gallenkamp,MortenJOlsen@armyspy.com,,,,,,,,,,,,,,,,,,
-,,Christian Baecker,Lead,,Webcom Business Services,ChristianBaecker@armyspy.com,,,,,,,,,,,,,,,,,,
-,,Sebastianus Dohmen,Lead,,Accord Investments,SebastianusDohmen@cuvox.de,,,,,,,,,,,,,,,,,,
-,,Eero Koskinen,Lead,,American Appliance,EeroKoskinen@superrito.com,,,,,,,,,,,,,,,,,,
-,,富奎 盧,Lead,,Bettendorf's,LuFuKui@teleworm.us,,,,,,,,,,,,,,,,,,
-,,Milica Jelić,Lead,,House Of Denmark,MilicaJelic@dayrep.com,,,,,,,,,,,,,,,,,,
-,,Barbora Holubová,Lead,,10000 Auto Parts,BarboraHolubova@cuvox.de,,,,,,,,,,,,,,,,,,
-,,Marta Kos,Lead,,Mages,MartaKos@einrot.com,,,,,,,,,,,,,,,,,,
-,,Simret Zula,Lead,,CSK Auto,SimretZula@cuvox.de,,,,,,,,,,,,,,,,,,
-,,Kamil Chlubna,Lead,,Eagle Hardware & Garden,KamilChlubna@einrot.com,,,,,,,,,,,,,,,,,,
-,,Aceline Bolduc,Lead,,Rustler Steak House,AcelineBolduc@armyspy.com,,,,,,,,,,,,,,,,,,
-,,Lucie Stupková,Lead,,ABCO Foods,LucieStupkova@gustr.com,,,,,,,,,,,,,,,,,,
-,,Roland Solvik,Lead,,Trak Auto,RolandSolvik@cuvox.de,,,,,,,,,,,,,,,,,,
-,,Mekirinzukushitakufu ,Lead,,Choices,Mekirinzukushitakufu@teleworm.us,,,,,,,,,,,,,,,,,,
-,,Mukharbek Sultanovich,Lead,,Megatronic,MukharbekSultanovich@cuvox.de,,,,,,,,,,,,,,,,,,
-,,Osman Amanuel,Lead,,Handy Dan,OsmanAmanuel@dayrep.com,,,,,,,,,,,,,,,,,,
-,,幸子 阪部,Lead,,Channel Home Centers,dd@armyspy.com,,,,,,,,,,,,,,,,,,
-,,Masakazu Kamitani,Lead,,Honest Air Group,MasakazuKamitani@superrito.com,,,,,,,,,,,,,,,,,,
-,,Omran Sabbagh,Lead,,Pleasures and Pasttimes,OmranNuhaidSabbagh@einrot.com,,,,,,,,,,,,,,,,,,
-,,Rikako Matsumura,Lead,,Lazysize,RikakoMatsumura@einrot.com,,,,,,,,,,,,,,,,,,
-,,Anayolisa Chukwukadibia,Lead,,Prestiga-Biz,AnayolisaChukwukadibia@einrot.com,,,,,,,,,,,,,,,,,,
-,,Gudmunda Hinna,Lead,,Childs Restaurants,GudmundaHinna@armyspy.com,,,,,,,,,,,,,,,,,,
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo_docs/Profile.csv b/erpnext/utilities/demo/demo_docs/Profile.csv
deleted file mode 100644
index eb456c1..0000000
--- a/erpnext/utilities/demo/demo_docs/Profile.csv
+++ /dev/null
@@ -1,40 +0,0 @@
-Data Import Template,,,,,,,,,,,,,,,,,,,,
-Table:,Profile,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,
-Notes:,,,,,,,,,,,,,,,,,,,,
-Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,
-First data column must be blank.,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,
-DocType:,Profile,,,,,,,,,,,,,,,,,,,
-Column Labels:,ID,Email,First Name,User Type,Enabled,Middle Name (Optional),Last Name,Language,Birth Date,Gender,New Password,User Image,Background Image,Bio,Email Signature,Login After,Login Before,Restrict IP,Last Login,Last IP
-Column Name:,name,email,first_name,user_type,enabled,middle_name,last_name,language,birth_date,gender,new_password,user_image,background_image,bio,email_signature,login_after,login_before,restrict_ip,last_login,last_ip
-Mandatory:,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No,No
-Type:,Data (text),Data,Data,Select,Check,Data,Data,Select,Date,Select,Password,Select,Select,Small Text,Small Text,Int,Int,Data,Read Only,Read Only
-Info:,,,,"One of: System User, Website User",0 or 1,,,"One of: العربية, Deutsch, english, español, français, हिंदी, Hrvatski, nederlands, português, português brasileiro, српски, தமிழ், ไทย",,"One of: Male, Female, Other",,One of: attach_files:,One of: attach_files:,,,Integer,Integer,,,
-Start entering data below this line,,,,,,,,,,,,,,,,,,,,
-,,DikmanShervashidze@armyspy.com,Dikman,System User,1,V,Shervashidze,,,,testpass,,,,,,,,,
-,,Zukutakitoteka@teleworm.us,Zukutakitoteka,System User,1,,,,,,testpass,,,,,,,,,
-,,HatsueKashiwagi@cuvox.de,Hatsue,System User,1,H,Kashiwagi,,,,testpass,,,,,,,,,
-,,NuranVerkleij@einrot.com,Nuran,System User,1,T,Verkleij,,,,testpass,,,,,,,,,
-,,aromn@armyspy.com,Дмитрий,System User,1,З,Пирогов,,,,testpass,,,,,,,,,
-,,TildeLindqvist@cuvox.de,Tilde,System User,1,T,Lindqvist,,,,testpass,,,,,,,,,
-,,MichalSobczak@teleworm.us,Michał,System User,1,S,Sobczak,,,,testpass,,,,,,,,,
-,,GabrielleLoftus@superrito.com,Gabrielle,System User,1,J,Loftus,,,,testpass,,,,,,,,,
-,,VakhitaRyzaev@teleworm.us,Vakhita,System User,1,A,Ryzaev,,,,testpass,,,,,,,,,
-,,CharmaineGaudreau@cuvox.de,Charmaine,System User,1,D,Gaudreau,,,,testpass,,,,,,,,,
-,,RafaelaMaartens@cuvox.de,Rafaëla,System User,1,Z,Maartens,,,,testpass,,,,,,,,,
-,,NuguseYohannes@dayrep.com,Nuguse,System User,0,S,Yohannes,,,,testpass,,,,,,,,,
-,,panca@armyspy.com,Раиса,System User,0,В,Белякова,,,,testpass,,,,,,,,,
-,,CaYinLong@gustr.com,胤隆,System User,1,婷,蔡,,,,testpass,,,,,,,,,
-,,FreddieScott@armyspy.com,Freddie,System User,1,A,Scott,,,,testpass,,,,,,,,,
-,,BergoraVigfusdottir@superrito.com,Bergþóra,System User,1,Ö,Vigfúsdóttir,,,,testpass,,,,,,,,,
-,,WardNajmalDinKalb@cuvox.de,Ward,System User,1,N,Kalb,,,,testpass,,,,,,,,,
-,,WanMai@teleworm.us,Wan,System User,1,A,Mai,,,,testpass,,,,,,,,,
-,,LeonAbdulov@superrito.com,Leon,System User,1,A,Abdulov,,,,testpass,,,,,,,,,
-,,SabinaNovotna@superrito.com,Sabina,System User,1,J,Novotná,,,,testpass,,,,,,,,,
diff --git a/erpnext/utilities/demo/demo_docs/Salary_Structure.csv b/erpnext/utilities/demo/demo_docs/Salary_Structure.csv
deleted file mode 100644
index a74de90..0000000
--- a/erpnext/utilities/demo/demo_docs/Salary_Structure.csv
+++ /dev/null
@@ -1,24 +0,0 @@
-Data Import Template,,,,,,,,,,,,,,,,,,,,,,,,
-Table:,Salary Structure,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,
-Notes:,,,,,,,,,,,,,,,,,,,,,,,,
-Please do not change the template headings.,,,,,,,,,,,,,,,,,,,,,,,,
-First data column must be blank.,,,,,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,,,,,,,,,,,,,,,,
-"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,,,,,,,,,,,,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,,,,,,,,,,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,,,,,,,,,,,,,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,,,,,,,,,,,,,,,,
-,,,,,,,,,,,,,,,,,,,,,,,,
-DocType:,Salary Structure,,,,,,,,,,,,,,~,Salary Structure Earning,earning_details,,,~,Salary Structure Deduction,deduction_details,,
-Column Labels:,ID,Employee,Is Active,From Date,Company,Employee Name,Branch,Designation,Department,Grade,To Date,Total Earning,Total Deduction,Net Pay,,ID,Type,Amount,Reduce Earning for Leave Without Pay (LWP),,ID,Type,Amount,Reduce Deduction for Leave Without Pay (LWP)
-Column Name:,name,employee,is_active,from_date,company,employee_name,branch,designation,department,grade,to_date,total_earning,total_deduction,net_pay,~,name,e_type,modified_value,depend_on_lwp,~,name,d_type,d_modified_amt,depend_on_lwp
-Mandatory:,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,No,No,No,No,,Yes,Yes,No,No,,Yes,Yes,No,No
-Type:,Data (text),Link,Select,Date,Select,Data,Select,Select,Select,Select,Date,Currency,Currency,Currency,,Data,Link,Currency,Check,,Data,Link,Currency,Check
-Info:,,Valid Employee,"One of: Yes, No",,Valid Company,,Valid Branch,Valid Designation,Valid Department,Valid Grade,,,,,,Leave blank for new records,Valid Earning Type,,0 or 1,,Leave blank for new records,Valid Deduction Type,,0 or 1
-Start entering data below this line,,,,,,,,,,,,,,,,,,,,,,,,
-,,EMP/0001,Yes,2013-08-06,Wind Power LLC,Dikman Shervashidze Shervashidze,,,,,,5000,400,4600,,,Basic,5000,,,,Income Tax,400,
-,,EMP/0002,Yes,2013-08-06,Wind Power LLC,Zukutakitoteka,,,,,,6700,400,6300,,,Basic,6700,,,,Income Tax,400,
-,,EMP/0003,Yes,2013-08-06,Wind Power LLC,Hatsue Kashiwagi,,,,,,3400,400,3000,,,Basic,3400,,,,Income Tax,400,
-,,EMP/0004,Yes,2013-08-06,Wind Power LLC,Nuran Verkleij,,,,,,6990,566,6424,,,Basic,6990,,,,Income Tax,566,
diff --git a/erpnext/utilities/demo/demo_docs/Stock Reconcilation Template.csv b/erpnext/utilities/demo/demo_docs/Stock Reconcilation Template.csv
deleted file mode 100644
index eddc2bc..0000000
--- a/erpnext/utilities/demo/demo_docs/Stock Reconcilation Template.csv
+++ /dev/null
@@ -1,25 +0,0 @@
-Stock Reconciliation,,,,,,
-----,,,,,,
-"Stock Reconciliation can be used to update the stock on a particular date, usually as per physical inventory.",,,,,,
-"When submitted, the system creates difference entries to set the given stock and valuation on this date.",,,,,,
-It can also be used to create opening stock entries and to fix stock value.,,,,,,
-----,,,,,,
-Notes:,,,,,,
-Item Code and Warehouse should already exist.,,,,,,
-You can update either Quantity or Valuation Rate or both.,,,,,,
-"If no change in either Quantity or Valuation Rate, leave the cell blank.",,,,,,
-----,,,,,,
-Item Code,Warehouse,Quantity,Valuation Rate,,,
-Base Bearing Plate,Stores,4,750,,,
-Base Plate,Stores,4,1092,,,
-Bearing Block,Stores,2,355,,,
-Bearing Collar,Stores,4,980,,,
-Bearing Pipe,Stores,5,599,,,
-Blade Rib,Stores,3,430,,,
-Disc Collars,Stores,7,3000,,,
-External Disc,Stores,2,1200,,,
-Internal Disc,Stores,2,1000,,,
-Shaft,Stores,5,600,,,
-Stand,Stores,2,200,,,
-Upper Bearing Plate,Stores,10,400,,,
-Wing Sheet,Stores,20,300,,,
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo_docs/Supplier.csv b/erpnext/utilities/demo/demo_docs/Supplier.csv
deleted file mode 100644
index 6f91164..0000000
--- a/erpnext/utilities/demo/demo_docs/Supplier.csv
+++ /dev/null
@@ -1,29 +0,0 @@
-Data Import Template,,,,,,,,,
-Table:,Supplier,,,,,,,,
-,,,,,,,,,
-,,,,,,,,,
-Notes:,,,,,,,,,
-Please do not change the template headings.,,,,,,,,,
-First data column must be blank.,,,,,,,,,
-Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,,,,,,
-"For updating, you can update only selective columns.",,,,,,,,,
-"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,,,,,,
-"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,,,,,,
-You can only upload upto 5000 records in one go. (may be less in some cases),,,,,,,,,
-,,,,,,,,,
-Column Labels,ID,Supplier Name,Supplier Type,Company,Series,Default Currency,Supplier Details,Credit Days,Website
-Column Name:,name,supplier_name,supplier_type,company,naming_series,default_currency,supplier_details,credit_days,website
-Mandatory:,Yes,Yes,Yes,Yes,No,No,No,No,No
-Type:,Data (text),Data,Link,Link,Select,Link,Text,Int,Data
-Info:,,,Valid Supplier Type,Valid Company,"One of: SUPP, SUPP/10-11/",Valid Currency,,Integer,
-Start entering data below this line,,,,,,,,,
-,Helios Air,Helios Air,Raw Material,Wind Power LLC,,,,,
-,Ks Merchandise,Ks Merchandise,Electrical,Wind Power LLC,,,,,
-,HomeBase,HomeBase,Raw Material,Wind Power LLC,,,,,
-,Scott Ties,Scott Ties,Raw Material,Wind Power LLC,,,,,
-,Reliable Investments,Reliable Investments,Services,Wind Power LLC,,,,,
-,Nan Duskin,Nan Duskin,Services,Wind Power LLC,,,,,
-,Rainbow Records,Rainbow Records,Services,Wind Power LLC,,,,,
-,New World Realty,New World Realty,Services,Wind Power LLC,,,,,
-,Asiatic Solutions,Asiatic Solutions,Raw Material,Wind Power LLC,,,,,
-,Eagle Hardware,Eagle Hardware,Raw Material,Wind Power LLC,,,,,
\ No newline at end of file
diff --git a/erpnext/utilities/demo/demo_docs/bearing-block.png b/erpnext/utilities/demo/demo_docs/bearing-block.png
deleted file mode 100644
index b60f2f4..0000000
--- a/erpnext/utilities/demo/demo_docs/bearing-block.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/utilities/demo/demo_docs/wind-turbine.png b/erpnext/utilities/demo/demo_docs/wind-turbine.png
deleted file mode 100644
index 81fcfc2..0000000
--- a/erpnext/utilities/demo/demo_docs/wind-turbine.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/utilities/demo/make_demo.py b/erpnext/utilities/demo/make_demo.py
deleted file mode 100644
index 4d40670..0000000
--- a/erpnext/utilities/demo/make_demo.py
+++ /dev/null
@@ -1,434 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-import webnotes, os, datetime
-import webnotes.utils
-from webnotes.utils import random_string, cstr
-from webnotes.widgets import query_report
-import random
-import json
-
-webnotes.session = webnotes._dict({"user":"Administrator"})
-from webnotes.core.page.data_import_tool.data_import_tool import upload
-
-# fix price list
-# fix fiscal year
-
-company = "Wind Power LLC"
-company_abbr = "WP"
-country = "United States"
-currency = "USD"
-time_zone = "America/New_York"
-start_date = '2013-01-01'
-bank_name = "Citibank"
-runs_for = None
-prob = {
-	"default": { "make": 0.6, "qty": (1,5) },
-	"Sales Order": { "make": 0.4, "qty": (1,3) },
-	"Purchase Order": { "make": 0.7, "qty": (1,15) },
-	"Purchase Receipt": { "make": 0.7, "qty": (1,15) },
-}
-
-def make(reset=False, simulate=True):
-	#webnotes.flags.print_messages = True
-	webnotes.flags.mute_emails = True
-	webnotes.flags.rollback_on_exception = True
-	
-	if not webnotes.conf.demo_db_name:
-		raise Exception("conf.py does not have demo_db_name")
-	
-	if reset:
-		setup()
-	else:
-		if webnotes.conn:
-			webnotes.conn.close()
-		
-		webnotes.connect(db_name=webnotes.conf.demo_db_name)
-	
-	if simulate:
-		_simulate()
-		
-def setup():
-	install()
-	webnotes.connect(db_name=webnotes.conf.demo_db_name)
-	complete_setup()
-	make_customers_suppliers_contacts()
-	make_items()
-	make_price_lists()
-	make_users_and_employees()
-	make_bank_account()
-	# make_opening_stock()
-	# make_opening_accounts()
-
-def _simulate():
-	global runs_for
-	current_date = webnotes.utils.getdate(start_date)
-	
-	# continue?
-	last_posting = webnotes.conn.sql("""select max(posting_date) from `tabStock Ledger Entry`""")
-	if last_posting[0][0]:
-		current_date = webnotes.utils.add_days(last_posting[0][0], 1)
-
-	# run till today
-	if not runs_for:
-		runs_for = webnotes.utils.date_diff(webnotes.utils.nowdate(), current_date)
-	
-	for i in xrange(runs_for):		
-		print current_date.strftime("%Y-%m-%d")
-		webnotes.local.current_date = current_date
-		
-		if current_date.weekday() in (5, 6):
-			current_date = webnotes.utils.add_days(current_date, 1)
-			continue
-
-		run_sales(current_date)
-		run_purchase(current_date)
-		run_manufacturing(current_date)
-		run_stock(current_date)
-		run_accounts(current_date)
-
-		current_date = webnotes.utils.add_days(current_date, 1)
-		
-def run_sales(current_date):
-	if can_make("Quotation"):
-		for i in xrange(how_many("Quotation")):
-			make_quotation(current_date)
-					
-	if can_make("Sales Order"):
-		for i in xrange(how_many("Sales Order")):
-			make_sales_order(current_date)
-
-def run_accounts(current_date):
-	if can_make("Sales Invoice"):
-		from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice
-		report = "Ordered Items to be Billed"
-		for so in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Sales Invoice")]:
-			si = webnotes.bean(make_sales_invoice(so))
-			si.doc.posting_date = current_date
-			si.insert()
-			si.submit()
-			webnotes.conn.commit()
-
-	if can_make("Purchase Invoice"):
-		from erpnext.stock.doctype.purchase_receipt.purchase_receipt import make_purchase_invoice
-		report = "Received Items to be Billed"
-		for pr in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Purchase Invoice")]:
-			pi = webnotes.bean(make_purchase_invoice(pr))
-			pi.doc.posting_date = current_date
-			pi.doc.bill_no = random_string(6)
-			pi.insert()
-			pi.submit()
-			webnotes.conn.commit()
-			
-	if can_make("Payment Received"):
-		from erpnext.accounts.doctype.journal_voucher.journal_voucher import get_payment_entry_from_sales_invoice
-		report = "Accounts Receivable"
-		for si in list(set([r[4] for r in query_report.run(report, {"report_date": current_date })["result"] if r[3]=="Sales Invoice"]))[:how_many("Payment Received")]:
-			jv = webnotes.bean(get_payment_entry_from_sales_invoice(si))
-			jv.doc.posting_date = current_date
-			jv.doc.cheque_no = random_string(6)
-			jv.doc.cheque_date = current_date
-			jv.insert()
-			jv.submit()
-			webnotes.conn.commit()
-			
-	if can_make("Payment Made"):
-		from erpnext.accounts.doctype.journal_voucher.journal_voucher import get_payment_entry_from_purchase_invoice
-		report = "Accounts Payable"
-		for pi in list(set([r[4] for r in query_report.run(report, {"report_date": current_date })["result"] if r[3]=="Purchase Invoice"]))[:how_many("Payment Made")]:
-			jv = webnotes.bean(get_payment_entry_from_purchase_invoice(pi))
-			jv.doc.posting_date = current_date
-			jv.doc.cheque_no = random_string(6)
-			jv.doc.cheque_date = current_date
-			jv.insert()
-			jv.submit()
-			webnotes.conn.commit()
-
-def run_stock(current_date):
-	# make purchase requests
-	if can_make("Purchase Receipt"):
-		from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt
-		from erpnext.stock.stock_ledger import NegativeStockError
-		report = "Purchase Order Items To Be Received"
-		for po in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Purchase Receipt")]:
-			pr = webnotes.bean(make_purchase_receipt(po))
-			pr.doc.posting_date = current_date
-			pr.doc.fiscal_year = cstr(current_date.year)
-			pr.insert()
-			try:
-				pr.submit()
-				webnotes.conn.commit()
-			except NegativeStockError: pass
-	
-	# make delivery notes (if possible)
-	if can_make("Delivery Note"):
-		from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note
-		from erpnext.stock.stock_ledger import NegativeStockError
-		from erpnext.stock.doctype.serial_no.serial_no import SerialNoRequiredError, SerialNoQtyError
-		report = "Ordered Items To Be Delivered"
-		for so in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Delivery Note")]:
-			dn = webnotes.bean(make_delivery_note(so))
-			dn.doc.posting_date = current_date
-			dn.doc.fiscal_year = cstr(current_date.year)
-			dn.insert()
-			try:
-				dn.submit()
-				webnotes.conn.commit()
-			except NegativeStockError: pass
-			except SerialNoRequiredError: pass
-			except SerialNoQtyError: pass
-	
-	# try submitting existing
-	for dn in webnotes.conn.get_values("Delivery Note", {"docstatus": 0}, "name"):
-		b = webnotes.bean("Delivery Note", dn[0])
-		b.submit()
-		webnotes.conn.commit()
-	
-def run_purchase(current_date):
-	# make material requests for purchase items that have negative projected qtys
-	if can_make("Material Request"):
-		report = "Items To Be Requested"
-		for row in query_report.run(report)["result"][:how_many("Material Request")]:
-			mr = webnotes.new_bean("Material Request")
-			mr.doc.material_request_type = "Purchase"
-			mr.doc.transaction_date = current_date
-			mr.doc.fiscal_year = cstr(current_date.year)
-			mr.doclist.append({
-				"doctype": "Material Request Item",
-				"parentfield": "indent_details",
-				"schedule_date": webnotes.utils.add_days(current_date, 7),
-				"item_code": row[0],
-				"qty": -row[-1]
-			})
-			mr.insert()
-			mr.submit()
-	
-	# make supplier quotations
-	if can_make("Supplier Quotation"):
-		from erpnext.stock.doctype.material_request.material_request import make_supplier_quotation
-		report = "Material Requests for which Supplier Quotations are not created"
-		for row in query_report.run(report)["result"][:how_many("Supplier Quotation")]:
-			if row[0] != "Total":
-				sq = webnotes.bean(make_supplier_quotation(row[0]))
-				sq.doc.transaction_date = current_date
-				sq.doc.fiscal_year = cstr(current_date.year)
-				sq.insert()
-				sq.submit()
-				webnotes.conn.commit()
-		
-	# make purchase orders
-	if can_make("Purchase Order"):
-		from erpnext.stock.doctype.material_request.material_request import make_purchase_order
-		report = "Requested Items To Be Ordered"
-		for row in query_report.run(report)["result"][:how_many("Purchase Order")]:
-			if row[0] != "Total":
-				po = webnotes.bean(make_purchase_order(row[0]))
-				po.doc.transaction_date = current_date
-				po.doc.fiscal_year = cstr(current_date.year)
-				po.insert()
-				po.submit()
-				webnotes.conn.commit()
-			
-def run_manufacturing(current_date):
-	from erpnext.stock.stock_ledger import NegativeStockError
-	from erpnext.stock.doctype.stock_entry.stock_entry import IncorrectValuationRateError, DuplicateEntryForProductionOrderError
-
-	ppt = webnotes.bean("Production Planning Tool", "Production Planning Tool")
-	ppt.doc.company = company
-	ppt.doc.use_multi_level_bom = 1
-	ppt.doc.purchase_request_for_warehouse = "Stores - WP"
-	ppt.run_method("get_open_sales_orders")
-	ppt.run_method("get_items_from_so")
-	ppt.run_method("raise_production_order")
-	ppt.run_method("raise_purchase_request")
-	webnotes.conn.commit()
-	
-	# submit production orders
-	for pro in webnotes.conn.get_values("Production Order", {"docstatus": 0}, "name"):
-		b = webnotes.bean("Production Order", pro[0])
-		b.doc.wip_warehouse = "Work in Progress - WP"
-		b.submit()
-		webnotes.conn.commit()
-		
-	# submit material requests
-	for pro in webnotes.conn.get_values("Material Request", {"docstatus": 0}, "name"):
-		b = webnotes.bean("Material Request", pro[0])
-		b.submit()
-		webnotes.conn.commit()
-	
-	# stores -> wip
-	if can_make("Stock Entry for WIP"):		
-		for pro in query_report.run("Open Production Orders")["result"][:how_many("Stock Entry for WIP")]:
-			make_stock_entry_from_pro(pro[0], "Material Transfer", current_date)
-		
-	# wip -> fg
-	if can_make("Stock Entry for FG"):		
-		for pro in query_report.run("Production Orders in Progress")["result"][:how_many("Stock Entry for FG")]:
-			make_stock_entry_from_pro(pro[0], "Manufacture/Repack", current_date)
-
-	# try posting older drafts (if exists)
-	for st in webnotes.conn.get_values("Stock Entry", {"docstatus":0}, "name"):
-		try:
-			webnotes.bean("Stock Entry", st[0]).submit()
-			webnotes.conn.commit()
-		except NegativeStockError: pass
-		except IncorrectValuationRateError: pass
-		except DuplicateEntryForProductionOrderError: pass
-
-def make_stock_entry_from_pro(pro_id, purpose, current_date):
-	from erpnext.manufacturing.doctype.production_order.production_order import make_stock_entry
-	from erpnext.stock.stock_ledger import NegativeStockError
-	from erpnext.stock.doctype.stock_entry.stock_entry import IncorrectValuationRateError, DuplicateEntryForProductionOrderError
-
-	try:
-		st = webnotes.bean(make_stock_entry(pro_id, purpose))
-		st.doc.posting_date = current_date
-		st.doc.fiscal_year = cstr(current_date.year)
-		for d in st.doclist.get({"parentfield": "mtn_details"}):
-			d.expense_account = "Stock Adjustment - " + company_abbr
-			d.cost_center = "Main - " + company_abbr
-		st.insert()
-		webnotes.conn.commit()
-		st.submit()
-		webnotes.conn.commit()
-	except NegativeStockError: pass
-	except IncorrectValuationRateError: pass
-	except DuplicateEntryForProductionOrderError: pass
-	
-def make_quotation(current_date):
-	b = webnotes.bean([{
-		"creation": current_date,
-		"doctype": "Quotation",
-		"quotation_to": "Customer",
-		"customer": get_random("Customer"),
-		"order_type": "Sales",
-		"transaction_date": current_date,
-		"fiscal_year": cstr(current_date.year)
-	}])
-	
-	add_random_children(b, {
-		"doctype": "Quotation Item", 
-		"parentfield": "quotation_details", 
-	}, rows=3, randomize = {
-		"qty": (1, 5),
-		"item_code": ("Item", {"is_sales_item": "Yes"})
-	}, unique="item_code")
-	
-	b.insert()
-	webnotes.conn.commit()
-	b.submit()
-	webnotes.conn.commit()
-	
-def make_sales_order(current_date):
-	q = get_random("Quotation", {"status": "Submitted"})
-	if q:
-		from erpnext.selling.doctype.quotation.quotation import make_sales_order
-		so = webnotes.bean(make_sales_order(q))
-		so.doc.transaction_date = current_date
-		so.doc.delivery_date = webnotes.utils.add_days(current_date, 10)
-		so.insert()
-		webnotes.conn.commit()
-		so.submit()
-		webnotes.conn.commit()
-	
-def add_random_children(bean, template, rows, randomize, unique=None):
-	for i in xrange(random.randrange(1, rows)):
-		d = template.copy()
-		for key, val in randomize.items():
-			if isinstance(val[0], basestring):
-				d[key] = get_random(*val)
-			else:
-				d[key] = random.randrange(*val)
-		
-		if unique:
-			if not bean.doclist.get({"doctype": d["doctype"], unique:d[unique]}):
-				bean.doclist.append(d)
-		else:
-			bean.doclist.append(d)
-
-def get_random(doctype, filters=None):
-	condition = []
-	if filters:
-		for key, val in filters.items():
-			condition.append("%s='%s'" % (key, val))
-	if condition:
-		condition = " where " + " and ".join(condition)
-	else:
-		condition = ""
-		
-	out = webnotes.conn.sql("""select name from `tab%s` %s
-		order by RAND() limit 0,1""" % (doctype, condition))
-
-	return out and out[0][0] or None
-
-def can_make(doctype):
-	return random.random() < prob.get(doctype, prob["default"])["make"]
-
-def how_many(doctype):
-	return random.randrange(*prob.get(doctype, prob["default"])["qty"])
-
-def install():
-	print "Creating Fresh Database..."
-	from webnotes.install_lib.install import Installer
-	from webnotes import conf
-	inst = Installer('root')
-	inst.install(conf.demo_db_name, verbose=1, force=1)
-
-def complete_setup():
-	print "Complete Setup..."
-	from erpnext.setup.page.setup_wizard.setup_wizard import setup_account
-	setup_account({
-		"first_name": "Test",
-		"last_name": "User",
-		"fy_start_date": "2013-01-01",
-		"fy_end_date": "2013-12-31",
-		"industry": "Manufacturing",
-		"company_name": company,
-		"company_abbr": company_abbr,
-		"currency": currency,
-		"timezone": time_zone,
-		"country": country
-	})
-
-	import_data("Fiscal_Year")
-	
-def make_items():
-	import_data("Item")
-	import_data("BOM", submit=True)
-
-def make_price_lists():
-	import_data("Item_Price", overwrite=True)
-	
-def make_customers_suppliers_contacts():
-	import_data(["Customer", "Supplier", "Contact", "Address", "Lead"])
-
-def make_users_and_employees():
-	webnotes.conn.set_value("HR Settings", None, "emp_created_by", "Naming Series")
-	webnotes.conn.commit()
-	
-	import_data(["Profile", "Employee", "Salary_Structure"])
-
-def make_bank_account():
-	ba = webnotes.bean({
-		"doctype": "Account",
-		"account_name": bank_name,
-		"account_type": "Bank or Cash",
-		"group_or_ledger": "Ledger",
-		"parent_account": "Bank Accounts - " + company_abbr,
-		"company": company
-	}).insert()
-	
-	webnotes.set_value("Company", company, "default_bank_account", ba.doc.name)
-	webnotes.conn.commit()
-
-def import_data(dt, submit=False, overwrite=False):
-	if not isinstance(dt, (tuple, list)):
-		dt = [dt]
-	
-	for doctype in dt:
-		print "Importing", doctype.replace("_", " "), "..."
-		webnotes.local.form_dict = webnotes._dict()
-		if submit:
-			webnotes.form_dict["params"] = json.dumps({"_submit": 1})
-		webnotes.uploaded_file = os.path.join(os.path.dirname(__file__), "demo_docs", doctype+".csv")
-		upload(overwrite=overwrite)
diff --git a/erpnext/utilities/demo/make_erpnext_demo.py b/erpnext/utilities/demo/make_erpnext_demo.py
deleted file mode 100644
index a094239..0000000
--- a/erpnext/utilities/demo/make_erpnext_demo.py
+++ /dev/null
@@ -1,124 +0,0 @@
-if __name__=="__main__":
-	import sys
-	sys.path.extend([".", "lib", "app"])
-
-import webnotes, os
-import utilities.demo.make_demo
-
-def make_demo_app(site=None):
-	webnotes.init(site=site)
-	webnotes.flags.mute_emails = 1
-
-	utilities.demo.make_demo.make(reset=True, simulate=False)
-	# setup demo user etc so that the site it up faster, while the data loads
-	make_demo_user()
-	make_demo_login_page()
-	make_demo_on_login_script()
-	utilities.demo.make_demo.make(reset=False, simulate=True)
-	webnotes.destroy()
-
-def make_demo_user():
-	from webnotes.auth import _update_password
-	
-	roles = ["Accounts Manager", "Analytics", "Expense Approver", "Accounts User", 
-		"Leave Approver", "Blogger", "Customer", "Sales Manager", "Employee", "Support Manager", 
-		"HR Manager", "HR User", "Maintenance Manager", "Maintenance User", "Material Manager", 
-		"Material Master Manager", "Material User", "Manufacturing Manager", 
-		"Manufacturing User", "Projects User", "Purchase Manager", "Purchase Master Manager", 
-		"Purchase User", "Quality Manager", "Report Manager", "Sales Master Manager", 
-		"Sales User", "Supplier", "Support Team"]
-		
-	def add_roles(bean):
-		for role in roles:
-			p.doclist.append({
-				"doctype": "UserRole",
-				"parentfield": "user_roles",
-				"role": role
-			})
-	
-	# make demo user
-	if webnotes.conn.exists("Profile", "demo@erpnext.com"):
-		webnotes.delete_doc("Profile", "demo@erpnext.com")
-
-	p = webnotes.new_bean("Profile")
-	p.doc.email = "demo@erpnext.com"
-	p.doc.first_name = "Demo"
-	p.doc.last_name = "User"
-	p.doc.enabled = 1
-	p.doc.user_type = "ERPNext Demo"
-	p.insert()
-	add_roles(p)
-	p.save()
-	_update_password("demo@erpnext.com", "demo")
-	
-	# make system manager user
-	if webnotes.conn.exists("Profile", "admin@erpnext.com"):
-		webnotes.delete_doc("Profile", "admin@erpnext.com")
-	
-	p = webnotes.new_bean("Profile")
-	p.doc.email = "admin@erpnext.com"
-	p.doc.first_name = "Admin"
-	p.doc.last_name = "User"
-	p.doc.enabled = 1
-	p.doc.user_type = "System User"
-	p.insert()
-	roles.append("System Manager")
-	add_roles(p)
-	p.save()
-	_update_password("admin@erpnext.com", "admin010123")
-	
-	# only read for newsletter
-	webnotes.conn.sql("""update `tabDocPerm` set `write`=0, `create`=0, `cancel`=0
-		where parent='Newsletter'""")
-	webnotes.conn.sql("""update `tabDocPerm` set `write`=0, `create`=0, `cancel`=0
-		where parent='Profile' and role='All'""")
-	
-	webnotes.conn.commit()
-
-def make_demo_login_page():
-	webnotes.conn.set_value("Website Settings", None, "home_page", "")
-
-	webnotes.conn.sql("""delete from `tabWeb Page` where name='demo-login'""")
-	p = webnotes.new_bean("Web Page")
-	p.doc.title = "Demo Login"
-	p.doc.published = 1
-	p.doc.description = "ERPNext Demo Login"
-
-	with open(os.path.join(os.path.dirname(__file__), "demo-login.html"), "r") as dfile:
-		p.doc.main_section = dfile.read()
-
-	p.doc.insert_code = 1
-	with open(os.path.join(os.path.dirname(__file__), "demo-login.js"), "r") as dfile:
-		p.doc.javascript = dfile.read()
-
-	p.doc.insert_style = 1
-	with open(os.path.join(os.path.dirname(__file__), "demo-login.css"), "r") as dfile:
-		p.doc.css = dfile.read()
-		
-	p.insert()
-	
-	website_settings = webnotes.bean("Website Settings", "Website Settings")
-	website_settings.doc.home_page = "demo-login"
-	website_settings.doc.disable_signup = 1
-	website_settings.save()
-	
-	webnotes.conn.commit()
-
-def make_demo_on_login_script():
-	import shutil
-	import webnotes.plugins
-	custom_script_path = webnotes.plugins.get_path("Core", "DocType", "Control Panel")
-	webnotes.create_folder(os.path.dirname(custom_script_path))
-	
-	shutil.copyfile(os.path.join(os.path.dirname(__file__), "demo_control_panel.py"), custom_script_path)
-	
-	cp = webnotes.bean("Control Panel")
-	cp.doc.custom_startup_code = """wn.ui.toolbar.show_banner('You are using ERPNext Demo. To start your own ERPNext Trial, <a href="https://erpnext.com/pricing-and-signup" target="_blank">click here</a>')"""
-	cp.save()
-
-	webnotes.conn.commit()
-
-if __name__=="__main__":
-	import sys
-	site = sys.argv[1:]
-	make_demo_app(site=site and site[0] or None)
