diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index 0f11639..4cf28a1 100755
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -156,6 +156,9 @@
 	def on_trash(self):
 		self.update_nsm_model()
 		delete_events(self.doctype, self.name)
+		if frappe.db.exists("Employee Transfer", {'new_employee_id': self.name, 'docstatus': 1}):
+			emp_transfer = frappe.get_doc("Employee Transfer", {'new_employee_id': self.name, 'docstatus': 1})
+			emp_transfer.db_set("new_employee_id", '')
 
 	def validate_preferred_email(self):
 		if self.prefered_contact_email and not self.get(scrub(self.prefered_contact_email)):
diff --git a/erpnext/hr/doctype/employee_promotion/employee_promotion.py b/erpnext/hr/doctype/employee_promotion/employee_promotion.py
index 564f1ad..5fcceed 100644
--- a/erpnext/hr/doctype/employee_promotion/employee_promotion.py
+++ b/erpnext/hr/doctype/employee_promotion/employee_promotion.py
@@ -4,7 +4,27 @@
 
 from __future__ import unicode_literals
 import frappe
+from frappe import _
 from frappe.model.document import Document
+from frappe.utils import getdate
+from erpnext.hr.utils import update_employee
 
 class EmployeePromotion(Document):
-	pass
+	def validate(self):
+		if frappe.get_value("Employee", self.employee, "status") == "Left":
+			frappe.throw(_("Cannot promote Employee with status Left"))
+
+	def before_submit(self):
+		if getdate(self.promotion_date) > getdate():
+			frappe.throw(_("Employee Promotion cannot be submitted before Promotion Date "),
+				frappe.DocstatusTransitionError)
+
+	def on_submit(self):
+		employee = frappe.get_doc("Employee", self.employee)
+		employee = update_employee(employee, self.promotion_details)
+		employee.save()
+
+	def on_cancel(self):
+		employee = frappe.get_doc("Employee", self.employee)
+		employee = update_employee(employee, self.promotion_details, True)
+		employee.save()
diff --git a/erpnext/hr/doctype/employee_transfer/employee_transfer.py b/erpnext/hr/doctype/employee_transfer/employee_transfer.py
index 96645c4..d80e293 100644
--- a/erpnext/hr/doctype/employee_transfer/employee_transfer.py
+++ b/erpnext/hr/doctype/employee_transfer/employee_transfer.py
@@ -4,7 +4,59 @@
 
 from __future__ import unicode_literals
 import frappe
+from frappe import _
 from frappe.model.document import Document
+from frappe.utils import getdate
+from erpnext.hr.utils import update_employee
 
 class EmployeeTransfer(Document):
-	pass
+	def validate(self):
+		if frappe.get_value("Employee", self.employee, "status") == "Left":
+			frappe.throw(_("Cannot transfer Employee with status Left"))
+
+	def before_submit(self):
+		if getdate(self.transfer_date) > getdate():
+			frappe.throw(_("Employee Transfer cannot be submitted before Transfer Date "),
+				frappe.DocstatusTransitionError)
+
+	def on_submit(self):
+		employee = frappe.get_doc("Employee", self.employee)
+		if self.create_new_employee_id:
+			new_employee = frappe.copy_doc(employee)
+			new_employee = update_employee(new_employee, self.transfer_details)
+			if self.new_company:
+				new_employee.company = self.new_company
+			#move user_id to new employee before insert
+			if employee.user_id and not self.validate_user_in_details():
+				new_employee.user_id = employee.user_id
+				employee.db_set("user_id", "")
+			new_employee.insert()
+			self.db_set("new_employee_id", new_employee.name)
+			#relieve the old employee
+			employee.db_set("relieving_date", self.transfer_date)
+			employee.db_set("status", "Left")
+		else:
+			employee = update_employee(employee, self.transfer_details)
+			if self.new_company:
+				employee.company = self.new_company
+			employee.save()
+
+	def on_cancel(self):
+		employee = frappe.get_doc("Employee", self.employee)
+		if self.create_new_employee_id:
+			if self.new_employee_id:
+				frappe.throw(_("Please delete the Employee <a href='#Form/Employee/{0}'>{0}</a>\
+					to cancel this document").format(self.new_employee_id))
+			#mark the employee as active
+			employee.status = "Active"
+			employee.relieving_date = ''
+			employee.save()
+		else:
+			employee = update_employee(employee, self.transfer_details, True)
+			employee.save()
+
+	def validate_user_in_details(self):
+		for item in self.transfer_details:
+			if item.fieldname == "user_id" and item.new != item.current:
+				return True
+		return False
