diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJobV2.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJobV2.java
index 88e43f75751d05ba525e7fda7e37cda598523296..c7a096873a01e9aefff5842ba787deba578639b3 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJobV2.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/StorageSyncJobV2.java
@@ -206,7 +206,7 @@ public class StorageSyncJobV2 extends BaseJob {
 
   private boolean performSync() throws IOException, RetryLaterException, InvalidKeyException {
     Stopwatch                   stopwatch          = new Stopwatch("StorageSync");
-    Recipient                   self               = Recipient.self();
+    Recipient                   self               = Recipient.self().fresh();
     SQLiteDatabase              db                 = DatabaseFactory.getInstance(context).getRawDatabase();
     SignalServiceAccountManager accountManager     = ApplicationDependencies.getSignalServiceAccountManager();
     RecipientDatabase           recipientDatabase  = DatabaseFactory.getRecipientDatabase(context);
@@ -236,6 +236,8 @@ public class StorageSyncJobV2 extends BaseJob {
 
       Log.i(TAG, "[Remote Sync] Pre-Merge ID Difference :: " + idDifference);
 
+      stopwatch.split("remote-id-diff");
+
       if (!idDifference.isEmpty()) {
         Log.i(TAG, "[Remote Sync] Retrieving records for key difference.");
 
@@ -277,6 +279,8 @@ public class StorageSyncJobV2 extends BaseJob {
           new GroupV2RecordProcessor(context).process(remoteGv2, StorageSyncHelper.KEY_GENERATOR);
           new AccountRecordProcessor(context, self).process(remoteAccount, StorageSyncHelper.KEY_GENERATOR);
 
+          self = Recipient.self().fresh();
+
           List<SignalStorageRecord> unknownInserts = remoteUnknown;
           List<StorageId>           unknownDeletes = Stream.of(idDifference.getLocalOnlyIds()).filter(StorageId::isUnknown).toList();
 
@@ -301,13 +305,15 @@ public class StorageSyncJobV2 extends BaseJob {
                                                          remoteInserts,
                                                          remoteDeletes);
 
+          recipientDatabase.clearDirtyStateForStorageIds(Util.concatenatedList(localIdsAdded, localIdsRemoved));
+
           db.setTransactionSuccessful();
         } finally {
           db.endTransaction();
           ApplicationDependencies.getDatabaseObserver().notifyConversationListListeners();
         }
 
-        stopwatch.split("local-merge");
+        stopwatch.split("remote-merge-transaction");
 
         Log.i(TAG, "[Remote Sync] WriteOperationResult :: " + mergeWriteOperation);
 
@@ -375,7 +381,7 @@ public class StorageSyncJobV2 extends BaseJob {
       db.endTransaction();
     }
 
-    stopwatch.split("local-changes");
+    stopwatch.split("local-changes-transaction");
 
     if (localWriteResult.isPresent()) {
       Log.i(TAG, String.format(Locale.ENGLISH, "[Local Changes] Local changes present. %d updates, %d inserts, %d deletes, account update: %b, account insert: %b.", pendingUpdates.size(), pendingInsertions.size(), pendingDeletions.size(), pendingAccountUpdate.isPresent(), pendingAccountInsert.isPresent()));