diff --git a/src/main/java/org/nrg/xapi/rest/users/UsersApi.java b/src/main/java/org/nrg/xapi/rest/users/UsersApi.java
index 371cea8dc02ed466c83e2189f1c26cd037f6e207..cd9b89f87dd17d75d42fc1d37b2a42a0ad551f8e 100644
--- a/src/main/java/org/nrg/xapi/rest/users/UsersApi.java
+++ b/src/main/java/org/nrg/xapi/rest/users/UsersApi.java
@@ -599,6 +599,9 @@ public class UsersApi extends AbstractXapiRestController {
             if (user == null) {
                 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
             }
+            if(user.getID().equals(Users.getGuest().getID())){
+                return new ResponseEntity<>(HttpStatus.PRECONDITION_FAILED);
+            }
             try {
                 Groups.addUserToGroup(group, user, getSessionUser(), null);
                 return new ResponseEntity<>(HttpStatus.OK);
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjectMemberResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjectMemberResource.java
index c9c0a1149d3c8d906dd5672348821d0b639ba890..67e7c98ddb2ac337f575eb3fdac2d11a64b8b0e7 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjectMemberResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjectMemberResource.java
@@ -188,64 +188,68 @@ public class ProjectMemberResource extends SecureResource {
 			try {
 				final UserI user = getUser();
 				if(Permissions.canDelete(user,proj)){
-					if (unknown.size()>0){
-						//NEW USER                        
-                        try {
-							for(String uID : unknown){
+					if (unknown.size() > 0) {
+						//NEW USER
+						try {
+							for (String uID : unknown) {
 								VelocityContext context = new VelocityContext();
-								context.put("user",user);
-							    context.put("server",TurbineUtils.GetFullServerPath(request));
-							    context.put("process","Transfer to the archive.");
-							    context.put("system",TurbineUtils.GetSystemName());
-							    context.put("access_level",gID);
-							    context.put("admin_email",XDAT.getSiteConfigPreferences().getAdminEmail());
-							    context.put("projectOM",proj);
-							    //SEND email to user
-							    final PersistentWorkflowI wrk=PersistentWorkflowUtils.getOrCreateWorkflowData(null, user, XnatProjectdata.SCHEMA_ELEMENT_NAME, proj.getId(), proj.getId(), newEventInstance(EventUtils.CATEGORY.PROJECT_ACCESS, EventUtils.INVITE_USER_TO_PROJECT + " (" + uID + ")"));
-						    	try {
+								context.put("user", user);
+								context.put("server", TurbineUtils.GetFullServerPath(request));
+								context.put("process", "Transfer to the archive.");
+								context.put("system", TurbineUtils.GetSystemName());
+								context.put("access_level", gID);
+								context.put("admin_email", XDAT.getSiteConfigPreferences().getAdminEmail());
+								context.put("projectOM", proj);
+								//SEND email to user
+								final PersistentWorkflowI wrk = PersistentWorkflowUtils.getOrCreateWorkflowData(null, user, XnatProjectdata.SCHEMA_ELEMENT_NAME, proj.getId(), proj.getId(), newEventInstance(EventUtils.CATEGORY.PROJECT_ACCESS, EventUtils.INVITE_USER_TO_PROJECT + " (" + uID + ")"));
+								try {
 									ProjectAccessRequest.InviteUser(context, uID, user, user.getFirstname() + " " + user.getLastname() + " has invited you to join the " + proj.getName() + " " + DisplayManager.GetInstance().getSingularDisplayNameForProject().toLowerCase() + ".");
 									WorkflowUtils.complete(wrk, wrk.buildEvent());
 								} catch (Exception e) {
 									WorkflowUtils.fail(wrk, wrk.buildEvent());
-									logger.error("",e);
+									logger.error("", e);
 								}
 							}
 						} catch (Throwable e) {
-							logger.error("",e);
+							logger.error("", e);
 						}
 					}
-					
-					if (newUsers.size()>0){
+
+					if (newUsers.size() > 0) {
 						//CURRENT USER
 
-						String email=(this.isQueryVariableTrue("sendemail"))?"true":"false";
-						
-			            
-						boolean sendmail=Boolean.parseBoolean(email);
-						
-						for(UserI newUser: newUsers){
-							final PersistentWorkflowI wrk=PersistentWorkflowUtils.getOrCreateWorkflowData(null, user, Users.getUserDataType(),newUser.getID().toString(),proj.getId(),newEventInstance(EventUtils.CATEGORY.PROJECT_ACCESS, EventUtils.ADD_USER_TO_PROJECT));
-					    	EventMetaI c=wrk.buildEvent();
+						String email = (this.isQueryVariableTrue("sendemail")) ? "true" : "false";
+
+
+						boolean sendmail = Boolean.parseBoolean(email);
 
-							proj.addGroupMember(group.getId(), newUser, user,WorkflowUtils.setStep(wrk, "Add " + newUser.getLogin()));
-							WorkflowUtils.complete(wrk, c);
+						for (UserI newUser : newUsers) {
+							if(newUser!=null && newUser.getID().equals(Users.getGuest().getID())){
+								getResponse().setStatus(Status.CLIENT_ERROR_PRECONDITION_FAILED);
+							} else {
+								final PersistentWorkflowI wrk = PersistentWorkflowUtils.getOrCreateWorkflowData(null, user, Users.getUserDataType(), newUser.getID().toString(), proj.getId(), newEventInstance(EventUtils.CATEGORY.PROJECT_ACCESS, EventUtils.ADD_USER_TO_PROJECT));
+								EventMetaI c = wrk.buildEvent();
 
-							if (sendmail){
-                                try {
-                                    VelocityContext context = new VelocityContext();
+								proj.addGroupMember(group.getId(), newUser, user, WorkflowUtils.setStep(wrk, "Add " + newUser.getLogin()));
+								WorkflowUtils.complete(wrk, c);
 
-                                    context.put("user",user);
-                                    context.put("server",TurbineUtils.GetFullServerPath(request));
-                                    context.put("process","Transfer to the archive.");
-                                    context.put("system",TurbineUtils.GetSystemName());
-                                    context.put("access_level","member");
-                                    context.put("admin_email", XDAT.getSiteConfigPreferences().getAdminEmail());
-                                    context.put("projectOM",proj);
-                                    org.nrg.xnat.turbine.modules.actions.ProcessAccessRequest.SendAccessApprovalEmail(context, newUser.getEmail(), user, TurbineUtils.GetSystemName() + " Access Granted for " + proj.getName());
-                                } catch (Throwable e) {
-                                    logger.error("",e);
-                                }
-                            }
+								if (sendmail) {
+									try {
+										VelocityContext context = new VelocityContext();
+
+										context.put("user", user);
+										context.put("server", TurbineUtils.GetFullServerPath(request));
+										context.put("process", "Transfer to the archive.");
+										context.put("system", TurbineUtils.GetSystemName());
+										context.put("access_level", "member");
+										context.put("admin_email", XDAT.getSiteConfigPreferences().getAdminEmail());
+										context.put("projectOM", proj);
+										org.nrg.xnat.turbine.modules.actions.ProcessAccessRequest.SendAccessApprovalEmail(context, newUser.getEmail(), user, TurbineUtils.GetSystemName() + " Access Granted for " + proj.getName());
+									} catch (Throwable e) {
+										logger.error("", e);
+									}
+								}
+							}
 						}
 					}
 				}else{