diff --git a/.gitignore b/.gitignore
index fcd06e014..8cc7d8bbe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,3 +53,6 @@ obj
 /AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj.user
 /WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj.user
 /ReportAPI/LearningHub.Nhs.ReportApi/web.config
+/AdminUI/LearningHub.Nhs.AdminUI/web.config
+/LearningHub.Nhs.WebUI/web.config
+/WebAPI/LearningHub.Nhs.API/web.config
diff --git a/AdminUI/LearningHub.Nhs.AdminUI/web.config b/AdminUI/LearningHub.Nhs.AdminUI/web.config
deleted file mode 100644
index 6bcb74972..000000000
--- a/AdminUI/LearningHub.Nhs.AdminUI/web.config
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-  
-    
-      
-        
-          
-          
-        
-      
-      
-        
-      
-		
-			
-		
-		
-    
-  
-
-
\ No newline at end of file
diff --git a/LearningHub.Nhs.WebUI/Controllers/HomeController.cs b/LearningHub.Nhs.WebUI/Controllers/HomeController.cs
index 7f40afe15..18e3b82fe 100644
--- a/LearningHub.Nhs.WebUI/Controllers/HomeController.cs
+++ b/LearningHub.Nhs.WebUI/Controllers/HomeController.cs
@@ -40,6 +40,7 @@ public class HomeController : BaseController
         private readonly IDashboardService dashboardService;
         private readonly IContentService contentService;
         private readonly IFeatureManager featureManager;
+        private readonly IUserGroupService userGroupService;
         private readonly Microsoft.Extensions.Configuration.IConfiguration configuration;
 
         /// 
@@ -55,6 +56,7 @@ public class HomeController : BaseController
         /// Dashboard service.
         /// Content service.
         ///  featureManager.
+        ///  userGroupService.
         ///  config.
         public HomeController(
             IHttpClientFactory httpClientFactory,
@@ -67,6 +69,7 @@ public HomeController(
             IDashboardService dashboardService,
             IContentService contentService,
             IFeatureManager featureManager,
+            IUserGroupService userGroupService,
             Microsoft.Extensions.Configuration.IConfiguration configuration)
         : base(hostingEnvironment, httpClientFactory, logger, settings.Value)
         {
@@ -76,6 +79,7 @@ public HomeController(
             this.dashboardService = dashboardService;
             this.contentService = contentService;
             this.featureManager = featureManager;
+            this.userGroupService = userGroupService;
             this.configuration = configuration;
         }
 
@@ -212,6 +216,7 @@ public async Task Index(string myLearningDashboard = "my-in-progr
                     var learningTask = this.dashboardService.GetMyAccessLearningsAsync(myLearningDashboard, 1);
                     var resourcesTask = this.dashboardService.GetResourcesAsync(resourceDashboard, 1);
                     var cataloguesTask = this.dashboardService.GetCataloguesAsync(catalogueDashboard, 1);
+                    var userGroupsTask = this.userGroupService.UserHasCatalogueContributionPermission();
 
                     var enrolledCoursesTask = Task.FromResult(new List());
                     var enableMoodle = Task.Run(() => this.featureManager.IsEnabledAsync(FeatureFlags.EnableMoodle)).Result;
@@ -222,7 +227,7 @@ public async Task Index(string myLearningDashboard = "my-in-progr
                         enrolledCoursesTask = this.dashboardService.GetEnrolledCoursesFromMoodleAsync(this.CurrentMoodleUserId, 1);
                     }
 
-                    await Task.WhenAll(learningTask, resourcesTask, cataloguesTask);
+                    await Task.WhenAll(learningTask, resourcesTask, cataloguesTask, userGroupsTask);
 
                     var model = new DashboardViewModel()
                     {
@@ -231,7 +236,8 @@ public async Task Index(string myLearningDashboard = "my-in-progr
                         Catalogues = await cataloguesTask,
                         EnrolledCourses = await enrolledCoursesTask,
                     };
-
+                    var userHasContributePermission = await userGroupsTask;
+                    this.ViewBag.userHasContributePermission = userHasContributePermission;
                     if (!string.IsNullOrEmpty(this.Request.Query["preview"]) && Convert.ToBoolean(this.Request.Query["preview"]))
                     {
                         return this.View("LandingPage", await this.GetLandingPageContent(Convert.ToBoolean(this.Request.Query["preview"])));
diff --git a/LearningHub.Nhs.WebUI/Interfaces/IUserGroupService.cs b/LearningHub.Nhs.WebUI/Interfaces/IUserGroupService.cs
index a333e0c89..eadae3363 100644
--- a/LearningHub.Nhs.WebUI/Interfaces/IUserGroupService.cs
+++ b/LearningHub.Nhs.WebUI/Interfaces/IUserGroupService.cs
@@ -22,6 +22,12 @@ public interface IUserGroupService
         /// The .
         Task> GetRoleUserGroupDetailForUserAsync(int userId);
 
+        /// 
+        /// The UserHasCatalogueContributionPermission.
+        /// 
+        /// The .
+        Task UserHasCatalogueContributionPermission();
+
         /// 
         /// Check if user has given permission.
         /// 
diff --git a/LearningHub.Nhs.WebUI/Services/NavigationPermissionService.cs b/LearningHub.Nhs.WebUI/Services/NavigationPermissionService.cs
index 95e74022e..e381b0403 100644
--- a/LearningHub.Nhs.WebUI/Services/NavigationPermissionService.cs
+++ b/LearningHub.Nhs.WebUI/Services/NavigationPermissionService.cs
@@ -11,14 +11,19 @@
     public class NavigationPermissionService : INavigationPermissionService
     {
         private readonly IResourceService resourceService;
+        private readonly IUserGroupService userGroupService;
 
         /// 
         /// Initializes a new instance of the  class.
         /// 
         /// Resource service.
-        public NavigationPermissionService(IResourceService resourceService)
+        /// UserGroup service.
+        public NavigationPermissionService(
+        IResourceService resourceService,
+        IUserGroupService userGroupService)
         {
             this.resourceService = resourceService;
+            this.userGroupService = userGroupService;
         }
 
         /// 
@@ -52,7 +57,7 @@ public async Task GetNavigationModelAsync(IPrincipal user, bool
             }
             else if (user.IsInRole("BlueUser"))
             {
-                return this.AuthenticatedBlueUser(controllerName);
+                return await this.AuthenticatedBlueUser(controllerName);
             }
             else
             {
@@ -114,11 +119,11 @@ private NavigationModel AuthenticatedAdministrator(string controllerName)
         /// 
         /// The controller name.
         /// The .
-        private NavigationModel AuthenticatedBlueUser(string controllerName)
+        private async Task AuthenticatedBlueUser(string controllerName)
         {
             return new NavigationModel()
             {
-                ShowMyContributions = true,
+                ShowMyContributions = await this.userGroupService.UserHasCatalogueContributionPermission(),
                 ShowMyLearning = true,
                 ShowMyBookmarks = true,
                 ShowSearch = controllerName != "search" && controllerName != string.Empty,
diff --git a/LearningHub.Nhs.WebUI/Services/UserGroupService.cs b/LearningHub.Nhs.WebUI/Services/UserGroupService.cs
index 6790a3143..6a4f62966 100644
--- a/LearningHub.Nhs.WebUI/Services/UserGroupService.cs
+++ b/LearningHub.Nhs.WebUI/Services/UserGroupService.cs
@@ -5,6 +5,7 @@
     using System.Linq;
     using System.Threading.Tasks;
     using LearningHub.Nhs.Caching;
+    using LearningHub.Nhs.Models.Enums;
     using LearningHub.Nhs.Models.Extensions;
     using LearningHub.Nhs.Models.User;
     using LearningHub.Nhs.WebUI.Interfaces;
@@ -56,6 +57,18 @@ public async Task> GetRoleUserGroupDetailForUserAsy
             return await this.cacheService.GetOrFetchAsync(cacheKey, () => this.FetchRoleUserGroupDetailForUserAsync(userId));
         }
 
+        /// 
+        public async Task UserHasCatalogueContributionPermission()
+        {
+            var userRoleGroups = await this.GetRoleUserGroupDetailAsync();
+            if (userRoleGroups != null && userRoleGroups.Any(r => r.RoleEnum == RoleEnum.LocalAdmin || r.RoleEnum == RoleEnum.Editor))
+            {
+                return true;
+            }
+
+            return false;
+        }
+
         /// 
         public async Task UserHasPermissionAsync(string permissionCode)
         {
diff --git a/LearningHub.Nhs.WebUI/Views/Home/Dashboard.cshtml b/LearningHub.Nhs.WebUI/Views/Home/Dashboard.cshtml
index 4a7b55c08..e8481a4c7 100644
--- a/LearningHub.Nhs.WebUI/Views/Home/Dashboard.cshtml
+++ b/LearningHub.Nhs.WebUI/Views/Home/Dashboard.cshtml
@@ -5,7 +5,15 @@
 @{
 	ViewData["Title"] = "Learning Hub - Home";
 
-	var isReadOnly = User.IsInRole("ReadOnly") || User.IsInRole("BasicUser");
+	var isReadOnly = false;
+	if (User.IsInRole("ReadOnly") || User.IsInRole("BasicUser"))
+	{
+		isReadOnly = true;
+	}
+	else if (User.IsInRole("BlueUser") && !this.ViewBag.userHasContributePermission)
+	{
+		isReadOnly = true;
+	}
 }
 
 @section styles {
diff --git a/LearningHub.Nhs.WebUI/web.config b/LearningHub.Nhs.WebUI/web.config
deleted file mode 100644
index 837247997..000000000
--- a/LearningHub.Nhs.WebUI/web.config
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-	
-		
-			
-				
-					
-					
-				
-			
-			
-				
-			
-			
-				
-			
-			
-		
-	
-
-
diff --git a/WebAPI/LearningHub.Nhs.API/web.config b/WebAPI/LearningHub.Nhs.API/web.config
deleted file mode 100644
index 62efcf17d..000000000
--- a/WebAPI/LearningHub.Nhs.API/web.config
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-  
-    
-      
-        
-          
-          
-        
-      
-      
-        
-      
-		
-			
-		
-		
-    
-  
-
-
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Repository/Hierarchy/CatalogueNodeVersionRepository.cs b/WebAPI/LearningHub.Nhs.Repository/Hierarchy/CatalogueNodeVersionRepository.cs
index 38f77a37f..5ae373e42 100644
--- a/WebAPI/LearningHub.Nhs.Repository/Hierarchy/CatalogueNodeVersionRepository.cs
+++ b/WebAPI/LearningHub.Nhs.Repository/Hierarchy/CatalogueNodeVersionRepository.cs
@@ -81,11 +81,6 @@ public async Task> GetPublishedCatalogues()
         /// The .
         public IQueryable GetPublishedCataloguesForUserAsync(int userId)
         {
-            var communityCatalogue = this.DbContext.CatalogueNodeVersion.AsNoTracking()
-                    .Include(cnv => cnv.NodeVersion.Node)
-                    .Where(cnv => cnv.NodeVersion.VersionStatusEnum == VersionStatusEnum.Published
-                            && cnv.NodeVersion.NodeId == 1 /* Community Catalogue */);
-
             var cataloguesForUser = from cnv in this.DbContext.CatalogueNodeVersion.Include(cnv => cnv.NodeVersion.Node).AsNoTracking()
                                     join nv in this.DbContext.NodeVersion.Where(cnv => cnv.VersionStatusEnum == VersionStatusEnum.Published && !cnv.Deleted) // .Include(nv => nv.Node)
                                         on cnv.NodeVersionId equals nv.Id
@@ -99,7 +94,7 @@ join n in this.DbContext.Node.Where(x => !x.Deleted)
                                         on nv.Id equals n.CurrentNodeVersionId
                                     select cnv;
 
-            var returnedCatalogues = communityCatalogue.Union(cataloguesForUser).Distinct()
+            var returnedCatalogues = cataloguesForUser.Distinct()
                                                         .OrderBy(cnv => cnv.NodeVersion.NodeId != 1)
                                                         .ThenBy(cnv => cnv.Name);