diff --git a/erpnext/education/doctype/program_enrollment/program_enrollment.js b/erpnext/education/doctype/program_enrollment/program_enrollment.js
index e3b3e9f..5e1635d 100644
--- a/erpnext/education/doctype/program_enrollment/program_enrollment.js
+++ b/erpnext/education/doctype/program_enrollment/program_enrollment.js
@@ -2,16 +2,24 @@
 // For license information, please see license.txt
 
 
-frappe.ui.form.on("Program Enrollment", {
+frappe.ui.form.on('Program Enrollment', {
 	setup: function(frm) {
 		frm.add_fetch('fee_structure', 'total_amount', 'amount');
 	},
 
-	onload: function(frm, cdt, cdn){
-		frm.set_query("academic_term", "fees", function(){
-			return{
-				"filters":{
-					"academic_year": (frm.doc.academic_year)
+	onload: function(frm) {
+		frm.set_query('academic_term', function() {
+			return {
+				'filters':{
+					'academic_year': (frm.doc.academic_year)
+				}
+			};
+		});
+
+		frm.set_query('academic_term', 'fees', function() {
+			return {
+				'filters':{
+					'academic_year': (frm.doc.academic_year)
 				}
 			};
 		});
@@ -24,9 +32,9 @@
 		};
 
 		if (frm.doc.program) {
-			frm.set_query("course", "courses", function(doc, cdt, cdn) {
-				return{
-					query: "erpnext.education.doctype.program_enrollment.program_enrollment.get_program_courses",
+			frm.set_query('course', 'courses', function(doc, cdt, cdn) {
+				return {
+					query: 'erpnext.education.doctype.program_enrollment.program_enrollment.get_program_courses',
 					filters: {
 						'program': frm.doc.program
 					}
@@ -34,9 +42,9 @@
 			});
 		}
 
-		frm.set_query("student", function() {
+		frm.set_query('student', function() {
 			return{
-				query: "erpnext.education.doctype.program_enrollment.program_enrollment.get_students",
+				query: 'erpnext.education.doctype.program_enrollment.program_enrollment.get_students',
 				filters: {
 					'academic_year': frm.doc.academic_year,
 					'academic_term': frm.doc.academic_term
@@ -49,14 +57,14 @@
 		frm.events.get_courses(frm);
 		if (frm.doc.program) {
 			frappe.call({
-				method: "erpnext.education.api.get_fee_schedule",
+				method: 'erpnext.education.api.get_fee_schedule',
 				args: {
-					"program": frm.doc.program,
-					"student_category": frm.doc.student_category
+					'program': frm.doc.program,
+					'student_category': frm.doc.student_category
 				},
 				callback: function(r) {
 					if(r.message) {
-						frm.set_value("fees" ,r.message);
+						frm.set_value('fees' ,r.message);
 						frm.events.get_courses(frm);
 					}
 				}
@@ -65,17 +73,17 @@
 	},
 
 	student_category: function() {
-		frappe.ui.form.trigger("Program Enrollment", "program");
+		frappe.ui.form.trigger('Program Enrollment', 'program');
 	},
 
 	get_courses: function(frm) {
-		frm.set_value("courses",[]);
+		frm.set_value('courses',[]);
 		frappe.call({
-			method: "get_courses",
+			method: 'get_courses',
 			doc:frm.doc,
 			callback: function(r) {
 				if(r.message) {
-					frm.set_value("courses", r.message);
+					frm.set_value('courses', r.message);
 				}
 			}
 		})
@@ -84,10 +92,10 @@
 
 frappe.ui.form.on('Program Enrollment Course', {
 	courses_add: function(frm){
-		frm.fields_dict['courses'].grid.get_field('course').get_query = function(doc){
+		frm.fields_dict['courses'].grid.get_field('course').get_query = function(doc) {
 			var course_list = [];
 			if(!doc.__islocal) course_list.push(doc.name);
-			$.each(doc.courses, function(idx, val){
+			$.each(doc.courses, function(_idx, val) {
 				if (val.course) course_list.push(val.course);
 			});
 			return { filters: [['Course', 'name', 'not in', course_list]] };
diff --git a/erpnext/education/doctype/program_enrollment/program_enrollment.py b/erpnext/education/doctype/program_enrollment/program_enrollment.py
index 28767f8..d676c25 100644
--- a/erpnext/education/doctype/program_enrollment/program_enrollment.py
+++ b/erpnext/education/doctype/program_enrollment/program_enrollment.py
@@ -7,12 +7,14 @@
 from frappe import msgprint, _
 from frappe.model.document import Document
 from frappe.desk.reportview import get_match_cond, get_filters_cond
-from frappe.utils import comma_and
+from frappe.utils import comma_and, get_link_to_form, getdate
 import erpnext.www.lms as lms
 
 class ProgramEnrollment(Document):
 	def validate(self):
 		self.validate_duplication()
+		self.validate_academic_year()
+		self.validate_academic_term()
 		if not self.student_name:
 			self.student_name = frappe.db.get_value("Student", self.student, "title")
 		if not self.courses:
@@ -23,6 +25,28 @@
 		self.make_fee_records()
 		self.create_course_enrollments()
 
+	def validate_academic_year(self):
+		start_date, end_date = frappe.db.get_value("Academic Year", self.academic_year, ["year_start_date", "year_end_date"])
+		if self.enrollment_date:
+			if start_date and getdate(self.enrollment_date) < getdate(start_date):
+				frappe.throw(_("Enrollment Date cannot be before the Start Date of the Academic Year {0}").format(
+					get_link_to_form("Academic Year", self.academic_year)))
+
+			if end_date and getdate(self.enrollment_date) > getdate(end_date):
+				frappe.throw(_("Enrollment Date cannot be after the End Date of the Academic Term {0}").format(
+					get_link_to_form("Academic Year", self.academic_year)))
+
+	def validate_academic_term(self):
+		start_date, end_date = frappe.db.get_value("Academic Term", self.academic_term, ["term_start_date", "term_end_date"])
+		if self.enrollment_date:
+			if start_date and getdate(self.enrollment_date) < getdate(start_date):
+				frappe.throw(_("Enrollment Date cannot be before the Start Date of the Academic Term {0}").format(
+					get_link_to_form("Academic Term", self.academic_term)))
+
+			if end_date and getdate(self.enrollment_date) > getdate(end_date):
+				frappe.throw(_("Enrollment Date cannot be after the End Date of the Academic Term {0}").format(
+					get_link_to_form("Academic Term", self.academic_term)))
+
 	def validate_duplication(self):
 		enrollment = frappe.get_all("Program Enrollment", filters={
 			"student": self.student,
