diff --git a/erpnext/hr/doctype/leave_period/leave_period.py b/erpnext/hr/doctype/leave_period/leave_period.py
index 15fa8d6..1e2884d 100644
--- a/erpnext/hr/doctype/leave_period/leave_period.py
+++ b/erpnext/hr/doctype/leave_period/leave_period.py
@@ -5,9 +5,10 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
-from frappe.utils import getdate, cstr
+from frappe.utils import getdate, cstr, add_days
 from frappe.model.document import Document
 from erpnext.hr.utils import validate_overlap, get_employee_leave_policy
+from erpnext.hr.doctype.leave_allocation.leave_allocation import get_carry_forwarded_leaves
 from frappe.utils.background_jobs import enqueue
 from six import iteritems
 
@@ -39,8 +40,8 @@
 			employee=None, carry_forward_leaves=0):
 		employees = self.get_employees({
 			"grade": grade,
-			"department": department, 
-			"designation": designation, 
+			"department": department,
+			"designation": designation,
 			"name": employee
 		})
 
@@ -57,7 +58,7 @@
 	leave_allocations = []
 	existing_allocations_for = get_existing_allocations(employees, leave_period.name)
 	leave_type_details = get_leave_type_details()
-	count=0
+	count = 0
 	for employee in employees:
 		if employee in existing_allocations_for:
 			continue
@@ -77,8 +78,14 @@
 
 def get_existing_allocations(employees, leave_period):
 	leave_allocations = frappe.db.sql_list("""
-		select distinct employee from `tabLeave Allocation` 
-		where leave_period=%s and employee in (%s) and docstatus=1
+		SELECT DISTINCT
+			employee
+		FROM `tabLeave Allocation`
+		WHERE
+			leave_period=%s
+			AND employee in (%s)
+			AND carry_forward=0
+			AND docstatus=1
 	""" % ('%s', ', '.join(['%s']*len(employees))), [leave_period] + employees)
 	if leave_allocations:
 		frappe.msgprint(_("Skipping Leave Allocation for the following employees, as Leave Allocation records already exists against them. {0}")
@@ -87,7 +94,8 @@
 
 def get_leave_type_details():
 	leave_type_details = frappe._dict()
-	leave_types = frappe.get_all("Leave Type", fields=["name", "is_lwp", "is_earned_leave", "is_compensatory", "is_carry_forward"])
+	leave_types = frappe.get_all("Leave Type",
+		fields=["name", "is_lwp", "is_earned_leave", "is_compensatory", "is_carry_forward", "carry_forward_leave_expiry"])
 	for d in leave_types:
 		leave_type_details.setdefault(d.name, d)
 	return leave_type_details
@@ -106,9 +114,19 @@
 	allocation.leave_period = leave_period.name
 	if carry_forward_leaves:
 		if leave_type_details.get(leave_type).is_carry_forward:
-			allocation.carry_forward = carry_forward_leaves
-	allocation.save(ignore_permissions = True)
+			create_carry_forward_leaves_allocation(employee, leave_type, leave_type_details, leave_period, carry_forward_leaves)
+	allocation.save(ignore_permissions=True)
 	allocation.submit()
 	return allocation.name
 
-
+def create_carry_forward_leaves_allocation(employee, leave_type, leave_type_details, leave_period, carry_forward_leaves):
+	allocation = frappe.new_doc("Leave Allocation")
+	allocation.employee = employee
+	allocation.leave_type = leave_type
+	allocation.from_date = leave_period.from_date
+	allocation.to_date = add_days(leave_period.from_date, leave_type_details.carry_forward_leave_expiry) if not leave_type_details.carry_forward_leave_expiry else leave_period.to_date
+	allocation.leave_period = leave_period.name
+	allocation.carry_forward = carry_forward_leaves
+	allocation.carry_forwarded_leaves = get_carry_forwarded_leaves(employee, leave_type, leave_period.from_date, leave_type_details.carry_forward_leave_expiry)
+	allocation.save(ignore_permissions=True)
+	allocation.submit()
\ No newline at end of file
