diff --git a/src/main/java/se/su/dsv/scipro/data/controllers/NotificationController.java b/src/main/java/se/su/dsv/scipro/data/controllers/NotificationController.java
index fb9d8ca595..f9aa382f22 100644
--- a/src/main/java/se/su/dsv/scipro/data/controllers/NotificationController.java
+++ b/src/main/java/se/su/dsv/scipro/data/controllers/NotificationController.java
@@ -2,8 +2,12 @@ package se.su.dsv.scipro.data.controllers;
 
 import se.su.dsv.scipro.data.dataobjects.FinalSeminar;
 import se.su.dsv.scipro.data.dataobjects.FinalSeminarOpposition;
+import se.su.dsv.scipro.data.dataobjects.Project;
+import se.su.dsv.scipro.data.dataobjects.Student;
 import se.su.dsv.scipro.data.dataobjects.User;
 import se.su.dsv.scipro.data.enums.NotificationPriority;
+import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest;
+import se.su.dsv.scipro.peer.data.dataobjects.PeerReview;
 
 /**
  * 
@@ -12,32 +16,38 @@ import se.su.dsv.scipro.data.enums.NotificationPriority;
  */
 public interface NotificationController {
 
-	public void createNotificationForPrivateMessage(final User user, final String message,
+	public void notifyPrivateMessage(final User user, final String message,
 			final String url);
 
-	public void createNotificationForConference(final User user, final String message,
+	public void notifyConferencePost(final User user, final String message,
 			final String messageboardTitle, final NotificationPriority notificationPriority,
 			final String absolutePath);
 
-	public void createNotificationForComment(final User user, final String message,
+	public void notifyForComment(final User user, final String message,
 			final NotificationPriority notificationPriority, final String title,
 			final String classId, final String absolutePath);
 
-	public void createNotificationForReplyPrivateMessage(final User user, final String message,
+	public void notifyReplyPrivateMessage(final User user, final String message,
 			final String url);
 	
-	public void createNotificationForFinalSeminarEdited(final User user,
+	public void notifyFinalSeminarEdited(final User user,
 			final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
 			final String absolutePath);
 	
-	public void createNotificationForCreateFinalSeminar(final User user, final FinalSeminar finalSemniar,
+	public void notifyCreateFinalSeminar(final User user, final FinalSeminar finalSemniar,
 			final NotificationPriority notificationPriority, final String absolutePath, final boolean opponent);
 	
-	public void createNotificationForThesisUploaded(final User user,
+	public void notifyThesisUploaded(final User user,
 			final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
 			final String absolutePath);
 	
-	public void createNotificationForOppositionUploaded(final User user,
+	public void notifyOppositionUploaded(final User user,
 			final FinalSeminarOpposition opposition,
 			final NotificationPriority notificationPriority, final String absolutePath);
+	
+	public void notifyOfReviewRating(PeerReview review);
+	
+	public void notifyCompletionOfReview(PeerReview review);
+	
+	public void notifyAcceptOfReview(PeerRequest request, Student student, Project project);
 }
diff --git a/src/main/java/se/su/dsv/scipro/data/controllers/impl/FinalSeminarUploadControllerImpl.java b/src/main/java/se/su/dsv/scipro/data/controllers/impl/FinalSeminarUploadControllerImpl.java
index 5eb8e8f616..f8ba468932 100644
--- a/src/main/java/se/su/dsv/scipro/data/controllers/impl/FinalSeminarUploadControllerImpl.java
+++ b/src/main/java/se/su/dsv/scipro/data/controllers/impl/FinalSeminarUploadControllerImpl.java
@@ -168,21 +168,21 @@ public class FinalSeminarUploadControllerImpl implements FinalSeminarUploadContr
 
 			for (FinalSeminarActiveParticipation fa : seminar.getActiveParticipations()) {
 
-				notificationController.createNotificationForThesisUploaded(fa.getUser(), seminar,
+				notificationController.notifyThesisUploaded(fa.getUser(), seminar,
 						NotificationPriority.HIGH, ProjectOppositionPage.getAbsoluteURL());
 			}
 
 			for (FinalSeminarOpposition fo : seminar.getOppositions()) {
-				notificationController.createNotificationForThesisUploaded(fo.getOpponent().getUser(), seminar,
+				notificationController.notifyThesisUploaded(fo.getOpponent().getUser(), seminar,
 						NotificationPriority.HIGH, ProjectOppositionPage.getAbsoluteURL());
 			}
 
 			for (ProjectFollower pf : seminar.getProject().getProjectFollowers()) {
-				notificationController.createNotificationForThesisUploaded(pf.getFollower().getUser(), seminar,
+				notificationController.notifyThesisUploaded(pf.getFollower().getUser(), seminar,
 						NotificationPriority.HIGH, SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
 			}
 			if (seminar.getProject().getHeadSupervisor() != null) {
-				notificationController.createNotificationForThesisUploaded(seminar.getProject().getHeadSupervisor()
+				notificationController.notifyThesisUploaded(seminar.getProject().getHeadSupervisor()
 						.getUser(), seminar, NotificationPriority.HIGH,
 						SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
 			}
@@ -219,15 +219,15 @@ public class FinalSeminarUploadControllerImpl implements FinalSeminarUploadContr
 			opposition = finalSeminarOppositionDao.save(opposition);
 
 			for (Student student : opposition.getFinalSeminar().getProject().getProjectParticipants()) {
-				notificationController.createNotificationForOppositionUploaded(student.getUser(), opposition,
+				notificationController.notifyOppositionUploaded(student.getUser(), opposition,
 						NotificationPriority.HIGH, ProjectStartPage.getAbsoluteURL());
 			}
 			for (ProjectFollower pf : opposition.getFinalSeminar().getProject().getProjectFollowers()) {
-				notificationController.createNotificationForOppositionUploaded(pf.getFollower().getUser(), opposition,
+				notificationController.notifyOppositionUploaded(pf.getFollower().getUser(), opposition,
 						NotificationPriority.HIGH, SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
 			}
 			if (opposition.getFinalSeminar().getProject().getHeadSupervisor() != null) {
-				notificationController.createNotificationForOppositionUploaded(opposition.getFinalSeminar().getProject().getHeadSupervisor()
+				notificationController.notifyOppositionUploaded(opposition.getFinalSeminar().getProject().getHeadSupervisor()
 						.getUser(), opposition, NotificationPriority.HIGH,
 						SupervisorProjectsFinalSeminarPage.getAbsoluteURL());
 			}
diff --git a/src/main/java/se/su/dsv/scipro/data/controllers/impl/NotificationControllerImpl.java b/src/main/java/se/su/dsv/scipro/data/controllers/impl/NotificationControllerImpl.java
index 4373fb64fb..fb11252c3f 100644
--- a/src/main/java/se/su/dsv/scipro/data/controllers/impl/NotificationControllerImpl.java
+++ b/src/main/java/se/su/dsv/scipro/data/controllers/impl/NotificationControllerImpl.java
@@ -4,6 +4,9 @@ import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Properties;
 
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.protocol.http.RequestUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 
@@ -18,10 +21,17 @@ import se.su.dsv.scipro.data.dataobjects.FinalSeminar;
 import se.su.dsv.scipro.data.dataobjects.FinalSeminarOpposition;
 import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings;
 import se.su.dsv.scipro.data.dataobjects.MailEvent;
+import se.su.dsv.scipro.data.dataobjects.Project;
+import se.su.dsv.scipro.data.dataobjects.Student;
 import se.su.dsv.scipro.data.dataobjects.User;
 import se.su.dsv.scipro.data.dataobjects.UserSettings;
 import se.su.dsv.scipro.data.dataobjects.WebNotification;
 import se.su.dsv.scipro.data.enums.NotificationPriority;
+import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest;
+import se.su.dsv.scipro.peer.data.dataobjects.PeerReview;
+import se.su.dsv.scipro.peer.pages.ProjectPeerReviewPage;
+import se.su.dsv.scipro.peer.pages.ProjectPeerStatsPage;
+import se.su.dsv.scipro.peer.pages.SupervisorPeerReviewPage;
 import se.su.dsv.scipro.util.PropsUtils;
 
 /**
@@ -144,7 +154,7 @@ public class NotificationControllerImpl implements NotificationController {
 	}
 
 	@Override
-	public void createNotificationForPrivateMessage(final User user, final String message,
+	public void notifyPrivateMessage(final User user, final String message,
 			final String url) {
 		Properties props = null;
 		try {
@@ -167,7 +177,7 @@ public class NotificationControllerImpl implements NotificationController {
 	}
 
 	@Override
-	public void createNotificationForConference(final User user, final String message,
+	public void notifyConferencePost(final User user, final String message,
 			final String messageboardTitle, final NotificationPriority notificationPriority,
 			final String absolutePath) {
 
@@ -193,7 +203,7 @@ public class NotificationControllerImpl implements NotificationController {
 	}
 
 	@Override
-	public void createNotificationForComment(final User user, final String message,
+	public void notifyForComment(final User user, final String message,
 			final NotificationPriority notificationPriority, final String title,
 			final String classId, final String absolutePath) {
 
@@ -219,7 +229,7 @@ public class NotificationControllerImpl implements NotificationController {
 	}
 
 	@Override
-	public void createNotificationForReplyPrivateMessage(final User user, final String message,
+	public void notifyReplyPrivateMessage(final User user, final String message,
 			final String absolutePath) {
 		Properties props = null;
 		try {
@@ -239,9 +249,9 @@ public class NotificationControllerImpl implements NotificationController {
 				mailSubject, mailMessage);
 		processNotification(user, notificationMessage, absolutePath, NotificationPriority.MEDIUM);
 	}
-	
+
 	@Override
-	public void createNotificationForFinalSeminarEdited(final User user,
+	public void notifyFinalSeminarEdited(final User user,
 			final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
 			final String absolutePath) {
 
@@ -264,13 +274,13 @@ public class NotificationControllerImpl implements NotificationController {
 
 		NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
 				mailSubject, mailMessage);
-		processNotification(user, notificationMessage, absolutePath,
-				notificationPriority);
+		processNotification(user, notificationMessage, absolutePath, notificationPriority);
 	}
-	
+
 	@Override
-	public void createNotificationForCreateFinalSeminar(final User user, final FinalSeminar finalSemniar,
-			final NotificationPriority notificationPriority, final String absolutePath, final boolean opponent) {
+	public void notifyCreateFinalSeminar(final User user,
+			final FinalSeminar finalSemniar, final NotificationPriority notificationPriority,
+			final String absolutePath, final boolean opponent) {
 
 		Properties props = null;
 		try {
@@ -282,9 +292,9 @@ public class NotificationControllerImpl implements NotificationController {
 		String created = props.getProperty("finalSeminarCreated");
 		String mailSubject = props.getProperty("mailSubject");
 		String project = "";
-		if(!opponent){
+		if (!opponent) {
 			project = props.getProperty("finalSeminarProject");
-		}else{
+		} else {
 			project = props.getProperty("finalSeminarProjectOpponnent");
 		}
 
@@ -303,12 +313,11 @@ public class NotificationControllerImpl implements NotificationController {
 
 		NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
 				mailSubject, mailMessage);
-		processNotification(user, notificationMessage, absolutePath,
-				notificationPriority);
+		processNotification(user, notificationMessage, absolutePath, notificationPriority);
 	}
-	
+
 	@Override
-	public void createNotificationForThesisUploaded(final User user,
+	public void notifyThesisUploaded(final User user,
 			final FinalSeminar finalSeminar, final NotificationPriority notificationPriority,
 			final String absolutePath) {
 
@@ -329,12 +338,11 @@ public class NotificationControllerImpl implements NotificationController {
 
 		NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
 				mailSubject, mailMessage);
-		processNotification(user, notificationMessage, absolutePath,
-				notificationPriority);
+		processNotification(user, notificationMessage, absolutePath, notificationPriority);
 	}
-	
+
 	@Override
-	public void createNotificationForOppositionUploaded(final User user,
+	public void notifyOppositionUploaded(final User user,
 			final FinalSeminarOpposition opposition,
 			final NotificationPriority notificationPriority, final String absolutePath) {
 
@@ -362,7 +370,140 @@ public class NotificationControllerImpl implements NotificationController {
 
 		NotificationMessage notificationMessage = new NotificationMessage(webNotificationMessage,
 				mailSubject, mailMessage);
-		processNotification(user, notificationMessage, absolutePath,
-				notificationPriority);
+		processNotification(user, notificationMessage, absolutePath, notificationPriority);
+	}
+
+	public void notifyAcceptOfReview(PeerRequest request, Student student, Project project) {
+		try {
+			Properties props = null;
+
+			props = PropsUtils.load("notification.properties");
+
+			String mailSubject = props.getProperty("acceptPeerReviewSubject");
+			String requestAccepted = props.getProperty("requestAccepted");
+			String heShe = props.getProperty("heShe");
+			String complete = props.getProperty("complete");
+
+			User requestingUser = request.getRequester().getUser();
+
+			String messageBody = requestAccepted
+					+ student.getUser().toString()
+					+ heShe
+					+ project.getProjectClass().getProjectClassSettings()
+							.getNumDaysToSubmitPeerReview() + complete;
+
+			String webNotificationMessage = requestAccepted + student.getUser().toString();
+
+			NotificationMessage notificationMessage = new NotificationMessage(
+					webNotificationMessage, mailSubject, messageBody);
+
+			PageParameters pp = new PageParameters();
+
+			String peerStatsUrl = RequestUtils.toAbsolutePath(RequestCycle.get()
+					.urlFor(ProjectPeerStatsPage.class, pp).toString());
+
+			processNotification(requestingUser, notificationMessage, peerStatsUrl,
+					NotificationPriority.MEDIUM);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+
+	public void notifyCompletionOfReview(PeerReview review) {
+		try {
+
+			Properties props = null;
+			props = PropsUtils.load("notification.properties");
+			String mailSubject = props.getProperty("completedReviewSubject");
+			String requestReviewed = props.getProperty("requestReviewed");
+			String supervisorMessageBody = props.getProperty("supervisorMessageBody");
+			String supervisorMessageBody2 = props.getProperty("supervisorMessageBody2");
+			String supervisorMessageBody3 = props.getProperty("supervisorMessageBody3");
+			String commaWithLinebreak = props.getProperty("commaWithLinebreak");
+			String inProject = props.getProperty("inProject");
+			String hasPerformed = props.getProperty("hasPerformed");
+			PeerRequest peerRequest = review.getPeerRequest();
+			User requestingUser = peerRequest.getRequester().getUser();
+
+			PageParameters pp = new PageParameters();
+			pp.add(PeerReview.PP_PEER_REVIEW_ID, review.getId().toString());
+
+			String reviewUrl = RequestUtils.toAbsolutePath(RequestCycle.get()
+					.urlFor(ProjectPeerReviewPage.class, pp).toString());
+			String supervisorReviewUrl = RequestUtils.toAbsolutePath(RequestCycle.get()
+					.urlFor(SupervisorPeerReviewPage.class, pp).toString());
+
+			// Message for student when his/her review request is completed.
+			String messageBody = requestReviewed;
+
+			NotificationMessage notificationMessage = new NotificationMessage(messageBody,
+					mailSubject, messageBody);
+
+			processNotification(requestingUser, notificationMessage, reviewUrl,
+					NotificationPriority.MEDIUM);
+
+			// Message for supervisor of the project with a completed review.
+			messageBody = supervisorMessageBody + peerRequest.getProject().getTitle()
+					+ supervisorMessageBody2;
+			User requestSupervisor = peerRequest.getProject().getHeadSupervisor().getUser();
+
+			NotificationMessage notificationMessageSupervisorOfProject = new NotificationMessage(
+					messageBody, mailSubject, messageBody);
+
+			processNotification(requestSupervisor, notificationMessageSupervisorOfProject,
+					supervisorReviewUrl, NotificationPriority.MEDIUM);
+
+			// Message for supervisor of the reviewer that have made a review
+			// for another project.
+
+			String webNotificationMessage = review.getReviewer().getUser().toString() + inProject
+					+ review.getProject().getTitle() + hasPerformed;
+
+			messageBody = supervisorMessageBody + review.getProject().getTitle()
+					+ commaWithLinebreak + review.getReviewer().getUser().toString()
+					+ supervisorMessageBody3;
+
+			User reviewSupervisor = review.getProject().getHeadSupervisor().getUser();
+			NotificationMessage notificationMessageSupervisorOfReviewer = new NotificationMessage(
+					webNotificationMessage, mailSubject, messageBody);
+
+			processNotification(reviewSupervisor, notificationMessageSupervisorOfReviewer,
+					supervisorReviewUrl, NotificationPriority.MEDIUM);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * TODO Rewrite
+	 * 
+	 * @param review
+	 */
+	public void notifyOfReviewRating(PeerReview review) {
+		try {
+			Properties props = null;
+			props = PropsUtils.load("notification.properties");
+			String mailSubject = props.getProperty("reviewRatedSubject");
+			String reviewRatedBody = props.getProperty("reviewRatedBody");
+			User reviewingUser = review.getReviewer().getUser();
+
+			PageParameters pp = new PageParameters();
+			pp.add(PeerReview.PP_PEER_REVIEW_ID, review.getId().toString());
+			String projectReviewUrl = RequestUtils.toAbsolutePath(RequestCycle.get()
+					.urlFor(ProjectPeerReviewPage.class, pp).toString());
+
+			String messageBody = reviewRatedBody;
+
+			NotificationMessage notificationMessage = new NotificationMessage(messageBody,
+					mailSubject, messageBody);
+
+			processNotification(reviewingUser, notificationMessage, projectReviewUrl,
+					NotificationPriority.MEDIUM);
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
 	}
 }