diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/Project.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/Project.java
index 610861dd72..bff1b9652c 100644
--- a/src/main/java/se/su/dsv/scipro/data/dataobjects/Project.java
+++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/Project.java
@@ -161,6 +161,18 @@ public class Project extends DomainObject implements Comparable<Project>, Iconiz
 	    this.projectFollowers.add(projectFollower);
 	}
 	
+	public void removeProjectFollower(ProjectFollower projectFollower) {
+		this.projectFollowers.remove(projectFollower);
+	}
+	
+	public void removeAuthor(Student student){
+		this.projectParticipants.remove(student);
+	}
+	
+	public void removeSupervisor(){
+		this.headSupervisor = null;
+	}
+	
 	public Set<ProjectFollower> getProjectReviewers(){
 		Iterator<ProjectFollower> iter = projectFollowers.iterator();
 		Set<ProjectFollower> set = new TreeSet<ProjectFollower>();
diff --git a/src/main/java/se/su/dsv/scipro/io/dto/PersonDTO.java b/src/main/java/se/su/dsv/scipro/io/dto/PersonDTO.java
index fe77ce3a20..6abddde58f 100644
--- a/src/main/java/se/su/dsv/scipro/io/dto/PersonDTO.java
+++ b/src/main/java/se/su/dsv/scipro/io/dto/PersonDTO.java
@@ -4,7 +4,7 @@ package se.su.dsv.scipro.io.dto;
 public class PersonDTO {
 
 	public long id;
-	public String firstName, lastName, email;
+	public String firstName, lastName;
 	
 	public String getFirstName() {
 		return firstName;
@@ -18,10 +18,39 @@ public class PersonDTO {
 	public void setLastName(String lastName) {
 		this.lastName = lastName;
 	}
+	
+	public long getId() {
+		return id;
+	}
+	
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + (int) (id ^ (id >>> 32));
+		return result;
+	}
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		PersonDTO other = (PersonDTO) obj;
+		if (id != other.id)
+			return false;
+		return true;
+	}
 	public String toString(){
-		return getFirstName() + " " + getLastName();
+		return "id: "+ getId()+" name: "+getFirstName() + " " + getLastName();
 	}
 	public PersonDTO() {
 		
 	}
+
+	public PersonDTO(long id) {
+		this.id = id;
+	}
 }
diff --git a/src/main/java/se/su/dsv/scipro/io/dto/ProjectParticipantDTO.java b/src/main/java/se/su/dsv/scipro/io/dto/ProjectParticipantDTO.java
index 45d1724e20..fadd167373 100644
--- a/src/main/java/se/su/dsv/scipro/io/dto/ProjectParticipantDTO.java
+++ b/src/main/java/se/su/dsv/scipro/io/dto/ProjectParticipantDTO.java
@@ -39,11 +39,53 @@ public class ProjectParticipantDTO {
 		}};
 	@Override
 	public String toString(){
-		return id+","+role+","+level+","+person;
+		return role+","+level+","+person;
 	}
-	public long id;
+	//public long id;
 	public String role;
 	@SerializedName("type")
 	public String level;
 	public PersonDTO person;
+	
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((person == null) ? 0 : person.hashCode());
+		result = prime * result + ((role == null) ? 0 : role.hashCode());
+		return result;
+	}
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		ProjectParticipantDTO other = (ProjectParticipantDTO) obj;
+		if (person == null) {
+			if (other.person != null)
+				return false;
+		} else if (!person.equals(other.person))
+			return false;
+		if (role == null) {
+			if (other.role != null)
+				return false;
+		} else if (!role.equals(other.role))
+			return false;
+		return true;
+	}
+	public String getRole() {
+		return role;
+	}
+	public void setRole(String role) {
+		this.role = role;
+	}
+	public PersonDTO getPerson() {
+		return person;
+	}
+	public void setPerson(PersonDTO person) {
+		this.person = person;
+	}
 }
diff --git a/src/main/java/se/su/dsv/scipro/io/facade/ImporterFacade.java b/src/main/java/se/su/dsv/scipro/io/facade/ImporterFacade.java
index 2ad375804c..a1acf9512a 100644
--- a/src/main/java/se/su/dsv/scipro/io/facade/ImporterFacade.java
+++ b/src/main/java/se/su/dsv/scipro/io/facade/ImporterFacade.java
@@ -38,12 +38,12 @@ import se.su.dsv.scipro.data.dataobjects.interfaces.FinalSeminarParticipation;
 import se.su.dsv.scipro.data.enums.ProjectStatus;
 import se.su.dsv.scipro.data.enums.ProjectTeamMemberRoles;
 import se.su.dsv.scipro.io.ExternalImporter;
+import se.su.dsv.scipro.io.dto.PersonDTO;
 import se.su.dsv.scipro.io.dto.ProjectDTO;
 import se.su.dsv.scipro.io.dto.ProjectParticipantDTO;
 import se.su.dsv.scipro.io.dto.ProjectParticipantDTO.EXTERNAL_PROJECT_ROLE;
 import se.su.dsv.scipro.io.dto.ProjectParticipantDTO.LOCAL_PROJECT_ROLE;
 import se.su.dsv.scipro.io.dto.ResearchAreaDTO;
-import se.su.dsv.scipro.io.dto.PersonDTO;
 import se.su.dsv.scipro.io.dto.UnitDTO;
 import se.su.dsv.scipro.io.dto.UserDTO;
 import se.su.dsv.scipro.io.dto.UserRoleDTO;
@@ -205,11 +205,93 @@ public class ImporterFacade {
 			project = projectDao.save(project);
 		//Loop over all participants and assign roles
 		if(mergeLinkedEntities){
+			checkForRemovedMembers(project, projectDTO.participants);
 			for(ProjectParticipantDTO projectParticipant:projectDTO.participants){
 				projectParticipantFromDTO(project,projectParticipant);
 			}
 		}
 	}
+	private void checkForRemovedMembers(final Project project, final Set<ProjectParticipantDTO> participants) {
+		final List<Member> currentMembers = project.getMembers();
+		final Set<ProjectParticipantDTO> remoteMembers = new HashSet<ProjectParticipantDTO>(participants);
+		final Set<Member> membersToRemove = new HashSet<Member>();
+		//Check to see if some members of the projects have been removed from Daisy. If so, we need to remove from Scipro as well.
+		for(Member m : currentMembers) {
+			logger.debug("Translating member "+m+" to DTO to compare with remote participants.");
+			ProjectParticipantDTO translated = participantDtoFromMember(m);
+			if(remoteMembers.contains(translated)){
+				logger.debug(m+" exists on remote system, skipping.");
+				remoteMembers.remove(translated);
+			} else {
+				logger.info(m+" does not exist on remote system, removing from Scipro.");
+				membersToRemove.add(m);
+			}
+		}
+		//Removing member from Scipro.
+		for(Member m : membersToRemove){
+			switch(m.getType()){
+			case AUTHOR: {
+				Student student = roleDao.findStudentRole(m.getUser());
+				project.removeAuthor(student);
+				break;
+			}
+			case SUPERVISOR: {
+				project.removeSupervisor();
+				break;
+			}
+			case CO_SUPERVISOR: {
+				Employee emp = supervisorDao.getFrom(m.getUser());
+				ProjectFollower pf = new ProjectFollower();
+				pf.setProjectRole(ProjectTeamMemberRoles.CO_SUPERVISOR);
+				pf.setFollower(emp);
+				if(project.getProjectCoSupervisors().contains(pf))
+					project.removeProjectFollower(pf);
+				else
+					logger.debug("Can't find project follower to remove.");
+				break;
+			}
+			case REVIEWER: {
+				Employee emp = supervisorDao.getFrom(m.getUser());
+				ProjectFollower pf = new ProjectFollower();
+				pf.setProjectRole(ProjectTeamMemberRoles.REVIEWER);
+				pf.setFollower(emp);
+				if(project.getProjectReviewers().contains(pf))
+					project.removeProjectFollower(pf);
+				else
+					logger.debug("Can't find project follower to remove.");
+				break;
+			}
+			}
+		}
+	}
+	private ProjectParticipantDTO participantDtoFromMember(Member m) {
+		ProjectParticipantDTO dto = new ProjectParticipantDTO();
+		PersonDTO person = new PersonDTO(m.getUser().getIdentifier());
+		dto.setPerson(person);
+		switch(m.getType()){
+		case AUTHOR: 
+			{
+			dto.setRole(EXTERNAL_PROJECT_ROLE.PARTICIPANT.toLocal().name());
+			break;
+			}
+		case SUPERVISOR:
+			{
+			dto.setRole(EXTERNAL_PROJECT_ROLE.SUPERVISOR.toLocal().name());
+			break;
+			}
+		case REVIEWER:
+			{
+			dto.setRole(EXTERNAL_PROJECT_ROLE.EXAMINER.toLocal().name());
+			break;
+			}
+		case CO_SUPERVISOR:
+			{
+			dto.setRole(EXTERNAL_PROJECT_ROLE.ASSISTANT_SUPERVISOR.toLocal().name());
+			break;
+			}
+		}
+		return dto;
+	}
 	private void projectParticipantFromDTO(final Project project, final ProjectParticipantDTO projectParticipant) {
 		//Use existing members to avoid duplicated roles being assigned
 		final List<Member> currentProjectMembers = project.getMembers();
@@ -373,6 +455,7 @@ public class ImporterFacade {
 		dto.setRealm(name.getRealm().toUpperCase().trim());
 		return dto;
 	}
+	
 	private ProjectClass toLocalClass(final ProjectDTO projectDTO){
 		ProjectClass pClass = null;
 		final String extractedType = extractProjectType(projectDTO);