diff --git a/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java b/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java
index 112eac6d6ca87b23654a7cbb923e347908751dbc..a83585802358eebeec89d4a7121751e45487f222 100644
--- a/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java
+++ b/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java
@@ -1,8 +1,12 @@
 package org.nrg.xapi.rest.event;
 
-import io.swagger.annotations.*;
+import com.google.common.collect.Lists;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import javassist.Modifier;
-
+import org.nrg.framework.annotations.XapiRestController;
 import org.nrg.framework.utilities.Reflection;
 import org.nrg.xapi.model.event.EventClassInfo;
 import org.nrg.xdat.XDAT;
@@ -27,10 +31,12 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.web.bind.annotation.*;
-
-import com.google.common.collect.Lists;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
 
+import javax.annotation.PostConstruct;
 import java.io.IOException;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
@@ -39,40 +45,46 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import javax.annotation.PostConstruct;
-
 /**
  * The Class EventHandlerApi.
  */
 @Api(description = "The XNAT Event Handler API")
-@RestController
+@XapiRestController
 public class EventHandlerApi {
-    
-    /** The Constant _log. */
+
+    /**
+     * The Constant _log.
+     */
     private static final Logger _log = LoggerFactory.getLogger(EventHandlerApi.class);
-	
-	/** The event ids service. */
-	@Autowired
-	private HibernateAutomationEventIdsService eventIdsService;
-	
-	/** The filters service. */
-	@Autowired
-	private HibernateAutomationFiltersService filtersService;
-    
-    /** The event packages. */
-	@SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
-	@Autowired
+
+    /**
+     * The event ids service.
+     */
+    @Autowired
+    private HibernateAutomationEventIdsService eventIdsService;
+
+    /**
+     * The filters service.
+     */
+    @Autowired
+    private HibernateAutomationFiltersService filtersService;
+
+    /**
+     * The event packages.
+     */
+    @SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
+    @Autowired
     private EventPackages eventPackages;
-    
+
     /**
      * Inits the this.
      */
     @PostConstruct
     private void initThis() {
-    	getEventIdsService();
-    	getFiltersService();
+        getEventIdsService();
+        getFiltersService();
     }
-	
+
     /**
      * Automation event classes get.
      *
@@ -85,12 +97,12 @@ public class EventHandlerApi {
     @ResponseBody
     public ResponseEntity<List<EventClassInfo>> automationEventClassesGet(@PathVariable("project_id") String project_id) {
         final HttpStatus status = isPermitted(project_id);
-    	if (status != null) {
-    		return new ResponseEntity<>(status);
-    	}
+        if (status != null) {
+            return new ResponseEntity<>(status);
+        }
         return new ResponseEntity<>(getEventInfoList(project_id), HttpStatus.OK);
     }
-	
+
     /**
      * Automation event classes get.
      *
@@ -102,151 +114,151 @@ public class EventHandlerApi {
     @ResponseBody
     public ResponseEntity<List<EventClassInfo>> automationEventClassesGet() {
         final HttpStatus status = isPermitted(null);
-    	if (status != null) {
-    		return new ResponseEntity<>(status);
-    	}
+        if (status != null) {
+            return new ResponseEntity<>(status);
+        }
         return new ResponseEntity<>(getEventInfoList(null), HttpStatus.OK);
     }
 
-	/**
-	 * Gets the event info list.
-	 *
-	 * @param project_id the project_id
-	 * @return the event info list
-	 */
-	private List<EventClassInfo> getEventInfoList(String project_id) {
-		final List<EventClassInfo> eventInfoList = Lists.newArrayList();
-		final List<AutomationEventIds> eventIdsList = getEventIdsService().getEventIds(project_id, false);
-		final List<AutomationFilters> filtersList = getFiltersService().getAutomationFilters(project_id, false);
-		for (final String className : getEventClassList(eventIdsList)) {
-			final EventClassInfo eci = new EventClassInfo(className);
-			final List<String> eventIds = eci.getEventIds();
-			final Map<String, List<String>> filterableFields = eci.getFilterableFieldsMap();
-			if (eci.getIncludeEventIdsFromDatabase()) {
-				for (final AutomationEventIds autoIds : eventIdsList) {
-					if (autoIds.getSrcEventClass().equals(className)) {
-						for (String eId : autoIds.getEventIds()) {
-							if (!eventIds.contains(eId)) {
-								eventIds.add(eId);
-							}
-						}
-					}
-				}
-			}
-			Collections.sort(eventIds);
-			try {
-				for (final Method method : Arrays.asList(Class.forName(className).getMethods())) {
-					if (method.isAnnotationPresent(Filterable.class) && method.getName().substring(0,3).equalsIgnoreCase("get")) {
-						final char c[] = method.getName().substring(3).toCharArray();
-						c[0] = Character.toLowerCase(c[0]);
-						final String column = new String(c);
-						final Annotation anno = AnnotationUtils.findAnnotation(method, Filterable.class);
-						
-						final Object annoInitialValuesObj = AnnotationUtils.getValue(anno, "initialValues");
-						final String[] annoInitialValues = (annoInitialValuesObj != null && annoInitialValuesObj instanceof String[]) ? (String[])annoInitialValuesObj : new String[] {};
-						
-						final Object annoIncludeValuesFromDatabase = AnnotationUtils.getValue(anno, "includeValuesFromDatabase");
-						boolean includeValuesFromDatabase = !(annoIncludeValuesFromDatabase != null && annoIncludeValuesFromDatabase instanceof Boolean) || (boolean) annoIncludeValuesFromDatabase;
-						if (!filterableFields.containsKey(column)) {
-							final List<String> newValueList = Lists.newArrayList();
-							filterableFields.put(column,newValueList);
-						}
-						final List<String> valueList = filterableFields.get(column);
-						valueList.addAll(Arrays.asList(annoInitialValues));
-						if (includeValuesFromDatabase) {
-							for (final AutomationFilters autoFilters : filtersList) {
-								if (autoFilters.getField().equals(column)) {
-									valueList.addAll(autoFilters.getValues());
-									break;
-								}
-							}
-						}
-						Collections.sort(valueList);
-					}
-				}
-			} catch (SecurityException | ClassNotFoundException e) {
-				for (final AutomationFilters autoFilters : filtersList) {
-					if (!filterableFields.containsKey(autoFilters.getField())) {
-						final List<String> valueList = Lists.newArrayList(autoFilters.getValues());
-						Collections.sort(valueList);
-						filterableFields.put(autoFilters.getField(), valueList);
-					} else {
-						for (String value : autoFilters.getValues()) {
-							final List<String> values = filterableFields.get(autoFilters.getField());
-							if (!values.contains(value)) {
-								values.add(value);
-							}
-							Collections.sort(values);
-						}
-					}
-				}
-			}
-			eventInfoList.add(eci);
-		}
-		return eventInfoList;
-	}
+    /**
+     * Gets the event info list.
+     *
+     * @param project_id the project_id
+     * @return the event info list
+     */
+    private List<EventClassInfo> getEventInfoList(String project_id) {
+        final List<EventClassInfo>     eventInfoList = Lists.newArrayList();
+        final List<AutomationEventIds> eventIdsList  = getEventIdsService().getEventIds(project_id, false);
+        final List<AutomationFilters>  filtersList   = getFiltersService().getAutomationFilters(project_id, false);
+        for (final String className : getEventClassList(eventIdsList)) {
+            final EventClassInfo            eci              = new EventClassInfo(className);
+            final List<String>              eventIds         = eci.getEventIds();
+            final Map<String, List<String>> filterableFields = eci.getFilterableFieldsMap();
+            if (eci.getIncludeEventIdsFromDatabase()) {
+                for (final AutomationEventIds autoIds : eventIdsList) {
+                    if (autoIds.getSrcEventClass().equals(className)) {
+                        for (String eId : autoIds.getEventIds()) {
+                            if (!eventIds.contains(eId)) {
+                                eventIds.add(eId);
+                            }
+                        }
+                    }
+                }
+            }
+            Collections.sort(eventIds);
+            try {
+                for (final Method method : Arrays.asList(Class.forName(className).getMethods())) {
+                    if (method.isAnnotationPresent(Filterable.class) && method.getName().substring(0, 3).equalsIgnoreCase("get")) {
+                        final char c[] = method.getName().substring(3).toCharArray();
+                        c[0] = Character.toLowerCase(c[0]);
+                        final String     column = new String(c);
+                        final Annotation anno   = AnnotationUtils.findAnnotation(method, Filterable.class);
+
+                        final Object   annoInitialValuesObj = AnnotationUtils.getValue(anno, "initialValues");
+                        final String[] annoInitialValues    = (annoInitialValuesObj != null && annoInitialValuesObj instanceof String[]) ? (String[]) annoInitialValuesObj : new String[] {};
 
-	/**
-	 * Gets the event class list.
-	 *
-	 * @param eventIdsList the event ids list
-	 * @return the event class list
-	 */
-	private List<String> getEventClassList(List<AutomationEventIds> eventIdsList) {
-		final List<String> classList = Lists.newArrayList();
-		// ClassList should be pulled from available event classes rather than from events
-		if (eventPackages != null) {
-			for (final String pkg : eventPackages) {
-				try {
-					for (final Class<?> clazz : Reflection.getClassesForPackage(pkg)) {
-						if (AutomationEventImplementerI.class.isAssignableFrom(clazz) && !clazz.isInterface() && 
-								!Modifier.isAbstract(clazz.getModifiers())) {
-							if (!classList.contains(clazz.getName())) {
-								classList.add(clazz.getName());
-							}
-						}
-					}
-				} catch (ClassNotFoundException | IOException e) {
-					// Do nothing.  
-				}
-			}
-		}
-		// I think for now we'll not pull from the database if we've found event classes.  If the database
-		// contains any thing different, it should only be event classes that are no longer available.
-		if (classList.size()<1) {
-			for (final AutomationEventIds auto : eventIdsList) {
-				if (!classList.contains(auto.getSrcEventClass())) {
-					classList.add(auto.getSrcEventClass());
-				}
-			}
-		}
+                        final Object annoIncludeValuesFromDatabase = AnnotationUtils.getValue(anno, "includeValuesFromDatabase");
+                        boolean      includeValuesFromDatabase     = !(annoIncludeValuesFromDatabase != null && annoIncludeValuesFromDatabase instanceof Boolean) || (boolean) annoIncludeValuesFromDatabase;
+                        if (!filterableFields.containsKey(column)) {
+                            final List<String> newValueList = Lists.newArrayList();
+                            filterableFields.put(column, newValueList);
+                        }
+                        final List<String> valueList = filterableFields.get(column);
+                        valueList.addAll(Arrays.asList(annoInitialValues));
+                        if (includeValuesFromDatabase) {
+                            for (final AutomationFilters autoFilters : filtersList) {
+                                if (autoFilters.getField().equals(column)) {
+                                    valueList.addAll(autoFilters.getValues());
+                                    break;
+                                }
+                            }
+                        }
+                        Collections.sort(valueList);
+                    }
+                }
+            } catch (SecurityException | ClassNotFoundException e) {
+                for (final AutomationFilters autoFilters : filtersList) {
+                    if (!filterableFields.containsKey(autoFilters.getField())) {
+                        final List<String> valueList = Lists.newArrayList(autoFilters.getValues());
+                        Collections.sort(valueList);
+                        filterableFields.put(autoFilters.getField(), valueList);
+                    } else {
+                        for (String value : autoFilters.getValues()) {
+                            final List<String> values = filterableFields.get(autoFilters.getField());
+                            if (!values.contains(value)) {
+                                values.add(value);
+                            }
+                            Collections.sort(values);
+                        }
+                    }
+                }
+            }
+            eventInfoList.add(eci);
+        }
+        return eventInfoList;
+    }
+
+    /**
+     * Gets the event class list.
+     *
+     * @param eventIdsList the event ids list
+     * @return the event class list
+     */
+    private List<String> getEventClassList(List<AutomationEventIds> eventIdsList) {
+        final List<String> classList = Lists.newArrayList();
+        // ClassList should be pulled from available event classes rather than from events
+        if (eventPackages != null) {
+            for (final String pkg : eventPackages) {
+                try {
+                    for (final Class<?> clazz : Reflection.getClassesForPackage(pkg)) {
+                        if (AutomationEventImplementerI.class.isAssignableFrom(clazz) && !clazz.isInterface() &&
+                            !Modifier.isAbstract(clazz.getModifiers())) {
+                            if (!classList.contains(clazz.getName())) {
+                                classList.add(clazz.getName());
+                            }
+                        }
+                    }
+                } catch (ClassNotFoundException | IOException e) {
+                    // Do nothing.
+                }
+            }
+        }
+        // I think for now we'll not pull from the database if we've found event classes.  If the database
+        // contains any thing different, it should only be event classes that are no longer available.
+        if (classList.size() < 1) {
+            for (final AutomationEventIds auto : eventIdsList) {
+                if (!classList.contains(auto.getSrcEventClass())) {
+                    classList.add(auto.getSrcEventClass());
+                }
+            }
+        }
         return classList;
-	}
-			
-	/**
-	 * Gets the event ids service.
-	 *
-	 * @return the event ids service
-	 */
-	private HibernateAutomationEventIdsService getEventIdsService() {
-		if (eventIdsService == null) {
-			eventIdsService = XDAT.getContextService().getBean(HibernateAutomationEventIdsService.class);
-		}
-		return eventIdsService;
-	}
-			
-	/**
-	 * Gets the filters service.
-	 *
-	 * @return the filters service
-	 */
-	private HibernateAutomationFiltersService getFiltersService() {
-		if (filtersService == null) {
-			filtersService = XDAT.getContextService().getBean(HibernateAutomationFiltersService.class);
-		}
-		return filtersService;
-	}
-    
+    }
+
+    /**
+     * Gets the event ids service.
+     *
+     * @return the event ids service
+     */
+    private HibernateAutomationEventIdsService getEventIdsService() {
+        if (eventIdsService == null) {
+            eventIdsService = XDAT.getContextService().getBean(HibernateAutomationEventIdsService.class);
+        }
+        return eventIdsService;
+    }
+
+    /**
+     * Gets the filters service.
+     *
+     * @return the filters service
+     */
+    private HibernateAutomationFiltersService getFiltersService() {
+        if (filtersService == null) {
+            filtersService = XDAT.getContextService().getBean(HibernateAutomationFiltersService.class);
+        }
+        return filtersService;
+    }
+
     /**
      * Gets the session user.
      *
@@ -259,7 +271,7 @@ public class EventHandlerApi {
         }
         return null;
     }
-	
+
     /**
      * Checks if is permitted.
      *
@@ -269,20 +281,19 @@ public class EventHandlerApi {
     private HttpStatus isPermitted(String projectId) {
         final UserI sessionUser = getSessionUser();
         if ((sessionUser instanceof XDATUser)) {
-        	if (projectId != null) {
-        		final XnatProjectdata project = AutoXnatProjectdata.getXnatProjectdatasById(projectId, sessionUser, false);
-        		try {
-        			return Permissions.canEdit(sessionUser, project) ? null : HttpStatus.FORBIDDEN;
-        		} catch (Exception e) {
-        			_log.error("Error checking read status for project",e);
-        			return HttpStatus.INTERNAL_SERVER_ERROR;
-        		}
-        	} else {
-        		return (Roles.isSiteAdmin(sessionUser)) ? null : HttpStatus.FORBIDDEN;
-        	}
+            if (projectId != null) {
+                final XnatProjectdata project = AutoXnatProjectdata.getXnatProjectdatasById(projectId, sessionUser, false);
+                try {
+                    return Permissions.canEdit(sessionUser, project) ? null : HttpStatus.FORBIDDEN;
+                } catch (Exception e) {
+                    _log.error("Error checking read status for project", e);
+                    return HttpStatus.INTERNAL_SERVER_ERROR;
+                }
+            } else {
+                return (Roles.isSiteAdmin(sessionUser)) ? null : HttpStatus.FORBIDDEN;
+            }
         }
-		_log.error("Error checking read status for project");
-		return HttpStatus.INTERNAL_SERVER_ERROR;
+        _log.error("Error checking read status for project");
+        return HttpStatus.INTERNAL_SERVER_ERROR;
     }
-	
 }
diff --git a/src/main/java/org/nrg/xapi/rest/settings/SiteConfigApi.java b/src/main/java/org/nrg/xapi/rest/settings/SiteConfigApi.java
index e1c2fa71e2c71defc29ddd250daa6f5ce680356a..6c3ca05a8742c8588c6e7d9eb69496c13b95a192 100644
--- a/src/main/java/org/nrg/xapi/rest/settings/SiteConfigApi.java
+++ b/src/main/java/org/nrg/xapi/rest/settings/SiteConfigApi.java
@@ -22,7 +22,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-@Api(description = "XNAT Site Configuration Management API")
+@Api(description = "Site Configuration Management API")
 @XapiRestController
 @RequestMapping(value = "/siteConfig")
 public class SiteConfigApi extends AbstractXnatRestApi {
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 5dec06a54ac399fd3ffed9684c53c53b23f2acdc..68728939142e621dd9ea0610e53986921f03f694 100644
--- a/src/main/java/org/nrg/xapi/rest/users/UsersApi.java
+++ b/src/main/java/org/nrg/xapi/rest/users/UsersApi.java
@@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.*;
 
-@Api(description = "The XNAT POC User Management API")
+@Api(description = "User Management API")
 @XapiRestController
 @RequestMapping(value = "/users")
 public class UsersApi extends AbstractXnatRestApi {
@@ -44,26 +44,25 @@ public class UsersApi extends AbstractXnatRestApi {
     @ApiResponses({@ApiResponse(code = 200, message = "An array of user profiles"), @ApiResponse(code = 500, message = "Unexpected error")})
     @RequestMapping(value = {"/profiles"}, produces = {MediaType.APPLICATION_JSON_VALUE}, method = RequestMethod.GET)
     @ResponseBody
-    public ResponseEntity<List<Map<String,String>>> usersProfilesGet() {
-        List<UserI> users = Users.getUsers();
-        List<Map<String,String>> userMaps = new ArrayList<Map<String,String>>();
-        for(UserI user : users){
-            try{
-                Map<String,String> userMap = new HashMap<String,String>();
-                userMap.put("firstname",user.getFirstname());
-                userMap.put("lastname",user.getLastname());
-                userMap.put("username",user.getUsername());
-                userMap.put("email",user.getEmail());
-                userMap.put("id",String.valueOf(user.getID()));
-                userMap.put("enabled",String.valueOf(user.isEnabled()));
-                userMap.put("verified",String.valueOf(user.isVerified()));
+    public ResponseEntity<List<Map<String, String>>> usersProfilesGet() {
+        List<UserI>               users    = Users.getUsers();
+        List<Map<String, String>> userMaps = new ArrayList<>();
+        for (UserI user : users) {
+            try {
+                Map<String, String> userMap = new HashMap<>();
+                userMap.put("firstname", user.getFirstname());
+                userMap.put("lastname", user.getLastname());
+                userMap.put("username", user.getUsername());
+                userMap.put("email", user.getEmail());
+                userMap.put("id", String.valueOf(user.getID()));
+                userMap.put("enabled", String.valueOf(user.isEnabled()));
+                userMap.put("verified", String.valueOf(user.isVerified()));
                 userMaps.add(userMap);
-            }
-            catch(Exception e){
+            } catch (Exception e) {
                 _log.error("", e);
             }
         }
-        return new ResponseEntity<List<Map<String,String>>>(userMaps, HttpStatus.OK);
+        return new ResponseEntity<>(userMaps, HttpStatus.OK);
     }
 
     @ApiOperation(value = "Gets the user with the specified user ID.", notes = "Returns the serialized user object with the specified user ID.", response = User.class)
@@ -94,13 +93,10 @@ public class UsersApi extends AbstractXnatRestApi {
         if (status != null) {
             return new ResponseEntity<>(status);
         }
-        UserI user = null;
+        UserI user;
         try {
             user = Users.getUser(username);
         } catch (Exception e) {
-            user = null;
-        }
-        if (user == null) {
             //Create new User
             user = Users.createUser();
             user.setLogin(username);
@@ -114,9 +110,9 @@ public class UsersApi extends AbstractXnatRestApi {
         if ((StringUtils.isNotBlank(model.getEmail())) && (!StringUtils.equals(model.getEmail(), user.getEmail()))) {
             user.setEmail(model.getEmail());
         }
-        if (model.isEnabled()!=user.isEnabled()) {
+        if (model.isEnabled() != user.isEnabled()) {
             user.setEnabled(model.isEnabled());
-            if(!model.isEnabled()){
+            if (!model.isEnabled()) {
                 //When a user is disabled, deactivate all their AliasTokens
                 try {
                     XDAT.getContextService().getBean(AliasTokenService.class).deactivateAllTokensForUser(user.getLogin());
@@ -125,7 +121,7 @@ public class UsersApi extends AbstractXnatRestApi {
                 }
             }
         }
-        if (model.isVerified()!=user.isVerified()) {
+        if (model.isVerified() != user.isVerified()) {
             user.setVerified(model.isVerified());
         }
 
@@ -253,7 +249,7 @@ public class UsersApi extends AbstractXnatRestApi {
             if (user == null) {
                 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
             }
-            Collection<String> roles =  Roles.getRoles(user);
+            Collection<String> roles = Roles.getRoles(user);
             return new ResponseEntity<>(roles, HttpStatus.OK);
         } catch (UserInitException e) {
             _log.error("An error occurred initializing the user " + id, e);
@@ -277,10 +273,10 @@ public class UsersApi extends AbstractXnatRestApi {
                 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
             }
             try {
-                Roles.addRole(getSessionUser(),user,role);
+                Roles.addRole(getSessionUser(), user, role);
                 return new ResponseEntity<>(HttpStatus.OK);
             } catch (Exception e) {
-                _log.error("Error occurred adding role "+role+" to user " + user.getLogin()+".");
+                _log.error("Error occurred adding role " + role + " to user " + user.getLogin() + ".");
             }
             return new ResponseEntity<>(false, HttpStatus.INTERNAL_SERVER_ERROR);
         } catch (UserInitException e) {
@@ -306,10 +302,10 @@ public class UsersApi extends AbstractXnatRestApi {
                 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
             }
             try {
-                Roles.deleteRole(getSessionUser(),user,role);
+                Roles.deleteRole(getSessionUser(), user, role);
                 return new ResponseEntity<>(HttpStatus.OK);
             } catch (Exception e) {
-                _log.error("Error occurred removing role "+role+" from user " + user.getLogin()+".");
+                _log.error("Error occurred removing role " + role + " from user " + user.getLogin() + ".");
             }
             return new ResponseEntity<>(false, HttpStatus.INTERNAL_SERVER_ERROR);
         } catch (UserInitException e) {
@@ -357,10 +353,10 @@ public class UsersApi extends AbstractXnatRestApi {
                 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
             }
             try {
-                Groups.addUserToGroup(group, user, getSessionUser(),null);
+                Groups.addUserToGroup(group, user, getSessionUser(), null);
                 return new ResponseEntity<>(HttpStatus.OK);
             } catch (Exception e) {
-                _log.error("Error occurred adding user " + user.getLogin()+ " to group "+group+".");
+                _log.error("Error occurred adding user " + user.getLogin() + " to group " + group + ".");
             }
             return new ResponseEntity<>(false, HttpStatus.INTERNAL_SERVER_ERROR);
         } catch (UserInitException e) {
@@ -389,7 +385,7 @@ public class UsersApi extends AbstractXnatRestApi {
                 Groups.removeUserFromGroup(user, group, null);
                 return new ResponseEntity<>(HttpStatus.OK);
             } catch (Exception e) {
-                _log.error("Error occurred removing user "+user.getLogin()+" from group " + group+".");
+                _log.error("Error occurred removing user " + user.getLogin() + " from group " + group + ".");
             }
             return new ResponseEntity<>(false, HttpStatus.INTERNAL_SERVER_ERROR);
         } catch (UserInitException e) {
diff --git a/src/main/java/org/nrg/xnat/configuration/WebConfig.java b/src/main/java/org/nrg/xnat/configuration/WebConfig.java
index bf51d79008c082c52f1cc775269666d324232665..b6bcb890a39819f8492dade1c4dc5573154bde16 100644
--- a/src/main/java/org/nrg/xnat/configuration/WebConfig.java
+++ b/src/main/java/org/nrg/xnat/configuration/WebConfig.java
@@ -1,9 +1,5 @@
 package org.nrg.xnat.configuration;
 
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module;
 import org.nrg.framework.annotations.XapiRestController;
 import org.nrg.xnat.spawner.configuration.SpawnerConfig;
 import org.slf4j.Logger;
@@ -14,7 +10,6 @@ import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 import org.springframework.context.support.ResourceBundleMessageSource;
-import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
 import org.springframework.web.multipart.MultipartResolver;
 import org.springframework.web.multipart.support.StandardServletMultipartResolver;
 import org.springframework.web.servlet.ViewResolver;
@@ -36,16 +31,6 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
 @Import(SpawnerConfig.class)
 @ComponentScan({"org.nrg.xapi.rest", "org.nrg.xnat.spawner.controllers"})
 public class WebConfig extends WebMvcConfigurerAdapter {
-    @Bean
-    public Jackson2ObjectMapperBuilder objectMapperBuilder() {
-        return new Jackson2ObjectMapperBuilder()
-                .serializationInclusion(JsonInclude.Include.NON_NULL)
-                .failOnEmptyBeans(false)
-                .featuresToEnable(JsonParser.Feature.ALLOW_SINGLE_QUOTES, JsonParser.Feature.ALLOW_YAML_COMMENTS)
-                .featuresToDisable(SerializationFeature.FAIL_ON_EMPTY_BEANS, SerializationFeature.WRITE_NULL_MAP_VALUES)
-                .modules(new Hibernate4Module());
-    }
-
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("**/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
diff --git a/src/main/java/org/nrg/xnat/initialization/RootConfig.java b/src/main/java/org/nrg/xnat/initialization/RootConfig.java
index c29194b18cc66e240773edbe058154159cb84b36..5f3a9fffdb9f9dc297503c2b4c79ca4e2b6ccede 100644
--- a/src/main/java/org/nrg/xnat/initialization/RootConfig.java
+++ b/src/main/java/org/nrg/xnat/initialization/RootConfig.java
@@ -13,13 +13,13 @@ import org.nrg.framework.datacache.SerializerRegistry;
 import org.nrg.framework.exceptions.NrgServiceException;
 import org.nrg.framework.services.ContextService;
 import org.nrg.framework.services.SerializerService;
+import org.nrg.framework.services.YamlObjectMapper;
+import org.nrg.prefs.beans.PreferenceBeanMixIn;
 import org.nrg.xdat.preferences.InitializerSiteConfiguration;
 import org.nrg.xdat.preferences.SiteConfigPreferences;
 import org.nrg.xnat.helpers.prearchive.PrearcConfig;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.ImportResource;
+import org.springframework.context.annotation.*;
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
 import org.springframework.http.converter.xml.MarshallingHttpMessageConverter;
 import org.springframework.oxm.jaxb.Jaxb2Marshaller;
 
@@ -58,35 +58,34 @@ public class RootConfig {
 
     @Bean
     public PrettyPrinter prettyPrinter() {
-        final DefaultIndenter indenter = new DefaultIndenter("    ", DefaultIndenter.SYS_LF);
         return new DefaultPrettyPrinter() {{
+            final DefaultIndenter indenter = new DefaultIndenter("    ", DefaultIndenter.SYS_LF);
             indentObjectsWith(indenter);
             indentArraysWith(indenter);
         }};
     }
 
     @Bean
-    public ObjectMapper jsonObjectMapper() {
-        final PrettyPrinter printer = prettyPrinter();
-        final ObjectMapper mapper = new ObjectMapper().setDefaultPrettyPrinter(printer);
-        mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
-        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
-        mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
-        mapper.configure(JsonParser.Feature.ALLOW_YAML_COMMENTS, true);
-        mapper.registerModule(new Hibernate4Module());
-        return mapper;
+    public Jackson2ObjectMapperBuilder objectMapperBuilder() {
+        return new Jackson2ObjectMapperBuilder()
+                .serializationInclusion(JsonInclude.Include.NON_NULL)
+                .failOnEmptyBeans(false)
+                .mixIns(mixIns())
+                .featuresToEnable(JsonParser.Feature.ALLOW_SINGLE_QUOTES, JsonParser.Feature.ALLOW_YAML_COMMENTS)
+                .featuresToDisable(SerializationFeature.FAIL_ON_EMPTY_BEANS, SerializationFeature.WRITE_NULL_MAP_VALUES)
+                .modulesToInstall(new Hibernate4Module());
     }
 
     @Bean
-    public ObjectMapper yamlObjectMapper() {
-        final PrettyPrinter printer = prettyPrinter();
-        final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()).setDefaultPrettyPrinter(printer);
-        mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
-        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
-        mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
-        mapper.configure(JsonParser.Feature.ALLOW_YAML_COMMENTS, true);
-        mapper.registerModule(new Hibernate4Module());
-        return mapper;
+    public Map<Class<?>, Class<?>> mixIns() {
+        final Map<Class<?>, Class<?>> mixIns = new HashMap<>();
+        mixIns.put(SiteConfigPreferences.class, PreferenceBeanMixIn.class);
+        return mixIns;
+    }
+
+    @Bean
+    public YamlObjectMapper yamlObjectMapper() {
+        return new YamlObjectMapper();
     }
 
     @Bean
diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties
new file mode 100644
index 0000000000000000000000000000000000000000..283396ac8ab7ea4724c69f619a146729a3cd3068
--- /dev/null
+++ b/src/main/resources/log4j.properties
@@ -0,0 +1,391 @@
+
+#
+# D:/Development/XNAT/1.6/xnat_builder_1_6dev/plugin-resources/originals/log4j.properties
+# XNAT http://www.xnat.org
+# Copyright (c) 2014, Washington University School of Medicine
+# All Rights Reserved
+#
+# Released under the Simplified BSD.
+#
+# Last modified 2/7/14 12:19 PM
+#
+
+log4j.rootLogger=ERROR, app
+
+#
+# Turbine goes into Turbine Log
+#
+log4j.category.org.apache.turbine=ERROR, turbine
+log4j.additivity.org.apache.turbine=false
+
+#
+# Velocity Logfile
+#
+log4j.category.velocity=ERROR, velocity
+log4j.additivity.velocity=false
+
+#
+# Scheduler Category
+#
+log4j.category.scheduler=ERROR, scheduler
+log4j.additivity.scheduler=false
+
+#
+# Avalon Logfile
+#
+log4j.category.avalon=ERROR, avalon
+log4j.additivity.avalon=false
+
+#
+# Axis Logfile
+#
+log4j.category.org.apache.axis=ERROR, axis
+log4j.additivity.org.apache.axis=false
+
+#
+# Application debugging
+#
+log4j.category.org.xnat.xnatfs=ERROR, xnatfs
+log4j.additivity.org.xnat.xnatfs=false
+
+#
+# Application debugging
+#
+log4j.category.org.apache.turbine.app.xnat17=ERROR, app
+log4j.additivity.org.apache.turbine.app.xnat17=false
+
+#
+# Application debugging
+#
+log4j.category.org.nrg.xdat=ERROR, xdat
+log4j.additivity.org.nrg.xdat=false
+
+#
+# Application debugging
+#
+log4j.category.org.nrg.xft=ERROR, xdat
+log4j.additivity.org.nrg.xft=false
+
+log4j.category.org.nrg.xnat=ERROR, xdat
+log4j.additivity.org.nrg.xnat=false
+
+log4j.category.org.nrg.xnat.restlet=WARN, restlet
+log4j.additivity.org.nrg.xnat.restlet=false
+
+log4j.category.org.nrg.xnat.remote=WARN, remote
+log4j.additivity.org.nrg.xnat.remote=false
+
+log4j.category.org.nrg.xnat.helpers.prearchive=WARN, prearchive
+log4j.additivity.org.nrg.xnat.helpers.prearchive=false
+
+# SETTING AccessLogger Log to INFO will log all site access
+log4j.category.org.nrg.xdat.turbine.utils.AccessLogger=INFO, access
+log4j.additivity.org.nrg.xdat.turbine.utils.AccessLogger=false
+
+# SETTING PoolDBUtils Log to DEBUG will log all SQL QUERIES
+log4j.category.org.nrg.xft.db.PoolDBUtils=ERROR, sql
+log4j.additivity.org.nrg.xft.db.PoolDBUtils=false
+
+# Analytics category, default analytics level is trace.
+# log4j.category.analytics = TRACE, analytics
+# log4j.additivity.analytics = false
+
+# Security logs, both Spring Framework and XNAT
+log4j.category.org.springframework.security=WARN, security
+log4j.additivity.org.springframework.security=false
+log4j.category.org.springframework.ldap=WARN, security
+log4j.additivity.org.springframework.ldap=false
+log4j.category.org.nrg.xnat.security=WARN, security
+log4j.additivity.org.nrg.xnat.security=false
+
+# Spring Framework logs
+log4j.category.org.springframework.beans=WARN, spring
+log4j.additivity.org.springframework.beans=false
+log4j.category.org.springframework.context=WARN, spring
+log4j.additivity.org.springframework.context=false
+log4j.category.org.springframework.core=WARN, spring
+log4j.additivity.org.springframework.core=false
+log4j.category.org.springframework.http=WARN, spring
+log4j.additivity.org.springframework.http=false
+log4j.category.org.springframework.mail=WARN, spring
+log4j.additivity.org.springframework.mail=false
+log4j.category.org.springframework.oxm=WARN, spring
+log4j.additivity.org.springframework.oxm=false
+log4j.category.org.springframework.scheduling=WARN, spring
+log4j.additivity.org.springframework.scheduling=false
+log4j.category.org.springframework.stereotype=WARN, spring
+log4j.additivity.org.springframework.stereotype=false
+log4j.category.org.springframework.util=WARN, spring
+log4j.additivity.org.springframework.util=false
+log4j.category.org.springframework.web=WARN, spring
+log4j.additivity.org.springframework.web=false
+
+# Database and ORM logging.
+log4j.category.org.nrg.framework.orm=WARN, orm
+log4j.additivity.org.nrg.framework.orm=false
+log4j.category.org.springframework.orm=WARN, orm
+log4j.additivity.org.springframework.orm=false
+log4j.category.org.springframework.dao=WARN, orm
+log4j.additivity.org.springframework.dao=false
+log4j.category.org.springframework.jdbc=WARN, orm
+log4j.additivity.org.springframework.jdbc=false
+log4j.category.org.springframework.transaction=WARN, orm
+log4j.additivity.org.springframework.transaction=false
+
+
+# DICOM services
+log4j.category.org.nrg.dcm=WARN, dicom
+log4j.additivity.org.nrg.dcm=false
+
+#
+# Automation logging
+#
+log4j.category.org.nrg.automation=ERROR, automation
+log4j.additivity.org.nrg.automation=false
+
+########################################################################
+#
+# Logfile definitions
+#
+########################################################################
+
+#
+# turbine.log
+#
+log4j.appender.turbine=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.turbine.DatePattern='.'yyy-MM-dd
+log4j.appender.turbine.file=${xnat.home}/logs/turbine.log
+log4j.appender.turbine.layout=org.apache.log4j.PatternLayout
+log4j.appender.turbine.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.turbine.append=false
+
+#
+# Scheduler Output
+#
+log4j.appender.scheduler=org.apache.log4j.FileAppender
+log4j.appender.scheduler.file=${xnat.home}/logs/scheduler.log
+log4j.appender.scheduler.layout=org.apache.log4j.PatternLayout
+log4j.appender.scheduler.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.scheduler.append=false
+
+#
+# Velocity gets configured to write its output onto the velocity
+# category.
+#
+log4j.appender.velocity=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.velocity.DatePattern='.'yyy-MM-dd
+log4j.appender.velocity.file=${xnat.home}/logs/velocity.log
+log4j.appender.velocity.layout=org.apache.log4j.PatternLayout
+log4j.appender.velocity.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.velocity.append=false
+
+#
+# Avalon gets configured to write its output onto the avalon
+# category.
+#
+log4j.appender.avalon=org.apache.log4j.FileAppender
+log4j.appender.avalon.file=${xnat.home}/logs/avalon.log
+log4j.appender.avalon.layout=org.apache.log4j.PatternLayout
+log4j.appender.avalon.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.avalon.append=false
+
+#
+# xnatfs.log
+#
+log4j.appender.xnatfs=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.xnatfs.DatePattern='.'yyy-MM-dd
+log4j.appender.xnatfs.file=${xnat.home}/logs/xnatfs.log
+log4j.appender.xnatfs.layout=org.apache.log4j.PatternLayout
+log4j.appender.xnatfs.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.xnatfs.append=false
+
+#
+# Application.log
+#
+log4j.appender.app=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.app.DatePattern='.'yyy-MM-dd
+log4j.appender.app.file=${xnat.home}/logs/application.log
+log4j.appender.app.layout=org.apache.log4j.PatternLayout
+log4j.appender.app.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.app.append=false
+
+#
+# Application.log
+#
+
+log4j.appender.axis=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.axis.DatePattern='.'yyy-MM-dd
+log4j.appender.axis.File=${xnat.home}/logs/axis.log
+log4j.appender.axis.Append=true
+log4j.appender.axis.Threshold=WARN
+log4j.appender.axis.layout=org.apache.log4j.PatternLayout
+log4j.appender.axis.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+
+#
+# XDAT
+#
+log4j.appender.xdat=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.xdat.DatePattern='.'yyy-MM-dd
+log4j.appender.xdat.file=${xnat.home}/logs/xdat.log
+log4j.appender.xdat.layout=org.apache.log4j.PatternLayout
+log4j.appender.xdat.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.xdat.append=true
+
+#
+# Restlets
+#
+log4j.appender.restlet=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.restlet.DatePattern='.'yyy-MM-dd
+log4j.appender.restlet.file=${xnat.home}/logs/restlet.log
+log4j.appender.restlet.layout=org.apache.log4j.PatternLayout
+log4j.appender.restlet.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.restlet.append=true
+
+#
+# Prearchive
+#
+log4j.appender.prearchive=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.prearchive.DatePattern='.'yyy-MM-dd
+log4j.appender.prearchive.file=${xnat.home}/logs/prearchive.log
+log4j.appender.prearchive.layout=org.apache.log4j.PatternLayout
+log4j.appender.prearchive.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.prearchive.append=true
+
+#
+# DICOM
+#
+log4j.appender.dicom=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.dicom.DatePattern='.'yyy-MM-dd
+log4j.appender.dicom.file=${xnat.home}/logs/dicom.log
+log4j.appender.dicom.layout=org.apache.log4j.PatternLayout
+log4j.appender.dicom.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.dicom.append=true
+
+#
+# ACCESS LOG
+#
+log4j.appender.access=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.access.DatePattern='.'yyy-MM-dd
+log4j.appender.access.file=${xnat.home}/logs/access.log
+log4j.appender.access.ImmediateFlush=true
+log4j.appender.access.Threshold=ERROR
+log4j.appender.access.append=true
+log4j.appender.access.layout=org.apache.log4j.PatternLayout
+log4j.appender.access.layout.conversionPattern=%d - %m%n
+
+#
+# QUERY LOG
+#
+log4j.appender.sql=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.sql.file=${xnat.home}/logs/sql.log
+log4j.appender.sql.ImmediateFlush=true
+log4j.appender.sql.DatePattern='.'yyy-MM-dd
+log4j.appender.sql.append=true
+log4j.appender.sql.layout=org.apache.log4j.PatternLayout
+log4j.appender.sql.layout.conversionPattern=%d - %m%n
+
+# REMOTE LOG
+#
+log4j.appender.remote=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.remote.file=${xnat.home}/logs/remote.log
+log4j.appender.remote.ImmediateFlush=true
+log4j.appender.remote.DatePattern='.'yyy-MM-dd
+log4j.appender.remote.append=true
+log4j.appender.remote.layout=org.apache.log4j.PatternLayout
+log4j.appender.remote.layout.conversionPattern=%d - %m%n
+
+#
+# ANALYTICS LOG
+#
+# log4j.appender.analytics = org.apache.log4j.jdbc.JDBCAppender
+# log4j.appender.analytics.layout = org.apache.log4j.PatternLayout
+# log4j.appender.analytics.layout.conversionPattern = INSERT INTO analytics (entry_date, entry_level, entry_location, message) VALUES ( '%d{yyyy-MM-dd HH:mm:ss.SSS}','%p', '%C;%L', E'%m' )
+# log4j.appender.analytics.URL = jdbc:postgresql://localhost/xnat
+# log4j.appender.analytics.Driver = org.postgresql.Driver
+# log4j.appender.analytics.User = xnat
+# log4j.appender.analytics.Password = xnat
+
+#
+# XDAT Security
+#
+log4j.appender.security=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.security.DatePattern='.'yyy-MM-dd
+log4j.appender.security.file=${xnat.home}/logs/security.log
+log4j.appender.security.layout=org.apache.log4j.PatternLayout
+log4j.appender.security.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.security.append=true
+
+#
+# Spring Framework logs
+#
+log4j.appender.spring=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.spring.DatePattern='.'yyy-MM-dd
+log4j.appender.spring.file=${xnat.home}/logs/spring.log
+log4j.appender.spring.layout=org.apache.log4j.PatternLayout
+log4j.appender.spring.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.spring.append=true
+
+#
+# NRG and Spring ORM Framework logs
+#
+log4j.appender.orm=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.orm.DatePattern='.'yyy-MM-dd
+log4j.appender.orm.file=${xnat.home}/logs/orm.log
+log4j.appender.orm.layout=org.apache.log4j.PatternLayout
+log4j.appender.orm.layout.conversionPattern=%d [%t] %-5p %c - %m%n
+log4j.appender.orm.append=true
+
+#
+# Automation log output
+#
+log4j.appender.automation=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.automation.File=${xnat.home}/logs/automation.log
+log4j.appender.automation.DatePattern='.'yyyy-MM-dd
+log4j.appender.automation.layout=org.apache.log4j.PatternLayout
+log4j.appender.automation.layout.ConversionPattern=%d %m%n
+
+#
+# Received file log
+#
+log4j.appender.RECEIVED=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.RECEIVED.File=${xnat.home}/logs/received.log
+log4j.appender.RECEIVED.DatePattern='.'yyyy-MM-dd
+log4j.appender.RECEIVED.layout=org.apache.log4j.PatternLayout
+log4j.appender.RECEIVED.layout.ConversionPattern=%d %m%n
+log4j.additivity.org.nrg.xnat.received=false
+log4j.logger.org.nrg.xnat.received=INFO,RECEIVED
+
+#
+# Pipeline Logfile
+#
+log4j.category.org.nrg.pipeline=ERROR, pipeline
+log4j.additivity.org.nrg.pipeline=false
+log4j.appender.pipeline=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.pipeline.File=${xnat.home}/logs/pipeline.log
+log4j.appender.pipeline.DatePattern='.'yyyy-MM-dd
+log4j.appender.pipeline.layout=org.apache.log4j.PatternLayout
+log4j.appender.pipeline.layout.ConversionPattern=%d %m%n
+
+#
+# Pipeline Launch Logfile
+#
+log4j.category.org.nrg.pipeline.launch=INFO, launch
+log4j.additivity.org.nrg.pipeline.launch=false
+log4j.appender.launch=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.launch.File=${xnat.home}/logs/launch.log
+log4j.appender.launch.DatePattern='.'yyyy-MM-dd
+log4j.appender.launch.layout=org.apache.log4j.PatternLayout
+log4j.appender.launch.layout.ConversionPattern=%d %m%n
+
+#
+# JMS logging
+#
+log4j.category.org.springframework.jms=INFO, jms
+log4j.additivity.org.springframework.jms=false
+log4j.category.org.nrg.xnat.services.messaging=INFO, jms
+log4j.additivity.org.nrg.xnat.services.messaging=false
+log4j.appender.jms=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.jms.File=${xnat.home}/logs/jms.log
+log4j.appender.jms.DatePattern='.'yyyy-MM-dd
+log4j.appender.jms.layout=org.apache.log4j.PatternLayout
+log4j.appender.jms.layout.ConversionPattern=%d %m%n
diff --git a/src/main/webapp/WEB-INF/conf/TurbineResources.properties b/src/main/webapp/WEB-INF/conf/TurbineResources.properties
index 4671c0b610896ace9b4ca3eb1fecad9cdb80970a..84f1203ee9f171dd6e7a09736afa1807d6e2ba7c 100644
--- a/src/main/webapp/WEB-INF/conf/TurbineResources.properties
+++ b/src/main/webapp/WEB-INF/conf/TurbineResources.properties
@@ -14,7 +14,7 @@
 #
 # -------------------------------------------------------------------
 
-log4j.file = WEB-INF/conf/log4j.properties
+log4j.file =
 
 # -------------------------------------------------------------------
 #
@@ -84,7 +84,7 @@ scheduledjob.cache.size=10
 # Default: org.apache.turbine.modules
 # -------------------------------------------------------------------
 
-module.packages = org.apache.turbine.app.xnat17.modules,org.nrg.xnat.turbine.modules,org.nrg.xdat.turbine.modules
+module.packages = org.apache.turbine.app.xnat.modules,org.nrg.xnat.turbine.modules,org.nrg.xdat.turbine.modules
 
 # -------------------------------------------------------------------
 #