diff --git a/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java b/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java
index e9abd50734328365f05cb94bd61fb7af2ab0d359..a35d00bc6f2f2ba236f611019ff7b172875dab30 100755
--- a/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java
+++ b/src/main/java/no/nibio/vips/logic/controller/session/UserBean.java
@@ -322,8 +322,6 @@ public class UserBean {
             // Summaries
             deleteForecastSummary.setParameter("forecastConfigurationId", forecastConfiguration.getForecastConfigurationId()).executeUpdate();
 
-            System.out.println("forecastConfiguration " + forecastConfiguration.getForecastConfigurationId() + " should be removed now");
-
             // Configurations
             em.remove(forecastConfiguration);
 
@@ -383,9 +381,6 @@ public class UserBean {
             obs.setLastEditedBy(archiveUser.getUserId());
         }
 
-
-
-
         // Messages
         for(MessageLocale ml:userResources.getMessageLocales())
         {
diff --git a/src/main/java/no/nibio/vips/logic/service/LogicService.java b/src/main/java/no/nibio/vips/logic/service/LogicService.java
index 7335b48ee2af97db528261d645e871abd2e7230d..cd8230ddff67698023a5c11aa8326c6a68305ba2 100755
--- a/src/main/java/no/nibio/vips/logic/service/LogicService.java
+++ b/src/main/java/no/nibio/vips/logic/service/LogicService.java
@@ -1455,6 +1455,53 @@ public class LogicService {
             return Response.status(Status.BAD_REQUEST).entity("INPUT ERROR: " + ex.getMessage()).build();
         }
     }
+
+    /**
+     * Allows a user to delete their account
+     * @param keepData if true, move all data to default user.
+     * @return
+     */
+    @DELETE
+    @Path("user/deleteme")
+    public Response deleteMe(@QueryParam("keepData") Boolean keepData) {
+        // Authentication
+        // Either valid UUID or session
+        VipsLogicUser user = userBean.getUserFromUUID(httpServletRequest);
+        if(user == null)
+        {
+            user = (VipsLogicUser) httpServletRequest.getSession().getAttribute("user");
+        }
+        if(user == null)
+        {
+            return Response.status(Status.UNAUTHORIZED).entity("You are not authorized to perform this operation").build();
+        }
+
+        // If it's an archive user, do NOT delete it!
+        if(user.getOrganizationId().getArchiveUser() != null && user.getOrganizationId().getArchiveUser().getUserId().equals(user.getUserId()))
+        {
+            return Response.status(Status.BAD_REQUEST).entity("User is an archive user for organization " + user.getOrganizationId().getOrganizationName() + ". Can't delete it").build();
+        }
+        try {
+            if (keepData != null && keepData) {
+                // Get default user for organization
+                VipsLogicUser archiveUser = user.getOrganizationId().getArchiveUser();
+                if (archiveUser == null) {
+                    return Response.status(Status.BAD_REQUEST).entity("Your organization " + user.getOrganizationId().getOrganizationName() + " has not defined a default user for archiving your data. Please contact your systems administrator to fix this.").build();
+                }
+                userBean.transferUserResources(user, archiveUser);
+            } else {
+                userBean.deleteUserResources(user);
+            }
+            // Delete the user
+            userBean.deleteUser(user);
+            return Response.status(Status.NO_CONTENT).build();
+        }
+        catch(DeleteUserException ex)
+        {
+            return Response.serverError().entity(ex.getMessage()).build();
+        }
+
+    }
     
     /**
      * Get the client to use for calling VIPSCoreManager REST services programmatically