diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatDicomseries.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatDicomseries.java
index d7920834c1598019449f4250fb28dbb311738922..d05c22e5d386352e96a07b2a76fc5a476abf4ddc 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatDicomseries.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatDicomseries.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xdat.om.base;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatDicomseriesImageI;
 import org.nrg.xdat.om.XnatDicomseriesImage;
 import org.nrg.xdat.om.base.auto.AutoXnatDicomseries;
@@ -18,7 +19,6 @@ import org.nrg.xft.event.EventMetaI;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
 
 import java.io.File;
 import java.io.IOException;
@@ -118,7 +118,6 @@ public class BaseXnatDicomseries extends AutoXnatDicomseries {
 
     /**
      * Appends this path to the enclosed URI or path variables.
-     * @param root
      */
     public ArrayList<String> getUnresolvedPaths(){
         ArrayList<String> al = new ArrayList<String>();
@@ -140,10 +139,10 @@ public class BaseXnatDicomseries extends AutoXnatDicomseries {
             break;
         }
 
-        String fullPath = StringUtils.ReplaceStr(FileUtils.AppendRootPath(rootPath,path),"\\","/");
+        String fullPath = StringUtils.replace(FileUtils.AppendRootPath(rootPath, path), "\\", "/");
         while (fullPath.indexOf("//")!=-1)
         {
-            fullPath =StringUtils.ReplaceStr(fullPath,"//","/");
+            fullPath =StringUtils.replace(fullPath,"//","/");
         }
 
         if(!fullPath.endsWith("/"))
@@ -168,6 +167,6 @@ public class BaseXnatDicomseries extends AutoXnatDicomseries {
     	for(XnatDicomseriesImageI img : this.getImageset_image()){
     		((XnatDicomseriesImage)img).moveTo(newSessionDir, existingSessionDir, rootPath, user,ci);
     	}
-    	SaveItemHelper.authorizedSave(this,user, true, false,ci);
+    	SaveItemHelper.authorizedSave(this, user, true, false, ci);
     }
 }
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatExperimentdata.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatExperimentdata.java
index bb32f3b9b3e57f98390439f3663d47e9ac8f5477..329297815205323e5f242b345973d5a112f1cd4e 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatExperimentdata.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatExperimentdata.java
@@ -12,6 +12,7 @@ package org.nrg.xdat.om.base;
 
 import com.google.common.collect.Lists;
 import org.apache.commons.lang.exception.ExceptionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ClientException;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.base.BaseElement;
@@ -41,7 +42,7 @@ import org.nrg.xft.search.CriteriaCollection;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.exceptions.InvalidArchiveStructure;
 import org.nrg.xnat.turbine.utils.ArcSpecManager;
 import org.nrg.xnat.turbine.utils.ArchivableItem;
@@ -369,7 +370,7 @@ public class BaseXnatExperimentdata extends AutoXnatExperimentdata implements Ar
     }
 
     public static XnatExperimentdata GetExptByProjectIdentifier(String project, String identifier,UserI user,boolean preLoad){
-        if(StringUtils.IsEmpty(identifier)){
+        if(StringUtils.isBlank(identifier)){
         	return null;
         }
 
@@ -636,36 +637,36 @@ public class BaseXnatExperimentdata extends AutoXnatExperimentdata implements Ar
 
 
     public static String cleanValue(String v){
-    	v= StringUtils.ReplaceStr(v, " ", "_");
-    	v= StringUtils.ReplaceStr(v, "`", "_");
-    	v= StringUtils.ReplaceStr(v, "~", "_");
-    	v= StringUtils.ReplaceStr(v, "@", "_");
-    	v= StringUtils.ReplaceStr(v, "#", "_");
-    	v= StringUtils.ReplaceStr(v, "$", "_");
-    	v= StringUtils.ReplaceStr(v, "%", "_");
-    	v= StringUtils.ReplaceStr(v, "^", "_");
-    	v= StringUtils.ReplaceStr(v, "&", "_");
-    	v= StringUtils.ReplaceStr(v, "*", "_");
-    	v= StringUtils.ReplaceStr(v, "(", "_");
-    	v= StringUtils.ReplaceStr(v, ")", "_");
-    	v= StringUtils.ReplaceStr(v, "+", "_");
-    	v= StringUtils.ReplaceStr(v, "=", "_");
-    	v= StringUtils.ReplaceStr(v, "[", "_");
-    	v= StringUtils.ReplaceStr(v, "]", "_");
-    	v= StringUtils.ReplaceStr(v, "{", "_");
-    	v= StringUtils.ReplaceStr(v, "}", "_");
-    	v= StringUtils.ReplaceStr(v, "|", "_");
-    	v= StringUtils.ReplaceStr(v, "\\", "_");
-    	v= StringUtils.ReplaceStr(v, "/", "_");
-    	v= StringUtils.ReplaceStr(v, "?", "_");
-    	v= StringUtils.ReplaceStr(v, ":", "_");
-    	v= StringUtils.ReplaceStr(v, ";", "_");
-    	v= StringUtils.ReplaceStr(v, "\"", "_");
-    	v= StringUtils.ReplaceStr(v, "'", "_");
-    	v= StringUtils.ReplaceStr(v, ",", "_");
-    	v= StringUtils.ReplaceStr(v, ".", "_");
-    	v= StringUtils.ReplaceStr(v, "<", "_");
-    	v= StringUtils.ReplaceStr(v, ">", "_");
+    	v= StringUtils.replace(v, " ", "_");
+    	v= StringUtils.replace(v, "`", "_");
+    	v= StringUtils.replace(v, "~", "_");
+    	v= StringUtils.replace(v, "@", "_");
+    	v= StringUtils.replace(v, "#", "_");
+    	v= StringUtils.replace(v, "$", "_");
+    	v= StringUtils.replace(v, "%", "_");
+    	v= StringUtils.replace(v, "^", "_");
+    	v= StringUtils.replace(v, "&", "_");
+    	v= StringUtils.replace(v, "*", "_");
+    	v= StringUtils.replace(v, "(", "_");
+    	v= StringUtils.replace(v, ")", "_");
+    	v= StringUtils.replace(v, "+", "_");
+    	v= StringUtils.replace(v, "=", "_");
+    	v= StringUtils.replace(v, "[", "_");
+    	v= StringUtils.replace(v, "]", "_");
+    	v= StringUtils.replace(v, "{", "_");
+    	v= StringUtils.replace(v, "}", "_");
+    	v= StringUtils.replace(v, "|", "_");
+    	v= StringUtils.replace(v, "\\", "_");
+    	v= StringUtils.replace(v, "/", "_");
+    	v= StringUtils.replace(v, "?", "_");
+    	v= StringUtils.replace(v, ":", "_");
+    	v= StringUtils.replace(v, ";", "_");
+    	v= StringUtils.replace(v, "\"", "_");
+    	v= StringUtils.replace(v, "'", "_");
+    	v= StringUtils.replace(v, ",", "_");
+    	v= StringUtils.replace(v, ".", "_");
+    	v= StringUtils.replace(v, "<", "_");
+    	v= StringUtils.replace(v, ">", "_");
 
     	return v;
     }
@@ -794,17 +795,17 @@ public class BaseXnatExperimentdata extends AutoXnatExperimentdata implements Ar
 
     protected void checkIsValidID(String s) throws IllegalArgumentException{
 
-		if(StringUtils.IsEmpty(s)){
+		if(StringUtils.isBlank(s)){
 			throw new IllegalArgumentException();
 		}
 
-		if(!StringUtils.IsAlphaNumericUnderscore(s)){
+		if(!XftStringUtils.IsAlphaNumericUnderscore(s)){
 			throw new IllegalArgumentException("Identifiers cannot use special characters.");
 		}
     }
 
     public void checkUniqueLabel() throws Exception{
-		if(!StringUtils.IsEmpty(this.getLabel())){
+		if(StringUtils.isNotBlank(this.getLabel())){
 			Long count=(Long)PoolDBUtils.ReturnStatisticQuery(String.format("SELECT COUNT(*) FROM (SELECT label, ID FROM xnat_experimentData WHERE label='%1$s' AND ID !='%2$s' AND project='%3$s' UNION SELECT label, sharing_share_xnat_experimentda_id AS ID FROM xnat_experimentData_share WHERE label='%1$s' AND sharing_share_xnat_experimentda_id !='%2$s' AND project='%3$s') SRCH",this.getLabel(),this.getId(),this.getProject()), "count", this.getDBName(), "system");
 			if(count>0){
 				throw new ClientException(Status.CLIENT_ERROR_CONFLICT,"Conflict: Duplicate experiment label",new Exception());
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatImageassessordata.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatImageassessordata.java
index 3f656685a7846041576e8dfc0c1b3d990697984d..013e79d78a287f0ada37550916ab9b3dec82ec89 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatImageassessordata.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatImageassessordata.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xdat.om.base;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.*;
 import org.nrg.xdat.om.base.auto.AutoXnatImageassessordata;
@@ -20,7 +21,7 @@ import org.nrg.xft.db.PoolDBUtils;
 import org.nrg.xft.event.EventMetaI;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.exceptions.InvalidArchiveStructure;
 import org.nrg.xnat.turbine.utils.ArcSpecManager;
 
@@ -85,7 +86,7 @@ public abstract class BaseXnatImageassessordata extends AutoXnatImageassessordat
         String session_id = this.getImagesessionId();
         
         if (session_id!=null){
-			session_id=StringUtils.RemoveChar(session_id, '\'');
+			session_id= StringUtils.remove(session_id, '\'');
             String query = "SELECT ID FROM xnat_imageSessiondata WHERE ID='";
             String login =null;
             if (this.getUser()!=null){
@@ -156,7 +157,7 @@ public abstract class BaseXnatImageassessordata extends AutoXnatImageassessordat
     	// XNAT-1382: Delete the root Assessor Directory if it is empty.
     	String assessorDir = this.getArchiveDirectoryName();
     	String sessionDir = this.getExpectedSessionDir().getAbsolutePath();
-    	if(!StringUtils.IsEmpty(sessionDir) && !StringUtils.IsEmpty(assessorDir)){
+    	if(StringUtils.isNotBlank(sessionDir) && StringUtils.isNotBlank(assessorDir)){
     		File f = new File(sessionDir + "/ASSESSORS/" + assessorDir);
     		if(f.exists() && f.isDirectory() && f.list().length == 0){
     			FileUtils.DeleteFile(f);
@@ -171,19 +172,19 @@ public abstract class BaseXnatImageassessordata extends AutoXnatImageassessordat
 
 	@Override
 	public void preSave() throws Exception{
-		if(StringUtils.IsEmpty(this.getId())){
+		if(StringUtils.isBlank(this.getId())){
 			throw new IllegalArgumentException("Please specify an ID for your experiment.");
 		}	
 		
-		if(XFT.getBooleanProperty("security.require_image_assessor_labels", false) && StringUtils.IsEmpty(this.getLabel())){
+		if(XFT.getBooleanProperty("security.require_image_assessor_labels", false) && StringUtils.isBlank(this.getLabel())){
 			throw new IllegalArgumentException("Please specify a label for your experiment.");
 		}
 		
-		if(!StringUtils.IsAlphaNumericUnderscore(getId())){
+		if(!XftStringUtils.IsAlphaNumericUnderscore(getId())){
 			throw new IllegalArgumentException("Identifiers cannot use special characters.");
 		}
 		
-		if(!StringUtils.IsEmpty(this.getLabel()) && !StringUtils.IsAlphaNumericUnderscore(getLabel())){
+		if(StringUtils.isNotBlank(this.getLabel()) && !XftStringUtils.IsAlphaNumericUnderscore(getLabel())){
 			throw new IllegalArgumentException("Labels cannot use special characters.");
 		}
 		
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatImagescandata.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatImagescandata.java
index d712e56a4430ee3cf0ce1885968846a8a21130cb..9895454f1bb6d4135bfbf4e21622b52158f32ad7 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatImagescandata.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatImagescandata.java
@@ -18,6 +18,7 @@ import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.CatCatalogI;
 import org.nrg.xdat.model.CatEntryI;
 import org.nrg.xdat.model.XnatAbstractresourceI;
@@ -38,7 +39,7 @@ import org.nrg.xft.event.EventMetaI;
 import org.nrg.xft.search.CriteriaCollection;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.exceptions.InvalidArchiveStructure;
 import org.nrg.xnat.helpers.scanType.ImageScanTypeMapping;
 import org.nrg.xnat.helpers.scanType.ScanTypeMappingI;
@@ -436,11 +437,11 @@ public class BaseXnatImagescandata extends AutoXnatImagescandata {
 	
 	public void validate(String expectedPath) throws Exception{
 		
-		if(StringUtils.IsEmpty(this.getId())){
+		if(StringUtils.isBlank(this.getId())){
 			throw new IllegalArgumentException();
 		}	
 		
-		if(!StringUtils.IsAlphaNumericUnderscore(getId())){
+		if(!XftStringUtils.IsAlphaNumericUnderscore(getId())){
 			throw new IllegalArgumentException("Identifiers cannot use special characters.");
 		}
 		
@@ -468,7 +469,7 @@ public class BaseXnatImagescandata extends AutoXnatImagescandata {
 			subcc.addClause("xnat:imageScanData/ID", scanID);
 		} else {
 			final CriteriaCollection subsubcc = new CriteriaCollection("OR");
-			for (final String s : StringUtils.CommaDelimitedStringToArrayList(
+			for (final String s : XftStringUtils.CommaDelimitedStringToArrayList(
 					scanID, true)) {
 				subsubcc.addClause("xnat:imageScanData/ID", s);
 			}
@@ -490,7 +491,7 @@ public class BaseXnatImagescandata extends AutoXnatImagescandata {
 			}
 		} else {
 			CriteriaCollection subsubcc = new CriteriaCollection("OR");
-			for (String s : StringUtils.CommaDelimitedStringToArrayList(scanID,
+			for (String s : XftStringUtils.CommaDelimitedStringToArrayList(scanID,
 					true)) {
 				if (s.equals("NULL")) {
 					subsubcc.addClause("xnat:imageScanData/type", "",
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatImagesessiondata.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatImagesessiondata.java
index 8fd28612c924abf8798366dcaf88fe60a67bc37b..92131b4eca31f2c228dfb0015836b15e9fd43da9 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatImagesessiondata.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatImagesessiondata.java
@@ -15,6 +15,7 @@ import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import edu.sdsc.grid.io.GeneralFile;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.dcm.CopyOp;
 import org.nrg.transaction.OperationI;
 import org.nrg.transaction.RollbackException;
@@ -52,7 +53,7 @@ import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileTracker;
 import org.nrg.xft.utils.FileUtils;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.exceptions.InvalidArchiveStructure;
 import org.nrg.xnat.helpers.merge.ProjectAnonymizer;
 import org.nrg.xnat.helpers.scanType.ScanTypeMappingI;
@@ -405,7 +406,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                     int count = 0;
                     long size = 0;
                     try {
-                        String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                        String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(), "-", ""), "*", "AST");
 
                         ArrayList fileGroup = (ArrayList)getFileGroups().get(SCAN_ABBR + parsedScanID);
                         if (fileGroup==null){
@@ -439,7 +440,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                     int count = 0;
                     long size = 0;
                     try {
-                        String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(recon.getId(),"-",""),"*","AST");
+                        String parsedScanID= StringUtils.replace(StringUtils.replace(recon.getId(),"-",""),"*","AST");
 
                         ArrayList fileGroup = (ArrayList)getFileGroups().get(RECON_ABBR + parsedScanID);
                         if (fileGroup==null){
@@ -473,7 +474,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                     int count = 0;
                     long size = 0;
                     try {
-                        String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(assess.getId(),"-",""),"*","AST");
+                        String parsedScanID= StringUtils.replace(StringUtils.replace(assess.getId(),"-",""),"*","AST");
 
                         ArrayList fileGroup = (ArrayList)getFileGroups().get(ASSESSOR_ABBR + parsedScanID);
                         if (fileGroup==null){
@@ -943,7 +944,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                             String projects = (String)row.get("projects");
                             if (projects!=null)
                             {
-                                Iterator iter= StringUtils.CommaDelimitedStringToArrayList(projects, true).iterator();
+                                Iterator iter= XftStringUtils.CommaDelimitedStringToArrayList(projects, true).iterator();
                                 while(iter.hasNext())
                                 {
                                    String projectName = (String)iter.next();
@@ -1026,7 +1027,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                     XNATMetaData meta = new XNATMetaData();
                     meta.setCategory("SCAN"); //match operator is = by default
                     meta.setExternalId(scan.getId());
-                    String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                    String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(),"-",""),"*","AST");
                     fileGroups.put(SCAN_ABBR +parsedScanID,dir.filterLocal(meta));
                 }
 
@@ -1038,7 +1039,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                         XNATMetaData meta = new XNATMetaData();
                         meta.setCategory("RECON"); //match operator is = by default
                         meta.setExternalId(recon.getId());
-                        String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(recon.getId(),"-",""),"*","AST");
+                        String parsedScanID= StringUtils.replace(StringUtils.replace(recon.getId(),"-",""),"*","AST");
                         fileGroups.put(RECON_ABBR +parsedScanID,dir.filterLocal(meta));
 
                 }
@@ -1048,7 +1049,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                         XNATMetaData meta = new XNATMetaData();
                         meta.setCategory("ASSESSOR"); //match operator is = by default
                         meta.setExternalId(assess.getId());
-                        String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(assess.getId(),"-",""),"*","AST");
+                        String parsedScanID= StringUtils.replace(StringUtils.replace(assess.getId(),"-",""),"*","AST");
                         fileGroups.put("assess" +parsedScanID,dir.filterLocal(meta));
 
                 }
@@ -1092,7 +1093,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                     }
                 }
                 if (fileGrouping.size()>0){
-                    String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                    String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(),"-",""),"*","AST");
                     fileGroups.put(SCAN_ABBR + parsedScanID,fileGrouping);
                 }
             }
@@ -1137,7 +1138,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                 if (fileGrouping.size()>0){
                     if (recon.getId()!=null)
                     {
-                        String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(recon.getId(),"-",""),"*","AST");
+                        String parsedScanID= StringUtils.replace(StringUtils.replace(recon.getId(),"-",""),"*","AST");
                         fileGroups.put(RECON_ABBR + parsedScanID,fileGrouping);
                     }
                 }
@@ -1177,7 +1178,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                     }
                 }
                 if (fileGrouping.size()>0){
-                    String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(assess.getId(),"-",""),"*","AST");
+                    String parsedScanID= StringUtils.replace(StringUtils.replace(assess.getId(),"-",""),"*","AST");
                     fileGroups.put(ASSESSOR_ABBR + parsedScanID,fileGrouping);
                 }
             }
@@ -1426,7 +1427,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                         }
                     }
                 }
-                String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(),"-",""),"*","AST");
                 if (hasContent){
                     sb.append("\n");
                     if (hasFunctionText)
@@ -1517,7 +1518,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                     }
                 }
             }
-            String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(recon.getId(),"-",""),"*","AST");
+            String parsedScanID= StringUtils.replace(StringUtils.replace(recon.getId(),"-",""),"*","AST");
             if (hasContent){
             	if(c++==0)
                     sb.append("<b>RECONSTRUCTIONS</b></TD><TD>");
@@ -1610,7 +1611,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
                                 }
                             }
                         }
-                        String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(assess.getId(),"-",""),"*","AST");
+                        String parsedScanID= StringUtils.replace(StringUtils.replace(assess.getId(),"-",""),"*","AST");
                         if (hasContent){
                         	if(c++==0)
                                 sb.append("<b>ASSESSMENTS</b></TD><TD>");
@@ -2601,7 +2602,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
     public boolean validateSubjectId(){
         String subjectid = this.getSubjectId();
         if (subjectid!=null){
-            subjectid=StringUtils.RemoveChar(subjectid, '\'');
+            subjectid=StringUtils.remove(subjectid, '\'');
             String query = "SELECT ID FROM xnat_subjectdata WHERE ID='";
             String login =null;
             if (this.getUser()!=null){
@@ -2933,7 +2934,7 @@ public abstract class BaseXnatImagesessiondata extends AutoXnatImagesessiondata
 				SecurityValues values = new SecurityValues();
 				values.put(this.getXSIType() + "/project", proj.getId());
 				
-				if (!Permissions.canDelete(user,expt) && !Permissions.canDelete(user,this.getSchemaElement(),values))
+				if (!Permissions.canDelete(user, expt) && !Permissions.canDelete(user,this.getSchemaElement(),values))
 				{
 					return "User cannot delete experiments for project " + proj.getId();
 				}
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatProjectdata.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatProjectdata.java
index dd67968ffad7a2a5e82d07b5c49d30df452f3ade..4d0551812f11b5a47116b79229bb1869f3671176 100755
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatProjectdata.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatProjectdata.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xdat.om.base;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
 import org.nrg.action.ServerException;
@@ -56,7 +57,7 @@ import org.nrg.xft.search.ItemSearch;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xft.utils.ValidationUtils.ValidationResults;
 import org.nrg.xnat.exceptions.InvalidArchiveStructure;
 import org.nrg.xnat.helpers.prearchive.PrearcUtils;
@@ -196,10 +197,10 @@ public class BaseXnatProjectdata extends AutoXnatProjectdata implements Archivab
 
         if (base != null) {
             identifier = base;
-            identifier = StringUtils.ReplaceStr(identifier, " ", "");
-            identifier = StringUtils.ReplaceStr(identifier, "-", "_");
-            identifier = StringUtils.ReplaceStr(identifier, "\"", "");
-            identifier = StringUtils.ReplaceStr(identifier, "'", "");
+            identifier = StringUtils.replace(identifier, " ", "");
+            identifier = StringUtils.replace(identifier, "-", "_");
+            identifier = StringUtils.replace(identifier, "\"", "");
+            identifier = StringUtils.replace(identifier, "'", "");
 
             identifier = incrementID(identifier, digits);
         }
@@ -225,12 +226,12 @@ public class BaseXnatProjectdata extends AutoXnatProjectdata implements Archivab
         nf.setMinimumIntegerDigits(digits);
         if (al.size() > 0) {
             int count = al.size() + 1;
-            String full = StringUtils.ReplaceStr(nf.format(count), ",", "");
+            String full = StringUtils.replace(nf.format(count), ",", "");
             temp_id = s + full;
 
             while (al.contains(temp_id)) {
                 count++;
-                full = StringUtils.ReplaceStr(nf.format(count), ",", "");
+                full = StringUtils.replace(nf.format(count), ",", "");
                 temp_id = s + full;
             }
 
@@ -1312,11 +1313,11 @@ public class BaseXnatProjectdata extends AutoXnatProjectdata implements Archivab
     public void preSave() throws Exception {
         super.preSave();
 
-        if (StringUtils.IsEmpty(this.getId())) {
+        if (StringUtils.isBlank(this.getId())) {
             throw new IllegalArgumentException();
         }
 
-        if (!StringUtils.IsAlphaNumericUnderscore(getId())) {
+        if (!XftStringUtils.IsAlphaNumericUnderscore(getId())) {
             throw new IllegalArgumentException("Identifiers cannot use special characters.");
         }
 
@@ -1531,7 +1532,7 @@ public class BaseXnatProjectdata extends AutoXnatProjectdata implements Archivab
 
         //Trim excess white space from the project id
         String id = this.getId();
-        if (!StringUtils.IsEmpty(id)) {
+        if (StringUtils.isNotBlank(id)) {
             trim = id.trim();
             if (!trim.equals(id)) {
                 this.setId(trim);
@@ -1540,7 +1541,7 @@ public class BaseXnatProjectdata extends AutoXnatProjectdata implements Archivab
 
         // Trim excess white space from the secondary id
         String secondaryId = this.getSecondaryId();
-        if (!StringUtils.IsEmpty(secondaryId)) {
+        if (StringUtils.isNotBlank(secondaryId)) {
             trim = secondaryId.trim();
             if (!trim.equals(secondaryId)) {
                 this.setSecondaryId(trim);
@@ -1549,7 +1550,7 @@ public class BaseXnatProjectdata extends AutoXnatProjectdata implements Archivab
 
         // Trim excess white space from the project name
         String name = this.getName();
-        if (!StringUtils.IsEmpty(name)) {
+        if (StringUtils.isNotBlank(name)) {
             trim = name.trim();
             if (!trim.equals(name)) {
                 this.setName(trim);
@@ -1575,7 +1576,7 @@ public class BaseXnatProjectdata extends AutoXnatProjectdata implements Archivab
     public Collection<String> validateProjectFields() throws Exception {
 
         // Make sure the Id isn't null or empty
-        if (StringUtils.IsEmpty(this.getId())) {
+        if (StringUtils.isBlank(this.getId())) {
             return Arrays.asList("Missing required field: Project Id.");
         }
 
@@ -1583,11 +1584,11 @@ public class BaseXnatProjectdata extends AutoXnatProjectdata implements Archivab
         Map<String, String> elements = new HashMap<String, String>();
         elements.put("Project Id", TurbineUtils.escapeParam(this.getId().toLowerCase())); // Add the Project Id.
 
-        if (!StringUtils.IsEmpty(this.getName())) { // Add the Project Title.
+        if (StringUtils.isNotBlank(this.getName())) { // Add the Project Title.
             elements.put("Project Title", TurbineUtils.escapeParam(this.getName().toLowerCase()));
         }
 
-        if (!StringUtils.IsEmpty(this.getSecondaryId())) { // Add the Running Title.
+        if (StringUtils.isNotBlank(this.getSecondaryId())) { // Add the Running Title.
             elements.put("Running Title", TurbineUtils.escapeParam(this.getSecondaryId().toLowerCase()));
         }
 
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatPublicationresource.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatPublicationresource.java
index 2ff375b34c4c9141a5dfff9917c4541f31d5a94d..56c373ac1cef5eb0382c11d9e6a1185d3adcc66e 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatPublicationresource.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatPublicationresource.java
@@ -12,13 +12,14 @@ package org.nrg.xdat.om.base;
 
 import edu.sdsc.grid.io.GeneralFile;
 import edu.sdsc.grid.io.srb.SRBFile;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.om.base.auto.AutoXnatPublicationresource;
 import org.nrg.xft.ItemI;
 import org.nrg.xft.event.EventMetaI;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.srb.XNATDirectory;
 import org.nrg.xnat.srb.XNATSrbSearch;
 
@@ -154,10 +155,10 @@ public class BaseXnatPublicationresource extends AutoXnatPublicationresource {
 
     public String getFullPath(String rootPath){
 
-        String fullPath = StringUtils.ReplaceStr(FileUtils.AppendRootPath(rootPath,this.getUri()),"\\","/");
+        String fullPath = StringUtils.replace(FileUtils.AppendRootPath(rootPath, this.getUri()), "\\", "/");
         while (fullPath.indexOf("//")!=-1)
         {
-            fullPath =StringUtils.ReplaceStr(fullPath,"//","/");
+            fullPath =StringUtils.replace(fullPath,"//","/");
         }
 
         if(!fullPath.endsWith("/"))
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatPvisitdata.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatPvisitdata.java
index e9910d634cb64fb00fb6ef63d6e34ae6ef18e858..b74f340b47e8e8b3b9ff95acdb9c816f7b904799 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatPvisitdata.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatPvisitdata.java
@@ -17,6 +17,7 @@ import java.util.Hashtable;
 import org.apache.commons.lang.builder.CompareToBuilder;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.base.BaseElement;
 import org.nrg.xdat.model.XnatExperimentdataShareI;
 import org.nrg.xdat.om.*;
@@ -39,7 +40,7 @@ import org.nrg.xft.search.CriteriaCollection;
 import org.nrg.xft.search.QueryOrganizer;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 
 public class BaseXnatPvisitdata extends AutoXnatPvisitdata implements Comparable {
 
@@ -72,7 +73,7 @@ public class BaseXnatPvisitdata extends AutoXnatPvisitdata implements Comparable
 
 	
     public static XnatPvisitdata GetVisitByProjectIdentifier(String project, String identifier,UserI user,boolean preLoad){
-        if(StringUtils.IsEmpty(identifier)){
+        if(StringUtils.isBlank(identifier)){
         	return null;
         }
         
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatReconstructedimagedata.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatReconstructedimagedata.java
index d99ae4c64cce8487c6aab7d966e65081d84c578f..84356ff1f06cd38cfa47f8991f41f7ec2dfe1c02 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatReconstructedimagedata.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatReconstructedimagedata.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xdat.om.base;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.*;
 import org.nrg.xdat.om.base.BaseXnatExperimentdata.UnknownPrimaryProjectException;
@@ -17,7 +18,7 @@ import org.nrg.xdat.om.base.auto.AutoXnatReconstructedimagedata;
 import org.nrg.xft.ItemI;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.exceptions.InvalidArchiveStructure;
 
 import java.io.File;
@@ -149,11 +150,11 @@ public class BaseXnatReconstructedimagedata extends AutoXnatReconstructedimageda
 	
 	public void validate(String expectedPath) throws Exception{
 		
-		if(StringUtils.IsEmpty(this.getId())){
+		if(StringUtils.isBlank(this.getId())){
 			throw new IllegalArgumentException();
 		}	
 		
-		if(!StringUtils.IsAlphaNumericUnderscore(getId())){
+		if(!XftStringUtils.IsAlphaNumericUnderscore(getId())){
 			throw new IllegalArgumentException("Identifiers cannot use special characters.");
 		}
 		
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatResource.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatResource.java
index 25b272b0279fc81263be19a4b4a9ba82db65301b..52bac47f83293385336a7253209735841a2c1113 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatResource.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatResource.java
@@ -17,13 +17,14 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.Hashtable;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.om.base.auto.AutoXnatResource;
 import org.nrg.xft.ItemI;
 import org.nrg.xft.event.EventMetaI;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.srb.XNATDirectory;
 import org.nrg.xnat.srb.XNATSrbSearch;
 
@@ -164,10 +165,10 @@ public class BaseXnatResource extends AutoXnatResource {
 
     public String getFullPath(String rootPath){
 
-        String fullPath = StringUtils.ReplaceStr(FileUtils.AppendRootPath(rootPath,this.getUri()),"\\","/");
+        String fullPath = StringUtils.replace(FileUtils.AppendRootPath(rootPath, this.getUri()), "\\", "/");
         while (fullPath.indexOf("//")!=-1)
         {
-            fullPath =StringUtils.ReplaceStr(fullPath,"//","/");
+            fullPath =StringUtils.replace(fullPath,"//","/");
         }
 
         if(!fullPath.endsWith("/"))
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatResourcecatalog.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatResourcecatalog.java
index 12ef36b7f44acbe8d8f04f8c98db94b3bc8a921f..27780a928e2bdd8e75f9e54f347ed4a3bb232020 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatResourcecatalog.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatResourcecatalog.java
@@ -21,6 +21,7 @@ import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.zip.GZIPInputStream;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.bean.CatCatalogBean;
 import org.nrg.xdat.bean.CatEntryBean;
 import org.nrg.xdat.bean.base.BaseElement;
@@ -34,7 +35,7 @@ import org.nrg.xft.event.EventUtils;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.utils.CatalogUtils;
 
 /**
@@ -81,7 +82,7 @@ public abstract class BaseXnatResourcecatalog extends AutoXnatResourcecatalog {
 
             if (cat!=null){
                 for(CatEntryI entry: cat.getEntries_entry()){
-                    String entryPath = StringUtils.ReplaceStr(FileUtils.AppendRootPath(parentPath,entry.getUri()),"\\","/");
+                    String entryPath = StringUtils.replace(FileUtils.AppendRootPath(parentPath, entry.getUri()), "\\", "/");
                     File temp=getFileOnLocalFileSystem(entryPath);
                     if(temp!=null)
                     	files.add(temp);
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatResourceseries.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatResourceseries.java
index 2544fb1d145799e046e2804d7b31a0afa8094a3f..6c4327aafc79b6d301d52212f8f4b39021822d90 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatResourceseries.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatResourceseries.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xdat.om.base;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.om.base.auto.AutoXnatResourceseries;
 import org.nrg.xft.ItemI;
 import org.nrg.xft.event.EventMetaI;
@@ -18,7 +19,7 @@ import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
 import org.nrg.xft.utils.FileUtils.OldFileHandlerI;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -66,10 +67,10 @@ public class BaseXnatResourceseries extends AutoXnatResourceseries {
     public String getFullPath(String rootpath){
         if (fullPath==null)
         {
-            fullPath = StringUtils.ReplaceStr(FileUtils.AppendRootPath(rootpath,this.getPath()),"\\","/");
+            fullPath = StringUtils.replace(FileUtils.AppendRootPath(rootpath,this.getPath()),"\\","/");
             while (fullPath.indexOf("//")!=-1)
             {
-                fullPath =StringUtils.ReplaceStr(fullPath,"//","/");
+                fullPath = StringUtils.replace(fullPath, "//", "/");
             }
 
             if(!fullPath.endsWith("/"))
@@ -220,7 +221,6 @@ public class BaseXnatResourceseries extends AutoXnatResourceseries {
 
     /**
      * Appends this path to the enclosed URI or path variables.
-     * @param root
      */
     public ArrayList<String> getUnresolvedPaths(){
         ArrayList<String> al = new ArrayList<String>();
diff --git a/src/main/java/org/nrg/xdat/om/base/BaseXnatSubjectdata.java b/src/main/java/org/nrg/xdat/om/base/BaseXnatSubjectdata.java
index 8ba4df86d327058ba95b54c35d33f2c125689764..7598774682a7a0bd35149bf63fecf5cb2cc7bd7f 100644
--- a/src/main/java/org/nrg/xdat/om/base/BaseXnatSubjectdata.java
+++ b/src/main/java/org/nrg/xdat/om/base/BaseXnatSubjectdata.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xdat.om.base;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ClientException;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.base.BaseElement;
@@ -37,7 +38,7 @@ import org.nrg.xft.search.TableSearch;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.exceptions.InvalidArchiveStructure;
 import org.nrg.xnat.turbine.utils.ArchivableItem;
 import org.nrg.xnat.turbine.utils.XNATUtils;
@@ -128,7 +129,7 @@ public class BaseXnatSubjectdata extends AutoXnatSubjectdata implements Archivab
 	        {
 	            return "Unknown";
 	        }else{
-	            return StringUtils.CapitalFirstLetter(s.toLowerCase());
+	            return StringUtils.capitalize(s.toLowerCase());
 	        }
 	    }
 	}
@@ -202,7 +203,7 @@ public class BaseXnatSubjectdata extends AutoXnatSubjectdata implements Archivab
 	        {
 	            return "Unknown";
 	        }else{
-	            return StringUtils.CapitalFirstLetter(s.toLowerCase());
+	            return StringUtils.capitalize(s.toLowerCase());
 	        }
 	    }
 	}
@@ -470,7 +471,7 @@ public class BaseXnatSubjectdata extends AutoXnatSubjectdata implements Archivab
                         final String projects = (String)row.get("projects");
                         if (projects!=null)
                         {
-                            for(final String projectName:StringUtils.CommaDelimitedStringToArrayList(projects, true))
+                            for(final String projectName:XftStringUtils.CommaDelimitedStringToArrayList(projects, true))
                             {
                                if(projectName.contains(":")){
                             	   XnatExperimentdataShare es = new XnatExperimentdataShare(this.getUser());
@@ -577,7 +578,7 @@ public class BaseXnatSubjectdata extends AutoXnatSubjectdata implements Archivab
                                         final String projects2 = (String)row2.get("projects");
                                         if (projects2!=null)
                                         {
-                                        	for(final String projectName:StringUtils.CommaDelimitedStringToArrayList(projects2, true))
+                                        	for(final String projectName:XftStringUtils.CommaDelimitedStringToArrayList(projects2, true))
                                             {
                                                if(projectName.contains(":")){
                                             	   final XnatExperimentdataShare es = new XnatExperimentdataShare(this.getUser());
@@ -1004,7 +1005,7 @@ public class BaseXnatSubjectdata extends AutoXnatSubjectdata implements Archivab
 //        if(code!=null && !code.equals(""))
 //            prefix+="_" + code;
 //        
-//        newID+=prefix +"_"+ StringUtils.ReplaceStr(nf.format(i), ",", "");
+//        newID+=prefix +"_"+ StringUtils.replace(nf.format(i), ",", "");
 //        
 //        String query = "SELECT count(ID) AS id_count FROM xnat_experimentdata WHERE ID='";
 //
@@ -1016,7 +1017,7 @@ public class BaseXnatSubjectdata extends AutoXnatSubjectdata implements Archivab
 //            Long idCOUNT= (Long)PoolDBUtils.ReturnStatisticQuery(query + newID + "';", "id_count", this.getDBName(), login);
 //            while (idCOUNT > 0){
 //                i++;
-//                newID=prefix + "_"+ StringUtils.ReplaceStr(nf.format(i), ",", "");
+//                newID=prefix + "_"+ StringUtils.replace(nf.format(i), ",", "");
 //                idCOUNT= (Long)PoolDBUtils.ReturnStatisticQuery(query + newID + "';", "id_count", this.getDBName(), login);
 //            }
 //        } catch (Exception e) {
@@ -1327,42 +1328,42 @@ public class BaseXnatSubjectdata extends AutoXnatSubjectdata implements Archivab
     }
 
     public static String cleanValue(String v){
-    	v= StringUtils.ReplaceStr(v, " ", "_");
-    	v= StringUtils.ReplaceStr(v, "`", "_");
-    	v= StringUtils.ReplaceStr(v, "~", "_");
-    	v= StringUtils.ReplaceStr(v, "@", "_");
-    	v= StringUtils.ReplaceStr(v, "#", "_");
-    	v= StringUtils.ReplaceStr(v, "$", "_");
-    	v= StringUtils.ReplaceStr(v, "%", "_");
-    	v= StringUtils.ReplaceStr(v, "^", "_");
-    	v= StringUtils.ReplaceStr(v, "&", "_");
-    	v= StringUtils.ReplaceStr(v, "*", "_");
-    	v= StringUtils.ReplaceStr(v, "(", "_");
-    	v= StringUtils.ReplaceStr(v, ")", "_");
-    	v= StringUtils.ReplaceStr(v, "+", "_");
-    	v= StringUtils.ReplaceStr(v, "=", "_");
-    	v= StringUtils.ReplaceStr(v, "[", "_");
-    	v= StringUtils.ReplaceStr(v, "]", "_");
-    	v= StringUtils.ReplaceStr(v, "{", "_");
-    	v= StringUtils.ReplaceStr(v, "}", "_");
-    	v= StringUtils.ReplaceStr(v, "|", "_");
-    	v= StringUtils.ReplaceStr(v, "\\", "_");
-    	v= StringUtils.ReplaceStr(v, "/", "_");
-    	v= StringUtils.ReplaceStr(v, "?", "_");
-    	v= StringUtils.ReplaceStr(v, ":", "_");
-    	v= StringUtils.ReplaceStr(v, ";", "_");
-    	v= StringUtils.ReplaceStr(v, "\"", "_");
-    	v= StringUtils.ReplaceStr(v, "'", "_");
-    	v= StringUtils.ReplaceStr(v, ",", "_");
-    	v= StringUtils.ReplaceStr(v, ".", "_");
-    	v= StringUtils.ReplaceStr(v, "<", "_");
-    	v= StringUtils.ReplaceStr(v, ">", "_");
+    	v= StringUtils.replace(v, " ", "_");
+    	v= StringUtils.replace(v, "`", "_");
+    	v= StringUtils.replace(v, "~", "_");
+    	v= StringUtils.replace(v, "@", "_");
+    	v= StringUtils.replace(v, "#", "_");
+    	v= StringUtils.replace(v, "$", "_");
+    	v= StringUtils.replace(v, "%", "_");
+    	v= StringUtils.replace(v, "^", "_");
+    	v= StringUtils.replace(v, "&", "_");
+    	v= StringUtils.replace(v, "*", "_");
+    	v= StringUtils.replace(v, "(", "_");
+    	v= StringUtils.replace(v, ")", "_");
+    	v= StringUtils.replace(v, "+", "_");
+    	v= StringUtils.replace(v, "=", "_");
+    	v= StringUtils.replace(v, "[", "_");
+    	v= StringUtils.replace(v, "]", "_");
+    	v= StringUtils.replace(v, "{", "_");
+    	v= StringUtils.replace(v, "}", "_");
+    	v= StringUtils.replace(v, "|", "_");
+    	v= StringUtils.replace(v, "\\", "_");
+    	v= StringUtils.replace(v, "/", "_");
+    	v= StringUtils.replace(v, "?", "_");
+    	v= StringUtils.replace(v, ":", "_");
+    	v= StringUtils.replace(v, ";", "_");
+    	v= StringUtils.replace(v, "\"", "_");
+    	v= StringUtils.replace(v, "'", "_");
+    	v= StringUtils.replace(v, ",", "_");
+    	v= StringUtils.replace(v, ".", "_");
+    	v= StringUtils.replace(v, "<", "_");
+    	v= StringUtils.replace(v, ">", "_");
     	
     	return v;
     }
     
     public void checkUniqueLabel() throws Exception{
-		if(!StringUtils.IsEmpty(this.getLabel())){
+		if(StringUtils.isNotBlank(this.getLabel())){
 			Long count=(Long)PoolDBUtils.ReturnStatisticQuery(String.format("SELECT COUNT(*) FROM (SELECT label,id FROM xnat_subjectData WHERE label='%1$s' AND ID !='%2$s' AND project='%3$s' UNION SELECT label, subject_id as ID FROM xnat_projectParticipant WHERE label='%1$s' AND subject_id !='%2$s' AND project='%3$s')SRCH",this.getLabel(),this.getId(),this.getProject()), "count", this.getDBName(), "system");
 			if(count>0){
 				throw new ClientException(Status.CLIENT_ERROR_CONFLICT,"Conflict: Duplicate subject label",new Exception());
@@ -1375,19 +1376,19 @@ public class BaseXnatSubjectdata extends AutoXnatSubjectdata implements Archivab
 	public void preSave() throws Exception{
 		super.preSave();
 		
-		if(StringUtils.IsEmpty(this.getId())){
+		if(StringUtils.isBlank(this.getId())){
 			throw new IllegalArgumentException();
 		}	
 		
-		if(StringUtils.IsEmpty(this.getLabel())){
+		if(StringUtils.isBlank(this.getLabel())){
 			throw new IllegalArgumentException();
 		}
 		
-		if(!StringUtils.IsAlphaNumericUnderscore(getId())){
+		if(!XftStringUtils.IsAlphaNumericUnderscore(getId())){
 			throw new IllegalArgumentException("Identifiers cannot use special characters.");
 		}
 		
-		if(!StringUtils.IsAlphaNumericUnderscore(getLabel())){
+		if(!XftStringUtils.IsAlphaNumericUnderscore(getLabel())){
 			throw new IllegalArgumentException("Labels cannot use special characters.");
 		}
 		
diff --git a/src/main/java/org/nrg/xnat/helpers/resource/XnatResourceInfo.java b/src/main/java/org/nrg/xnat/helpers/resource/XnatResourceInfo.java
index 61859fad5c881c572226bf6b7c8a5971185acd8b..4ab354ad91294ac87337e8f556d90b9c84e07d82 100644
--- a/src/main/java/org/nrg/xnat/helpers/resource/XnatResourceInfo.java
+++ b/src/main/java/org/nrg/xnat/helpers/resource/XnatResourceInfo.java
@@ -10,8 +10,8 @@
  */
 package org.nrg.xnat.helpers.resource;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
 
 import java.io.Serializable;
 import java.util.*;
@@ -20,8 +20,8 @@ public class XnatResourceInfo implements Serializable {
     private static final long serialVersionUID = 42L;
 	private String description,format,content=null;
 	private Number event_id=null;
-	private List<String> tags=new ArrayList<String>();
-	private Map<String,String> meta=new HashMap<String,String>();
+	private List<String> tags= new ArrayList<>();
+	private Map<String,String> meta= new HashMap<>();
 	private final Date lastModified,created;
 	private final UserI user;
 	
@@ -100,14 +100,14 @@ public class XnatResourceInfo implements Serializable {
 	    if(tags!=null){
 	    	for(String tag: tags){
 	    		tag = tag.trim();
-	    		if(!tag.equals("")){
-	    			for(String s:StringUtils.CommaDelimitedStringToArrayList(tag)){
+	    		if(StringUtils.isNotBlank(tag)){
+	    			for(String s: tag.split("[\\s]*,[\\s]*")){
 	    				s=s.trim();
 	    				if(!s.equals("")){
-	    		    		if(s.indexOf("=")>-1){
+	    		    		if(s.contains("=")){
 	    		    			info.addMeta(s.substring(0,s.indexOf("=")),s.substring(s.indexOf("=")+1));
 	    		    		}else{
-	    		    			if(s.indexOf(":")>-1){
+	    		    			if(s.contains(":")){
 		    		    			info.addMeta(s.substring(0,s.indexOf(":")),s.substring(s.indexOf(":")+1));
 		    		    		}else{
 		    		    			info.addTag(s);
diff --git a/src/main/java/org/nrg/xnat/restlet/actions/PullSessionDataFromHeaders.java b/src/main/java/org/nrg/xnat/restlet/actions/PullSessionDataFromHeaders.java
index 48f3fa2bc4d3d74815b059df0e882da6ed3c980c..e736ecc874684d4b2c2f6e2179de23430d2b55b4 100644
--- a/src/main/java/org/nrg/xnat/restlet/actions/PullSessionDataFromHeaders.java
+++ b/src/main/java/org/nrg/xnat/restlet/actions/PullSessionDataFromHeaders.java
@@ -15,6 +15,7 @@ import java.io.IOException;
 import java.util.Calendar;
 import java.util.concurrent.Callable;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.xdat.base.BaseElement;
 import org.nrg.xdat.model.XnatAbstractresourceI;
@@ -30,7 +31,7 @@ import org.nrg.xft.event.EventMetaI;
 import org.nrg.xft.schema.Wrappers.XMLWrapper.SAXReader;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xft.utils.ValidationUtils.ValidationResultsI;
 import org.nrg.xnat.archive.XNATSessionBuilder;
 import org.nrg.xnat.exceptions.ValidationException;
@@ -66,7 +67,6 @@ public class PullSessionDataFromHeaders implements Callable<Boolean> {
 	 * 
 	 * @throws IOException
 	 * @throws SAXException
-	 * @throws MultipleSessionException
 	 * @throws ValidationException: Scan invalid according to schema requirements (including xdat tags)
 	 * @throws Exception
 	 */
@@ -129,11 +129,11 @@ public class PullSessionDataFromHeaders implements Callable<Boolean> {
 
 							final XnatAbstractresourceI oldCat=oldScan.getFile().get(0);
 							if(oldCat instanceof XnatResource){
-								if(StringUtils.IsEmpty(((XnatResource)oldCat).getContent()) && !StringUtils.IsEmpty(newcat.getContent()))
+								if(StringUtils.isBlank(((XnatResource)oldCat).getContent()) && StringUtils.isNotBlank(newcat.getContent()))
 									((XnatResource)oldCat).setContent(newcat.getContent());
-								if(StringUtils.IsEmpty(((XnatResource)oldCat).getFormat()) && !StringUtils.IsEmpty(newcat.getFormat()))
+								if(StringUtils.isBlank(((XnatResource)oldCat).getFormat()) && StringUtils.isNotBlank(newcat.getFormat()))
 									((XnatResource)oldCat).setFormat(newcat.getFormat());
-								if(StringUtils.IsEmpty(((XnatResource)oldCat).getDescription()) && !StringUtils.IsEmpty(newcat.getDescription()))
+								if(StringUtils.isBlank(((XnatResource)oldCat).getDescription()) && StringUtils.isNotBlank(newcat.getDescription()))
 									((XnatResource)oldCat).setDescription(newcat.getDescription());
 							}
 
diff --git a/src/main/java/org/nrg/xnat/restlet/presentation/RESTHTMLPresenter.java b/src/main/java/org/nrg/xnat/restlet/presentation/RESTHTMLPresenter.java
index c81f0c9a98529de8a2b2108ec07239b89495c255..a878e16d3448d8dc4f4d7aa4fdaab2b2db8fde95 100644
--- a/src/main/java/org/nrg/xnat/restlet/presentation/RESTHTMLPresenter.java
+++ b/src/main/java/org/nrg/xnat/restlet/presentation/RESTHTMLPresenter.java
@@ -20,6 +20,7 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Random;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.xdat.display.DisplayFieldReferenceI;
 import org.nrg.xdat.display.DisplayManager;
@@ -38,7 +39,7 @@ import org.nrg.xft.XFTTableI;
 import org.nrg.xft.db.ViewManager;
 import org.nrg.xft.schema.design.SchemaElementI;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 /**
  * @author Tim
  *
@@ -208,7 +209,7 @@ public class RESTHTMLPresenter extends PresentationA {
 				    SchemaElementI foreign = SchemaElement.GetElement(dfr.getElementName());
 				    if (search.isMultipleRelationship(foreign))
 				    {
-					    String temp = StringUtils.SQLMaxCharsAbbr(search.getRootElement().getSQLName() + "_" + foreign.getSQLName() + "_DIFF");
+					    String temp = XftStringUtils.SQLMaxCharsAbbr(search.getRootElement().getSQLName() + "_" + foreign.getSQLName() + "_DIFF");
 					    Integer index = ((XFTTable)table).getColumnIndex(temp);
 					    if (index!=null)
 					    {
@@ -301,7 +302,7 @@ public class RESTHTMLPresenter extends PresentationA {
 					    if (search.isMultipleRelationship(foreign))
 					    {
 							//XFT.LogCurrentTime("BEGIN HTML FORMAT :: ROWS(" + table.getRowCursor() + ") FIELDS: diffs :IF:1");
-						    String temp = StringUtils.SQLMaxCharsAbbr(search.getRootElement().getSQLName() + "_" + foreign.getSQLName() + "_DIFF");
+						    String temp = XftStringUtils.SQLMaxCharsAbbr(search.getRootElement().getSQLName() + "_" + foreign.getSQLName() + "_DIFF");
 						    Integer index = ((XFTTable)table).getColumnIndex(temp);
 						    if (index!=null)
 						    {
@@ -399,10 +400,10 @@ public class RESTHTMLPresenter extends PresentationA {
 								if (secureVariable != null)
 								{
                                     if (secureVariable.toString().indexOf("<")!=-1){
-                                        secureVariable = StringUtils.ReplaceStr(secureVariable.toString(), "<", "");
+                                        secureVariable = StringUtils.replace(secureVariable.toString(), "<", "");
                                     }
                                     if (secureVariable.toString().indexOf(">")!=-1){
-                                        secureVariable = StringUtils.ReplaceStr(secureVariable.toString(), ">", "");
+                                        secureVariable = StringUtils.replace(secureVariable.toString(), ">", "");
                                     }
 									values.put((String)link.getSecureProps().get(key),secureVariable.toString());
 								}
@@ -435,14 +436,14 @@ public class RESTHTMLPresenter extends PresentationA {
                                                             id = id.substring(6);
                                                             try {
                                                                 Integer i = Integer.parseInt(id);
-                                                                ArrayList<String> al = StringUtils.CommaDelimitedStringToArrayList(insertValue.toString());
+                                                                ArrayList<String> al = XftStringUtils.CommaDelimitedStringToArrayList(insertValue.toString());
                                                                 insertValue =al.get(i);
                                                             } catch (Throwable e) {
                                                                 logger.error("",e);
                                                             }
                                                         }
                                                     }
-                                                    value = StringUtils.ReplaceStr(value,"@" + key,insertValue.toString());
+                                                    value = StringUtils.replace(value,"@" + key,insertValue.toString());
                                                 }
                                             }else{
                                                 Object insertValue = row.get(id.toLowerCase());
@@ -454,13 +455,13 @@ public class RESTHTMLPresenter extends PresentationA {
                                                 {
                                                     insertValue = "NULL";
                                                 }
-                                                value = StringUtils.ReplaceStr(value,"@" + key,insertValue.toString());
+                                                value = StringUtils.replace(value,"@" + key,insertValue.toString());
                                             }
 										}
-										value = StringUtils.ReplaceStr(value,"@WEBAPP",server);
+										value = StringUtils.replace(value,"@WEBAPP",server);
 										sb.append(" ").append(prop.getName().toLowerCase()).append("=");
 										
-										if(StringUtils.IsEmpty(value)){
+										if(StringUtils.isBlank(value)){
 											sb.append("\"&nbsp;\"");
 										}else{
 											sb.append("\"").append(value).append("\"");
@@ -493,14 +494,14 @@ public class RESTHTMLPresenter extends PresentationA {
                                                     id = id.substring(6);
                                                     try {
                                                         Integer i = Integer.parseInt(id);
-                                                        ArrayList<String> al = StringUtils.CommaDelimitedStringToArrayList(insertValue.toString());
+                                                        ArrayList<String> al = XftStringUtils.CommaDelimitedStringToArrayList(insertValue.toString());
                                                         insertValue =al.get(i);
                                                     } catch (Throwable e) {
                                                         logger.error("",e);
                                                     }
                                                 }
                                             }
-                                            value = StringUtils.ReplaceStr(value,"@" + key,insertValue.toString());
+                                            value = StringUtils.replace(value,"@" + key,insertValue.toString());
                                         }
                                     }else{
                                         Object insertValue = row.get(id.toLowerCase());
@@ -512,13 +513,13 @@ public class RESTHTMLPresenter extends PresentationA {
                                         {
                                             insertValue = "NULL";
                                         }
-                                        value = StringUtils.ReplaceStr(value,"@" + key,insertValue.toString());
+                                        value = StringUtils.replace(value,"@" + key,insertValue.toString());
                                     }
 								}
-								value = StringUtils.ReplaceStr(value,"@WEBAPP",server);
+								value = StringUtils.replace(value,"@WEBAPP",server);
 								sb.append(" ").append(prop.getName()).append("=");
 
-								if(StringUtils.IsEmpty(value)){
+								if(StringUtils.isBlank(value)){
 									sb.append("\"&nbsp;\"");
 								}else{
 									sb.append("\"").append(value).append("\"");
@@ -534,10 +535,10 @@ public class RESTHTMLPresenter extends PresentationA {
 					if (dfr.isImage())
 					{
 						sb.append("<img");
-                        v = StringUtils.ReplaceStr((String)v,"/@WEBAPP/",server);
-                        v = StringUtils.ReplaceStr((String)v,"@WEBAPP/",server);
-                        v = StringUtils.ReplaceStr((String)v,"/@WEBAPP",server);
-                        v = StringUtils.ReplaceStr((String)v,"@WEBAPP",server);
+                        v = StringUtils.replace((String)v,"/@WEBAPP/",server);
+                        v = StringUtils.replace((String)v,"@WEBAPP/",server);
+                        v = StringUtils.replace((String)v,"/@WEBAPP",server);
+                        v = StringUtils.replace((String)v,"@WEBAPP",server);
 						if (dfr.getDisplayField().getHtmlImage().getWidth() != null)
 						{
 							sb.append(" width=\"" + dfr.getDisplayField().getHtmlImage().getWidth() + "\"");
@@ -557,7 +558,7 @@ public class RESTHTMLPresenter extends PresentationA {
                             String vS = v.toString();
                             if (vS.indexOf("<")!=-1 && vS.indexOf(">")==-1)
                             {
-                                vS= StringUtils.ReplaceStr(vS, "<", "&#60;");
+                                vS= StringUtils.replace(vS, "<", "&#60;");
                             }
 							sb.append(vS);
 					    }
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ExperimentResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ExperimentResource.java
index 1e1cbc0184b2156676ed31ffaefe1594db03e88c..9b4c07ee446227f8cec7688e74efa08dd553e340 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ExperimentResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ExperimentResource.java
@@ -31,6 +31,7 @@ import org.nrg.xft.event.persist.PersistentWorkflowUtils;
 import org.nrg.xft.exception.InvalidValueException;
 import org.nrg.xft.utils.SaveItemHelper;
 import org.nrg.xft.utils.ValidationUtils.ValidationResults;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.archive.Rename;
 import org.nrg.xnat.archive.ValidationException;
 import org.nrg.xnat.exceptions.InvalidArchiveStructure;
@@ -413,7 +414,7 @@ public class ExperimentResource extends ItemResource {
                 }
 
 
-                if (StringUtils.isNotBlank(_experiment.getLabel()) && !org.nrg.xft.utils.StringUtils.IsAlphaNumericUnderscore(_experiment.getId())) {
+                if (StringUtils.isNotBlank(_experiment.getLabel()) && !XftStringUtils.IsAlphaNumericUnderscore(_experiment.getId())) {
                     getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED, "Invalid character in experiment label.");
                     return;
                 }
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ExptAssessmentResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ExptAssessmentResource.java
index 4a7d91ecb0041b2f09369f16de6a7ea1ce9a4c83..5e784d5c957002b8ba73e3677bfce6aac6ff11a2 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ExptAssessmentResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ExptAssessmentResource.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.xdat.base.BaseElement;
 import org.nrg.xdat.model.XnatExperimentdataShareI;
@@ -30,7 +31,7 @@ import org.nrg.xft.event.persist.PersistentWorkflowUtils.EventRequirementAbsent;
 import org.nrg.xft.exception.InvalidValueException;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xft.utils.ValidationUtils.ValidationResults;
 import org.nrg.xnat.helpers.xmlpath.XMLPathShortcuts;
 import org.nrg.xnat.utils.WorkflowUtils;
@@ -315,7 +316,7 @@ public class ExptAssessmentResource extends ItemResource {
 						allowDataDeletion=true;
 					}
 
-					if(!StringUtils.IsEmpty(assessor.getLabel()) && !StringUtils.IsAlphaNumericUnderscore(assessor.getId())){
+					if(StringUtils.isNotBlank(assessor.getLabel()) && !XftStringUtils.IsAlphaNumericUnderscore(assessor.getId())){
 						this.getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED,"Invalid character in experiment label.");
 						return;
 					}
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptAsstList.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptAsstList.java
index 8a612d3ea7661e5744a1c71143e81f7bea68f8cc..f489e01e88dbb5994bc5b62531908f011830868f 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptAsstList.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptAsstList.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.xdat.base.BaseElement;
 import org.nrg.xdat.model.XnatExperimentdataShareI;
@@ -26,7 +27,7 @@ import org.nrg.xft.schema.Wrappers.GenericWrapper.GenericWrapperElement;
 import org.nrg.xft.search.CriteriaCollection;
 import org.nrg.xft.search.QueryOrganizer;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xft.utils.ValidationUtils.ValidationResults;
 import org.nrg.xnat.helpers.xmlpath.XMLPathShortcuts;
 import org.restlet.Context;
@@ -235,7 +236,7 @@ public class ProjSubExptAsstList extends QueryOrganizerResource {
 						allowDataDeletion=true;
 					}
 					
-				if(!StringUtils.IsEmpty(assessor.getLabel()) && !StringUtils.IsAlphaNumericUnderscore(assessor.getId())){
+				if(StringUtils.isNotBlank(assessor.getLabel()) && !XftStringUtils.IsAlphaNumericUnderscore(assessor.getId())){
 					this.getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED,"Invalid character in experiment label.");
 					return;
 				}
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptList.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptList.java
index cdbf46a02b63adce87893854f1fcfd9340a94e56..516d144a41890a46dcad63e2cfcc90a4532c432c 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptList.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptList.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.xdat.base.BaseElement;
 import org.nrg.xdat.model.XnatExperimentdataShareI;
@@ -28,7 +29,7 @@ import org.nrg.xft.schema.design.SchemaElementI;
 import org.nrg.xft.search.CriteriaCollection;
 import org.nrg.xft.search.QueryOrganizer;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xft.utils.ValidationUtils.ValidationResults;
 import org.nrg.xnat.helpers.xmlpath.XMLPathShortcuts;
 import org.nrg.xnat.restlet.actions.TriggerPipelines;
@@ -232,7 +233,7 @@ public class ProjSubExptList extends SubjAssessmentAbst {
 						allowDataDeletion=true;
 					}
 
-				if(!StringUtils.IsEmpty(expt.getLabel()) && !StringUtils.IsAlphaNumericUnderscore(expt.getId())){
+				if(StringUtils.isNotBlank(expt.getLabel()) && !XftStringUtils.IsAlphaNumericUnderscore(expt.getId())){
 					this.getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED,"Invalid character in experiment label.");
 					return;
 				}
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjectListResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjectListResource.java
index 61c1d1073b8f559a147c6cc890e5c06832bac5eb..59122f5ca4649e27bd1096c5d90c8c3addea2f2a 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjectListResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjectListResource.java
@@ -12,6 +12,7 @@ package org.nrg.xnat.restlet.resources;
 
 import com.google.common.base.Joiner;
 import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.xdat.om.XdatStoredSearch;
 import org.nrg.xdat.om.XnatProjectdata;
@@ -34,7 +35,7 @@ import org.nrg.xft.search.CriteriaCollection;
 import org.nrg.xft.search.QueryOrganizer;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.DateUtils;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.helpers.xmlpath.XMLPathShortcuts;
 import org.nrg.xnat.restlet.representations.ItemXMLRepresentation;
 import org.restlet.Context;
@@ -99,12 +100,12 @@ public class ProjectListResource extends QueryOrganizerResource {
             if (item.instanceOf("xnat:projectData")) {
                 XnatProjectdata project = new XnatProjectdata(item);
 
-                if (StringUtils.IsEmpty(project.getId())) {
+                if (StringUtils.isBlank(project.getId())) {
                     this.getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED, "Requires XNAT ProjectData ID");
                     return;
                 }
 
-                if (!StringUtils.IsAlphaNumericUnderscore(project.getId())) {
+                if (!XftStringUtils.IsAlphaNumericUnderscore(project.getId())) {
                     this.getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED, "Invalid character in project ID.");
                     return;
                 }
@@ -505,7 +506,7 @@ public class ProjectListResource extends QueryOrganizerResource {
             table.initTable(columns);
 
             final String permissions = resource.getQueryVariable("permissions");
-            if (StringUtils.IsEmpty(permissions)) {
+            if (StringUtils.isBlank(permissions)) {
                 throw new Exception("You must specify a value for the permissions parameter.");
             } else if (!PERMISSIONS.contains(permissions)) {
                 throw new Exception("You must specify one of the following values for the permissions parameter: " + Joiner.on(", ").join(PERMISSIONS));
@@ -519,7 +520,7 @@ public class ProjectListResource extends QueryOrganizerResource {
                     final String projectId = (String) key;
                     // If no data type is specified, we check both MR and PET session data permissions. This is basically
                     // tailored for checking for projects to which the user can upload imaging data.
-                    final boolean canEdit = StringUtils.IsEmpty(dataType) ? userHelperService.hasEditAccessToSessionDataByTag(projectId) : Permissions.can(resource.user, dataType + "/project", projectId, permissions);
+                    final boolean canEdit = StringUtils.isBlank(dataType) ? userHelperService.hasEditAccessToSessionDataByTag(projectId) : Permissions.can(resource.user, dataType + "/project", projectId, permissions);
                     if (canEdit) {
                         table.insertRowItems(projectId, projects.get(projectId));
                     }
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjectResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjectResource.java
index 0e54a2a032bb792d95d2c0380c81603fe488d997..92b3a5e14f7f5e556e59d2f256acf9a4bc1c44f5 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjectResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjectResource.java
@@ -11,6 +11,7 @@
 package org.nrg.xnat.restlet.resources;
 
 import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.om.ArcProject;
@@ -26,7 +27,7 @@ import org.nrg.xft.event.EventUtils;
 import org.nrg.xft.event.persist.PersistentWorkflowI;
 import org.nrg.xft.event.persist.PersistentWorkflowUtils;
 import org.nrg.xft.exception.InvalidPermissionException;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.helpers.xmlpath.XMLPathShortcuts;
 import org.nrg.xnat.turbine.utils.ArcSpecManager;
 import org.nrg.xnat.utils.WorkflowUtils;
@@ -239,16 +240,16 @@ public class ProjectResource extends ItemResource {
                                 getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
                             }
                         } else {
-                            if (StringUtils.IsEmpty(project.getId())) {
+                            if (StringUtils.isBlank(project.getId())) {
                                 project.setId(projectId);
                             }
 
-                            if (StringUtils.IsEmpty(project.getId())) {
+                            if (StringUtils.isBlank(project.getId())) {
                                 getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED, "Requires XNAT ProjectData ID");
                                 return;
                             }
 
-                            if (!StringUtils.IsAlphaNumericUnderscore(project.getId()) && !isQueryVariableTrue("testHyphen")) {
+                            if (!XftStringUtils.IsAlphaNumericUnderscore(project.getId()) && !isQueryVariableTrue("testHyphen")) {
                                 getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED, "Invalid character in project ID.");
                                 return;
                             }
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjectSubjectList.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjectSubjectList.java
index afc418e78b6ba5cc616f4546cbeab383af68d8ff..1f951985f72942db0b2c0b97cd9caac8608afd06 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjectSubjectList.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjectSubjectList.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.xdat.model.XnatProjectparticipantI;
 import org.nrg.xdat.om.XnatProjectdata;
@@ -25,7 +26,7 @@ import org.nrg.xft.schema.Wrappers.GenericWrapper.GenericWrapperElement;
 import org.nrg.xft.search.CriteriaCollection;
 import org.nrg.xft.search.QueryOrganizer;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xft.utils.ValidationUtils.ValidationResults;
 import org.nrg.xnat.helpers.xmlpath.XMLPathShortcuts;
 import org.restlet.Context;
@@ -150,7 +151,7 @@ public class ProjectSubjectList extends QueryOrganizerResource {
 						}
 				
 
-				if(!StringUtils.IsEmpty(sub.getLabel()) && !StringUtils.IsAlphaNumericUnderscore(sub.getId())){
+				if(StringUtils.isNotBlank(sub.getLabel()) && !XftStringUtils.IsAlphaNumericUnderscore(sub.getId())){
 					this.getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED,"Invalid character in subject label.");
 					return;
 								}
@@ -190,7 +191,7 @@ public class ProjectSubjectList extends QueryOrganizerResource {
 	
 	@Override
 	public ArrayList<String> getDefaultFields(GenericWrapperElement e) {
-		ArrayList<String> al=new ArrayList<String>();
+		ArrayList<String> al= new ArrayList<>();
 		
 		al.add("ID");
 		al.add("project");
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/QueryOrganizerResource.java b/src/main/java/org/nrg/xnat/restlet/resources/QueryOrganizerResource.java
index 2924cf10b248d08ffa59d2d9d18d250d6df54aed..6b25011ebd4f381567baef54fef87aee051579de 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/QueryOrganizerResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/QueryOrganizerResource.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xft.TypeConverter.JavaMapping;
 import org.nrg.xft.TypeConverter.TypeConverter;
 import org.nrg.xft.XFTTable;
@@ -21,7 +22,7 @@ import org.nrg.xft.schema.Wrappers.GenericWrapper.GenericWrapperField;
 import org.nrg.xft.search.CriteriaCollection;
 import org.nrg.xft.search.QueryOrganizer;
 import org.nrg.xft.utils.DateUtils;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.restlet.Context;
 import org.restlet.data.Request;
 import org.restlet.data.Response;
@@ -42,11 +43,11 @@ public abstract class QueryOrganizerResource extends SecureResource {
 
 	
 	public CriteriaCollection processStringQuery(String xmlPath, String values){
-		ArrayList<String> al=StringUtils.CommaDelimitedStringToArrayList(values);
+		ArrayList<String> al=XftStringUtils.CommaDelimitedStringToArrayList(values);
 		CriteriaCollection cc= new CriteriaCollection("OR");
 		for(String value:al){
 			if(value.contains("%") || value.contains("*")){
-				value=StringUtils.ReplaceStr(value, "*", "%");
+				value= StringUtils.replace(value, "*", "%");
 				cc.addClause(xmlPath, "LIKE", value);
 			}else{
 				cc.addClause(xmlPath, value);
@@ -56,7 +57,7 @@ public abstract class QueryOrganizerResource extends SecureResource {
 	}
 	
 	public CriteriaCollection processDateQuery(String column, String dates){
-		ArrayList<String> al=StringUtils.CommaDelimitedStringToArrayList(dates);
+		ArrayList<String> al=XftStringUtils.CommaDelimitedStringToArrayList(dates);
 		CriteriaCollection cc= new CriteriaCollection("OR");
 		for(String date:al){
 			if(date.contains("-")){
@@ -92,7 +93,7 @@ public abstract class QueryOrganizerResource extends SecureResource {
 	}
 	
 	public CriteriaCollection processNumericQuery(String column, String values){
-		ArrayList<String> al=StringUtils.CommaDelimitedStringToArrayList(values);
+		ArrayList<String> al=XftStringUtils.CommaDelimitedStringToArrayList(values);
 		CriteriaCollection cc= new CriteriaCollection("OR");
 		for(String date:al){
 			if(date.contains("-")){
@@ -111,7 +112,7 @@ public abstract class QueryOrganizerResource extends SecureResource {
 	}
 	
 	public CriteriaCollection processBooleanQuery(String column, String values){
-		ArrayList<String> al=StringUtils.CommaDelimitedStringToArrayList(values);
+		ArrayList<String> al=XftStringUtils.CommaDelimitedStringToArrayList(values);
 		CriteriaCollection cc= new CriteriaCollection("OR");
 		for(String value:al){
 			cc.addClause(column, value);
@@ -160,7 +161,7 @@ public abstract class QueryOrganizerResource extends SecureResource {
 	public void populateQuery(QueryOrganizer qo){
 		if(hasQueryVariable("columns") && !getQueryVariable("columns").equals("DEFAULT")){ 
 			try {
-				columns=StringUtils.CommaDelimitedStringToArrayList(URLDecoder.decode(getQueryVariable("columns"), "UTF-8"));
+				columns=XftStringUtils.CommaDelimitedStringToArrayList(URLDecoder.decode(getQueryVariable("columns"), "UTF-8"));
 			} catch (UnsupportedEncodingException e) {
 				logger.error("",e);
 				columns=getDefaultFields(qo.getRootElement());
@@ -216,7 +217,7 @@ public abstract class QueryOrganizerResource extends SecureResource {
 			}
 			
 			if(hasBodyVariable("columns")){
-				columns=StringUtils.CommaDelimitedStringToArrayList(getBodyVariable("columns"));
+				columns=XftStringUtils.CommaDelimitedStringToArrayList(getBodyVariable("columns"));
 				for(String col:columns){
 					if(col.contains("/")){
 						try {
@@ -305,7 +306,7 @@ public abstract class QueryOrganizerResource extends SecureResource {
 				}else if(this.fieldMapping.containsKey(key)){
 					fields.add(this.fieldMapping.get(key));
 				}else if(key.equals("columns")){
-					for(String col:StringUtils.CommaDelimitedStringToArrayList(getQueryVariable("columns"))){
+					for(String col:XftStringUtils.CommaDelimitedStringToArrayList(getQueryVariable("columns"))){
 						if(col.contains("/")){
 							fields.add(col);
 						}else if(this.fieldMapping.containsKey(col)){
@@ -317,7 +318,7 @@ public abstract class QueryOrganizerResource extends SecureResource {
 			
 			for(String field:fields){
 				try {
-					GenericWrapperElement ge=StringUtils.GetRootElement(field);
+					GenericWrapperElement ge=XftStringUtils.GetRootElement(field);
                     assert ge != null;
                     if(!ge.getXSIType().equals(rootElementName.getXSIType()) && ge.isExtensionOf(rootElementName)){
 						rootElementName=ge;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/SubjAssessmentResource.java b/src/main/java/org/nrg/xnat/restlet/resources/SubjAssessmentResource.java
index deeb72e779d00c1f5525ab37aa5da8a558ce2a72..5818f324a04ecb4bb83d8e144784f37389d6ca51 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/SubjAssessmentResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/SubjAssessmentResource.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.transaction.TransactionException;
 import org.nrg.xdat.base.BaseElement;
@@ -31,7 +32,7 @@ import org.nrg.xft.event.persist.PersistentWorkflowUtils.EventRequirementAbsent;
 import org.nrg.xft.exception.InvalidValueException;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xft.utils.ValidationUtils.ValidationResults;
 import org.nrg.xnat.archive.Rename;
 import org.nrg.xnat.archive.Rename.DuplicateLabelException;
@@ -335,7 +336,7 @@ public class SubjAssessmentResource extends SubjAssessmentAbst {
 					if(this.subject!=null){
 							expt.setSubjectId(this.subject.getId());
 					}else{
-						if(StringUtils.IsEmpty(expt.getSubjectId()) && org.apache.commons.lang.StringUtils.isNotEmpty(subID)){
+						if(StringUtils.isBlank(expt.getSubjectId()) && org.apache.commons.lang.StringUtils.isNotEmpty(subID)){
 							expt.setSubjectId(subID);
 						}
 
@@ -507,7 +508,7 @@ public class SubjAssessmentResource extends SubjAssessmentAbst {
 					}
 
 
-					if(!StringUtils.IsEmpty(expt.getLabel()) && !StringUtils.IsAlphaNumericUnderscore(expt.getId())){
+					if(StringUtils.isNotBlank(expt.getLabel()) && !XftStringUtils.IsAlphaNumericUnderscore(expt.getId())){
 						this.getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED,"Invalid character in experiment label.");
 						return;
 					}
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/SubjectResource.java b/src/main/java/org/nrg/xnat/restlet/resources/SubjectResource.java
index 59598ca642c7b58a146f64b4fe642ed8cfe27759..b5b2d008fdcee2ac6f20e1b36cfd0035c91cb44d 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/SubjectResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/SubjectResource.java
@@ -10,16 +10,12 @@
  */
 package org.nrg.xnat.restlet.resources;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.transaction.TransactionException;
 import org.nrg.xdat.model.XnatProjectdataI;
 import org.nrg.xdat.model.XnatProjectparticipantI;
-import org.nrg.xdat.om.XnatExperimentdata;
-import org.nrg.xdat.om.XnatImagesessiondata;
-import org.nrg.xdat.om.XnatProjectdata;
-import org.nrg.xdat.om.XnatProjectparticipant;
-import org.nrg.xdat.om.XnatSubjectassessordata;
-import org.nrg.xdat.om.XnatSubjectdata;
+import org.nrg.xdat.om.*;
 import org.nrg.xdat.om.base.BaseXnatSubjectdata;
 import org.nrg.xdat.security.helpers.Permissions;
 import org.nrg.xdat.security.helpers.Users;
@@ -34,8 +30,8 @@ import org.nrg.xft.event.persist.PersistentWorkflowUtils.EventRequirementAbsent;
 import org.nrg.xft.exception.InvalidValueException;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
 import org.nrg.xft.utils.ValidationUtils.ValidationResults;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.archive.Rename;
 import org.nrg.xnat.archive.Rename.DuplicateLabelException;
 import org.nrg.xnat.archive.Rename.FolderConflictException;
@@ -348,7 +344,7 @@ public class SubjectResource extends ItemResource {
                         sub.setProperty("xnat:subjectData/demographics[@xsi:type=xnat:demographicData]/gender", this.getQueryVariable("gender"));
                     }
 
-                    if (!StringUtils.IsEmpty(sub.getLabel()) && !StringUtils.IsAlphaNumericUnderscore(sub.getId())) {
+                    if (StringUtils.isNotBlank(sub.getLabel()) && !XftStringUtils.IsAlphaNumericUnderscore(sub.getId())) {
                         this.getResponse().setStatus(Status.CLIENT_ERROR_EXPECTATION_FAILED, "Invalid character in subject label.");
                         return;
                     }
@@ -560,7 +556,7 @@ public class SubjectResource extends ItemResource {
     public Representation representItem(XFTItem item, MediaType mt) {
         Representation representation = super.representItem(item, mt);
 
-        if (representation != null && proj != null && representation instanceof TurbineScreenRepresentation && StringUtils.HasContent(proj.getId())) {
+        if (representation != null && proj != null && representation instanceof TurbineScreenRepresentation && StringUtils.isNotBlank(proj.getId())) {
             // provides appropriate rendering if the caller is querying this subject in the context of a shared project
             ((TurbineScreenRepresentation) representation).setRunDataParameter("project", proj.getId());
         }
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResource.java b/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResource.java
index 2f69b1dc77e46ea7ed93ca21d99cdf145e359e02..89eb9a4b7c0270b88a0744696c1989124af47315 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResource.java
@@ -11,6 +11,7 @@
 package org.nrg.xnat.restlet.resources.files;
 
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
 import org.nrg.xdat.base.BaseElement;
@@ -25,7 +26,7 @@ import org.nrg.xft.event.persist.PersistentWorkflowUtils;
 import org.nrg.xft.exception.ElementNotFoundException;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.restlet.representations.BeanRepresentation;
 import org.nrg.xnat.restlet.representations.ItemXMLRepresentation;
 import org.nrg.xnat.restlet.resources.ScanResource;
@@ -163,7 +164,7 @@ public class CatalogResource extends XNATCatalogTemplate {
 							for(String tag: tags){
 								tag = tag.trim();
 								if(!tag.equals("")){
-									for(String s:StringUtils.CommaDelimitedStringToArrayList(tag)){
+									for(String s:XftStringUtils.CommaDelimitedStringToArrayList(tag)){
 										s=s.trim();
 										if(!s.equals("")){
 											XnatAbstractresourceTag t = new XnatAbstractresourceTag((UserI)user);
@@ -197,7 +198,7 @@ public class CatalogResource extends XNATCatalogTemplate {
 									if(!"xnat_tools/AutoRun.xml".equals(wrk.getPipelineName())){
 										wrk=null;
 									}else{
-										if(StringUtils.IsEmpty(wrk.getCategory())){
+										if(StringUtils.isBlank(wrk.getCategory())){
 											wrk.setCategory(EventUtils.CATEGORY.DATA);
 											wrk.setType(EventUtils.TYPE.PROCESS);
 											WorkflowUtils.save(wrk, wrk.buildEvent());
@@ -225,12 +226,10 @@ public class CatalogResource extends XNATCatalogTemplate {
 					}
 				}else{
 					this.getResponse().setStatus(Status.CLIENT_ERROR_FORBIDDEN,"User account doesn't have permission to modify this session.");
-					return;
 				}
 
 			} catch (ActionException e) {
 				this.getResponse().setStatus(e.getStatus(),e.getMessage());
-				return;
 			} catch (Exception e) {
 				this.getResponse().setStatus(Status.SERVER_ERROR_INTERNAL,e.getMessage());
 				logger.error("",e);
@@ -315,7 +314,7 @@ public class CatalogResource extends XNATCatalogTemplate {
 	
 	private void getAllMatches(){
 		catalogs=null;
-		resources=new ArrayList<XnatAbstractresource>();
+		resources= new ArrayList<>();
 		try {
 			catalogs=this.loadCatalogs(resource_ids,false,true);
 		} catch (Exception e) {
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResourceList.java b/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResourceList.java
index 4b2605d6c91ed8dc96987286d4227442fb9af6dc..3ec4f8c9c9c987de96422df6112b3e2082c0b674 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResourceList.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResourceList.java
@@ -21,7 +21,7 @@ import org.nrg.xft.event.EventUtils;
 import org.nrg.xft.event.persist.PersistentWorkflowI;
 import org.nrg.xft.event.persist.PersistentWorkflowUtils;
 import org.nrg.xft.exception.ElementNotFoundException;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.restlet.resources.ScanList;
 import org.nrg.xnat.turbine.utils.ArchivableItem;
 import org.nrg.xnat.utils.CatalogUtils;
@@ -115,7 +115,7 @@ public class CatalogResourceList extends XNATTemplate {
                     for(String tag: tags){
                         tag = tag.trim();
                         if(!tag.equals("")){
-                            for(String s:StringUtils.CommaDelimitedStringToArrayList(tag)){
+                            for(String s:XftStringUtils.CommaDelimitedStringToArrayList(tag)){
                                 s=s.trim();
                                 if(!s.equals("")){
                                     XnatAbstractresourceTag t = new XnatAbstractresourceTag(user);
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/files/XNATCatalogTemplate.java b/src/main/java/org/nrg/xnat/restlet/resources/files/XNATCatalogTemplate.java
index 073cc732721b66c85458fdea7808c5767eef30a5..7d2027244c37237e0162f0c9d6a9ca229df5e032 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/files/XNATCatalogTemplate.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/files/XNATCatalogTemplate.java
@@ -15,7 +15,7 @@ import org.nrg.xft.XFTTable;
 import org.nrg.xft.event.EventMetaI;
 import org.nrg.xft.event.EventUtils;
 import org.nrg.xft.exception.ElementNotFoundException;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.helpers.resource.XnatResourceInfo;
 import org.nrg.xnat.helpers.resource.direct.DirectResourceModifierBuilder;
 import org.nrg.xnat.helpers.resource.direct.ResourceModifierA;
@@ -41,8 +41,8 @@ public class XNATCatalogTemplate extends XNATTemplate {
 		String resourceID= (String)getParameter(request,"RESOURCE_ID");
 
 		if(resourceID!=null){
-			resource_ids=new ArrayList<String>();
-			for(String s:StringUtils.CommaDelimitedStringToArrayList(resourceID, true)){
+			resource_ids=new ArrayList<>();
+			for(String s:XftStringUtils.CommaDelimitedStringToArrayList(resourceID, true)){
 				resource_ids.add(s);
 				}
 			}
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/files/XNATTemplate.java b/src/main/java/org/nrg/xnat/restlet/resources/files/XNATTemplate.java
index e654141ae11770e404e9902b699095dfaaa6cba9..7bce7fc3f91afeb419caf7dd1488a91e5e6393e3 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/files/XNATTemplate.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/files/XNATTemplate.java
@@ -21,7 +21,7 @@ import org.nrg.xft.schema.Wrappers.GenericWrapper.GenericWrapperElement;
 import org.nrg.xft.search.CriteriaCollection;
 import org.nrg.xft.utils.FileUtils;
 import org.nrg.xft.utils.SaveItemHelper;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.exceptions.InvalidArchiveStructure;
 import org.nrg.xnat.restlet.resources.SecureResource;
 import org.nrg.xnat.restlet.util.XNATRestConstants;
@@ -98,7 +98,7 @@ public class XNATTemplate extends SecureResource {
 		String assessid = (String) getParameter(request,
 				"ASSESSED_ID");
 			if(assessid!=null){
-			for(String s: StringUtils.CommaDelimitedStringToArrayList(assessid)){
+			for(String s: XftStringUtils.CommaDelimitedStringToArrayList(assessid)){
 				XnatExperimentdata assessed = XnatImagesessiondata.getXnatImagesessiondatasById(
 					s, user, false);
 
@@ -132,7 +132,7 @@ public class XNATTemplate extends SecureResource {
 
 			String exptID= (String)getParameter(request,"EXPT_ID");
 			if(exptID!=null){
-			for(String s: StringUtils.CommaDelimitedStringToArrayList(exptID)){
+			for(String s: XftStringUtils.CommaDelimitedStringToArrayList(exptID)){
 				XnatExperimentdata expt = XnatExperimentdata.getXnatExperimentdatasById(s,
 						user, false);
 
@@ -203,7 +203,7 @@ public class XNATTemplate extends SecureResource {
 					subcc.addClause("xnat:imageScanData/ID", scanID);
 				}else{
 					CriteriaCollection subsubcc = new CriteriaCollection("OR");
-					for(String s:StringUtils.CommaDelimitedStringToArrayList(scanID, true)){
+					for(String s:XftStringUtils.CommaDelimitedStringToArrayList(scanID, true)){
 						subsubcc.addClause("xnat:imageScanData/ID", s);
 					}
 					subcc.add(subsubcc);
@@ -226,7 +226,7 @@ public class XNATTemplate extends SecureResource {
 					}
 				}else{
 					CriteriaCollection subsubcc = new CriteriaCollection("OR");
-					for(String s:StringUtils.CommaDelimitedStringToArrayList(scanID, true)){
+					for(String s:XftStringUtils.CommaDelimitedStringToArrayList(scanID, true)){
 						if(s.equals("NULL")){
 							subsubcc.addClause("xnat:imageScanData/type",""," IS NULL ",true);
 							subsubcc.addClause("xnat:imageScanData/type","");
@@ -264,7 +264,7 @@ public class XNATTemplate extends SecureResource {
 					subcc.addClause("xnat:reconstructedImageData/ID", reconID);
 				}else{
 					CriteriaCollection subsubcc = new CriteriaCollection("OR");
-					for(String s:StringUtils.CommaDelimitedStringToArrayList(reconID, true)){
+					for(String s:XftStringUtils.CommaDelimitedStringToArrayList(reconID, true)){
 						subsubcc.addClause("xnat:reconstructedImageData/ID", s);
 					}
 					subcc.add(subsubcc);
@@ -287,7 +287,7 @@ public class XNATTemplate extends SecureResource {
 					}
 				}else{
 					CriteriaCollection subsubcc = new CriteriaCollection("OR");
-					for(String s:StringUtils.CommaDelimitedStringToArrayList(reconID, true)){
+					for(String s:XftStringUtils.CommaDelimitedStringToArrayList(reconID, true)){
 						if(s.equals("NULL")){
 							subsubcc.addClause("xnat:reconstructedImageData/type",""," IS NULL ",true);
 							subsubcc.addClause("xnat:reconstructedImageData/type","");
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/search/CachedSearchResource.java b/src/main/java/org/nrg/xnat/restlet/resources/search/CachedSearchResource.java
index e18dbefef2ebf8cd37aaecc52878182fb7644db2..9afcb2684ca8cc6b225e80c99825df10bf4bcca8 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/search/CachedSearchResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/search/CachedSearchResource.java
@@ -12,6 +12,7 @@ package org.nrg.xnat.restlet.resources.search;
 
 import com.noelios.restlet.ext.servlet.ServletCall;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.xdat.search.DisplaySearch;
 import org.nrg.xdat.turbine.utils.AdminUtils;
@@ -20,7 +21,7 @@ import org.nrg.xft.XFTTable;
 import org.nrg.xft.db.MaterializedView;
 import org.nrg.xft.db.MaterializedViewI;
 import org.nrg.xft.db.PoolDBUtils;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.restlet.presentation.RESTHTMLPresenter;
 import org.nrg.xnat.restlet.resources.SecureResource;
 import org.restlet.Context;
@@ -72,7 +73,7 @@ public class CachedSearchResource extends SecureResource {
 					response.setStatus(Status.CLIENT_ERROR_UNPROCESSABLE_ENTITY);
 					return;
 				}
-				sortBy=StringUtils.ReplaceStr(sortBy, " ", "");
+				sortBy= StringUtils.replace(sortBy, " ", "");
 			}
 			
 			if (this.getQueryVariable("sortOrder")!=null){
@@ -82,7 +83,7 @@ public class CachedSearchResource extends SecureResource {
 					response.setStatus(Status.CLIENT_ERROR_UNPROCESSABLE_ENTITY);
 					return;
 				}
-				sortOrder=StringUtils.ReplaceStr(sortOrder, " ", "");
+				sortOrder=StringUtils.replace(sortOrder, " ", "");
 			}
 			
 			this.getVariants().add(new Variant(MediaType.APPLICATION_JSON));
@@ -94,7 +95,7 @@ public class CachedSearchResource extends SecureResource {
 
 	@Override
 	public Representation getRepresentation(Variant variant) {	
-		Hashtable<String,Object> params=new Hashtable<String,Object>();
+		Hashtable<String,Object> params= new Hashtable<>();
 		if(tableName!=null){
 			params.put("ID", tableName);
 		}
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/search/SearchFieldListResource.java b/src/main/java/org/nrg/xnat/restlet/resources/search/SearchFieldListResource.java
index 266f821976ec51e803d6423b9dd2187d40427fff..abc34721807be0576d33bb40e6844b46a41dd5b9 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/search/SearchFieldListResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/search/SearchFieldListResource.java
@@ -32,7 +32,7 @@ import org.nrg.xft.exception.FieldNotFoundException;
 import org.nrg.xft.exception.InvalidValueException;
 import org.nrg.xft.exception.XFTInitException;
 import org.nrg.xft.schema.Wrappers.GenericWrapper.GenericWrapperElement;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.restlet.resources.SecureResource;
 import org.restlet.Context;
 import org.restlet.data.MediaType;
@@ -187,7 +187,7 @@ public class SearchFieldListResource extends SecureResource{
 		XFTTable fields = new XFTTable();
 		fields.initTable(new String[]{"FIELD_ID","HEADER","SUMMARY","TYPE","REQUIRES_VALUE","DESC","ELEMENT_NAME","SRC"});
 
-		ArrayList<String> elementNames=StringUtils.CommaDelimitedStringToArrayList(elementName);
+		ArrayList<String> elementNames=XftStringUtils.CommaDelimitedStringToArrayList(elementName);
 		for(String en : elementNames)
         {
             try {
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/search/SearchResource.java b/src/main/java/org/nrg/xnat/restlet/resources/search/SearchResource.java
index 7b3bc4a9d84dcf778c1bca59565abf699567cd61..ec3d1116b0fdbb28be085d9666766c19b6ba7d08 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/search/SearchResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/search/SearchResource.java
@@ -21,6 +21,7 @@ import java.util.Map;
 
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.xdat.collections.DisplayFieldCollection.DisplayFieldNotFoundException;
 import org.nrg.xdat.display.DisplayFieldReferenceI;
@@ -44,7 +45,7 @@ import org.nrg.xft.exception.FieldNotFoundException;
 import org.nrg.xft.exception.XFTInitException;
 import org.nrg.xft.schema.Wrappers.XMLWrapper.SAXReader;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.restlet.presentation.RESTHTMLPresenter;
 import org.nrg.xnat.restlet.resources.SecureResource;
 import org.restlet.Context;
@@ -241,8 +242,8 @@ public class SearchResource extends SecureResource {
 						ds.addKeyColumn(true);
 						
 						String query = ds.getSQLQuery(null);
-						query = StringUtils.ReplaceStr(query,"'","*'*");
-						query = StringUtils.ReplaceStr(query,"*'*","''");
+						query = StringUtils.replace(query, "'", "*'*");
+						query = StringUtils.replace(query,"*'*","''");
 
                         String codeToUse = getQueryVariable(MaterializedView.CACHING_HANDLER,MaterializedView.DEFAULT_MATERIALIZED_VIEW_SERVICE_CODE);
 						mv = MaterializedView.createView(user,codeToUse);
@@ -400,7 +401,7 @@ public class SearchResource extends SecureResource {
 							linkProps.append(prop.getName()).append("\"");
 							linkProps.append(",\"value\":\"");
 							String v =prop.getValue();
-							v = StringUtils.ReplaceStr(v,"@WEBAPP",TurbineUtils.GetRelativePath(ServletCall.getRequest(sr.getRequest())) + "/");
+							v = StringUtils.replace(v,"@WEBAPP",TurbineUtils.GetRelativePath(ServletCall.getRequest(sr.getRequest())) + "/");
 							
 							linkProps.append(v).append("\"");
 
@@ -426,7 +427,7 @@ public class SearchResource extends SecureResource {
 											        	insert_value = insert_value.substring(6);
 											            try {
 											                Integer i = Integer.parseInt(insert_value);
-											                ArrayList<String> al = StringUtils.CommaDelimitedStringToArrayList(insertValue.toString());
+											                ArrayList<String> al = XftStringUtils.CommaDelimitedStringToArrayList(insertValue.toString());
 											                insertValue =al.get(i);
 											            } catch (Throwable e) {
 											                logger.error("",e);
@@ -471,28 +472,24 @@ public class SearchResource extends SecureResource {
                     if (dfr.isImage()) {
 						cp.get(id).put("imgRoot", TurbineUtils.GetRelativePath(ServletCall.getRequest(sr.getRequest())) + "/");
 					}
-				} catch (XFTInitException e) {
-					logger.error("",e);
-				} catch (ElementNotFoundException e) {
+				} catch (XFTInitException | ElementNotFoundException e) {
 					logger.error("",e);
 				}
 
-				
+
 			}
 			
 			cp.put("quarantine_status",new Hashtable<String,String>());
-		} catch (ElementNotFoundException e) {
-			logger.error("",e);
-		} catch (XFTInitException e) {
+		} catch (ElementNotFoundException | XFTInitException e) {
 			logger.error("",e);
 		}
-		
+
 		return cp;
 	}
 
     private boolean canQueryByAllowedUser(final XdatStoredSearch search) {
         boolean allowed=false;
-        if(!StringUtils.IsEmpty(search.getId()))
+        if(StringUtils.isNotBlank(search.getId()))
         {
             //need to check against unmodified stored search
             final org.nrg.xdat.om.XdatStoredSearch stored = XdatStoredSearch.getXdatStoredSearchsById(search.getId(), user, true);
diff --git a/src/main/java/org/nrg/xnat/restlet/services/AuditRestlet.java b/src/main/java/org/nrg/xnat/restlet/services/AuditRestlet.java
index f43ed8e12d7864217e09016f8a4e578572584aa4..1c3619ed761d1fd27d200041b623cf2e0a751703 100644
--- a/src/main/java/org/nrg/xnat/restlet/services/AuditRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/services/AuditRestlet.java
@@ -20,7 +20,7 @@ import org.nrg.xft.exception.ElementNotFoundException;
 import org.nrg.xft.schema.Wrappers.GenericWrapper.GenericWrapperElement;
 import org.nrg.xft.search.CriteriaCollection;
 import org.nrg.xft.search.ItemSearch;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.restlet.representations.ItemHTMLRepresentation;
 import org.nrg.xnat.restlet.resources.SecureResource;
 import org.restlet.Context;
@@ -47,7 +47,7 @@ public class AuditRestlet extends SecureResource {
 		key=this.filepath.substring(filepath.indexOf("/")+1);
 		
 
-		List<String> ids=StringUtils.DelimitedStringToArrayList(key, ",");
+		List<String> ids=XftStringUtils.DelimitedStringToArrayList(key, ",");
 		
 		try {
 			item=retrieveItemByIds(xsiType, ids);
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/ManageProjectAccess.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/ManageProjectAccess.java
index 1353358cc214460076ab25dccda276f0a132693d..b6e41c4b1254751014d357458303080824ff2aec 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/ManageProjectAccess.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/ManageProjectAccess.java
@@ -27,7 +27,7 @@ import org.nrg.xft.event.persist.PersistentWorkflowUtils;
 import org.nrg.xft.exception.InvalidPermissionException;
 import org.nrg.xft.exception.ItemNotFoundException;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xnat.utils.WorkflowUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -67,9 +67,9 @@ public class ManageProjectAccess extends SecureAction {
         String members = ((String) org.nrg.xdat.turbine.utils.TurbineUtils.GetPassedParameter("members", data));
         String owners = ((String) org.nrg.xdat.turbine.utils.TurbineUtils.GetPassedParameter("owners", data));
 
-        List<String> ownersL = StringUtils.CommaDelimitedStringToArrayList(owners);
-        List<String> membersL = StringUtils.CommaDelimitedStringToArrayList(members);
-        List<String> collaboratorsL = StringUtils.CommaDelimitedStringToArrayList(collaborators);
+        List<String> ownersL = XftStringUtils.CommaDelimitedStringToArrayList(owners);
+        List<String> membersL = XftStringUtils.CommaDelimitedStringToArrayList(members);
+        List<String> collaboratorsL = XftStringUtils.CommaDelimitedStringToArrayList(collaborators);
 
 
         if (owners != null) {
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/QuickSearchAction.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/QuickSearchAction.java
index 278a048478ecb10d97956ae9094356c53ccd850f..b51fc6ccb3a73897c77e3e1e6d9e264b607f0943 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/QuickSearchAction.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/QuickSearchAction.java
@@ -16,6 +16,7 @@ import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
@@ -39,7 +40,7 @@ import org.nrg.xft.exception.FieldNotFoundException;
 import org.nrg.xft.exception.XFTInitException;
 import org.nrg.xft.search.TableSearch;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 
 import com.google.common.collect.Lists;
 
@@ -202,7 +203,7 @@ public class QuickSearchAction extends SecureAction {
                                 
                                 String identifier = idSet.substring(0,idSet.indexOf(" ("));
                                 idSet = idSet.substring(idSet.indexOf(" (")+2);
-                                ArrayList<String> ps = StringUtils.CommaDelimitedStringToArrayList(idSet, true);
+                                ArrayList<String> ps = XftStringUtils.CommaDelimitedStringToArrayList(idSet, true);
                                 
                                 for (String p : ps){
                                 	if(Permissions.canRead(user,element_name + "/sharing/share/project", p)){
@@ -313,10 +314,10 @@ public class QuickSearchAction extends SecureAction {
                     boolean canRead=false;
                     for(Integer pC: columns){
                         String pId=(String)t.rows().get(rowC)[pC];
-                        if(!StringUtils.IsEmpty(pId)){
+                        if(StringUtils.isNotBlank(pId)){
                             String[] projects=pId.split(", ");
                             for(String project:projects){
-                                if(!StringUtils.IsEmpty(project)){
+                                if(StringUtils.isNotBlank(project)){
                                     project=project.replace(">", "");
                                     project=project.replace("<", "");
                                     if(Permissions.canRead(user,xsiPath,project)){
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/ArcGet.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/ArcGet.java
index e679a17b3867a970ff229da535b6198eb8cce436..98fc5500760ace665ecb09b2cd4e4a0708749f50 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/ArcGet.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/ArcGet.java
@@ -25,6 +25,7 @@ import java.util.zip.ZipOutputStream;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.util.RunData;
 import org.nrg.xdat.model.XnatImagescandataI;
@@ -42,7 +43,7 @@ import org.nrg.xft.exception.FieldNotFoundException;
 import org.nrg.xft.exception.XFTInitException;
 import org.nrg.xft.security.UserI;
 import org.nrg.xft.utils.FileUtils;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.nrg.xft.utils.zip.ZipI;
 import org.nrg.xft.utils.zip.ZipUtils;
 import org.nrg.xnat.srb.XNATDirectory;
@@ -163,7 +164,7 @@ created in buildPDF.
                                                 Hashtable fileGroups = mr.getFileGroups();
                                                 for (Enumeration e = fileGroups.keys(); e.hasMoreElements();) {
                                                     String key = (String)e.nextElement();
-                                                    if (key.toLowerCase().indexOf("scan")!=-1){
+                                                    if (key.toLowerCase().contains("scan")){
                                                         XNATDirectory filesA = (XNATDirectory)fileGroups.get(key);
                                                         zip.write(filesA);
                                                     }
@@ -171,7 +172,7 @@ created in buildPDF.
                                             }else{
                                                 Hashtable fileGroups = mr.getFileGroups();
                                                 raw = raw.trim();
-                                                ArrayList rawTypes = StringUtils.CommaDelimitedStringToArrayList(raw);
+                                                ArrayList rawTypes = XftStringUtils.CommaDelimitedStringToArrayList(raw);
                                                 Iterator iter= rawTypes.iterator();
                                                 while (iter.hasNext())
                                                 {
@@ -180,7 +181,7 @@ created in buildPDF.
                                                     if (scans!=null && scans.size()>0)
                                                     {
                                                         for(XnatImagescandata scan: scans){
-                                                            String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                                                            String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(), "-", ""), "*", "AST");
                                                             XNATDirectory filesA = (XNATDirectory)fileGroups.get("scan" +parsedScanID);
                                                             zip.write(filesA);
 
@@ -208,13 +209,13 @@ created in buildPDF.
                                             } else {
                                         	Hashtable fileGroups = mr.getFileGroups();
                                         	processed = processed.trim();
-                                        	for (final String rType : StringUtils.CommaDelimitedStringToArrayList(processed)) {
+                                        	for (final String rType : XftStringUtils.CommaDelimitedStringToArrayList(processed)) {
                                         	    Collection<XnatReconstructedimagedata> scans= mr.getReconstructionsByType(rType);
                                         	    if (scans.isEmpty()) {
                                         		fw.write("No " +rType + " Processed Images Found.\n");
                                         	    } else {
                                         		for (final XnatReconstructedimagedata scan : scans) {
-                                        		    final String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                                        		    final String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(),"-",""),"*","AST");
                                         		    final XNATDirectory filesA = (XNATDirectory)fileGroups.get("recon" +parsedScanID);
                                         		    zip.write(filesA);
                                         		    fw.write("Including " +filesA.getSize() + " Processed Files for " + scan.getId() +" (" + rType + ").\n");                                                	    
@@ -290,7 +291,7 @@ created in buildPDF.
                                                                 {
                                                                     include=true;
                                                                 }else{
-                                                                    ArrayList qualities = StringUtils.CommaDelimitedStringToArrayList(quality);
+                                                                    ArrayList qualities = XftStringUtils.CommaDelimitedStringToArrayList(quality);
                                                                     if (scan.getQuality()!=null){
                                                                         if (qualities.contains(scan.getQuality()))
                                                                         {
@@ -301,7 +302,7 @@ created in buildPDF.
                                                             }
                                                             
                                                             if (include){
-                                                                String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                                                                String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(),"-",""),"*","AST");
                                                                 ArrayList filesA = (ArrayList)fileGroups.get("scan" +parsedScanID);
                                                                 images.addAll(filesA);
                                                                 fw.write("Including " +filesA.size() + " Raw Files for scan " + scan.getId() +" (" + scan.getQuality() + ").\n");
@@ -311,7 +312,7 @@ created in buildPDF.
                                                 }else{
                                                     Hashtable fileGroups = mr.getFileGroups();
                                                     raw = raw.trim();
-                                                    for (final String rType : StringUtils.CommaDelimitedStringToArrayList(raw)) {
+                                                    for (final String rType : XftStringUtils.CommaDelimitedStringToArrayList(raw)) {
                                                         ArrayList<XnatImagescandata> scans= mr.getScansByType(rType);
                                                         if (scans!=null && scans.size()>0)
                                                         {
@@ -325,7 +326,7 @@ created in buildPDF.
                                                                     {
                                                                         include=true;
                                                                     }else{
-                                                                        ArrayList qualities = StringUtils.CommaDelimitedStringToArrayList(quality);
+                                                                        ArrayList qualities = XftStringUtils.CommaDelimitedStringToArrayList(quality);
                                                                         if (scan.getQuality()!=null){
                                                                             if (qualities.contains(scan.getQuality()))
                                                                             {
@@ -336,7 +337,7 @@ created in buildPDF.
                                                                 }
                                                                 
                                                                 if (include){
-                                                                    String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                                                                    String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(),"-",""),"*","AST");
                                                                     ArrayList filesA = (ArrayList)fileGroups.get("scan" +parsedScanID);
                                                                     images.addAll(filesA);
                                                                     fw.write("Including " +filesA.size() + " Raw Files for " + scan.getId() +" (" + rType + ":" + scan.getQuality() + ").\n");
@@ -347,7 +348,7 @@ created in buildPDF.
                                                             if (scan==null)
                                                                 fw.write("No " +rType + " Raw Scans Found.\n");
                                                             else{
-                                                                String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                                                                String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(),"-",""),"*","AST");
                                                                 ArrayList filesA = (ArrayList)fileGroups.get("scan" +parsedScanID);
                                                                 images.addAll(filesA);
                                                                 fw.write("Including " +filesA.size() + " Raw Files for " + scan.getId() +" (" + rType + ":" + scan.getQuality() + ").\n");
@@ -371,12 +372,12 @@ created in buildPDF.
                                                 }else{
                                                     Hashtable fileGroups = mr.getFileGroups();
                                                     processed = processed.trim();
-                                                    for (final String rType : StringUtils.CommaDelimitedStringToArrayList(processed)) {
+                                                    for (final String rType : XftStringUtils.CommaDelimitedStringToArrayList(processed)) {
                                                         Collection<XnatReconstructedimagedata> scans= mr.getReconstructionsByType(rType);
                                                         if (scans.isEmpty())
                                                         {
                                                             for (final XnatReconstructedimagedata scan : scans) {
-                                                                String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                                                                String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(),"-",""),"*","AST");
                                                                 Collection filesA = (Collection)fileGroups.get("recon" +parsedScanID);
                                                                 images.addAll(filesA);    
                                                                 fw.write("Including " +filesA.size() + " Processed Files for " + scan.getId() +" (" + rType + ").\n");
@@ -386,7 +387,7 @@ created in buildPDF.
                                                             if (scan==null)
                                                                 fw.write("No " +rType + " Processed Images Found.\n");
                                                             else{
-                                                                String parsedScanID= StringUtils.ReplaceStr(StringUtils.ReplaceStr(scan.getId(),"-",""),"*","AST");
+                                                                String parsedScanID= StringUtils.replace(StringUtils.replace(scan.getId(),"-",""),"*","AST");
                                                                 ArrayList filesA = (ArrayList)fileGroups.get("recon" +parsedScanID);
                                                                 images.addAll(filesA);
                                                                 fw.write("Including " +filesA.size() + " Processed Files for " + scan.getId() +" (" + rType + ").\n");
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/EditImageAssessorScreen.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/EditImageAssessorScreen.java
index 7c038a42f4d9d3767befa906495ae29ff7336586..f0fcf42476b3a005dae63705b89ba4b80f7fb3aa 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/EditImageAssessorScreen.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/EditImageAssessorScreen.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.screens;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.nrg.xdat.base.BaseElement;
 import org.nrg.xdat.om.XnatExperimentdata;
@@ -21,7 +22,6 @@ import org.nrg.xft.ItemI;
 import org.nrg.xft.XFTItem;
 import org.nrg.xft.schema.Wrappers.GenericWrapper.GenericWrapperElement;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
 
 public abstract class EditImageAssessorScreen extends EditScreenA {
 
@@ -30,11 +30,11 @@ public abstract class EditImageAssessorScreen extends EditScreenA {
 		final UserI user = TurbineUtils.getUser(data);
 		final XnatImageassessordata assessor = (XnatImageassessordata)BaseElement.GetGeneratedItem(XFTItem.NewItem(getElementName(), user));
 		final String search_element = TurbineUtils.GetSearchElement(data);
-		if (!StringUtils.IsEmpty(search_element)) {
+		if (StringUtils.isNotBlank(search_element)) {
 			final GenericWrapperElement se = GenericWrapperElement.GetElement(search_element);
 			if (se.instanceOf(XnatImagesessiondata.SCHEMA_ELEMENT_NAME)) {
 				final String search_value = ((String)org.nrg.xdat.turbine.utils.TurbineUtils.GetPassedParameter("search_value",data));
-				if (!StringUtils.IsEmpty(search_value)) {
+				if (StringUtils.isNotBlank(search_value)) {
 					final XnatImagesessiondata imageSession = new XnatImagesessiondata(TurbineUtils.GetItemBySearch(data));
 
 					// set defaults for new qc assessors
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/MRXMLSearch.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/MRXMLSearch.java
index 45d5a4b2e9683368b82d5ff77c941fdcb54d4b6e..3314eb0c765e2adfab101c53f6b7a489b9e3ee5b 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/MRXMLSearch.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/MRXMLSearch.java
@@ -18,6 +18,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerFactoryConfigurationError;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.util.RunData;
 import org.nrg.xdat.base.BaseElement;
@@ -35,7 +36,7 @@ import org.nrg.xft.schema.Wrappers.GenericWrapper.GenericWrapperElement;
 import org.nrg.xft.schema.Wrappers.GenericWrapper.GenericWrapperField;
 import org.nrg.xft.schema.Wrappers.XMLWrapper.SAXWriter;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 import org.xml.sax.SAXException;
 
 /**
@@ -131,7 +132,7 @@ created in buildPDF.
                             
                         }else{
                             if (adjustPath.equals("fullpath")){
-                                String root= StringUtils.ReplaceStr(mr.getArchiveRootPath(),"\\","/");
+                                String root= StringUtils.replace(mr.getArchiveRootPath(), "\\", "/");
                                 System.out.println(root);
                                 if (!root.endsWith("/")){
                                     root += "/";
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_download_sessions.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_download_sessions.java
index 08bdf5e76be92a33a9ddac4e64ac08dc075be90e..20a328510b147392563bb94c90d8cb77204e962f 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_download_sessions.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_download_sessions.java
@@ -15,6 +15,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.xdat.schema.SchemaElement;
@@ -24,7 +25,7 @@ import org.nrg.xdat.turbine.utils.TurbineUtils;
 import org.nrg.xft.XFTTable;
 import org.nrg.xft.exception.DBPoolException;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
+import org.nrg.xft.utils.XftStringUtils;
 
 import com.google.common.collect.Lists;
 
@@ -42,7 +43,7 @@ public class XDATScreen_download_sessions extends SecureScreen {
             String value = (String) TurbineUtils.GetPassedParameter("search_value", data);
             
             // TODO: For now, hard-limit this to MR sessions.
-            if(!StringUtils.IsEmpty(element) && !StringUtils.IsEmpty(field) && !StringUtils.IsEmpty(value)){
+            if(StringUtils.isNotBlank(element) && StringUtils.isNotBlank(field) && StringUtils.isNotBlank(value)){
             	SchemaElement se=SchemaElement.GetElement(element);
             	if(se.getGenericXFTElement().instanceOf("xnat:imageSessionData")){
             		sessionList = new ArrayList<String>();
@@ -69,7 +70,7 @@ public class XDATScreen_download_sessions extends SecureScreen {
                     }
                     if(s.contains("'"))
                     {
-                    	s= StringUtils.RemoveChar(s, '\'');
+                    	s= StringUtils.remove(s, '\'');
                     }
                     sessionString+="'" + s + "'";
             	}
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_edit_xnat_qcManualAssessorData.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_edit_xnat_qcManualAssessorData.java
index 31ef94bdbe193409e3c3e9eb7b77cfd18921701d..508bcae35362c9d3fe887bb211562de9793b4f3d 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_edit_xnat_qcManualAssessorData.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_edit_xnat_qcManualAssessorData.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.screens;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.nrg.xdat.model.XnatImagescandataI;
 import org.nrg.xdat.om.*;
@@ -18,7 +19,6 @@ import org.nrg.xft.ItemI;
 import org.nrg.xft.XFTItem;
 import org.nrg.xft.schema.Wrappers.GenericWrapper.GenericWrapperElement;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
 
 import java.util.Calendar;
 
@@ -31,11 +31,11 @@ public class XDATScreen_edit_xnat_qcManualAssessorData
 		final UserI user = TurbineUtils.getUser(data);
 		final XnatQcmanualassessordata qcAccessor = new XnatQcmanualassessordata(XFTItem.NewItem(getElementName(), user));
 		final String search_element = TurbineUtils.GetSearchElement(data);
-		if (!StringUtils.IsEmpty(search_element)) {
+		if (StringUtils.isNotBlank(search_element)) {
 			final GenericWrapperElement se = GenericWrapperElement.GetElement(search_element);
 			if (se.instanceOf(XnatImagesessiondata.SCHEMA_ELEMENT_NAME)) {
 				final String search_value = ((String)org.nrg.xdat.turbine.utils.TurbineUtils.GetPassedParameter("search_value",data));
-				if (!StringUtils.IsEmpty(search_value)) {
+				if (StringUtils.isNotBlank(search_value)) {
 					XnatImagesessiondata imageSession = new XnatImagesessiondata(TurbineUtils.GetItemBySearch(data));
 
 					// set defaults for new qc assessors
diff --git a/src/main/java/org/nrg/xnat/turbine/utils/IDGenerator.java b/src/main/java/org/nrg/xnat/turbine/utils/IDGenerator.java
index 2dc7ce1ba84753b3524259743ad5f9eab4e177b8..9b460146f25db265835cffeb2249ebf6dbef8eaa 100644
--- a/src/main/java/org/nrg/xnat/turbine/utils/IDGenerator.java
+++ b/src/main/java/org/nrg/xnat/turbine/utils/IDGenerator.java
@@ -10,10 +10,10 @@
  */
 package org.nrg.xnat.turbine.utils;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xft.XFT;
 import org.nrg.xft.XFTTable;
 import org.nrg.xft.identifier.IDGeneratorI;
-import org.nrg.xft.utils.StringUtils;
 import org.nrg.xnat.services.impl.hibernate.HibernateHostInfoService;
 
 import java.util.ArrayList;
@@ -172,11 +172,11 @@ public class IDGenerator implements IDGeneratorI {
 	 */
 	private String getSiteID(){
 		String site_id = XFT.GetSiteID();
-		site_id = StringUtils.ReplaceStr(site_id, " ", "");
-		site_id = StringUtils.ReplaceStr(site_id, "-", "_");
-		site_id = StringUtils.ReplaceStr(site_id, "\"", "");
-		site_id = StringUtils.ReplaceStr(site_id, "'", "");
-		site_id = StringUtils.ReplaceStr(site_id, "^", "");
+		site_id = StringUtils.replace(site_id, " ", "");
+		site_id = StringUtils.replace(site_id, "-", "_");
+		site_id = StringUtils.replace(site_id, "\"", "");
+		site_id = StringUtils.replace(site_id, "'", "");
+		site_id = StringUtils.replace(site_id, "^", "");
 		return site_id;
 	}
 	
diff --git a/src/main/java/org/nrg/xnat/turbine/utils/ProjectAccessRequest.java b/src/main/java/org/nrg/xnat/turbine/utils/ProjectAccessRequest.java
index 5ad409e39e5ead1c435e65a2aafc1b4ae151cdc2..bf86d90aa41ad9247430546944cf984d4b23ee9d 100644
--- a/src/main/java/org/nrg/xnat/turbine/utils/ProjectAccessRequest.java
+++ b/src/main/java/org/nrg/xnat/turbine/utils/ProjectAccessRequest.java
@@ -10,26 +10,8 @@
  */
 package org.nrg.xnat.turbine.utils;
 
-import static org.nrg.xdat.om.base.BaseXnatProjectdata.getProjectByIDorAlias;
-import static org.nrg.xdat.om.base.auto.AutoXnatProjectdata.SCHEMA_ELEMENT_NAME;
-import static org.nrg.xdat.om.base.auto.AutoXnatProjectdata.getXnatProjectdatasById;
-import static org.nrg.xdat.om.base.auto.AutoXnatProjectdata.logger;
-
-import java.io.StringWriter;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.mail.MessagingException;
-
 import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.velocity.Template;
 import org.apache.velocity.app.Velocity;
@@ -48,11 +30,20 @@ import org.nrg.xft.event.EventUtils;
 import org.nrg.xft.event.persist.PersistentWorkflowI;
 import org.nrg.xft.exception.DBPoolException;
 import org.nrg.xft.security.UserI;
-import org.nrg.xft.utils.StringUtils;
 import org.nrg.xnat.exceptions.XFTItemNotFoundException;
 import org.nrg.xnat.exceptions.XNATException;
 import org.nrg.xnat.utils.WorkflowUtils;
 
+import javax.mail.MessagingException;
+import java.io.StringWriter;
+import java.sql.SQLException;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.nrg.xdat.om.base.BaseXnatProjectdata.getProjectByIDorAlias;
+import static org.nrg.xdat.om.base.auto.AutoXnatProjectdata.*;
+
 public class ProjectAccessRequest {
     public static boolean CREATED_PAR_TABLE = false;
 
@@ -391,10 +382,8 @@ public class ProjectAccessRequest {
                 CreatePARTable();
             }
 
-            String query = String.format("INSERT INTO xs_par_table (proj_id,user_id,level) VALUES ('%s', %d, '%s');", pID, user.getID(), StringUtils.RemoveChar(level, '\''));
+            String query = String.format("INSERT INTO xs_par_table (proj_id,user_id,level) VALUES ('%s', %d, '%s');", pID, user.getID(), StringUtils.remove(level, '\''));
             PoolDBUtils.ExecuteNonSelectQuery(query, user.getDBName(), user.getLogin());
-        } catch (SQLException e) {
-            _logger.error("", e);
         } catch (Exception e) {
             _logger.error("", e);
         }
@@ -474,7 +463,7 @@ public class ProjectAccessRequest {
 	             CreatePARTable();
 	         }
 
-	         invitee = StringUtils.RemoveChar(invitee, '\'');
+	         invitee = StringUtils.remove(invitee, '\'');
             String guid = UUID.randomUUID().toString();
 
             StringBuilder query = new StringBuilder("INSERT INTO xs_par_table (email, guid, proj_id, approver_id, level) VALUES ('");
diff --git a/src/main/webapp/WEB-INF/conf/services.properties b/src/main/webapp/WEB-INF/conf/services.properties
index de1d5c7fac4e77dbee428cf9994d40c80eea32e3..429b50d9c5cb5010a892341c71e723face3bb53e 100644
--- a/src/main/webapp/WEB-INF/conf/services.properties
+++ b/src/main/webapp/WEB-INF/conf/services.properties
@@ -27,7 +27,7 @@ mailserver.port=25
 mailserver.username=
 mailserver.password=
 mailserver.protocol=smtp
-mailserver.admin=administrator@xnat.org
+mailserver.admin=jrherrick@wustl.edu
 mailserver.prefix=XNAT
 
 # Session XML rebuilder settings. interval is in minutes, repeat is in milliseconds.