Merge branch 'two-dot-o-dev' into USERGRID-744
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java
index 1f8ee5e..e3c17f0 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java
@@ -16,20 +16,12 @@
 package org.apache.usergrid.corepersistence;
 
 
-import java.util.Arrays;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.UUID;
-import java.util.concurrent.atomic.AtomicBoolean;
 
-import org.apache.usergrid.corepersistence.index.IndexLocationStrategyFactory;
-import org.apache.usergrid.corepersistence.index.ReIndexRequestBuilder;
-import org.apache.usergrid.persistence.*;
-import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdge;
-import org.apache.usergrid.persistence.index.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeansException;
@@ -66,11 +58,14 @@
 import org.apache.usergrid.persistence.entities.Application;
 import org.apache.usergrid.persistence.exceptions.ApplicationAlreadyExistsException;
 import org.apache.usergrid.persistence.exceptions.DuplicateUniquePropertyExistsException;
+import org.apache.usergrid.persistence.exceptions.EntityNotFoundException;
 import org.apache.usergrid.persistence.graph.Edge;
 import org.apache.usergrid.persistence.graph.GraphManager;
 import org.apache.usergrid.persistence.graph.GraphManagerFactory;
 import org.apache.usergrid.persistence.graph.SearchByEdgeType;
 import org.apache.usergrid.persistence.graph.impl.SimpleSearchByEdgeType;
+import org.apache.usergrid.persistence.index.EntityIndex;
+import org.apache.usergrid.persistence.index.IndexRefreshCommand;
 import org.apache.usergrid.persistence.model.entity.Id;
 import org.apache.usergrid.persistence.model.entity.SimpleId;
 import org.apache.usergrid.persistence.model.util.UUIDGenerator;
@@ -364,39 +359,45 @@
         final ApplicationScope deleteApplicationScope = new ApplicationScopeImpl(deleteApplicationId);
 
         Entity oldAppEntity = managementEm.get(new SimpleEntityRef( deleteTypeName, applicationUUID));
-        Observable copyConnections = Observable.empty();
-        if (oldAppEntity != null) {
-            // ensure that there is not already a deleted app with the same name
 
-            final EntityRef alias = managementEm.getAlias( createCollectionName, oldAppEntity.getName());
-            if (alias != null) {
-                throw new ConflictException("Cannot delete app with same name as already deleted app");
-            }
-            // make a copy of the app to delete application_info entity
-            // and put it in a deleted_application_info collection
-
-            final Entity newAppEntity = managementEm.create(new SimpleId(applicationUUID, createTypeName ), oldAppEntity.getProperties());
-
-            // copy its connections too
-
-            final Set<String> connectionTypes = managementEm.getConnectionTypes(oldAppEntity);
-            copyConnections = Observable.from(connectionTypes).doOnNext(connType -> {
-                try {
-                    final Results connResults =
-                        managementEm.getTargetEntities(oldAppEntity, connType, null, Query.Level.ALL_PROPERTIES);
-                    connResults.getEntities().forEach(entity -> {
-                        try {
-                            managementEm.createConnection(newAppEntity, connType, entity);
-                        } catch (Exception e) {
-                            throw new RuntimeException(e);
-                        }
-                    });
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
-                }
-            });
-
+        if(oldAppEntity == null){
+            throw new EntityNotFoundException( String.format("Could not find application with UUID '%s'", applicationUUID) );
         }
+
+
+        // ensure that there is not already a deleted app with the same name
+
+        final EntityRef alias = managementEm.getAlias( createCollectionName, oldAppEntity.getName() );
+        if ( alias != null ) {
+            throw new ConflictException( "Cannot delete app with same name as already deleted app" );
+        }
+        // make a copy of the app to delete application_info entity
+        // and put it in a deleted_application_info collection
+
+        final Entity newAppEntity =
+            managementEm.create( new SimpleId( applicationUUID, createTypeName ), oldAppEntity.getProperties() );
+
+        // copy its connections too
+
+        final Set<String> connectionTypes = managementEm.getConnectionTypes( oldAppEntity );
+        Observable copyConnections = Observable.from( connectionTypes ).doOnNext( connType -> {
+            try {
+                final Results connResults =
+                    managementEm.getTargetEntities( oldAppEntity, connType, null, Query.Level.ALL_PROPERTIES );
+                connResults.getEntities().forEach( entity -> {
+                    try {
+                        managementEm.createConnection( newAppEntity, connType, entity );
+                    }
+                    catch ( Exception e ) {
+                        throw new RuntimeException( e );
+                    }
+                } );
+            }
+            catch ( Exception e ) {
+                throw new RuntimeException( e );
+            }
+        } );
+
         final Id managementAppId = CpNamingUtils.getManagementApplicationId();
         final EntityIndex aei = getManagementIndex();
         final GraphManager managementGraphManager = managerCache.getGraphManager(managementAppScope);
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
index a35532d..bf350bc 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/applications/ApplicationResource.java
@@ -20,23 +20,36 @@
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.util.Map;
-import java.util.Properties;
 import java.util.UUID;
 
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.PathSegment;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
-import org.apache.commons.lang.StringUtils;
-import org.apache.usergrid.rest.ApiResponse;
-import org.apache.usergrid.rest.security.annotations.RequireOrganizationAccess;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
+
+import org.apache.amber.oauth2.common.error.OAuthError;
+import org.apache.amber.oauth2.common.exception.OAuthProblemException;
+import org.apache.amber.oauth2.common.message.OAuthResponse;
+import org.apache.amber.oauth2.common.message.types.GrantType;
+import org.apache.shiro.authz.UnauthorizedException;
+import org.apache.shiro.codec.Base64;
+
 import org.apache.usergrid.management.ApplicationInfo;
 import org.apache.usergrid.management.exceptions.DisabledAdminUserException;
 import org.apache.usergrid.management.exceptions.DisabledAppUserException;
@@ -44,10 +57,10 @@
 import org.apache.usergrid.management.exceptions.UnactivatedAppUserException;
 import org.apache.usergrid.mq.QueueManager;
 import org.apache.usergrid.persistence.EntityManager;
-import org.apache.usergrid.persistence.index.query.Identifier;
 import org.apache.usergrid.persistence.SimpleEntityRef;
 import org.apache.usergrid.persistence.entities.Application;
 import org.apache.usergrid.persistence.entities.User;
+import org.apache.usergrid.persistence.index.query.Identifier;
 import org.apache.usergrid.rest.AbstractContextResource;
 import org.apache.usergrid.rest.applications.assets.AssetsResource;
 import org.apache.usergrid.rest.applications.events.EventsResource;
@@ -56,16 +69,10 @@
 import org.apache.usergrid.rest.exceptions.AuthErrorInfo;
 import org.apache.usergrid.rest.exceptions.RedirectionException;
 import org.apache.usergrid.rest.security.annotations.RequireApplicationAccess;
+import org.apache.usergrid.rest.security.annotations.RequireOrganizationAccess;
 import org.apache.usergrid.security.oauth.AccessInfo;
 import org.apache.usergrid.security.oauth.ClientCredentialsInfo;
 
-import org.apache.amber.oauth2.common.error.OAuthError;
-import org.apache.amber.oauth2.common.exception.OAuthProblemException;
-import org.apache.amber.oauth2.common.message.OAuthResponse;
-import org.apache.amber.oauth2.common.message.types.GrantType;
-import org.apache.shiro.authz.UnauthorizedException;
-import org.apache.shiro.codec.Base64;
-
 import com.sun.jersey.api.json.JSONWithPadding;
 import com.sun.jersey.api.view.Viewable;
 
@@ -488,66 +495,12 @@
     }
 
 
-    /**
-     * Put on application URL will restore application if it was deleted.
-     */
-    @PUT
-    @RequireOrganizationAccess
     @Override
-    public JSONWithPadding executePut(  @Context UriInfo ui, String body,
-        @QueryParam("callback") @DefaultValue("callback") String callback ) throws Exception {
-
-        if ( applicationId == null ) {
-            throw new IllegalArgumentException("Application ID not specified in request");
-        }
-
-        management.restoreApplication( applicationId );
-
-        ApiResponse response = createApiResponse();
-        response.setAction( "restore" );
-        response.setApplication( services.getApplication() );
-        response.setParams( ui.getQueryParameters() );
-
-        return new JSONWithPadding( response, callback );
-    }
-
-
     @DELETE
     @RequireOrganizationAccess
-    @Override
-    public JSONWithPadding executeDelete(  @Context UriInfo ui,
-        @QueryParam("callback") @DefaultValue("callback") String callback,
-        @QueryParam("app_delete_confirm") String confirmDelete) throws Exception {
-
-        if (!"confirm_delete_of_application_and_data".equals( confirmDelete ) ) {
-            throw new IllegalArgumentException(
-                "Cannot delete application without app_delete_confirm parameter");
-        }
-
-        Properties props = management.getProperties();
-
-        // for now, only works in test mode
-        String testProp = ( String ) props.get( "usergrid.test" );
-        if ( testProp == null || !Boolean.parseBoolean( testProp ) ) {
-            throw new UnsupportedOperationException();
-        }
-
-        if ( applicationId == null ) {
-            throw new IllegalArgumentException("Application ID not specified in request");
-        }
-
-        management.deleteApplication( applicationId );
-
-        LOG.debug( "ApplicationResource.delete() deleted appId = {}", applicationId);
-
-        ApiResponse response = createApiResponse();
-        response.setAction( "delete" );
-        response.setApplication(services.getApplication());
-        response.setParams(ui.getQueryParameters());
-
-        LOG.debug( "ApplicationResource.delete() sending response ");
-
-        return new JSONWithPadding( response, callback );
+    public JSONWithPadding executeDelete( @Context final UriInfo ui, @DefaultValue( "callback" ) final String callback,
+                                          final String confirmAppDelete ) throws Exception {
+        throw new UnsupportedOperationException( "Delete must be done from the management endpoint" );
     }
 
 
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/OrganizationApplicationNotFoundExceptionMapper.java b/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/OrganizationApplicationNotFoundExceptionMapper.java
index 0d25021..8f4111a 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/OrganizationApplicationNotFoundExceptionMapper.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/exceptions/OrganizationApplicationNotFoundExceptionMapper.java
@@ -27,6 +27,6 @@
         extends AbstractExceptionMapper<OrganizationApplicationNotFoundException> {
     @Override
     public Response toResponse( OrganizationApplicationNotFoundException e ) {
-        return super.toResponse( Response.Status.BAD_REQUEST, e );
+        return super.toResponse( Response.Status.NOT_FOUND, e );
     }
 }
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
index fe11cb6..bcec775 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationResource.java
@@ -38,6 +38,9 @@
 import org.apache.usergrid.security.providers.SignInAsProvider;
 import org.apache.usergrid.security.providers.SignInProviderFactory;
 import org.apache.usergrid.services.ServiceManager;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
@@ -49,6 +52,7 @@
 import javax.ws.rs.core.UriInfo;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Properties;
 import java.util.UUID;
 
 import static javax.servlet.http.HttpServletResponse.SC_ACCEPTED;
@@ -73,6 +77,8 @@
 })
 public class ApplicationResource extends AbstractContextResource {
 
+    private static final Logger logger = LoggerFactory.getLogger(ApplicationResource.class);
+
     @Autowired
     protected ExportService exportService;
 
@@ -103,20 +109,6 @@
     }
 
 
-    @RequireOrganizationAccess
-    @DELETE
-    public JSONWithPadding deleteApplicationFromOrganizationByApplicationId(
-            @Context UriInfo ui, @QueryParam("callback") @DefaultValue("callback") String callback )
-        throws Exception {
-
-        ApiResponse response = createApiResponse();
-        response.setAction( "delete application from organization" );
-
-        management.deleteOrganizationApplication( organization.getUuid(), applicationId );
-
-        return new JSONWithPadding( response, callback );
-    }
-
 
     @RequireOrganizationAccess
     @GET
@@ -393,4 +385,67 @@
 
         return Response.status( SC_OK ).entity( null ).build();
     }
+
+
+
+    /**
+     * Put on application URL will restore application if it was deleted.
+     */
+    @PUT
+    @RequireOrganizationAccess
+    public JSONWithPadding executePut(  @Context UriInfo ui, String body,
+        @QueryParam("callback") @DefaultValue("callback") String callback ) throws Exception {
+
+        if ( applicationId == null ) {
+            throw new IllegalArgumentException("Application ID not specified in request");
+        }
+
+        management.restoreApplication( applicationId );
+
+        ApiResponse response = createApiResponse();
+        response.setAction( "restore" );
+        response.setApplication( emf.getEntityManager( applicationId ).getApplication() );
+        response.setParams( ui.getQueryParameters() );
+
+        return new JSONWithPadding( response, callback );
+    }
+
+
+    @DELETE
+    @RequireOrganizationAccess
+    public JSONWithPadding executeDelete(  @Context UriInfo ui,
+        @QueryParam("callback") @DefaultValue("callback") String callback,
+        @QueryParam("app_delete_confirm") String confirmDelete) throws Exception {
+
+        if (!"confirm_delete_of_application_and_data".equals( confirmDelete ) ) {
+            throw new IllegalArgumentException(
+                "Cannot delete application without app_delete_confirm parameter");
+        }
+
+        Properties props = management.getProperties();
+
+        // for now, only works in test mode
+        String testProp = ( String ) props.get( "usergrid.test" );
+        if ( testProp == null || !Boolean.parseBoolean( testProp ) ) {
+            throw new UnsupportedOperationException();
+        }
+
+        if ( applicationId == null ) {
+            throw new IllegalArgumentException("Application ID not specified in request");
+        }
+
+        management.deleteApplication( applicationId );
+
+        logger.debug( "ApplicationResource.delete() deleted appId = {}", applicationId);
+
+        ApiResponse response = createApiResponse();
+        response.setAction( "delete" );
+        response.setApplication(emf.getEntityManager( applicationId ).getApplication());
+        response.setParams(ui.getQueryParameters());
+
+        logger.debug( "ApplicationResource.delete() sending response ");
+
+        return new JSONWithPadding( response, callback );
+    }
+
 }
diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsResource.java
index f8e2268..28eff4e 100644
--- a/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsResource.java
+++ b/stack/rest/src/main/java/org/apache/usergrid/rest/management/organizations/applications/ApplicationsResource.java
@@ -135,19 +135,6 @@
 
 
     @RequireOrganizationAccess
-    @Path(RootResource.APPLICATION_ID_PATH)
-    @PUT
-    public ApplicationResource restoreApplicationFromOrganizationByApplicationId(
-        @Context UriInfo ui,
-        @PathParam( "applicationId" )
-        String applicationIdStr ) throws Exception {
-
-        return getSubResource( ApplicationResource.class )
-            .init( organization, UUID.fromString( applicationIdStr ) );
-    }
-
-
-    @RequireOrganizationAccess
     @Path( "{applicationName}" )
     public ApplicationResource applicationFromOrganizationByApplicationName(
         @Context UriInfo ui, @PathParam( "applicationName" ) String applicationName ) throws Exception {
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationCreateIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationCreateIT.java
index 921027f..7ec562d 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationCreateIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationCreateIT.java
@@ -56,9 +56,9 @@
         applicationMap.put( "name", appName );
 
         this.management().token().setToken(orgAdminToken);
-        this.management().orgs().organization( orgName ).apps().post(applicationMap );
+        this.management().orgs().org( orgName ).apps().post(applicationMap );
 
-        Entity response = this.management().orgs().organization( orgName ).addToPath( "apps" ).addToPath( appName ).get();
+        Entity response = this.management().orgs().org( orgName ).addToPath( "apps" ).addToPath( appName ).get();
 
         assertNotNull( response );
     }
@@ -84,7 +84,7 @@
         // test that we get all applications back from the management end-point
 
         ManagementResponse orgAppResponse = clientSetup.getRestClient()
-            .management().orgs().organization( orgName ).apps().getOrganizationApplications();
+            .management().orgs().org( orgName ).apps().getOrganizationApplications();
 
         int count = 0;
         for ( String name : orgAppResponse.getData().keySet() ) {
@@ -100,7 +100,7 @@
         String orgName, String appName, Token orgAdminToken, List<Entity> entities) {
 
         ApiResponse appCreateResponse = clientSetup.getRestClient()
-            .management().orgs().organization( orgName ).app().post( new Application( appName ) );
+            .management().orgs().org( orgName ).app().post( new Application( appName ) );
         UUID appId = appCreateResponse.getEntities().get(0).getUuid();
 
         refreshIndex();
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationDeleteIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationDeleteIT.java
index a70fee1..d00ae74 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationDeleteIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationDeleteIT.java
@@ -18,39 +18,37 @@
 package org.apache.usergrid.rest.applications;
 
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.sun.jersey.api.client.UniformInterfaceException;
-import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
-import org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt.ManagementResponse;
-import org.apache.usergrid.rest.test.resource2point0.model.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.UUID;
+
+import javax.ws.rs.core.MediaType;
+
 import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import net.jcip.annotations.NotThreadSafe;
 
-import javax.ws.rs.core.MediaType;
-import java.util.*;
+import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
+import org.apache.usergrid.rest.test.resource2point0.endpoints.mgmt.ManagementResponse;
+import org.apache.usergrid.rest.test.resource2point0.model.ApiResponse;
+import org.apache.usergrid.rest.test.resource2point0.model.Application;
+import org.apache.usergrid.rest.test.resource2point0.model.Entity;
+import org.apache.usergrid.rest.test.resource2point0.model.Token;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.sun.jersey.api.client.UniformInterfaceException;
 
 import static org.junit.Assert.fail;
 
-@NotThreadSafe
+
 public class ApplicationDeleteIT extends AbstractRestIT {
 
     private static final Logger logger = LoggerFactory.getLogger(ApplicationDeleteIT.class);
 
     public static final int INDEXING_WAIT = 3000;
 
-    Token orgAdminToken;
-    String orgName;
-    @Before
-    public void setup(){
-        orgAdminToken = getAdminToken( clientSetup.getUsername(), clientSetup.getUsername());
-        orgName = clientSetup.getOrganization().getName();
-
-    }
 
     /**
      * Test most common use cases.
@@ -67,27 +65,32 @@
 
         // create app with a collection of "things"
 
+        String orgName = clientSetup.getOrganization().getName();
+        String appToDeleteName = clientSetup.getAppName() + "_appToDelete";
+        Token orgAdminToken = getAdminToken( clientSetup.getUsername(), clientSetup.getUsername());
+
         List<Entity> entities = new ArrayList<>();
 
-        String         appToDeleteName = clientSetup.getAppName() + UUID.randomUUID();
         UUID appToDeleteId = createAppWithCollection(orgName, appToDeleteName, orgAdminToken, entities);
 
         // delete the app
 
         try {
-            clientSetup.getRestClient()
-                .org(orgName).app(appToDeleteId.toString()).getResource()
+            clientSetup.getRestClient() .management().orgs()
+                .org(orgName).apps().app(appToDeleteId.toString()).getResource()
                 .queryParam("access_token", orgAdminToken.getAccessToken())
                 .delete();
 
             fail("Delete must fail without app_delete_confirm parameter");
 
-        } catch ( Exception e ) {
-            logger.error("Error", e);
+        } catch (  UniformInterfaceException expected  ) {
+            Assert.assertEquals("Error must be 400", 400, expected.getResponse().getStatus() );
+            JsonNode node = mapper.readTree( expected.getResponse().getEntity( String.class ));
+            Assert.assertEquals("Cannot delete application without app_delete_confirm parameter", node.get("error_description").textValue());
         }
 
-        clientSetup.getRestClient()
-            .org(orgName).app(appToDeleteId.toString() ).getResource()
+        clientSetup.getRestClient().management().orgs()
+            .org(orgName).apps().app(appToDeleteId.toString() ).getResource()
             .queryParam("access_token", orgAdminToken.getAccessToken() )
             .queryParam("app_delete_confirm", "confirm_delete_of_application_and_data")
             .delete();
@@ -95,8 +98,8 @@
         // test that we can no longer get the app
 
         try {
-            clientSetup.getRestClient()
-                .org(orgName).app(appToDeleteName).getResource()
+            clientSetup.getRestClient().management().orgs()
+                .org(orgName).apps().app(appToDeleteName).getResource()
                 .queryParam("access_token", orgAdminToken.getAccessToken())
                 .type(MediaType.APPLICATION_JSON)
                 .get(ApiResponse.class);
@@ -104,11 +107,26 @@
             fail("Must not be able to get deleted app");
 
         } catch ( UniformInterfaceException expected ) {
-            Assert.assertEquals("Error must be 400", 400, expected.getResponse().getStatus() );
+            Assert.assertEquals("Error must be 404", 404, expected.getResponse().getStatus() );
             JsonNode node = mapper.readTree( expected.getResponse().getEntity( String.class ));
-            Assert.assertEquals("organization_application_not_found", node.get("error").textValue());
+            Assert.assertEquals("entity_not_found", node.get("error").textValue());
         }
 
+
+        try {
+            clientSetup.getRestClient().org( orgName ).app( appToDeleteName ).getResource()
+                       .queryParam( "access_token", orgAdminToken.getAccessToken() ).type( MediaType.APPLICATION_JSON )
+                       .get( ApiResponse.class );
+
+            fail( "Must not be able to get deleted app" );
+        }
+        catch ( UniformInterfaceException expected ) {
+            Assert.assertEquals( "Error must be 404", 404, expected.getResponse().getStatus() );
+            JsonNode node = mapper.readTree( expected.getResponse().getEntity( String.class ) );
+            Assert.assertEquals( "organization_application_not_found", node.get( "error" ).textValue() );
+        }
+
+
         // test that we can no longer get deleted app's collection
 
         try {
@@ -121,7 +139,7 @@
             fail("Must not be able to get deleted app's collection");
 
         } catch ( UniformInterfaceException expected ) {
-            Assert.assertEquals("Error must be 400", 400, expected.getResponse().getStatus() );
+            Assert.assertEquals("Error must be 400", 404, expected.getResponse().getStatus() );
             JsonNode node = mapper.readTree( expected.getResponse().getEntity( String.class ));
             Assert.assertEquals("organization_application_not_found", node.get("error").textValue());
         }
@@ -140,7 +158,7 @@
 
         } catch ( UniformInterfaceException expected ) {
             // TODO: why not a 404?
-            Assert.assertEquals("Error must be 400", 400, expected.getResponse().getStatus() );
+            Assert.assertEquals("Error must be 400", 404, expected.getResponse().getStatus() );
             JsonNode node = mapper.readTree( expected.getResponse().getEntity( String.class ));
             Assert.assertEquals("organization_application_not_found", node.get("error").textValue());
         }
@@ -151,7 +169,7 @@
         refreshIndex();
 
         ManagementResponse orgAppResponse = clientSetup.getRestClient()
-            .management().orgs().organization( orgName ).apps().getOrganizationApplications();
+            .management().orgs().org( orgName ).apps().getOrganizationApplications();
 
         for ( String appName : orgAppResponse.getData().keySet() ) {
             if ( orgAppResponse.getData().get( appName ).equals( appToDeleteId.toString() )) {
@@ -162,21 +180,22 @@
         // test that we cannot delete the application a second time
 
         try {
-            clientSetup.getRestClient()
-                .org(orgName).app(appToDeleteId.toString()).getResource()
-                .queryParam("access_token", orgAdminToken.getAccessToken())
-                .delete();
+            clientSetup.getRestClient().management().orgs().org( orgName ).apps().app( appToDeleteId.toString() )
+                       .getResource().queryParam( "access_token", orgAdminToken.getAccessToken() )
+                       .queryParam( "app_delete_confirm", "confirm_delete_of_application_and_data" ).delete();
 
-        } catch ( UniformInterfaceException expected ) {
-            Assert.assertEquals("Error must be 404", 404, expected.getResponse().getStatus() );
-            JsonNode node = mapper.readTree( expected.getResponse().getEntity( String.class ));
-            Assert.assertEquals("not_found", node.get("error").textValue());
+            fail("Can't delete a non existent app twice");
+        }
+        catch ( UniformInterfaceException expected ) {
+            Assert.assertEquals( "Error must be 404", 404, expected.getResponse().getStatus() );
+            JsonNode node = mapper.readTree( expected.getResponse().getEntity( String.class ) );
+            Assert.assertEquals( "entity_not_found", node.get( "error" ).textValue() );
         }
 
         // test that we can create a new application with the same name
 
         ApiResponse appCreateAgainResponse = clientSetup.getRestClient()
-            .management().orgs().organization( orgName ).app().getResource()
+            .management().orgs().org( orgName ).app().getResource()
             .queryParam( "access_token", orgAdminToken.getAccessToken() )
             .type( MediaType.APPLICATION_JSON )
             .post( ApiResponse.class, new Application( appToDeleteName ) );
@@ -198,9 +217,13 @@
      */
     @Test
     public void testAppRestore() throws Exception {
-        String         appToDeleteName = clientSetup.getAppName() + UUID.randomUUID();
 
         // create app with a collection of "things"
+
+        String orgName = clientSetup.getOrganization().getName();
+        String appToDeleteName = clientSetup.getAppName() + "_appToDelete";
+        Token orgAdminToken = getAdminToken( clientSetup.getUsername(), clientSetup.getUsername());
+
         List<Entity> entities = new ArrayList<>();
 
         UUID appToDeleteId = createAppWithCollection(orgName, appToDeleteName, orgAdminToken, entities);
@@ -209,8 +232,8 @@
 
         logger.debug("\n\nDeleting app\n");
 
-        clientSetup.getRestClient()
-            .org(orgName).app( appToDeleteName ).getResource()
+        clientSetup.getRestClient().management().orgs()
+            .org(orgName).apps().app( appToDeleteName ).getResource()
             .queryParam("access_token", orgAdminToken.getAccessToken() )
             .queryParam("app_delete_confirm", "confirm_delete_of_application_and_data")
             .delete();
@@ -222,8 +245,8 @@
 
         logger.debug("\n\nRestoring app\n");
 
-        clientSetup.getRestClient()
-            .org(orgName).app( appToDeleteId.toString() ).getResource()
+        clientSetup.getRestClient().management().orgs()
+            .org(orgName).apps().app( appToDeleteId.toString() ).getResource()
             .queryParam("access_token", orgAdminToken.getAccessToken() )
             .put();
 
@@ -234,7 +257,7 @@
         logger.debug("\n\nGetting app list from management end-point\n");
 
         ManagementResponse orgAppResponse = clientSetup.getRestClient()
-            .management().orgs().organization( orgName ).apps().getOrganizationApplications();
+            .management().orgs().org( orgName ).apps().getOrganizationApplications();
 
         boolean found = false;
         for ( String appName : orgAppResponse.getData().keySet() ) {
@@ -274,21 +297,24 @@
      */
     @Test
     public void testAppRestoreConflict() throws Exception {
-        String         appToDeleteName = clientSetup.getAppName() + UUID.randomUUID();
 
         // create app with a collection of "things"
+
+        String orgName = clientSetup.getOrganization().getName();
+        String appToDeleteName = clientSetup.getAppName() + "_appToDelete";
+        Token orgAdminToken = getAdminToken( clientSetup.getUsername(), clientSetup.getUsername());
+
         List<Entity> entities = new ArrayList<>();
 
         UUID appToDeleteId = createAppWithCollection(orgName, appToDeleteName, orgAdminToken, entities);
 
         // delete the app
 
-        clientSetup.getRestClient()
-            .org( orgName ).app(appToDeleteId.toString() ).getResource()
+        clientSetup.getRestClient().management().orgs()
+            .org( orgName ).apps().app(appToDeleteId.toString() ).getResource()
             .queryParam( "access_token", orgAdminToken.getAccessToken() )
             .queryParam("app_delete_confirm", "confirm_delete_of_application_and_data")
             .delete();
-        refreshIndex();
 
         // create new app with same name
 
@@ -298,8 +324,8 @@
 
         try {
 
-            clientSetup.getRestClient()
-                .org(orgName).app(appToDeleteId.toString()).getResource()
+            clientSetup.getRestClient() .management().orgs()
+                .org(orgName).apps().app(appToDeleteId.toString()).getResource()
                 .queryParam("access_token", orgAdminToken.getAccessToken())
                 .put();
 
@@ -317,11 +343,11 @@
      */
     @Test
     public void testAppDeleteConflict() throws Exception {
-        String         appToDeleteName = clientSetup.getAppName() + UUID.randomUUID();
 
         // create app with a collection of "things"
 
         String orgName = clientSetup.getOrganization().getName();
+        String appToDeleteName = clientSetup.getAppName() + "_appToDelete";
         Token orgAdminToken = getAdminToken( clientSetup.getUsername(), clientSetup.getUsername());
 
         List<Entity> entities = new ArrayList<>();
@@ -330,12 +356,11 @@
 
         // delete the app
 
-        clientSetup.getRestClient()
-            .org( orgName ).app(appToDeleteId.toString() ).getResource()
+        clientSetup.getRestClient().management().orgs().org( orgName ).apps().app( appToDeleteId.toString() ).getResource()
             .queryParam( "access_token", orgAdminToken.getAccessToken() )
-            .queryParam("app_delete_confirm", "confirm_delete_of_application_and_data")
+            .queryParam( "app_delete_confirm", "confirm_delete_of_application_and_data" )
             .delete();
-        refreshIndex();
+
         // create new app with same name
 
         UUID newAppId = createAppWithCollection(orgName, appToDeleteName, orgAdminToken, entities);
@@ -344,8 +369,7 @@
 
         try {
 
-            clientSetup.getRestClient()
-                .org(orgName).app( newAppId.toString() ).getResource()
+            clientSetup.getRestClient().management().orgs().org( orgName ).apps().app( newAppId.toString() ).getResource()
                 .queryParam("access_token", orgAdminToken.getAccessToken())
                 .queryParam("app_delete_confirm", "confirm_delete_of_application_and_data")
                 .delete();
@@ -362,7 +386,7 @@
         String orgName, String appName, Token orgAdminToken, List<Entity> entities) {
 
         ApiResponse appCreateResponse = clientSetup.getRestClient()
-            .management().orgs().organization( orgName ).app().getResource()
+            .management().orgs().org( orgName ).app().getResource()
             .queryParam( "access_token", orgAdminToken.getAccessToken() )
             .type( MediaType.APPLICATION_JSON )
             .post( ApiResponse.class, new Application( appName ) );
@@ -386,7 +410,6 @@
 
             entities.add( createResponse.getEntities().get(0) );
         }
-        refreshIndex();
         return appId;
     }
 }
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
index 4ce3396..d4a3e06 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/applications/ApplicationResourceIT.java
@@ -130,7 +130,7 @@
 
         //Create the organization resource
         OrganizationResource orgResource = clientSetup.getRestClient()
-            .management().orgs().organization(clientSetup.getOrganizationName());
+            .management().orgs().org( clientSetup.getOrganizationName() );
 
         //retrieve the credentials
         Credentials orgCredentials = new Credentials( orgResource.credentials().get(ApiResponse.class));
@@ -442,13 +442,13 @@
         assertNotNull(entity);
         refreshIndex();
         //Retrieve an authentication token for the user
-        Token tokenResponse = this.app().getResource(false).path(String.format("/%s/%s/token", orgName, appName))
+        Token tokenResponse = this.app().getResource(false).path("token")
             .queryParam("grant_type", "password")
             .queryParam("username", username)
             .queryParam("password", "password")
-            .accept(MediaType.APPLICATION_JSON)
-            .type(MediaType.APPLICATION_JSON_TYPE)
-            .get(Token.class);
+            .accept( MediaType.APPLICATION_JSON )
+            .type( MediaType.APPLICATION_JSON_TYPE )
+            .get( Token.class );
 
         String token = tokenResponse.getAccessToken();
         assertNotNull(token);
@@ -756,7 +756,7 @@
      */
     public Credentials getOrgCredentials() throws IOException {
         String orgName = clientSetup.getOrganizationName().toLowerCase();
-        return new Credentials( clientSetup.getRestClient().management().orgs().organization(orgName).credentials().get(ApiResponse.class,null,true) );
+        return new Credentials( clientSetup.getRestClient().management().orgs().org( orgName ).credentials().get(ApiResponse.class,null,true) );
 
     }
 }
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/AdminUsersIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/AdminUsersIT.java
index 9306f2b..1277ae2 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/AdminUsersIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/AdminUsersIT.java
@@ -495,7 +495,7 @@
 
         orgPropertiesPayload.put("properties", props);
 
-        management().orgs().organization( clientSetup.getOrganizationName() ).put( orgPropertiesPayload );
+        management().orgs().org( clientSetup.getOrganizationName() ).put( orgPropertiesPayload );
 
         //Creates a payload with the same password to verify we cannot change the password to itself.
          Map<String, Object> payload = new HashMap<>(  );
@@ -615,12 +615,12 @@
 //        management().token().setToken( organizationToken );
 
         //Create admin user
-        management().orgs().organization( clientSetup.getOrganizationName() ).users().post(ApiResponse.class ,adminUserPayload );
+        management().orgs().org( clientSetup.getOrganizationName() ).users().post(ApiResponse.class ,adminUserPayload );
 
         refreshIndex();
 
         //Retrieves the admin users
-        ApiResponse adminUsers = management().orgs().organization( clientSetup.getOrganizationName() ).users().get(ApiResponse.class);
+        ApiResponse adminUsers = management().orgs().org( clientSetup.getOrganizationName() ).users().get(ApiResponse.class);
 
         assertEquals("There need to be 2 admin users",2,( ( ArrayList ) adminUsers.getData() ).size());
 
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ExportResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ExportResourceIT.java
index 8ed6777..0874fc7 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ExportResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ExportResourceIT.java
@@ -53,7 +53,7 @@
     public void exportApplicationUUIDRetTest() throws Exception {
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() ).addToPath( "export" );
         }
         catch ( UniformInterfaceException uie ) {
@@ -72,7 +72,7 @@
         try {
 
 
-            exportEntity = management().orgs().organization( clientSetup.getOrganizationName() )
+            exportEntity = management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid()).addToPath( "collection" )
                         .addToPath( "users" ).addToPath( "export" ).post(ApiResponse.class,payloadBuilder() );
         }
@@ -97,7 +97,7 @@
 
 
         try {
-            exportEntity = management().orgs().organization( clientSetup.getOrganizationName() )
+            exportEntity = management().orgs().org( clientSetup.getOrganizationName() )
                                        .addToPath( "export" ).post( ApiResponse.class, payloadBuilder() );
         }
         catch ( UniformInterfaceException uie ) {
@@ -111,7 +111,7 @@
         exportEntity = null;
         try {
 
-            exportEntity = management().orgs().organization( clientSetup.getOrganizationName() )
+            exportEntity = management().orgs().org( clientSetup.getOrganizationName() )
                                        .addToPath( "export" ).addToPath( uuid ).get( ApiResponse.class );
         }
         catch ( UniformInterfaceException uie ) {
@@ -139,7 +139,7 @@
 
 
         try {
-            exportEntity = management().orgs().organization( clientSetup.getOrganizationName() )
+            exportEntity = management().orgs().org( clientSetup.getOrganizationName() )
                                        .app().addToPath( clientSetup.getAppUuid() )
                                        .addToPath( "export" ).post( ApiResponse.class, payloadBuilder() );
         }
@@ -155,7 +155,7 @@
         refreshIndex();
         try {
 
-            exportEntity = management().orgs().organization( clientSetup.getOrganizationName() )
+            exportEntity = management().orgs().org( clientSetup.getOrganizationName() )
                                        .addToPath( "export" ).addToPath( uuid ).get( ApiResponse.class );
         }
         catch ( UniformInterfaceException uie ) {
@@ -174,7 +174,7 @@
 
         ApiResponse exportEntity = null;
 
-        exportEntity = management().orgs().organization( clientSetup.getOrganizationName() )
+        exportEntity = management().orgs().org( clientSetup.getOrganizationName() )
                                    .app().addToPath( clientSetup.getAppUuid()).addToPath( "collection" )
                                    .addToPath( "users" ).addToPath( "export" )
                                    .post( ApiResponse.class, payloadBuilder() );
@@ -185,7 +185,7 @@
 
         exportEntity = null;
         try {
-            exportEntity = management().orgs().organization( clientSetup.getOrganizationName() )
+            exportEntity = management().orgs().org( clientSetup.getOrganizationName() )
                                        .addToPath( "export" ).addToPath( uuid ).get( ApiResponse.class );
         }
         catch ( UniformInterfaceException uie ) {
@@ -205,7 +205,7 @@
     public void exportGetWrongUUID() throws Exception {
         UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                                        .addToPath( "export" ).addToPath( fake.toString() ).get( ApiResponse.class );
             fail( "Should not have been able to get fake uuid" );
         }
@@ -221,7 +221,7 @@
     @Test
     public void exportPostApplicationNullPointerProperties() throws Exception {
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                                        .app().addToPath( clientSetup.getAppUuid() )
                                        .addToPath( "export" ).post( ApiResponse.class,
                 new HashMap<String, Object>() );
@@ -237,7 +237,7 @@
     @Test
     public void exportPostOrganizationNullPointerProperties() throws Exception {
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .addToPath( "export" ).post( ApiResponse.class, new HashMap<String, Object>()  );
             fail( "Should not have passed, The payload is empty." );
         }
@@ -251,7 +251,7 @@
     @Test
     public void exportPostCollectionNullPointer() throws Exception {
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "collection" ).addToPath( "users" )
                         .addToPath( "export" ).post( ApiResponse.class, new HashMap<String, Object>()  );
@@ -269,7 +269,7 @@
         UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "collection" ).addToPath( "users" )
                         .addToPath( "export" ).addToPath( fake.toString() ).get(ApiResponse.class ,false);
@@ -286,7 +286,7 @@
         UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "export" ).addToPath( fake.toString() ).get(ApiResponse.class ,false);
             fail( "Should not have passed as we didn't have an access token." );
@@ -302,7 +302,7 @@
         UUID fake = UUID.fromString( "AAAAAAAA-FFFF-FFFF-FFFF-AAAAAAAAAAAA" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .addToPath( "export" ).addToPath( fake.toString() ).get(ApiResponse.class ,false);
             fail( "Should not have passed as we didn't have an access token." );
         }
@@ -320,7 +320,7 @@
         properties.remove( "storage_info" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
             fail( "Should not have passed as we were missing an important part of the payload" );
 
@@ -340,7 +340,7 @@
         properties.remove( "storage_info" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "export" ).post( ApiResponse.class,
                 payload );
@@ -361,7 +361,7 @@
         properties.remove( "storage_info" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "collection" ).addToPath( "users" )
                         .addToPath( "export" ).post( ApiResponse.class,
@@ -383,7 +383,7 @@
         properties.remove( "storage_provider" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
             fail( "Should not have passed as we were missing an important part of the payload" );
 
@@ -403,7 +403,7 @@
         properties.remove( "storage_provider" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "export" ).post( ApiResponse.class,
                 payload );
@@ -424,7 +424,7 @@
         properties.remove( "storage_provider" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "collection" ).addToPath( "users" )
                         .addToPath( "export" ).post( ApiResponse.class,
@@ -448,7 +448,7 @@
         storage_info.remove( "s3_key" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
             fail( "Should not have passed as we were missing an important part of the payload" );
 
@@ -464,7 +464,7 @@
         storage_info.remove( "s3_access_id");
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
             fail( "Should not have passed as we were missing an important part of the payload" );
 
@@ -480,7 +480,7 @@
         storage_info.remove( "bucket_location" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
             fail( "Should not have passed as we were missing an important part of the payload" );
 
@@ -500,7 +500,7 @@
         storage_info.remove( "s3_key" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
             fail( "Should not have passed as we were missing an important part of the payload" );
@@ -517,7 +517,7 @@
         storage_info.remove( "s3_access_id" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
             fail( "Should not have passed as we were missing an important part of the payload" );
@@ -534,7 +534,7 @@
         storage_info.remove( "bucket_location" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
             fail( "Should not have passed as we were missing an important part of the payload" );
@@ -555,7 +555,7 @@
         storage_info.remove( "s3_key" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "collection" ).addToPath( "users" )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
@@ -573,7 +573,7 @@
         storage_info.remove( "s3_access_id" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "collection" ).addToPath( "users" )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
@@ -591,7 +591,7 @@
         storage_info.remove( "bucket_location" );
 
         try {
-            management().orgs().organization( clientSetup.getOrganizationName() )
+            management().orgs().org( clientSetup.getOrganizationName() )
                         .app().addToPath( clientSetup.getAppUuid() )
                         .addToPath( "collection" ).addToPath( "users" )
                         .addToPath( "export" ).post( ApiResponse.class, payload );
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ImportResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ImportResourceIT.java
index e33d488..34371b6 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ImportResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ImportResourceIT.java
@@ -138,7 +138,7 @@
         ///management/orgs/orgname/apps/appname/import
         Entity entity = this.management()
             .orgs()
-            .organization(org)
+            .org( org )
             .app()
             .addToPath(app)
             .addToPath("imports")
@@ -148,7 +148,7 @@
 
         entity = this.management()
             .orgs()
-            .organization(org)
+            .org( org )
             .app()
             .addToPath(app)
             .addToPath("imports")
@@ -175,7 +175,7 @@
         Entity payload = payloadBuilder();
 
         // /management/orgs/orgname/apps/appname/import
-        Entity entity = this.management().orgs().organization(org).app()
+        Entity entity = this.management().orgs().org( org ).app()
             .addToPath(app)
             .addToPath("imports")
             .post(Entity.class,payload);
@@ -183,7 +183,7 @@
         assertNotNull(entity);
 
         // test that you can access the organization using the currently set token.
-        this.management().orgs().organization(org).app().addToPath(app)
+        this.management().orgs().org( org ).app().addToPath(app)
             .addToPath("imports").addToPath(entity.getUuid().toString()).get();
 
         //create a new org/app
@@ -208,7 +208,7 @@
 
         //try to read with the new token, which should fail as unauthorized
         try {
-            this.management().orgs().organization(org).app().addToPath(app)
+            this.management().orgs().org( org ).app().addToPath(app)
                 .addToPath("imports").addToPath(entity.getUuid().toString()).get();
             fail("Should not be able to read import job with unauthorized token");
         } catch (UniformInterfaceException ex) {
@@ -228,7 +228,7 @@
         Entity payload = new Entity();
 
         try {
-            this.management().orgs().organization(org).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
+            this.management().orgs().org( org ).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
         } catch (UniformInterfaceException uie) {
             responseStatus = uie.getResponse().getClientResponseStatus();
         }
@@ -248,7 +248,7 @@
         properties.remove("storage_info");
 
         try {
-            this.management().orgs().organization(org).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
+            this.management().orgs().org( org ).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
         } catch (UniformInterfaceException uie) {
             responseStatus = uie.getResponse().getClientResponseStatus();
         }
@@ -270,7 +270,7 @@
 
 
         try {
-            this.management().orgs().organization(org).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
+            this.management().orgs().org( org ).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
         } catch (UniformInterfaceException uie) {
             responseStatus = uie.getResponse().getClientResponseStatus();
         }
@@ -293,7 +293,7 @@
         storage_info.remove("s3_key");
 
         try {
-            this.management().orgs().organization(org).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
+            this.management().orgs().org( org ).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
         } catch (UniformInterfaceException uie) {
             responseStatus = uie.getResponse().getClientResponseStatus();
         }
@@ -306,7 +306,7 @@
         storage_info.remove("s3_access_id");
 
         try {
-            this.management().orgs().organization(org).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
+            this.management().orgs().org( org ).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
         } catch (UniformInterfaceException uie) {
             responseStatus = uie.getResponse().getClientResponseStatus();
         }
@@ -319,7 +319,7 @@
         storage_info.remove("bucket_location");
 
         try {
-            this.management().orgs().organization(org).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
+            this.management().orgs().org( org ).app().addToPath(app).addToPath("imports").post(Entity.class,payload);
         } catch (UniformInterfaceException uie) {
             responseStatus = uie.getResponse().getClientResponseStatus();
         }
@@ -438,7 +438,7 @@
 
         Entity importEntity = importCollection();
 
-        Entity importGet = this.management().orgs().organization( org ).app()
+        Entity importGet = this.management().orgs().org( org ).app()
             .addToPath(app)
             .addToPath( "imports" )
             .addToPath(importEntity.getUuid().toString())
@@ -446,7 +446,7 @@
 
         refreshIndex();
 
-        Entity importGetIncludes = this.management().orgs().organization(org).app()
+        Entity importGetIncludes = this.management().orgs().org( org ).app()
             .addToPath(app)
             .addToPath("imports")
             .addToPath(importEntity.getUuid().toString())
@@ -512,7 +512,7 @@
 
         Entity importEntity = importCollection();
 
-        Entity importGet = this.management().orgs().organization(org).app()
+        Entity importGet = this.management().orgs().org( org ).app()
             .addToPath(app)
             .addToPath("imports")
             .addToPath(importEntity.getUuid().toString()).get();
@@ -558,7 +558,7 @@
 
         Entity importEntity = importCollection();
 
-        Entity importGet = this.management().orgs().organization(org).app()
+        Entity importGet = this.management().orgs().org( org ).app()
             .addToPath(app)
             .addToPath("imports" )
             .addToPath(importEntity.getUuid().toString() )
@@ -610,13 +610,13 @@
 
         // we should now have 100 Entities in the default app
 
-        Entity importGet = this.management().orgs().organization( org ).app()
+        Entity importGet = this.management().orgs().org( org ).app()
             .addToPath( app )
             .addToPath("imports")
             .addToPath( importEntity.getUuid().toString() )
             .get();
 
-        Entity importGetIncludes = this.management().orgs().organization(org).app()
+        Entity importGetIncludes = this.management().orgs().org( org ).app()
             .addToPath(app)
             .addToPath("imports" )
             .addToPath(importEntity.getUuid().toString() )
@@ -654,7 +654,7 @@
             }});
         }});
 
-        Entity importEntity = this.management().orgs().organization(org).app()
+        Entity importEntity = this.management().orgs().org( org ).app()
             .addToPath(app)
             .addToPath("imports")
             .post(Entity.class,importPayload);
@@ -664,7 +664,7 @@
 
         while (retries++ < maxRetries) {
 
-            Entity importGet = this.management().orgs().organization(org).app()
+            Entity importGet = this.management().orgs().org( org ).app()
                 .addToPath( app )
                 .addToPath( "imports")
                 .addToPath( importEntity.getUuid().toString() )
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
index 25736f7..c41735c 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/ManagementResourceIT.java
@@ -70,7 +70,7 @@
     public void setSelfAdminPasswordAsAdwmin() {
         UUID uuid =  UUIDUtils.newTimeUUID();
         management.token().setToken(clientSetup.getSuperuserToken());
-        management.orgs().organization(clientSetup.getOrganizationName()).users().post(ApiResponse.class, new User("test" + uuid, "test" + uuid, "test" + uuid + "@email.com", "test"));
+        management.orgs().org( clientSetup.getOrganizationName() ).users().post(ApiResponse.class, new User("test" + uuid, "test" + uuid, "test" + uuid + "@email.com", "test"));
         Map<String, Object> data = new HashMap<>();
         data.put( "newpassword", "foo" );
         data.put( "oldpassword", "test" );
@@ -110,7 +110,7 @@
         String returnVal = "";
 
         try {
-            returnVal = this.management().orgs().organization(orgName).get(String.class);
+            returnVal = this.management().orgs().org( orgName ).get(String.class);
         }
         catch ( UniformInterfaceException uie ) {
             status = uie.getResponse().getClientResponseStatus();
@@ -122,7 +122,7 @@
         // this admin should have access to test org
         status = null;
         try {
-            this.management().orgs().organization(this.clientSetup.getOrganizationName()).get( String.class );
+            this.management().orgs().org( this.clientSetup.getOrganizationName() ).get( String.class );
         }
         catch ( UniformInterfaceException uie ) {
             status = uie.getResponse().getClientResponseStatus();
@@ -134,7 +134,7 @@
 
         status = null;
         try {
-            this.management().orgs().organization(this.clientSetup.getOrganizationName()).get( String.class );
+            this.management().orgs().org( this.clientSetup.getOrganizationName() ).get( String.class );
         }
         catch ( UniformInterfaceException uie ) {
             status = uie.getResponse().getClientResponseStatus();
@@ -246,7 +246,7 @@
 
 
         // POST /applications
-        ApiResponse apiResponse = management().orgs().organization(clientSetup.getOrganizationName()).app().post(new Application("mgmt-org-app"));
+        ApiResponse apiResponse = management().orgs().org( clientSetup.getOrganizationName() ).app().post(new Application("mgmt-org-app"));
 
 
         refreshIndex();
@@ -268,7 +268,7 @@
         // GET /applications/mgmt-org-app
 
 
-        Entity app = management().orgs().organization(clientSetup.getOrganizationName()).app().addToPath("mgmt-org-app").get();
+        Entity app = management().orgs().org( clientSetup.getOrganizationName() ).app().addToPath("mgmt-org-app").get();
 
 
         assertEquals(this.clientSetup.getOrganizationName().toLowerCase(), app.get("organizationName").toString());
@@ -327,7 +327,7 @@
         Map<String, Object> properties = new HashMap<String, Object>();
         properties.put( "securityLevel", 5 );
         payload.put( OrganizationsResource.ORGANIZATION_PROPERTIES, properties );
-        management.orgs().organization(clientSetup.getOrganizationName())
+        management.orgs().org( clientSetup.getOrganizationName() )
             .put(payload);
 
 
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/OrganizationsIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/OrganizationsIT.java
index 4385a4c..8a298f6 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/OrganizationsIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/OrganizationsIT.java
@@ -19,9 +19,7 @@
 
 import java.io.IOException;
 import java.util.HashMap;
-import java.util.LinkedHashMap;
 import java.util.Map;
-import java.util.UUID;
 
 import org.apache.usergrid.rest.test.resource2point0.model.*;
 import org.junit.Ignore;
@@ -82,7 +80,7 @@
         //this.refreshIndex();
 
         //Assert that the get returns the correct org and owner.
-        Organization returnedOrg = clientSetup.getRestClient().management().orgs().organization( organization.getOrganization()).get();
+        Organization returnedOrg = clientSetup.getRestClient().management().orgs().org( organization.getOrganization() ).get();
 
         assertTrue( returnedOrg != null && returnedOrg.getName().equals( organization.getOrganization() ) );
 
@@ -278,7 +276,7 @@
         this.management().token().setToken(tokenReturned);
 
         //Assert that the get returns the correct org and owner.
-        Organization returnedOrg = clientSetup.getRestClient().management().orgs().organization( organization.getOrganization() ).get();
+        Organization returnedOrg = clientSetup.getRestClient().management().orgs().org( organization.getOrganization() ).get();
 
         assertTrue(returnedOrg != null && returnedOrg.getName().equals(organization.getOrganization()));
 
@@ -295,7 +293,7 @@
 
         try {
             //Delete default organization
-            clientSetup.getRestClient().management().orgs().organization( clientSetup.getOrganizationName() ).delete();
+            clientSetup.getRestClient().management().orgs().org( clientSetup.getOrganizationName() ).delete();
             fail( "Delete is not implemented yet" );
         }catch(UniformInterfaceException uie){
             assertEquals( ClientResponse.Status.NOT_IMPLEMENTED ,uie.getResponse().getStatus());
@@ -320,7 +318,7 @@
         adminUserPayload.put("password", username);
 
         //create adminUser
-        ApiResponse adminUserEntityResponse = management().orgs().organization( clientSetup.getOrganizationName() ).users().post(ApiResponse.class, adminUserPayload);
+        ApiResponse adminUserEntityResponse = management().orgs().org( clientSetup.getOrganizationName() ).users().post(ApiResponse.class, adminUserPayload);
 
         Entity adminUserResponse = new Entity(adminUserEntityResponse);
         //verify that the response contains the correct data
@@ -357,12 +355,12 @@
         orgPayload.put( "properties", properties );
 
         //update the organization.
-        management().orgs().organization( clientSetup.getOrganizationName() ).put(orgPayload);
+        management().orgs().org( clientSetup.getOrganizationName() ).put(orgPayload);
 
         this.refreshIndex();
 
         //retrieve the organization
-        Organization orgResponse = management().orgs().organization( clientSetup.getOrganizationName() ).get();
+        Organization orgResponse = management().orgs().org( clientSetup.getOrganizationName() ).get();
 
         assertEquals(5, orgResponse.getProperties().get("puppies" ));
 
@@ -371,11 +369,11 @@
         orgPayload.put("properties", properties );
 
         //update the organization.
-        management().orgs().organization( clientSetup.getOrganizationName()).put(orgPayload);
+        management().orgs().org( clientSetup.getOrganizationName() ).put(orgPayload);
 
         this.refreshIndex();
 
-        orgResponse = management().orgs().organization( clientSetup.getOrganizationName() ).get();
+        orgResponse = management().orgs().org( clientSetup.getOrganizationName() ).get();
 
         assertEquals( 6, orgResponse.getProperties().get( "puppies" ));
 
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
index 2972126..4d85ade 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/RegistrationIT.java
@@ -24,7 +24,6 @@
 import org.apache.usergrid.rest.test.resource2point0.AbstractRestIT;
 import org.apache.usergrid.rest.test.resource2point0.model.*;
 
-import org.junit.Ignore;
 import org.junit.Test;
 import org.jvnet.mock_javamail.Mailbox;
 import org.slf4j.Logger;
@@ -86,7 +85,7 @@
         ApiResponse user = this
             .management()
             .orgs()
-            .organization(organizationName)
+            .org( organizationName )
             .users()
             .post(new User().chainPut("email", email).chainPut("password", password));
 
@@ -133,7 +132,7 @@
                     .queryParam("access_token", t).accept(MediaType.APPLICATION_JSON)
                     .type(MediaType.APPLICATION_FORM_URLENCODED).put(String.class, form);
             } catch (UniformInterfaceException e) {
-                assertEquals("Should receive a 400 Not Found", 400, e.getResponse().getStatus());
+                assertEquals("Should receive a 404 Not Found", 404, e.getResponse().getStatus());
             }
         } finally {
             setTestProperties(originalProperties);
@@ -207,7 +206,7 @@
             this
                 .management()
                 .orgs()
-                .organization(this.clientSetup.getOrganizationName())
+                .org( this.clientSetup.getOrganizationName() )
                 .users()
                 .getResource( false )
                 .queryParam( "access_token", token )
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/AdminEmailEncodingIT.java b/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/AdminEmailEncodingIT.java
index a78f4fd..ceab55d 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/AdminEmailEncodingIT.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/management/organizations/AdminEmailEncodingIT.java
@@ -28,7 +28,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.IOException;
 import java.util.UUID;
 
 import static junit.framework.TestCase.assertNotNull;
@@ -119,7 +118,7 @@
         //Instruct the test framework to use the new token
         this.app().token().setToken(tokenReturned);
         //Create an application within the organization
-        clientSetup.getRestClient().management().orgs().organization(organization.getName()).app().post(new Application(app));
+        clientSetup.getRestClient().management().orgs().org( organization.getName() ).app().post(new Application(app));
 
         //retrieve the new management user by username and ensure the username and email address matches the input
         Entity me = clientSetup.getRestClient().management().users().entity(username).get();
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/ClientSetup.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/ClientSetup.java
index 2654184..821b80a 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/ClientSetup.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/ClientSetup.java
@@ -27,7 +27,6 @@
 import org.apache.usergrid.rest.test.resource2point0.model.ApiResponse;
 import org.apache.usergrid.rest.test.resource2point0.model.Application;
 import org.apache.usergrid.rest.test.resource2point0.model.Credentials;
-import org.apache.usergrid.rest.test.resource2point0.model.Entity;
 import org.apache.usergrid.rest.test.resource2point0.model.Token;
 import org.junit.rules.TestRule;
 import org.junit.runner.Description;
@@ -38,8 +37,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.ws.rs.core.MediaType;
-
 
 /**
  * This class is used to setup the client rule that will setup the RestClient and create default applications.
@@ -123,11 +120,11 @@
         restClient.management().token().get(username,password);
 
         // refreshIndex();
-        clientCredentials = restClient.management().orgs().organization( orgName ).credentials().get(Credentials.class);
+        clientCredentials = restClient.management().orgs().org( orgName ).credentials().get(Credentials.class);
         //refreshIndex();
 
 
-        ApiResponse appResponse = restClient.management().orgs().organization(organization.getName()).app().post(new Application(appName));
+        ApiResponse appResponse = restClient.management().orgs().org( organization.getName() ).app().post(new Application(appName));
         appUuid = ( String ) appResponse.getEntities().get( 0 ).get( "uuid" );
         refreshIndex();
 
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ApplicationsResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ApplicationsResource.java
index d06322c..f789272 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ApplicationsResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/ApplicationsResource.java
@@ -55,4 +55,11 @@
         return mapper.readValue(
             new StringReader(responseString), ManagementResponse.class);
     }
+
+
+
+    public ApplicationResource app( final String appName ){
+        return new ApplicationResource( appName,context,this );
+    }
+
 }
diff --git a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrgResource.java b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrgResource.java
index d87bf91..cd7165c 100644
--- a/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrgResource.java
+++ b/stack/rest/src/test/java/org/apache/usergrid/rest/test/resource2point0/endpoints/mgmt/OrgResource.java
@@ -51,7 +51,7 @@
     }
 
 
-    public OrganizationResource organization (final String orgname){
+    public OrganizationResource org( final String orgname ){
         return new OrganizationResource( orgname,context,this );
     }
 
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
index 5c4262d..6f4e675 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/cassandra/ManagementServiceImpl.java
@@ -1892,12 +1892,8 @@
             return null;
         }
         EntityManager em = emf.getEntityManager( smf.getManagementAppId() );
-        EntityRef mgmtAppRef = new SimpleEntityRef( Schema.TYPE_APPLICATION, smf.getManagementAppId() );
 
-        final Results results = em.searchCollection(mgmtAppRef, CpNamingUtils.DELETED_APPLICATION_INFOS,
-            Query.fromQL("select * where " + PROPERTY_APPLICATION_ID + " = " + applicationId.toString()));
-
-        Entity entity = results.getEntity();
+        final Entity entity = em.get( new SimpleEntityRef( CpNamingUtils.DELETED_APPLICATION_INFO, applicationId ) );
 
         if ( entity != null ) {
             return new ApplicationInfo( applicationId, entity.getName() );