diff --git a/src/Resources/Controllers/ResourceController.cs b/src/Resources/Controllers/ResourceController.cs
index ab8ab7e849f2562fe0f16be8482b445510a33242..f8d5a2e7a66a3a850c258c6e3ce2c70833b4ae43 100644
--- a/src/Resources/Controllers/ResourceController.cs
+++ b/src/Resources/Controllers/ResourceController.cs
@@ -303,18 +303,13 @@ namespace Coscine.Api.Resources.Controllers
             if (projectModel.HasAccess(user, project, UserRoles.Owner, UserRoles.Member))
             {
                 var orgs = Util.OrganizationsHelper.GetOrganization(user);
-                
+
                 if (orgs?.Any() != true)
                 {
                     orgs = new List<string> { "*" };
                 }
 
-                if (!resourceType.Enabled.HasValue
-                    || !resourceType.Enabled.Value
-                    || !orgs.SelectMany(x => ResourceTypeFactory
-                        .Instance
-                        .GetSpecificResourceTypes(x, ResourceTypes.Base.ResourceTypeStatus.Active))
-                        .Any(x => x.SpecificTypeName == resourceType.SpecificType))
+                if (!Util.ResourceTypeHelper.IsResourceTypeUsable(resourceType, projectId, orgs))
                 {
                     return Unauthorized("The user is not authorized to add a new resource of this type to the selected project!");
                 }
@@ -546,7 +541,7 @@ namespace Coscine.Api.Resources.Controllers
                 {
                     return (int)resourceTypeDefinition.GetResourceQuotaAvailable(resource.Id.ToString()).Result;
                 }
-                catch(Exception)
+                catch (Exception)
                 {
                     // Error communicating with the resource
                 }
diff --git a/src/Resources/Controllers/ResourceTypeController.cs b/src/Resources/Controllers/ResourceTypeController.cs
index de1e520352f063beb022b95801ad9bebc6e00482..aebc7b80060f26cdaba28eb25f52bcff4a2fc7ce 100644
--- a/src/Resources/Controllers/ResourceTypeController.cs
+++ b/src/Resources/Controllers/ResourceTypeController.cs
@@ -50,48 +50,18 @@ namespace Coscine.Api.Resources.Controllers
         /// <summary>
         /// Returns all enabled resource types according to user's affiliation and allocated quota in  the project.
         /// </summary>
-        /// <param name="id">Id of the project</param>
+        /// <param name="projectId">Id of the project</param>
         /// <returns>List of ResourceTypeInformations for the enabled Resources</returns>
-        [Route("[controller]/types/{id}/-/enabled")]
-        public async Task<ActionResult<IEnumerable<ResourceTypeInformation>>> GetEnabledResourceTypes(Guid id)
+        [Route("[controller]/types/{projectId}/-/enabled")]
+        public async Task<ActionResult<IEnumerable<ResourceTypeInformation>>> GetEnabledResourceTypes(Guid projectId)
         {
             var user = _authenticator.GetUser();
 
             var orgs = Util.OrganizationsHelper.GetOrganization(user).ToList();
 
-            if (orgs?.Any() != true)
-            {
-                orgs = new List<string> { "*" };
-            }
-
-            var listOfAffiliatedResources = orgs.SelectMany(x => ResourceTypeFactory
-                .Instance
-                .GetSpecificResourceTypes(x, ResourceTypes.Base.ResourceTypeStatus.Active)
-                .Select(x => x.SpecificTypeName));
-
-            var listOfEnabledResources = listOfAffiliatedResources;
-
-            var listOfAllActiveResources = ResourceTypeFactory.Instance.GetSpecificResourceTypes(ResourceTypes.Base.ResourceTypeStatus.Active).Select(x => x.SpecificTypeName);
-            
-            foreach (var resourceType in listOfAllActiveResources)
-            {
-                // check if the resource type is not in the list of affiliated ressource types and if so, if the project has reserved maxQuota for this resource type
-                if (!listOfAffiliatedResources.Contains(resourceType))
-                {
-                    var resourceId = _resourceTypeModel.GetAllWhere(x => x.SpecificType == resourceType).FirstOrDefault().Id;
-                    var quotas = _projectQuotaModel.GetAllWhere(x => x.ProjectId == id && x.ResourceTypeId == resourceId);
-                    if (quotas.FirstOrDefault().MaxQuota > 0)
-                    {
-                        listOfEnabledResources = listOfEnabledResources.Append(resourceType).ToList();
-                    }
-                }
-            }
-
-            var allEnabledResourceTypes = _resourceTypeModel.GetAllWhere((resourceType) => listOfEnabledResources.Contains(resourceType.SpecificType));
-            return Json(await CreateListOfResourceTypeInformation(allEnabledResourceTypes));
+            return Json(await CreateListOfResourceTypeInformation(Util.ResourceTypeHelper.GetAvailableResourceTypesForProject(projectId, orgs)));
         }
 
-
         /// <summary>
         /// Returns all enabled resource types.
         /// </summary>
@@ -117,7 +87,6 @@ namespace Coscine.Api.Resources.Controllers
             return Json(await CreateListOfResourceTypeInformation(allEnabledResourceTypes));
         }
 
-
         /// <summary>
         /// Returns all fields of the specified resource type.
         /// </summary>
diff --git a/src/Resources/Util/ResourceTypeHelper.cs b/src/Resources/Util/ResourceTypeHelper.cs
new file mode 100644
index 0000000000000000000000000000000000000000..88761d922a180f66cf694c6c20fe3f85c386bd4b
--- /dev/null
+++ b/src/Resources/Util/ResourceTypeHelper.cs
@@ -0,0 +1,56 @@
+using Coscine.Database.DataModel;
+using Coscine.Database.Models;
+using Coscine.ResourceTypes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Coscine.Api.Resources.Util
+{
+    internal static class ResourceTypeHelper
+    {
+        private static readonly ResourceTypeModel _resourceTypeModel = new();
+        private static readonly ProjectQuotaModel _projectQuotaModel = new();
+
+        internal static IEnumerable<ResourceType> GetAvailableResourceTypesForProject(Guid projectId, IEnumerable<string> affiliatedOrganizaions)
+        {
+            if (affiliatedOrganizaions?.Any() != true)
+            {
+                affiliatedOrganizaions = new List<string> { "*" };
+            }
+
+            var listOfAffiliatedResources = affiliatedOrganizaions.SelectMany(x => ResourceTypeFactory
+                .Instance
+                .GetSpecificResourceTypes(x, ResourceTypes.Base.ResourceTypeStatus.Active)
+                .Select(x => x.SpecificTypeName));
+
+            var listOfEnabledResources = listOfAffiliatedResources;
+
+            foreach (var resourceType in ResourceTypeFactory
+                .Instance
+                .GetSpecificResourceTypes(ResourceTypes.Base.ResourceTypeStatus.Active)
+                .Select(x => x.SpecificTypeName))
+            {
+                // check if the resource type is not in the list of affiliated resource types and if so, if the project has reserved maxQuota for this resource type
+                if (!listOfAffiliatedResources.Contains(resourceType))
+                {
+                    var resourceId = _resourceTypeModel.GetAllWhere(x => x.SpecificType == resourceType).FirstOrDefault().Id;
+                    var quotas = _projectQuotaModel.GetAllWhere(x => x.ProjectId == projectId && x.ResourceTypeId == resourceId);
+                    if (quotas.Any() && quotas.First().MaxQuota > 0)
+                    {
+                        listOfEnabledResources = listOfEnabledResources.Append(resourceType).ToList();
+                    }
+                }
+            }
+
+            return _resourceTypeModel.GetAllWhere((resourceType) => listOfEnabledResources.Contains(resourceType.SpecificType));
+        }
+
+        internal static bool IsResourceTypeUsable(ResourceType resourceType, Guid projectId, IEnumerable<string> affiliatedOrganizations)
+        {
+            return resourceType.Enabled == true && GetAvailableResourceTypesForProject(projectId, affiliatedOrganizations)
+                .Select(x => x.Id)
+                .Contains(resourceType.Id);
+        }
+    }
+}
\ No newline at end of file