diff --git a/erpnext/patches/july_2012/deprecate_import_data_control.py b/erpnext/patches/july_2012/deprecate_import_data_control.py
new file mode 100644
index 0000000..d0cd7de
--- /dev/null
+++ b/erpnext/patches/july_2012/deprecate_import_data_control.py
@@ -0,0 +1,10 @@
+def execute():
+	"""
+		deprecate:
+		* doctype - import data control
+		* page - import data (old)
+	"""
+	import webnotes
+	from webnotes.model import delete_doc
+	delete_doc('DocType', 'Import Data Control')
+	delete_doc('Page', 'Import Data')
\ No newline at end of file
diff --git a/erpnext/patches/patch_list.py b/erpnext/patches/patch_list.py
index 0307a0f..ab95e95 100644
--- a/erpnext/patches/patch_list.py
+++ b/erpnext/patches/patch_list.py
@@ -481,5 +481,10 @@
 		'patch_module': 'patches.july_2012',
 		'patch_file': 'packing_list_cleanup_and_serial_no',
 		'description': "packing list cleanup and serial no status update"
-	},	
+	},
+	{
+		'patch_module': 'patches.july_2012',
+		'patch_file': 'deprecate_import_data_control',
+		'description': "deprecate doctype - Import Data Control and page - Import Data"
+	},
 ]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/import_data_control/__init__.py b/erpnext/setup/doctype/import_data_control/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/setup/doctype/import_data_control/__init__.py
+++ /dev/null
diff --git a/erpnext/setup/doctype/import_data_control/import_data_control.py b/erpnext/setup/doctype/import_data_control/import_data_control.py
deleted file mode 100644
index 9e7461e..0000000
--- a/erpnext/setup/doctype/import_data_control/import_data_control.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-# 
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# Please edit this list and import only required elements
-import webnotes
-
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, getchildren, make_autoname
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
-sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-	
-# -----------------------------------------------------------------------------------------
-
-
-class DocType:
-  def __init__(self,d,dl):
-    self.doc, self.doclist = d,dl
-
-  def get_master_lst(self):
-    
-    return [r[0] for r in sql("select name from `tabDocType` where document_type = 'Master'")]
-
-  def get_child_lst(self,nm):
-    res = [nm]
-    
-    ret=sql("select options from `tabDocField` where parent='%s' and fieldtype = 'Table'"%nm)
-    for r in ret:
-      res.append(r[0])
-    return res
\ No newline at end of file
diff --git a/erpnext/setup/doctype/import_data_control/import_data_control.txt b/erpnext/setup/doctype/import_data_control/import_data_control.txt
deleted file mode 100644
index fa19e10..0000000
--- a/erpnext/setup/doctype/import_data_control/import_data_control.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-# DocType, Import Data Control
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2012-03-27 14:36:21',
-		'docstatus': 0,
-		'modified': '2012-03-27 14:36:21',
-		'modified_by': u'Administrator',
-		'owner': u'harshada@webnotestech.com'
-	},
-
-	# These values are common for all DocType
-	{
-		'colour': u'White:FFF',
-		'doctype': 'DocType',
-		'issingle': 1,
-		'module': u'Setup',
-		'name': '__common__',
-		'section_style': u'Simple',
-		'server_code_error': u' ',
-		'version': 12
-	},
-
-	# DocType, Import Data Control
-	{
-		'doctype': 'DocType',
-		'name': u'Import Data Control'
-	}
-]
\ No newline at end of file
diff --git a/erpnext/setup/page/import_data/__init__.py b/erpnext/setup/page/import_data/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/setup/page/import_data/__init__.py
+++ /dev/null
diff --git a/erpnext/setup/page/import_data/import_data.html b/erpnext/setup/page/import_data/import_data.html
deleted file mode 100644
index b655442..0000000
--- a/erpnext/setup/page/import_data/import_data.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<div class="layout_wrapper">
-<div id="di_header"></div>
-<div style="margin: 8px">
-<table style="border-collapse: collapse;" border="0">
-<tbody>
-<tr>
-<td style="border: 1px solid #aaaaaa; padding: 4px; width: 60%;">
-	
-<form action="index.cgi" enctype="multipart/form-data" method="POST" target="ImportIFrame"> <input name="cmd" type="hidden" value="import_csv" /> 
-<h3 style="background-color: #EEF; padding: 2px;">Step 1. Download Template</h3>
-<select id="import_template" style="margin: 10px;"> <option>Select Master...</option> </select>
-
-<div style="margin: 10px; margin-top: 0px;"><input name="overwrite" type="checkbox"/> Do you want to over-write records? <br><span style='color:orange'>Warning: Over-writing the data of child tables, will delete all old entries from child tables. For more info see below</span></div>
-<div id="child_tab_lst"></div>
-<h3 style="background-color: #EEF; padding: 2px;">Step 2. Upload and Import</h3>
-<table style="width: 480px;" border="0" cellspacing="10px">
-<tbody>
-<tr>
-<td width="200px">Select CSV File to be imported</td>
-<td><input name="csv_file" type="file" /></td>
-</tr>
-<tr>
-<td width="200px">Date format in source CSV</td>
-<td><select name="dateformat"> <option value="yyyy-mm-dd">yyyy-mm-dd</option> <option value="mm/dd/yyyy">mm/dd/yyyy</option> <option value="mm/dd/yy">mm/dd/yy</option> <option value="dd-mm-yyyy">dd-mm-yyyy</option> <option value="dd/mm/yyyy">dd/mm/yyyy</option> </select></td>
-</tr>
-<tr>
-<td>&nbsp;</td>
-<td>
-<div id="import_btn"><input type="submit" value="Import" /></div>
-</td>
-</tr>
-</tbody>
-</table>
-</form>
-<div style="background-color: #FFE; padding: 13px; margin: 17px;">
-	<h3>Data Import Guide</h3>
-	<ol>
-		<li>Get the template of the DocType for which you want to import in CSV (Comma seperated values) format.</li>
-		<li>Fill in the data in the template. You can remove columns that are not relevant</li>
-		<li>Save the template in CSV format</li>
-		<li>Select the saved CSV file, identify the date format if any</li>
-		<li>Click on "Import"</li>
-	</ol>
-	<br />
-	<h4>Over-writing Guide</h4>
-	<ol>
-		<li>To over-write data, click on "Do you want to over-write records?" and then download template</li>
-		<li>To over-write parent table data, mention existing ID in "Name" column</li>
-		<li>Over-writing of child table data will delete all previous data from child table of those parents which you are importing. So before over-writing child tables, take a backup of the child table data by exporting from report builder. Re-import all rows of the child table for a particular parent.<br>For example: If you want to overwrite tax rate for tax account "VAT" ifor item: ITEM001 and suppose there are 3 rows in "Item Tax" table for item : ITEM001. While overwriting the system will delete all 3 rows. So, you have to re-import all 3 rows for that item.</li>
-		<li>Over-write checkbox will be checked while importing</li>
-	</ol>
-	<br />
-	<h4>Do you have Non-English data?</h4>
-	You may need to save the file with UTF-8 encoding for data to be imported correctly.
-	<br /><br />
-	Microsoft Excel Users:<br />
-	There is no obvious way of saving a CSV file with UTF-8 encoding.<br />
-	You will need to follow these steps:
-	<ol>
-		<li>In Excel, save the file in CSV (Comma Delimited) format</li>
-		<li>Open this saved file in Notepad</li>
-		<li>Click on File -&gt; Save As</li>
-		<li>File Name: &lt;your filename&gt;.csv<br />
-			Save as type: Text Documents (*.txt)<br />
-			Encoding: UTF-8
-		</li>
-		<li>Click on Save</li>
-	</ol>
-	<br />
-	OpenOffice or LibreOffice Users:<br />
-	<ol>
-		<li>While saving as CSV, check "Edit Filter Settings".</li>
-		<li>You will be prompted for Encoding.</li>
-		<li>Make sure it is "UTF-8" and click on OK.</li>
-	</ol>
-</div>
-</td>
-<td style="border: 1px solid #AAA; padding: 4px;">
-<h3>Import Log:</h3>
-<div id="import_result_area">
-<iframe name="ImportIFrame" style="border: 0px; height: 620px; width: 100%"></iframe>
-</div>
-</td>
-</tr>
-</tbody>
-</table>
-</div>
-</div>
diff --git a/erpnext/setup/page/import_data/import_data.js b/erpnext/setup/page/import_data/import_data.js
deleted file mode 100644
index 734c16d..0000000
--- a/erpnext/setup/page/import_data/import_data.js
+++ /dev/null
@@ -1,71 +0,0 @@
-// ERPNext - web based ERP (http://erpnext.com)
-// Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-// 
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-// 
-// You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-pscript['onload_Import Data'] = function() {
-	
-	//alert(profile.can_get_report);
-
-	callback = function(r,rt) {
-		var h = new PageHeader('di_header','Import Data','Tool to download template and upload data');
-		var sel = $i('import_template');
-		if(r.message){
-			add_sel_options(sel, r.message);
-
-			// please collapse here when editing :)
-			sel.onchange=function(){
-				$i('child_tab_lst').innerHTML ='';
-				if(sel.value != 'Select Master...'){
-					$c_obj('Import Data Control','get_child_lst',sel.value,
-						function(r,rt){
-							var me = this;
-							$y($i('child_tab_lst'),{backgroundColor:'#EEEEEE', margin: '17px 17px', padding: '13px'})
-							var desc = $a($i('child_tab_lst'), 'div', '', {padding:'4px'});
-							
-							desc.innerHTML = "<b>Download template(s) for importing "+sel_val(sel)+"</b>";
- 
-							
-							var parent = $a($i('child_tab_lst'), 'div');
-							var tab = make_table(parent,r.message.length,1,'100%',[],{padding:'3px',borderCollapse: 'collapse'});
-							
-							for(var i=0;i<r.message.length;i++){
-								var dt= $a($td(tab,i,0), 'span', 'link_type');
-								dt.innerHTML = r.message[i];
-								dt.nm = r.message[i];
-								
-								dt.onclick = function(){ 
-									var ovr = $('input[name="overwrite"]:checked').length;
-										window.location = wn.request.url + '?cmd=get_template&dt=' + this.nm + (ovr ? '&overwrite=1' : '');
-								}
-							}
-						}	
-					);
-				}
-			}
-		}
-	
-		// set the default (if given in url)
-		if(window.location.hash) {
-			var to_set = window.location.hash.split('/').slice(-1)[0];
-			if(in_list(r.message, to_set)) {
-				sel.value = to_set;
-				sel.onchange();
-			}
-		}
-	}
-	$c_obj('Import Data Control','get_master_lst','',callback);
-	
-
-}
diff --git a/erpnext/setup/page/import_data/import_data.txt b/erpnext/setup/page/import_data/import_data.txt
deleted file mode 100644
index 40baa6b..0000000
--- a/erpnext/setup/page/import_data/import_data.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-# Page, Import Data
-[
-
-	# These values are common in all dictionaries
-	{
-		'creation': '2010-12-14 10:23:18',
-		'docstatus': 0,
-		'modified': '2010-12-24 11:43:02',
-		'modified_by': 'Administrator',
-		'owner': 'Administrator'
-	},
-
-	# These values are common for all Page
-	{
-		'doctype': 'Page',
-		'module': 'Setup',
-		'name': '__common__',
-		'page_name': 'Import Data',
-		'show_in_menu': 0,
-		'standard': 'Yes'
-	},
-
-	# These values are common for all Page Role
-	{
-		'doctype': 'Page Role',
-		'name': '__common__',
-		'parent': 'Import Data',
-		'parentfield': 'roles',
-		'parenttype': 'Page'
-	},
-
-	# Page, Import Data
-	{
-		'doctype': 'Page',
-		'name': 'Import Data'
-	},
-
-	# Page Role
-	{
-		'doctype': 'Page Role',
-		'idx': 1,
-		'role': 'Administrator'
-	},
-
-	# Page Role
-	{
-		'doctype': 'Page Role',
-		'idx': 2,
-		'role': 'System Manager'
-	},
-
-	# Page Role
-	{
-		'doctype': 'Page Role',
-		'idx': 3,
-		'role': 'Sales Master Manager'
-	},
-
-	# Page Role
-	{
-		'doctype': 'Page Role',
-		'idx': 4,
-		'role': 'Purchase Master Manager'
-	},
-
-	# Page Role
-	{
-		'doctype': 'Page Role',
-		'idx': 5,
-		'role': 'Material Master Manager'
-	}
-]
\ No newline at end of file
