diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4f5c7b3..eaa6dc0 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3432,6 +3432,10 @@
     <!-- Manage applications, text for Move button when move is in progress -->
     <string name="moving">Moving</string>
 
+    <!-- Text of pop up message if the request for a "migrate primary storage" operation
+         (see storage_menu_migrate) is denied as another is already in progress. [CHAR LIMIT=75] -->
+    <string name="another_migration_already_in_progress">Another migration is already in progress.</string>
+
     <!-- Manage applications, text for move error messages -->
     <string name="insufficient_storage">Not enough storage space.</string>
     <string name="does_not_exist">App doesn\u2019t exist.</string>
diff --git a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
index 3eae081..7b98dc2 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardMigrateConfirm.java
@@ -19,11 +19,16 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
+import android.os.storage.DiskInfo;
+import android.os.storage.StorageManager;
 import android.os.storage.VolumeInfo;
 import android.util.Log;
 
+import android.widget.Toast;
 import com.android.settings.R;
 
+import java.util.Objects;
+
 import static com.android.settings.deviceinfo.StorageSettings.TAG;
 
 public class StorageWizardMigrateConfirm extends StorageWizardBase {
@@ -70,7 +75,31 @@
 
     @Override
     public void onNavigateNext() {
-        final int moveId = getPackageManager().movePrimaryStorage(mVolume);
+        int moveId;
+
+        // We only expect exceptions from MountService#setPrimaryStorageUuid
+        try {
+            moveId = getPackageManager().movePrimaryStorage(mVolume);
+        } catch (IllegalArgumentException e) {
+            StorageManager sm = (StorageManager) getSystemService(STORAGE_SERVICE);
+
+            if (Objects.equals(mVolume.getFsUuid(), sm.getPrimaryStorageVolume().getUuid())) {
+                final Intent intent = new Intent(this, StorageWizardReady.class);
+                intent.putExtra(DiskInfo.EXTRA_DISK_ID, mDisk.getId());
+                startActivity(intent);
+                finishAffinity();
+
+                return;
+            } else {
+                throw e;
+            }
+        } catch (IllegalStateException e) {
+            Toast.makeText(this, getString(R.string.another_migration_already_in_progress),
+                    Toast.LENGTH_LONG).show();
+            finishAffinity();
+
+            return;
+        }
 
         final Intent intent = new Intent(this, StorageWizardMigrateProgress.class);
         intent.putExtra(VolumeInfo.EXTRA_VOLUME_ID, mVolume.getId());
diff --git a/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java b/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java
index 163ff42..ade3bfa 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardMigrateProgress.java
@@ -76,9 +76,11 @@
                         finishIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
                         sendBroadcast(finishIntent);
 
-                        final Intent intent = new Intent(context, StorageWizardReady.class);
-                        intent.putExtra(DiskInfo.EXTRA_DISK_ID, mDisk.getId());
-                        startActivity(intent);
+                        if (!StorageWizardMigrateProgress.this.isFinishing()) {
+                            final Intent intent = new Intent(context, StorageWizardReady.class);
+                            intent.putExtra(DiskInfo.EXTRA_DISK_ID, mDisk.getId());
+                            startActivity(intent);
+                        }
                     }
                 } else {
                     Toast.makeText(context, getString(R.string.insufficient_storage),
