diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java
index 9d2a2b8eff..16623c5abc 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/SupervisorIdeaServiceImpl.java
@@ -54,6 +54,9 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
 	
 	private transient Logger logger = Logger.getLogger(SupervisorIdeaService.class);
 	private int MAX_PARTNERS = 1;
+	private int BACHELOR_STUDENTS = 2;
+	private int MAX_MASTER_STUDENTS = 1;
+
 	
 	@Autowired
 	public SupervisorIdeaServiceImpl(
@@ -67,7 +70,7 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
 	@Transactional ( readOnly = false )
 	public void saveSupervisorCreatedIdea(SupervisorIdea idea, Employee creator, SortedSet<Student> students) {
 		
-		if(!students.isEmpty()) {
+		if(!students.isEmpty()) {			
 			for(Student s : students) {
 				s = studentService.findOne(s.getId()); //Needed for lazy loading to work.
 				IdeaParticipation ip = new IdeaParticipation();
@@ -172,6 +175,19 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
 		return new Pair<Boolean, String>(true,"Validation passed");
 	}
 	
+	@Override
+	public Pair<Boolean, String> validateSupervisorIdeaSubmission(SupervisorIdea idea, SortedSet<Student> students) {
+		if(!students.isEmpty()) {
+		if(idea.getProjectClass().getCode().equals(ProjectClass.BACHELOR)&&students.size()!=BACHELOR_STUDENTS){
+			return new Pair<Boolean, String>(false, "Selected number of bachelor students is not allowed");
+		}
+		if(idea.getProjectClass().getCode().equals(ProjectClass.MASTER)&&students.size()>MAX_MASTER_STUDENTS){
+			return new Pair<Boolean, String>(false, "Selected number of master students is not allowed");
+		}
+		}
+		return new Pair<Boolean, String>(true, "Validation passed");
+	}
+	
 	@Override
 	@Transactional (readOnly = false)
 	public void partnerAcceptIdea(SupervisorIdea idea, User loggedInUser) {
diff --git a/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorIdeaService.java b/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorIdeaService.java
index f91dfb3d74..0782eb2fc2 100644
--- a/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorIdeaService.java
+++ b/src/main/java/se/su/dsv/scipro/springdata/services/SupervisorIdeaService.java
@@ -46,6 +46,7 @@ public interface SupervisorIdeaService extends GenericService<SupervisorIdea, Lo
 
 	Pair<Boolean, String> validateIdeaAcceptance(SupervisorIdea idea, User loggedInUser, SortedSet<Student> students);
 	Pair<Boolean, String> validatePartnerAcceptance(User loggedInUser);
+	Pair<Boolean, String> validateSupervisorIdeaSubmission(SupervisorIdea idea, SortedSet<Student> students);
 	
 	public static class FilterParams implements Serializable {
 		private static final long serialVersionUID = 4981420721152104292L;
diff --git a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorEditIdeaPanel.java b/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorEditIdeaPanel.java
index 82a42898c8..f98b9a7fbd 100644
--- a/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorEditIdeaPanel.java
+++ b/src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorEditIdeaPanel.java
@@ -35,6 +35,7 @@ import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao.TYPE;
 import se.su.dsv.scipro.match.dataobject.IdeaParticipation;
 import se.su.dsv.scipro.match.dataobject.Keyword;
 import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
+import se.su.dsv.scipro.peer.data.dao.controllers.Pair;
 import se.su.dsv.scipro.reusable.AddRemoveStudentsPanel;
 import se.su.dsv.scipro.springdata.services.ProjectClassService;
 import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
@@ -147,15 +148,17 @@ public class SupervisorEditIdeaPanel extends Panel {
 
                 @Override
                 protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
-                    target.addComponent(feedbackPanel);                    	
-              
-                        try {
-                        ideaService.saveSupervisorCreatedIdea(model.getObject(), ideaCreator, studentsPanel.getStudentSet());
-                        setResponsePage(SupervisorProjectIdeaStartPage.class);
-                        getSession().info("Idea successfully submitted");
-                        } catch (Exception e) {
-                        	e.printStackTrace();
-                        }                
+                	Pair<Boolean, String> acceptance = ideaService.validateSupervisorIdeaSubmission(model.getObject(), studentsPanel.getStudentSet());
+                	if(acceptance.head){
+                		ideaService.saveSupervisorCreatedIdea(model.getObject(), ideaCreator, studentsPanel.getStudentSet());
+                		setResponsePage(SupervisorProjectIdeaStartPage.class);
+                		getSession().info("Idea successfully submitted");
+                	} else {
+                		getSession().error(acceptance.tail);
+                		target.appendJavascript("window.scrollTo(0,0);");
+                	}
+                	target.addComponent(feedbackPanel);
+                	
                    
                 }