Index: src/edu/ucsb/nceas/metacat/admin/MetaCatAdminServlet.java
===================================================================
--- src/edu/ucsb/nceas/metacat/admin/MetaCatAdminServlet.java	(revision 4759)
+++ src/edu/ucsb/nceas/metacat/admin/MetaCatAdminServlet.java	(revision 4760)
@@ -40,6 +40,8 @@
 
 import edu.ucsb.nceas.metacat.MetaCatServlet;
 import edu.ucsb.nceas.metacat.service.PropertyService;
+import edu.ucsb.nceas.metacat.service.ServiceException;
+import edu.ucsb.nceas.metacat.service.ServiceService;
 import edu.ucsb.nceas.metacat.service.SessionService;
 import edu.ucsb.nceas.metacat.util.AuthUtil;
 import edu.ucsb.nceas.metacat.util.MetacatUtil;
@@ -47,7 +49,7 @@
 import edu.ucsb.nceas.metacat.util.SkinUtil;
 import edu.ucsb.nceas.metacat.util.SystemUtil;
 import edu.ucsb.nceas.metacat.util.UtilException;
-import edu.ucsb.nceas.utilities.PropertyNotFoundException;
+import edu.ucsb.nceas.utilities.GeneralPropertyException;
 
 /**
  * Entry servlet for the metadata configuration utility
@@ -103,14 +105,24 @@
 				SessionService.touchSession(httpSession.getId());
 			}
 			
-			if (!MetacatUtil.isBackupDirConfigured()) {	
-				// If the user is logged in, make sure the backup directory has been configured.
-				// If not, go to the backup configuration page.
-				processingMessage.add("You must configure the backup directory" + 
-						" before you can continue with Metacat configuration.");
-				RequestUtil.setRequestMessage(request, processingMessage);
-				action = "backup";
-				logMetacat.debug("Admin action changed to 'backup'");
+			if (!MetacatUtil.isBackupDirConfigured()) {
+				String discoveredBackupDir = SystemUtil.discoverExternalBaseDir();
+				if (discoveredBackupDir == null) {
+					// if the backup dir has not been configured, and the system 
+					// cannot find a suitable directory, then show the backup 
+					// directory configuration screen.
+					processingMessage.add("You must configure the backup directory"
+							+ " before you can continue with Metacat configuration.");
+					RequestUtil.setRequestMessage(request, processingMessage);
+					action = "backup";
+					logMetacat.debug("Admin action changed to 'backup'");
+				} else {
+					// if the backup dir has not been configured, and the system 
+					// can find a suitable directory, then set the application.backupDir 
+					// property to the discovered value
+					PropertyService.setProperty("application.backupDir", discoveredBackupDir);
+					ServiceService.refreshService("PropertyService");
+				}
 			} else if (!AuthUtil.isAuthConfigured()) {
 				// if authentication isn't configured, change the action to auth.  
 				// Authentication needs to be set up before we do anything else
@@ -183,9 +195,9 @@
 				logMetacat.error(errorMessage);
 				processingErrors.add(errorMessage);
 			} 
-		} catch (PropertyNotFoundException pnfe) {
+		} catch (GeneralPropertyException ge) {
 			String errorMessage = 
-				"Property problem while handling request: " + pnfe.getMessage();
+				"Property problem while handling request: " + ge.getMessage();
 			logMetacat.error(errorMessage);
 			processingErrors.add(errorMessage);
 		} catch (AdminException ae) {
@@ -198,6 +210,11 @@
 				"Utility problem while handling request: " + ue.getMessage();
 			logMetacat.error(errorMessage);
 			processingErrors.add(errorMessage);
+		} catch (ServiceException se) {
+			String errorMessage = 
+				"Utility problem while handling request: " + se.getMessage();
+			logMetacat.error(errorMessage);
+			processingErrors.add(errorMessage);
 		}
 		
 		if (processingErrors.size() > 0) {
Index: src/edu/ucsb/nceas/metacat/admin/BackupAdmin.java
===================================================================
--- src/edu/ucsb/nceas/metacat/admin/BackupAdmin.java	(revision 4759)
+++ src/edu/ucsb/nceas/metacat/admin/BackupAdmin.java	(revision 4760)
@@ -99,9 +99,15 @@
 			
 			try {
 				String backupBaseDir = SystemUtil.discoverExternalBaseDir();
+				logMetacat.debug("Backup dir discovered as: " + backupBaseDir);
 				String backupDirStatus = getBackupDirStatus(backupBaseDir);
+				logMetacat.debug("Status of discovered backup dir: " + backupDirStatus);
 				
-				request.setAttribute("backupBaseDir", backupBaseDir);
+				if (backupBaseDir != null) {
+					request.setAttribute("backupBaseDir", backupBaseDir);
+				} else {
+					request.setAttribute("backupBaseDir", "");
+				}
 				request.setAttribute("backupDirStatus", backupDirStatus);
 				
 				// Forward the request to the JSP page
@@ -191,6 +197,10 @@
 	 * @return a string corresponding to one of the statuses shown above.
 	 */
 	protected String getBackupDirStatus(String backupBaseDir) {
+		if (backupBaseDir == null) {
+			return UNKNOWN;
+		}
+		
 		if (FileUtil.getFileStatus(backupBaseDir + FileUtil.getFS() + ".metacat" + FileUtil.getFS()
 				+ "metacat.properties.backup") >= FileUtil.EXISTS_READ_WRITABLE) {
 			return HIDDEN_EXISTS_POPULATED;
