[fixes] setup wizard and domainify for schools;
diff --git a/erpnext/config/desktop.py b/erpnext/config/desktop.py
index fc2be82..df2a0ee 100644
--- a/erpnext/config/desktop.py
+++ b/erpnext/config/desktop.py
@@ -164,5 +164,111 @@
 			"icon": "octicon octicon-tools",
 			"type": "module",
 			"label": _("Maintenance")
+		},
+		{
+			"module_name": "Student",
+			"color": "#c0392b",
+			"icon": "octicon octicon-person",
+			"label": _("Student"),
+			"link": "List/Student",
+			"doctype": "Student",
+			"type": "list"
+		},
+		{
+			"module_name": "Student Group",
+			"color": "#d59919",
+			"icon": "octicon octicon-organization",
+			"label": _("Student Group"),
+			"link": "List/Student Group",
+			"doctype": "Student Group",
+			"type": "list"
+		},
+		{
+			"module_name": "Course Schedule",
+			"color": "#fd784f",
+			"icon": "octicon octicon-calendar",
+			"label": _("Course Schedule"),
+			"link": "Calendar/Course Schedule",
+			"doctype": "Course Schedule",
+			"type": "list"
+		},
+		{
+			"module_name": "Student Attendance",
+			"color": "#3aacba",
+			"icon": "octicon octicon-checklist",
+			"label": _("Student Attendance"),
+			"link": "List/Student Attendance",
+			"doctype": "Student Attendance",
+			"type": "list"
+		},
+		{
+			"module_name": "Course",
+			"color": "#8e44ad",
+			"icon": "octicon octicon-book",
+			"label": _("Course"),
+			"link": "List/Course",
+			"doctype": "Course",
+			"type": "list"
+		},
+		{
+			"module_name": "Program",
+			"color": "#9b59b6",
+			"icon": "octicon octicon-repo",
+			"label": _("Program"),
+			"link": "List/Program",
+			"doctype": "Program",
+			"type": "list"
+		},
+		{
+			"module_name": "Student Applicant",
+			"color": "#4d927f",
+			"icon": "octicon octicon-clippy",
+			"label": _("Student Applicant"),
+			"link": "List/Student Applicant",
+			"doctype": "Student Applicant",
+			"type": "list"
+		},
+		{
+			"module_name": "Examination",
+			"color": "#8a70be",
+			"icon": "icon-file-text-alt",
+			"label": _("Examination"),
+			"link": "List/Examination",
+			"doctype": "Examination",
+			"type": "list"
+		},
+		{
+			"module_name": "Fees",
+			"color": "#83C21E",
+			"icon": "icon-money",
+			"label": _("Fees"),
+			"link": "List/Fees",
+			"doctype": "Fees",
+			"type": "list"
+		},
+		{
+			"module_name": "Instructor",
+			"color": "#a99e4c",
+			"icon": "octicon octicon-broadcast",
+			"label": _("Instructor"),
+			"link": "List/Instructor",
+			"doctype": "Instructor",
+			"type": "list"
+		},
+		{
+			"module_name": "Room",
+			"color": "#f22683",
+			"icon": "icon-map-marker",
+			"label": _("Room"),
+			"link": "List/Room",
+			"doctype": "Examination",
+			"type": "list"
+		},
+		{
+			"module_name": "Schools",
+			"color": "#DE2B37",
+			"icon": "octicon octicon-mortar-board",
+			"type": "module",
+			"label": _("Schools")
 		}
 	]
diff --git a/erpnext/config/schools.py b/erpnext/config/schools.py
new file mode 100644
index 0000000..ee1a8cb
--- /dev/null
+++ b/erpnext/config/schools.py
@@ -0,0 +1,110 @@
+from __future__ import unicode_literals
+from frappe import _
+
+def get_data():
+	return [
+		{
+			"label": _("Student"),
+			"items": [
+
+				{
+					"type": "doctype",
+					"name": "Student"
+				},
+				{
+					"type": "doctype",
+					"name": "Student Group"
+				},
+				{
+					"type": "doctype",
+					"name": "Student Applicant"
+				},
+				{
+					"type": "doctype",
+					"name": "Program Enrollment"
+				},
+				{
+					"type": "doctype",
+					"name": "Program Enrollment Tool"
+				},
+				{
+					"type": "doctype",
+					"name": "Student Group Creation Tool"
+				}
+			]
+		},
+		{
+			"label": _("Schedule"),
+			"items": [
+				{
+					"type": "doctype",
+					"name": "Course Schedule",
+					"route": "Calendar/Course Schedule"
+				},
+				{
+					"type": "doctype",
+					"name": "Student Attendance"
+				},
+				{
+					"type": "doctype",
+					"name": "Scheduling Tool"
+				},
+				{
+					"type": "doctype",
+					"name": "Examination"
+				}
+			]
+		},
+		{
+			"label": _("Fees"),
+			"items": [
+				{
+					"type": "doctype",
+					"name": "Fees"
+				},
+				{
+					"type": "doctype",
+					"name": "Fee Structure"
+				},
+				{
+					"type": "doctype",
+					"name": "Fee Category"
+				},
+				{
+					"type": "report",
+					"name": "Student Fee Collection",
+					"doctype": "Fees",
+					"is_query_report": True
+				}
+			]
+		},
+		{
+			"label": _("Setup"),
+			"items": [
+				{
+					"type": "doctype",
+					"name": "Course"
+				},
+				{
+					"type": "doctype",
+					"name": "Program"
+				},
+				{
+					"type": "doctype",
+					"name": "Instructor"
+				},
+				{
+					"type": "doctype",
+					"name": "Room"
+				},
+				{
+					"type": "doctype",
+					"name": "Academic Term"
+				},
+				{
+					"type": "doctype",
+					"name": "Academic Year"
+				}
+			]
+		},
+	]
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 699a745f..d211ca9 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -299,3 +299,4 @@
 execute:frappe.delete_doc_if_exists("DocType", "Payment Tool")
 execute:frappe.delete_doc_if_exists("DocType", "Payment Tool Detail")
 erpnext.patches.v7_0.setup_account_table_for_expense_claim_type_if_exists
+erpnext.patches.v7_0.migrate_schools_to_erpnext
diff --git a/erpnext/patches/v7_0/migrate_schools_to_erpnext.py b/erpnext/patches/v7_0/migrate_schools_to_erpnext.py
index 95ab16c..ca37e69 100644
--- a/erpnext/patches/v7_0/migrate_schools_to_erpnext.py
+++ b/erpnext/patches/v7_0/migrate_schools_to_erpnext.py
@@ -1,7 +1,13 @@
 from __future__ import unicode_literals
 import frappe
+from erpnext.setup.setup_wizard import domainify
 
 def execute():
-	frappe.db.sql("""update `tabDoctype` set module='Schools' where module='Academics'""")
-	from frappe.installer import remove_from_installed_apps
-	remove_from_installed_apps("schools")
\ No newline at end of file
+	frappe.get_doc('Portal Settings', 'Portal Settings').sync_menu()
+	if 'schools' in frappe.get_installed_apps():
+		frappe.db.sql("""update `tabDoctype` set module='Schools' where module='Academics'""")
+		from frappe.installer import remove_from_installed_apps
+		remove_from_installed_apps("schools")
+		domainify.setup_domain('Education')
+	else:
+		domainify.setup_sidebar_items(domainify.get_domain('Manufacturing'))
diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index 9954ae0..4da4ce2 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -9,28 +9,49 @@
 
 function load_erpnext_slides() {
 	$.extend(erpnext.wiz, {
-		org: {
-			app_name: "erpnext",
-			title: __("The Organization"),
-			icon: "icon-building",
+		select_domain: {
+			domains: ["all"],
+			title: __('Select your Domain'),
 			fields: [
-				{fieldname:'company_name', label: __('Company Name'), fieldtype:'Data', reqd:1,
-					placeholder: __('e.g. "My Company LLC"')},
-				{fieldname:'company_abbr', label: __('Company Abbreviation'), fieldtype:'Data',
-					description: __('Max 5 characters'), placeholder: __('e.g. "MC"'), reqd:1},
-				{fieldname:'company_tagline', label: __('What does it do?'), fieldtype:'Data',
-					placeholder:__('e.g. "Build tools for builders"'), reqd:1},
-				{fieldname:'bank_account', label: __('Bank Name'), fieldtype:'Data',
-					placeholder: __('e.g. "XYZ National Bank"'), reqd:1 },
 				{fieldname:'domain', label: __('Domain'), fieldtype:'Select',
 					options: [
 						{"label": __("Distribution"), "value": "Distribution"},
+						{"label": __("Education"), "value": "Education"},
 						{"label": __("Manufacturing"), "value": "Manufacturing"},
 						{"label": __("Retail"), "value": "Retail"},
-						{"label": __("Services"), "value": "Services"},
-						{"label": __("Education"), "value": "Education"},
-						{"label": __("Other"), "value": "Other"},
+						{"label": __("Services"), "value": "Services"}
 					], reqd:1},
+			],
+			help: __('Select the nature of your business.'),
+			onload: function(slide) {
+				slide.get_input("domain").on("change", function() {
+					frappe.wiz.domain = $(this).val();
+					frappe.wizard.refresh_slides();
+				});
+			},
+			css_class: "single-column"
+		},
+		org: {
+			domains: ["all"],
+			title: __("The Organization"),
+			icon: "icon-building",
+			fields: [
+				{fieldname:'company_name',
+					label: frappe.wiz.domain==='Education' ?
+					 	__('Institute Name') : __('Company Name'),
+					fieldtype:'Data', reqd:1},
+				{fieldname:'company_abbr',
+					label: frappe.wiz.domain==='Education' ?
+					 	__('Institute Abbreviation') : __('Company Abbreviation'),
+					fieldtype:'Data'},
+				{fieldname:'company_tagline',
+					label: __('What does it do?'),
+					fieldtype:'Data',
+					placeholder: frappe.wiz.domain==='Education' ?
+					 	__('e.g. "Primary School" or "University"') :
+						__('e.g. "Build tools for builders"'),
+					reqd:1},
+				{fieldname:'bank_account', label: __('Bank Name'), fieldtype:'Data', reqd:1},
 				{fieldname:'chart_of_accounts', label: __('Chart of Accounts'),
 					options: "", fieldtype: 'Select'},
 
@@ -41,7 +62,9 @@
 				{fieldname:'fy_end_date', label:__('Financial Year End Date'), fieldtype:'Date',
 					description: __('Your financial year ends on'), reqd:1},
 			],
-			help: __('The name of your company for which you are setting up this system.'),
+			help: (frappe.wiz.domain==='Education' ?
+				__('The name of the institute for which you are setting up this system.'):
+				__('The name of your company for which you are setting up this system.')),
 
 			onload: function(slide) {
 				erpnext.wiz.org.load_chart_of_accounts(slide);
@@ -67,7 +90,7 @@
 			css_class: "single-column",
 
 			set_fy_dates: function(slide) {
-				var country = slide.wiz.get_values().country;
+				var country = frappe.wizard.values.country;
 
 				if(country) {
 					var fy = erpnext.wiz.fiscal_years[country];
@@ -85,7 +108,7 @@
 			},
 
 			load_chart_of_accounts: function(slide) {
-				var country = slide.wiz.get_values().country;
+				var country = frappe.wizard.values.country;
 
 				if(country) {
 					frappe.call({
@@ -134,7 +157,7 @@
 		},
 
 		branding: {
-			app_name: "erpnext",
+			domains: ["all"],
 			icon: "icon-bookmark",
 			title: __("The Brand"),
 			help: __('Upload your letter head and logo. (you can edit them later).'),
@@ -156,7 +179,7 @@
 		},
 
 		users: {
-			app_name: "erpnext",
+			domains: ["all"],
 			icon: "icon-money",
 			title: __("Add Users"),
 			help: __("Add users to your organization, other than yourself"),
@@ -173,11 +196,14 @@
 							options: "Email"},
 						{fieldtype:"Column Break"},
 						{fieldtype: "Check", fieldname: "user_sales_" + i,
-							label:__("Sales"), default: 1},
+							label:__("Sales"), "default": 1,
+							hidden: frappe.wiz.domain==='Education' ? 1 : 0},
 						{fieldtype: "Check", fieldname: "user_purchaser_" + i,
-							label:__("Purchaser"), default: 1},
+							label:__("Purchaser"), "default": 1,
+							hidden: frappe.wiz.domain==='Education' ? 1 : 0},
 						{fieldtype: "Check", fieldname: "user_accountant_" + i,
-							label:__("Accountant"), default: 1},
+							label:__("Accountant"), "default": 1,
+							hidden: frappe.wiz.domain==='Education' ? 1 : 0},
 					]);
 				}
 			},
@@ -185,7 +211,7 @@
 		},
 
 		taxes: {
-			app_name: "erpnext",
+			domains: ['manufacturing', 'services', 'retail', 'distribution'],
 			icon: "icon-money",
 			title: __("Add Taxes"),
 			help: __("List your tax heads (e.g. VAT, Customs etc; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later."),
@@ -206,7 +232,7 @@
 		},
 
 		customers: {
-			app_name: "erpnext",
+			domains: ['manufacturing', 'services', 'retail', 'distribution'],
 			icon: "icon-group",
 			title: __("Your Customers"),
 			help: __("List a few of your customers. They could be organizations or individuals."),
@@ -229,7 +255,7 @@
 		},
 
 		suppliers: {
-			app_name: "erpnext",
+			domains: ['manufacturing', 'services', 'retail', 'distribution'],
 			icon: "icon-group",
 			title: __("Your Suppliers"),
 			help: __("List a few of your suppliers. They could be organizations or individuals."),
@@ -252,7 +278,7 @@
 		},
 
 		items: {
-			app_name: "erpnext",
+			domains: ['manufacturing', 'services', 'retail', 'distribution'],
 			icon: "icon-barcode",
 			title: __("Your Products or Services"),
 			help: __("List your products or services that you buy or sell. Make sure to check the Item Group, Unit of Measure and other properties when you start."),
@@ -288,6 +314,81 @@
 			},
 			css_class: "two-column"
 		},
+
+		program: {
+			domains: ["education"],
+			title: __("Program"),
+			help: __("Example: Masters in Computer Science"),
+			fields: [],
+			before_load: function(slide) {
+				slide.fields = [];
+				for(var i=1; i<6; i++) {
+					slide.fields = slide.fields.concat([
+						{fieldtype:"Section Break", show_section_border: true},
+						{fieldtype:"Data", fieldname:"program_" + i, label:__("Program") + " " + i, placeholder: __("Program Name")},
+					])
+				}
+				slide.fields[1].reqd = 1;
+			},
+			css_class: "single-column"
+		},
+
+		course: {
+			domains: ["education"],
+			title: __("Course"),
+			help: __("Example: Basic Mathematics"),
+			fields: [],
+			before_load: function(slide) {
+				slide.fields = [];
+				for(var i=1; i<6; i++) {
+					slide.fields = slide.fields.concat([
+						{fieldtype:"Section Break", show_section_border: true},
+						{fieldtype:"Data", fieldname:"course_" + i, label:__("Course") + " " + i,  placeholder: __("Course Name")},
+					])
+				}
+				slide.fields[1].reqd = 1;
+			},
+			css_class: "single-column"
+		},
+
+
+		instructor: {
+			domains: ["education"],
+			title: __("Instructor"),
+			help: __("People who teach at your organisation"),
+			fields: [],
+			before_load: function(slide) {
+				slide.fields = [];
+				for(var i=1; i<6; i++) {
+					slide.fields = slide.fields.concat([
+						{fieldtype:"Section Break", show_section_border: true},
+						{fieldtype:"Data", fieldname:"instructor_" + i, label:__("Instructor") + " " + i,  placeholder: __("Instructor Name")},
+					])
+				}
+				slide.fields[1].reqd = 1;
+			},
+			css_class: "single-column"
+		},
+
+		room: {
+			domains: ["education"],
+			title: __("Room"),
+			help: __("Classrooms/ Laboratories etc where lectures can be scheduled."),
+			fields: [],
+			before_load: function(slide) {
+				slide.fields = [];
+				for(var i=1; i<4; i++) {
+					slide.fields = slide.fields.concat([
+						{fieldtype:"Section Break", show_section_border: true},
+						{fieldtype:"Data", fieldname:"room_" + i, label:__("Room") + " " + i},
+						{fieldtype:"Column Break"},
+						{fieldtype:"Int", fieldname:"room_capacity_" + i, label:__("Room") + " " + i + " Capacity"},
+					])
+				}
+				slide.fields[1].reqd = 1;
+			},
+			css_class: "two-column"
+		},
 	});
 
 	// Source: https://en.wikipedia.org/wiki/Fiscal_year
@@ -316,6 +417,8 @@
 
 frappe.wiz.on("before_load", function() {
 	load_erpnext_slides();
+
+	frappe.wiz.add_slide(erpnext.wiz.select_domain);
 	frappe.wiz.add_slide(erpnext.wiz.org);
 	frappe.wiz.add_slide(erpnext.wiz.branding);
 
@@ -327,5 +430,29 @@
 	frappe.wiz.add_slide(erpnext.wiz.customers);
 	frappe.wiz.add_slide(erpnext.wiz.suppliers);
 	frappe.wiz.add_slide(erpnext.wiz.items);
-	frappe.wiz.welcome_page = "#welcome-to-erpnext";
+	frappe.wiz.add_slide(erpnext.wiz.program);
+	frappe.wiz.add_slide(erpnext.wiz.course);
+	frappe.wiz.add_slide(erpnext.wiz.instructor);
+	frappe.wiz.add_slide(erpnext.wiz.room);
+
+	if(frappe.wizard.domain && frappe.wizard.domain !== 'Education') {
+		frappe.wiz.welcome_page = "#welcome-to-erpnext";
+	}
 });
+
+test_values_edu = {
+	"language":"english",
+	"domain":"Education",
+	"country":"India",
+	"timezone":"Asia/Kolkata",
+	"currency":"INR",
+	"first_name":"Tester",
+	"email":"test@example.com",
+	"password":"test",
+	"company_name":"Hogwarts",
+	"company_abbr":"HS",
+	"company_tagline":"School for magicians",
+	"bank_account":"Gringotts Wizarding Bank",
+	"fy_start_date":"2016-04-01",
+	"fy_end_date":"2017-03-31"
+}
diff --git a/erpnext/schools/doctype/announcement/announcement.json b/erpnext/schools/doctype/announcement/announcement.json
index c965da5..831b71f 100644
--- a/erpnext/schools/doctype/announcement/announcement.json
+++ b/erpnext/schools/doctype/announcement/announcement.json
@@ -9,6 +9,7 @@
  "docstatus": 0, 
  "doctype": "DocType", 
  "document_type": "Document", 
+ "editable_grid": 0, 
  "fields": [
   {
    "allow_on_submit": 0, 
@@ -276,8 +277,8 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-07-18 10:30:50.243271",
- "modified_by": "Administrator", 
+ "modified": "2016-07-21 06:30:12.825629", 
+ "modified_by": "r@r.com", 
  "module": "Schools", 
  "name": "Announcement", 
  "name_case": "", 
@@ -302,26 +303,6 @@
    "share": 1, 
    "submit": 1, 
    "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 1, 
-   "delete": 0, 
-   "email": 1, 
-   "export": 1, 
-   "if_owner": 0, 
-   "import": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Guest", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 0, 
-   "write": 1
   }
  ], 
  "quick_entry": 0, 
diff --git a/erpnext/schools/doctype/fees/fees.json b/erpnext/schools/doctype/fees/fees.json
index 8e3b560..576d69e 100644
--- a/erpnext/schools/doctype/fees/fees.json
+++ b/erpnext/schools/doctype/fees/fees.json
@@ -478,8 +478,8 @@
  "istable": 0, 
  "max_attachments": 0, 
  "menu_index": 0, 
- "modified": "2016-07-18 10:30:50.243271",
- "modified_by": "Administrator", 
+ "modified": "2016-07-21 06:20:10.878913", 
+ "modified_by": "r@r.com", 
  "module": "Schools", 
  "name": "Fees", 
  "name_case": "", 
@@ -504,46 +504,6 @@
    "share": 1, 
    "submit": 1, 
    "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 1, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "export": 1, 
-   "if_owner": 0, 
-   "import": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 1, 
-   "role": "Administrator", 
-   "set_user_permissions": 0, 
-   "share": 1, 
-   "submit": 1, 
-   "write": 1
-  }, 
-  {
-   "amend": 0, 
-   "apply_user_permissions": 0, 
-   "cancel": 0, 
-   "create": 0, 
-   "delete": 0, 
-   "email": 0, 
-   "export": 0, 
-   "if_owner": 0, 
-   "import": 0, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "report": 0, 
-   "role": "Guest", 
-   "set_user_permissions": 0, 
-   "share": 0, 
-   "submit": 0, 
-   "write": 0
   }
  ], 
  "quick_entry": 0, 
diff --git a/erpnext/setup/setup_wizard/domainify.py b/erpnext/setup/setup_wizard/domainify.py
index 02be189..07b2e19 100644
--- a/erpnext/setup/setup_wizard/domainify.py
+++ b/erpnext/setup/setup_wizard/domainify.py
@@ -4,86 +4,136 @@
 from __future__ import unicode_literals
 import frappe
 
-def get_domains():
+def get_domain(domain):
 	'''Written as a function to prevent data mutation effects'''
-	return {
+	data = {
 		'Manufacturing': {
 			'desktop_icons': ['Item', 'BOM', 'Customer', 'Supplier', 'Sales Order',
 				'Production Order',  'Stock Entry', 'Purchase Order', 'Task', 'Buying', 'Selling',
 				 'Accounts', 'HR', 'ToDo'],
+			'remove_roles': ['Academics User'],
 			'properties': [
 				{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'collapsible_depends_on', 'value': 'is_stock_item'},
 			],
 			'set_value': [
 				['Stock Settings', None, 'show_barcode_field', 1]
-			]
+			],
+			'remove_sidebar_items': ['/announcement', '/course', '/examination', '/fees']
 		},
 
 		'Retail': {
 			'desktop_icons': ['POS', 'Item', 'Customer', 'Sales Invoice',  'Purchase Order', 'Warranty Claim',
 			'Accounts', 'Buying', 'ToDo'],
-			'remove_roles': ['Manufacturing User', 'Manufacturing Manager'],
+			'remove_roles': ['Manufacturing User', 'Manufacturing Manager', 'Academics User'],
 			'properties': [
 				{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'hidden', 'value': 1},
 				{'doctype': 'Customer', 'fieldname': 'credit_limit_section', 'property': 'hidden', 'value': 1},
 			],
 			'set_value': [
 				['Stock Settings', None, 'show_barcode_field', 1]
-			]
+			],
+			'remove_sidebar_items': ['/announcement', '/course', '/examination', '/fees']
 		},
 
 		'Distribution': {
 			'desktop_icons': ['Item', 'Customer', 'Supplier', 'Lead', 'Sales Order',
 				 'Sales Invoice', 'CRM', 'Selling', 'Buying', 'Stock', 'Accounts', 'HR', 'ToDo'],
-			'remove_roles': ['Manufacturing User', 'Manufacturing Manager'],
+			'remove_roles': ['Manufacturing User', 'Manufacturing Manager', 'Academics User'],
 			'properties': [
 				{'doctype': 'Item', 'fieldname': 'manufacturing', 'property': 'hidden', 'value': 1},
 			],
 			'set_value': [
 				['Stock Settings', None, 'show_barcode_field', 1]
-			]
+			],
+			'remove_sidebar_items': ['/announcement', '/course', '/examination', '/fees']
 		},
 
 		'Services': {
 			'desktop_icons': ['Project', 'Timesheet', 'Customer', 'Sales Order', 'Sales Invoice', 'Lead', 'Opportunity',
 				'Expense Claim', 'Employee', 'HR', 'ToDo'],
-			'remove_roles': ['Manufacturing User', 'Manufacturing Manager'],
+			'remove_roles': ['Manufacturing User', 'Manufacturing Manager', 'Academics User'],
 			'properties': [
 				{'doctype': 'Item', 'fieldname': 'is_stock_item', 'property': 'default', 'value': 0},
 			],
 			'set_value': [
 				['Stock Settings', None, 'show_barcode_field', 0]
-			]
-		}
+			],
+			'remove_sidebar_items': ['/announcement', '/course', '/examination', '/fees']
+		},
+		'Education': {
+			'desktop_icons': ['Student', 'Program', 'Course', 'Student Group', 'Instructor',
+				'Fees',  'ToDo', 'Schools'],
+			'allow_roles': ['Academics User', 'Accounts User', 'Accounts Manager'],
+			'allow_sidebar_items': ['/announcement', '/course', '/examination', '/fees']
+		},
 	}
+	if not domain in data:
+		raise 'Invalid Domain {0}'.format(domain)
+	return frappe._dict(data[domain])
 
 def setup_domain(domain):
-	domains = get_domains()
+	'''Setup roles, desktop icons, properties, values, portal sidebar menu based on domain'''
+	data = get_domain(domain)
+	setup_roles(data)
+	setup_desktop_icons(data)
+	setup_properties(data)
+	set_values(data)
+	setup_sidebar_items(data)
+	frappe.clear_cache()
 
-	if not domain in domains:
-		return
-
+def setup_desktop_icons(data):
+	'''set desktop icons form `data.desktop_icons`'''
 	from frappe.desk.doctype.desktop_icon.desktop_icon import set_desktop_icons
-	data = frappe._dict(domains[domain])
-
-	if data.remove_roles:
-		for role in data.remove_roles:
-			frappe.db.sql('delete from tabUserRole where role=%s', role)
-
 	if data.desktop_icons:
 		set_desktop_icons(data.desktop_icons)
 
+def setup_properties(data):
 	if data.properties:
 		for args in data.properties:
 			frappe.make_property_setter(args)
 
+def setup_roles(data):
+	'''Add, remove roles from `data.allow_roles` or `data.remove_roles`'''
+	def remove_role(role):
+		frappe.db.sql('delete from tabUserRole where role=%s', role)
+
+	if data.remove_roles:
+		for role in data.remove_roles:
+			remove_role(role)
+
+	if data.allow_roles:
+		# remove all roles other than allowed roles
+		data.allow_roles += ['Administrator', 'Guest', 'System Manager']
+		for role in frappe.get_all('Role'):
+			if not (role.name in data.allow_roles):
+				remove_role(role.name)
+
+def set_values(data):
+	'''set values based on `data.set_value`'''
 	if data.set_value:
 		for args in data.set_value:
 			doc = frappe.get_doc(args[0], args[1] or args[0])
 			doc.set(args[2], args[3])
 			doc.save()
 
-	frappe.clear_cache()
+def setup_sidebar_items(data):
+	'''Enable / disable sidebar items'''
+	if data.allow_sidebar_items:
+		# disable all
+		frappe.db.sql('update `tabPortal Menu Item` set enabled=0')
+
+		# enable
+		frappe.db.sql('''update `tabPortal Menu Item` set enabled=1
+			where route in ({0})'''.format(', '.join(['"{0}"'.format(d) for d in data.allow_sidebar_items])))
+
+	if data.remove_sidebar_items:
+		# disable all
+		frappe.db.sql('update `tabPortal Menu Item` set enabled=1')
+
+		# enable
+		frappe.db.sql('''update `tabPortal Menu Item` set enabled=0
+			where route in ({0})'''.format(', '.join(['"{0}"'.format(d) for d in data.remove_sidebar_items])))
+
 
 def reset():
 	from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index 0284ca8..3cabde1 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -32,6 +32,15 @@
 	create_items(args)
 	create_customers(args)
 	create_suppliers(args)
+
+	if args.domain.lower() == 'education':
+		create_academic_term()
+		create_academic_year()
+		create_program(args)
+		create_course(args)
+		create_instructor(args)
+		create_room(args)
+
 	frappe.local.message_log = []
 	setup_domain(args.get('domain'))
 
@@ -493,3 +502,47 @@
 				emp.flags.ignore_mandatory = True
 				emp.insert(ignore_permissions = True)
 
+def create_academic_term():
+	at = ["Semester 1", "Semester 2", "Semester 3"]
+	for d in at:
+		academic_term = frappe.new_doc("Academic Term")
+		academic_term.term_name = d
+		academic_term.save()
+
+def create_academic_year():
+	ac = ["2013-14", "2014-15", "2015-16", "2016-17", "2017-18"]
+	for d in ac:
+		academic_year = frappe.new_doc("Academic Year")
+		academic_year.academic_year_name = d
+		academic_year.save()
+
+def create_program(args):
+	for i in xrange(1,6):
+		if args.get("program_" + str(i)):
+			program = frappe.new_doc("Program")
+			program.program_name = args.get("program_" + str(i))
+			program.save()
+
+def create_course(args):
+	for i in xrange(1,6):
+		if args.get("course_" + str(i)):
+			course = frappe.new_doc("Course")
+			course.course_name = args.get("course_" + str(i))
+			course.save()
+
+def create_instructor(args):
+	for i in xrange(1,6):
+		if args.get("instructor_" + str(i)):
+			instructor = frappe.new_doc("Instructor")
+			instructor.instructor_name = args.get("instructor_" + str(i))
+			instructor.save()
+
+def create_room(args):
+	for i in xrange(1,6):
+		if args.get("room_" + str(i)):
+			room = frappe.new_doc("Room")
+			room.room_name = args.get("room_" + str(i))
+			room.seating_capacity = args.get("room_capacity_" + str(i))
+			room.save()
+
+