diff --git a/application/modules/courses/controllers/EditController.php b/application/modules/courses/controllers/EditController.php
index 034c5b45959a5d2d3c44029d957ce3a8cd94ebfd..d700e1cbbbfd1e375fafc0d7d82bee86624b53a6 100644
--- a/application/modules/courses/controllers/EditController.php
+++ b/application/modules/courses/controllers/EditController.php
@@ -194,6 +194,12 @@ class Courses_EditController extends App_Controller_Action
     		$savedRequests = RegistryModel::findByNamespaceAndKey($user->getId(), 'savedRequests')->getData();
             $request = $savedRequests[$id]['request'];
             $course = $savedRequests[$id]['course'];
+            if ($this->_isSavedRequestStale($request, $course)) {
+                $controllerSession = new Zend_Session_Namespace(__CLASS__);
+                $controllerSession->errorMessage = 'Unfortunately another request modifying this course has been submitted since you saved your request.  You will need to create a new request to continue.';
+                $this->_redirect('/courses/edit/error');
+                exit;
+            }
             $parentCourse = $savedRequests[$id]['parentCourse'];
             $session->currentSavedRequestId = $id;
     	} else {
@@ -252,6 +258,12 @@ class Courses_EditController extends App_Controller_Action
 
     }
 
+    public function errorAction()
+    {
+        $session = new Zend_Session_Namespace(__CLASS__);
+        $this->view->message = $session->errorMessage;
+    }
+    
     protected function _saveForLater()
     {
     	$in = $this->_getAllParams();
@@ -319,7 +331,7 @@ class Courses_EditController extends App_Controller_Action
             if ($crosslisting['subject'] == $subject &&
                 $crosslisting['courseNumber'] == $courseNumber &&
                 $crosslisting['courseLetter'] == $courseLetter) {
-                return true; 
+                return true;
             }
         }
         
@@ -336,6 +348,23 @@ class Courses_EditController extends App_Controller_Action
         return true;
     }
     
+    protected function _isSavedRequestStale(Requests_RequestModel $request, Courses_CourseModel $course)
+    {
+        $parentCourse = Courses_CourseModel::findByCourseId($course->getCourseId());
+        if ($parentCourse->getId() != $course->getParentId()) {
+            return true;
+        }
+        
+        $otherRequests = Courses_CourseModel::findActiveRequestByCourseCode($parentCourse->getSubject(),
+                                                                            $parentCourse->getCourseNumber(),
+                                                                            $parentCourse->getCourseLetter());
+        if (count($otherRequests) > 0) {
+            return true;
+        }
+
+        return false;
+    }
+    
     public function isCourseCodeAvailableAction()
     {
         $in = $this->_getAllParams();
diff --git a/application/modules/courses/models/CourseModel.php b/application/modules/courses/models/CourseModel.php
index 9b295fe04a7279fdb2cc84cb16ef4fdadd9c42a1..6856c91273ed2f1fbb4072b3810ebd8212ed2382 100644
--- a/application/modules/courses/models/CourseModel.php
+++ b/application/modules/courses/models/CourseModel.php
@@ -2587,6 +2587,11 @@ class Courses_CourseModel extends Unl_Model
     {
         return $this->_data['course'];
     }
+    
+    public function getParentId()
+    {
+        return $this->_data['parent'];
+    }
 
     public function isValid()
     {
diff --git a/application/modules/courses/views/scripts/edit/error.phtml b/application/modules/courses/views/scripts/edit/error.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..8e134924dd0be9343ed9c012b8c232ad873007ec
--- /dev/null
+++ b/application/modules/courses/views/scripts/edit/error.phtml
@@ -0,0 +1,3 @@
+<div style="color: #f00; font-weight: bold; font-size: 24px; line-height: normal; padding-bottom: 1em;">
+    <?php echo $this->message; ?>
+</div>
\ No newline at end of file