diff --git a/selling/doctype/lead/lead.js b/selling/doctype/lead/lead.js
index 1b51505..b3c200d 100644
--- a/selling/doctype/lead/lead.js
+++ b/selling/doctype/lead/lead.js
@@ -105,29 +105,9 @@
 	})
 }
 
-// Create New Opportunity
-// ===============================================================
 cur_frm.cscript['Create Opportunity'] = function(){
-	var doc = cur_frm.doc;
-	$c('runserverobj',args={ 'method':'check_status', 'docs':wn.model.compress(make_doclist(doc.doctype, doc.name))},
-		function(r,rt){
-			if(r.message == 'Converted'){
-				msgprint("This lead is now converted to customer. Please create enquiry on behalf of customer");
-			}
-			else{
-				n = wn.model.make_new_doc_and_get_name("Opportunity");
-				$c('dt_map', args={
-					'docs':wn.model.compress([locals["Opportunity"][n]]),
-					'from_doctype':'Lead',
-					'to_doctype':'Opportunity',
-					'from_docname':doc.name,
-					'from_to_list':"[['Lead', 'Opportunity']]"
-				}
-				, function(r,rt) {
-						loaddoc("Opportunity", n);
-					}
-				);
-			}
-		}
-	);
+	wn.model.open_mapped_doc({
+		method: "selling.doctype.lead.lead.make_opportunity",
+		source_name: cur_frm.doc.name
+	})
 }
\ No newline at end of file
diff --git a/selling/doctype/lead/lead.py b/selling/doctype/lead/lead.py
index 3a3d8e5..4dde84a 100644
--- a/selling/doctype/lead/lead.py
+++ b/selling/doctype/lead/lead.py
@@ -100,10 +100,7 @@
 @webnotes.whitelist()
 def make_customer(source_name, target_doclist=None):
 	from webnotes.model.mapper import get_mapped_doclist
-	
-	if target_doclist:
-		target_doclist = json.loads(target_doclist)
-	
+		
 	doclist = get_mapped_doclist("Lead", source_name, 
 		{"Lead": {
 			"doctype": "Customer",
@@ -115,4 +112,20 @@
 			}
 		}}, target_doclist)
 		
+	return [d.fields for d in doclist]
+	
+@webnotes.whitelist()
+def make_opportunity(source_name, target_doclist=None):
+	from webnotes.model.mapper import get_mapped_doclist
+		
+	doclist = get_mapped_doclist("Lead", source_name, 
+		{"Lead": {
+			"doctype": "Opportunity",
+			"field_map": {
+				"campaign_name": "campaign",
+				"doctype": "enquiry_from",
+				"name": "lead",
+			}
+		}}, target_doclist)
+		
 	return [d.fields for d in doclist]
\ No newline at end of file
diff --git a/selling/doctype/sales_order/sales_order.js b/selling/doctype/sales_order/sales_order.js
index c4d50cc..6ed5f1c 100644
--- a/selling/doctype/sales_order/sales_order.js
+++ b/selling/doctype/sales_order/sales_order.js
@@ -195,21 +195,10 @@
 }
 
 cur_frm.cscript['Make Material Request'] = function() {
-	var doc = cur_frm.doc;
-	if (doc.docstatus == 1) { 
-	n = wn.model.make_new_doc_and_get_name("Material Request");
-	$c('dt_map', args={
-					'docs':wn.model.compress([locals["Material Request"][n]]),
-					'from_doctype':'Sales Order',
-					'to_doctype':'Material Request',
-					'from_docname':doc.name,
-		'from_to_list':"[['Sales Order', 'Material Request'], ['Sales Order Item', 'Material Request Item']]"
-	}
-	, function(r,rt) {
-		loaddoc("Material Request", n);
-		}
-		);
-	}
+	wn.model.open_mapped_doc({
+		method: "selling.doctype.sales_order.sales_order.make_material_request",
+		source_name: cur_frm.doc.name
+	})
 }
 
 
diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py
index ec365a2..0c9237a 100644
--- a/selling/doctype/sales_order/sales_order.py
+++ b/selling/doctype/sales_order/sales_order.py
@@ -378,4 +378,31 @@
 		"currency": webnotes.conn.get_default("currency"),
 		"currency_symbols": json.dumps(dict(webnotes.conn.sql("""select name, symbol
 			from tabCurrency where ifnull(enabled,0)=1""")))
-	}
\ No newline at end of file
+	}
+	
+@webnotes.whitelist()
+def make_material_request(source_name, target_doclist=None):
+	from webnotes.model.mapper import get_mapped_doclist
+	
+	def postprocess(source, doclist):
+		doclist[0].material_request_type = "Purchase"
+	
+	doclist = get_mapped_doclist("Sales Order", source_name, {
+		"Sales Order": {
+			"doctype": "Material Request", 
+			"validation": {
+				"docstatus": ["=", 1]
+			}
+		}, 
+		"Sales Order Item": {
+			"doctype": "Material Request Item", 
+			"field_map": {
+				"parent": "sales_order_no", 
+				"reserved_warehouse": "warehouse", 
+				"stock_uom": "uom"
+			}
+		}
+	}, target_doclist, postprocess)
+	
+	return [d.fields for d in doclist]
+	
\ No newline at end of file
diff --git a/selling/doctype/sales_order/test_sales_order.py b/selling/doctype/sales_order/test_sales_order.py
index 40a10b4..7678f37 100644
--- a/selling/doctype/sales_order/test_sales_order.py
+++ b/selling/doctype/sales_order/test_sales_order.py
@@ -3,6 +3,19 @@
 import unittest
 
 class TestSalesOrder(unittest.TestCase):
+	def test_make_material_request(self):
+		from selling.doctype.sales_order.sales_order import make_material_request
+		
+		self.assertRaises(webnotes.ValidationError, make_material_request, 
+			"_T-Sales Order-00001")
+
+		sales_order = webnotes.bean("Sales Order", "_T-Sales Order-00001")
+		sales_order.submit()
+		mr = make_material_request("_T-Sales Order-00001")
+		
+		self.assertEquals(mr[0]["material_request_type"], "Purchase")
+		self.assertEquals(len(mr), len(sales_order.doclist))
+				
 	def create_so(self, so_doclist = None):
 		if not so_doclist:
 			so_doclist =test_records[0]
