diff --git a/src/Database/Models/ProjectModel.cs b/src/Database/Models/ProjectModel.cs
index 1e7efeaea33ecfe85a21cce1189f8d361c294178..a641e36ead2f93fb7213a35a2321f78ae50300e7 100644
--- a/src/Database/Models/ProjectModel.cs
+++ b/src/Database/Models/ProjectModel.cs
@@ -7,6 +7,7 @@ using Coscine.Database.DataModel;
 using LinqToDB;
 using Coscine.Database.Util;
 using LinqKit;
+using System.Text.RegularExpressions;
 
 namespace Coscine.Database.Models
 {
@@ -37,6 +38,11 @@ namespace Coscine.Database.Models
             });
         }
 
+        public Project GetBySlug(String slug)
+        {
+            return GetWhere((tableEntry) => tableEntry.Slug == slug);
+        }
+
         public Project GetByIdIncludingDeleted(Guid id)
         {
             var expression = GetIdFromObject();
@@ -144,6 +150,7 @@ namespace Coscine.Database.Models
                 ProjectName = projectObject.ProjectName,
                 PrincipleInvestigators = projectObject.PrincipleInvestigators,
                 GrantId = projectObject.GrantId,
+                Slug = GenerateSlug(projectObject),
 
                 VisibilityId = projectObject.Visibility.Id,
             };
@@ -162,6 +169,41 @@ namespace Coscine.Database.Models
             return project;
         }
 
+        private String GenerateSlug(ProjectObject projectObject)
+        {
+            // create slug for project
+            var slug = projectObject.DisplayName;
+            slug = slug.ToLower();
+            slug = Regex.Replace(slug, @"[\s-]+", "-");
+            slug = Regex.Replace(slug, @"[^a-z0-9-]*|", "");
+            slug = Regex.Replace(slug, @"^-|-$", "");
+
+            Random r = new Random();
+            int rInt = r.Next(0, 9000000) + 1000000;
+            string fullSlug = "" + rInt;
+
+            if (slug.Length >= 7)
+            {
+                rInt = r.Next(0, 9000) + 1000;
+                fullSlug = slug;
+            }
+
+            if (GetBySlug(fullSlug) != null)
+            {
+                if (slug.Length >= 7)
+                {
+                    fullSlug = slug + "-";
+                }
+                while (GetBySlug(fullSlug + rInt) != null)
+                {
+                    rInt++;
+                };
+                fullSlug += rInt;
+            }
+
+            return fullSlug;
+        }
+
         private void SetDisciplines(Project project, IEnumerable<DisciplineObject> disciplines)
         {
             ProjectDisciplineModel projectDisciplineModel = new ProjectDisciplineModel();
@@ -332,6 +374,7 @@ namespace Coscine.Database.Models
                                                     disciplines,
                                                     organizations,
                                                     project.Visibility == null ? null : new VisibilityObject(project.Visibility.Id, project.Visibility.DisplayName),
+                                                    project.Slug,
                                                     parentId);
         }
 
diff --git a/src/Database/Models/ResourceModel.cs b/src/Database/Models/ResourceModel.cs
index a454c3d6c8372ded109e6b6a187b249555a9b886..1aeb03cebc3ab2a60a4ca1bbc16f0b0bb816acd1 100644
--- a/src/Database/Models/ResourceModel.cs
+++ b/src/Database/Models/ResourceModel.cs
@@ -13,8 +13,6 @@ namespace Coscine.Database.Models
 {
     public class ResourceModel : DatabaseModel<Resource>
     {
-        private readonly IConfiguration _configuration = new ConsulConfiguration();
-
         public Resource StoreFromObject(ResourceObject resourceObject)
         {
             if (resourceObject.Disciplines.Count() == 0 || resourceObject.ResourceTypeOption == null)
@@ -90,7 +88,7 @@ namespace Coscine.Database.Models
                 {
                     RDSResourceType rdsResourceType = new RDSResourceType()
                     {
-                        BucketName = GetRDSBucketName(),
+                        BucketName = resource.Id.ToString(),
                         Size = rdsResourceTypeObject.Size,
                     };
                     rdsResourceTypeModel.Insert(rdsResourceType);
@@ -158,17 +156,6 @@ namespace Coscine.Database.Models
             }
         }
 
-        private string GetRDSBucketName()
-        {
-            var prefix = _configuration.GetStringAndWait("coscine/global/buckets/prefix");
-            var number = Int32.Parse(_configuration.GetStringAndWait("coscine/global/buckets/currentid"));
-            var maxNumber = Int32.Parse(_configuration.GetStringAndWait("coscine/global/buckets/highestid"));
-            var newNumber = number % maxNumber == 0 ? 1 : number + 1;
-            _configuration.Put("coscine/global/buckets/currentid", "" + newNumber);
-
-            return String.Format("{0}{1,3:000}", prefix, number);
-        }
-
         private void SetDisciplines(Resource resource, IEnumerable<DisciplineObject> disciplines)
         {
             ResourceDisciplineModel resourceDisciplineModel = new ResourceDisciplineModel();
@@ -323,7 +310,7 @@ namespace Coscine.Database.Models
                 (resource.License != null) ? new LicenseObject(resource.License.Id, resource.License.DisplayName) : null,
                 JObject.FromObject(resourceTypeOptionObject),
                 resource.ApplicationProfile,
-                JToken.Parse(resource.FixedValues == null ? "{}": resource.FixedValues ),
+                JToken.Parse(resource.FixedValues ?? "{}"),
                 (resource.Creator != null) ? resource.Creator : null
             );
         }
diff --git a/src/Database/ReturnObjects/ProjectObject.cs b/src/Database/ReturnObjects/ProjectObject.cs
index ce10c1b14290d2b622c27c08f86c22966c86e039..21df41588c64e1cef3cc15e054f46a3cab798488 100644
--- a/src/Database/ReturnObjects/ProjectObject.cs
+++ b/src/Database/ReturnObjects/ProjectObject.cs
@@ -18,6 +18,7 @@ namespace Coscine.Database.ReturnObjects
         public string ProjectName { get; set; }
         public string PrincipleInvestigators { get; set; }
         public string GrantId { get; set; }
+        public string Slug { get; set; }
 
         public IEnumerable<DisciplineObject> Disciplines { get; set; }
         public IEnumerable<OrganizationObject> Organizations { get; set; }
@@ -25,7 +26,7 @@ namespace Coscine.Database.ReturnObjects
 
         public Guid ParentId { get; set; }
         
-        public ProjectObject(Guid id, string description, string displayName, DateTime startDate, DateTime endDate, string keywords, string projectName, string principleInvestigators, string grantId, IEnumerable<DisciplineObject> discipline, IEnumerable<OrganizationObject> organization, VisibilityObject visibility, Guid parentId = new Guid())
+        public ProjectObject(Guid id, string description, string displayName, DateTime startDate, DateTime endDate, string keywords, string projectName, string principleInvestigators, string grantId, IEnumerable<DisciplineObject> discipline, IEnumerable<OrganizationObject> organization, VisibilityObject visibility, string slug, Guid parentId = new Guid())
         {
             Id = id;
             Description = description;
@@ -38,6 +39,7 @@ namespace Coscine.Database.ReturnObjects
             ProjectName = projectName;
             PrincipleInvestigators = principleInvestigators;
             GrantId = grantId;
+            Slug = slug;
 
             Disciplines = discipline;
             Organizations = organization;