diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo.Abp.PermissionManagement.Domain.csproj b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo.Abp.PermissionManagement.Domain.csproj
index d9cc5a058f..39ec0e9763 100644
--- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo.Abp.PermissionManagement.Domain.csproj
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo.Abp.PermissionManagement.Domain.csproj
@@ -23,4 +23,8 @@
     
   
 
+  
+    
+  
+
 
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs
index f18781e36a..ac0ddd8b1c 100644
--- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs
@@ -3,6 +3,7 @@ using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
 using Microsoft.Extensions.Options;
+using Polly;
 using Volo.Abp.Authorization;
 using Volo.Abp.Caching;
 using Volo.Abp.DependencyInjection;
@@ -35,28 +36,40 @@ public class AbpPermissionManagementDomainModule : AbpModule
 
     private static void SaveStaticPermissionsToDatabase(ApplicationInitializationContext context)
     {
+        var rootServiceProvider = context.ServiceProvider.GetRequiredService();
+
         Task.Run(async () =>
         {
-            using var scope = context
-                .ServiceProvider
-                .GetRequiredService()
-                .CreateScope();
+            using var scope = rootServiceProvider.CreateScope();
 
             try
             {
-                await scope
-                    .ServiceProvider
-                    .GetRequiredService()
-                    .SaveAsync();
-            }
-            catch (Exception ex)
-            {
-                //TODO: We should retry until it's successful!
-
-                scope.ServiceProvider
-                    .GetService>()
-                    .LogException(ex);
+                await Policy
+                    .Handle()
+                    .WaitAndRetryAsync(5, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt) * 10))
+                    .ExecuteAsync(async () =>
+                    {
+                        try
+                        {
+                            // ReSharper disable once AccessToDisposedClosure
+                            await scope
+                                .ServiceProvider
+                                .GetRequiredService()
+                                .SaveAsync();
+                        }
+                        catch (Exception ex)
+                        {
+                            // ReSharper disable once AccessToDisposedClosure
+                            scope.ServiceProvider
+                                .GetService>()?
+                                .LogException(ex);
+                            
+                            throw; // Polly will catch it
+                        }
+                    });
             }
+            // ReSharper disable once EmptyGeneralCatchClause (No need to log since it is logged above)
+            catch { }
         });
     }
 }
\ No newline at end of file