diff --git a/application/modules/courses/models/CourseModel.php b/application/modules/courses/models/CourseModel.php
index b75d0fe7b60f6020b516c30014d7d6e2b0fc3471..bd06fce75f70a38c0a349e02f9d09e87a4112a13 100644
--- a/application/modules/courses/models/CourseModel.php
+++ b/application/modules/courses/models/CourseModel.php
@@ -3572,5 +3572,78 @@ class Courses_CourseModel extends Unl_Model
         $summary = ucfirst($summary);
         return $summary;
     }
+    
+    static public function updateCourseNumber($subject, $originalCourseNumber, $originalCourseLetter, $newCourseNumber, $newCourseLetter)
+    {
+        if (Zend_Auth::getInstance()->hasIdentity()) {
+            $requestOwner = Auth_UserModel::findCurrentUser();
+        } else {
+            $requestOwner = Auth_UserModel::findByUsername('bglenn2');
+        }
+        
+        $relatedCourses = self::getRelatedCourses($subject, $originalCourseNumber, $originalCourseLetter);
+        $newRequests = new Unl_Model_Collection('Requests_RequestModel');
+        $newCourses = new Unl_Model_Collection('Courses_CourseModel');
+        
+        foreach ($relatedCourses as $relatedCourse) {
+            $justification = 'The course code ' . $subject . ' ' . $originalCourseNumber . $originalCourseLetter
+                           . ' has been changed to ' . $subject . ' ' . $newCourseNumber . $newCourseLetter . '.';
+            $existingRequests = Courses_CourseModel::findActiveRequestByCourseCode($relatedCourse->getSubject(), $relatedCourse->getCourseNumber(), $relatedCourse->getCourseLetter());
+            if (count($existingRequests) > 0) {
+                $request = $existingRequests->pop();
+                if ($request->getType() == 'RemoveCourse') {
+                    // We don't really need to updated remove course requests.
+                    continue;
+                }
+                $relatedCourse = Courses_CourseModel::findLatestOfRequest($request);
+                $request->setJustification($request->getJustification() . '<br />' . PHP_EOL . '<br />' . PHP_EOL . $justification);
+            } else {
+                $request = Requests_RequestModel::fetchNew();
+                $request->setType('AdminEdit');
+                $request->setModule('courses');
+                $request->setJustification($justification);
+                $request->setOwner($requestOwner);
+                $newRequests[] = $request;
+            }
+            Requests_RequestModel::save($request);
+            
+            $newCourse = clone $relatedCourse;
+            $newCourse->setRequest($request);
+            $newCourse->updateCourseNumberReference($subject, $originalCourseNumber . $originalCourseLetter, $newCourseNumber . $newCourseLetter);
+            $newCourses[] = $newCourse;
+        }
+
+        Courses_CourseModel::save($newCourses);
+        Requests_ApprovalChainModel::consider($newRequests);
+    }
+    
+    /**
+     * Updates all references a subject's course number to a different course number.
+     * This will potentially change the description, notes, and prerequisite fields.
+     * 
+     * @param string $subject
+     * @param string $originalCourseNumber
+     * @param string $newCourseNumber
+     */
+    public function updateCourseNumberReference($subject, $originalCourseNumber, $newCourseNumber) {
+        $this->setDescription(
+            UNL_UndergraduateBulletin_EPUB_Utilities::updateCourseNumber(
+                $this->getDescription(),
+                $subject, $originalCourseNumber, $newCourseNumber
+            )
+        );
+        $this->setNotes(
+            UNL_UndergraduateBulletin_EPUB_Utilities::updateCourseNumber(
+                $this->getNotes(),
+                $subject, $originalCourseNumber, $newCourseNumber
+            )
+        );
+        $this->setPrerequisite(
+            UNL_UndergraduateBulletin_EPUB_Utilities::updateCourseNumber(
+                $this->getPrerequisite(),
+                $subject, $originalCourseNumber, $newCourseNumber
+            )
+        );
+    }
 }