diff --git a/src/Tree/Controllers/TreeController.cs b/src/Tree/Controllers/TreeController.cs
index 47f7b3878fb250d81c362b885d791ff92f03f717..67d6eae14487ff8d4ece1197dba26c3eb7ec75c8 100644
--- a/src/Tree/Controllers/TreeController.cs
+++ b/src/Tree/Controllers/TreeController.cs
@@ -1,4 +1,4 @@
-using Coscine.WaterbutlerHelper;
+using Coscine.WaterbutlerHelper;
 using Coscine.WaterbutlerHelper.ReturnObjects;
 using Coscine.ApiCommons;
 using Coscine.ApiCommons.Factories;
@@ -94,6 +94,10 @@ namespace Coscine.Api.Tree.Controllers
 
             var user = _authenticator.GetUser();
             var check = CheckResourceIdAndPath(resourceId, path, out Resource resource);
+            if (check != null)
+            {
+                return check;
+            }
 
             if (resource.ApplicationProfile[^1] != '/')
             {
@@ -102,14 +106,9 @@ namespace Coscine.Api.Tree.Controllers
 
             if (user == null || !_resourceModel.HasAccess(user, resource, UserRoles.Owner, UserRoles.Member))
             {
-                return Forbid("User has no Access to this resource.");
+                return BadRequest("User has no Access to this resource.");
             }
-
-            if (check != null)
-            {
-                return check;
-            }
-
+                        
             try
             {
                 var resourceTypeOptions = _resourceModel.GetResourceTypeOptions(resource.Id);
@@ -223,7 +222,12 @@ namespace Coscine.Api.Tree.Controllers
 
             if (user == null || !_resourceModel.HasAccess(user, resource, UserRoles.Owner, UserRoles.Member))
             {
-                return Forbid("User is no project member!");
+                return BadRequest("User is no project member!");
+            }
+
+            if (resource.Archived == "1")
+            {
+                return BadRequest("The resource is readonly!");
             }
 
             if (resource.ApplicationProfile[^1] != '/')