diff --git a/src/com/android/settings/network/helper/SubscriptionAnnotation.java b/src/com/android/settings/network/helper/SubscriptionAnnotation.java
index 29d4fb5..79fbf68 100644
--- a/src/com/android/settings/network/helper/SubscriptionAnnotation.java
+++ b/src/com/android/settings/network/helper/SubscriptionAnnotation.java
@@ -90,16 +90,15 @@
 
         mOrderWithinList = subInfoIndex;
         mType = mSubInfo.isEmbedded() ? TYPE_ESIM : TYPE_PSIM;
+        mIsExisted = true;
         if (mType == TYPE_ESIM) {
             int cardId = mSubInfo.getCardId();
-            mIsExisted = eSimCardId.contains(cardId);
             mIsActive = activeSimSlotIndexList.contains(mSubInfo.getSimSlotIndex());
             mIsAllowToDisplay = (cardId < 0)    // always allow when eSIM not in slot
                   || isDisplayAllowed(context);
             return;
         }
 
-        mIsExisted = true;
         mIsActive = (mSubInfo.getSimSlotIndex() > SubscriptionManager.INVALID_SIM_SLOT_INDEX)
             && activeSimSlotIndexList.contains(mSubInfo.getSimSlotIndex());
         mIsAllowToDisplay = isDisplayAllowed(context);
diff --git a/src/com/android/settings/network/helper/SubscriptionGrouping.java b/src/com/android/settings/network/helper/SubscriptionGrouping.java
index cfb5ea9..c4e0fd7 100644
--- a/src/com/android/settings/network/helper/SubscriptionGrouping.java
+++ b/src/com/android/settings/network/helper/SubscriptionGrouping.java
@@ -16,6 +16,7 @@
 package com.android.settings.network.helper;
 
 import android.os.ParcelUuid;
+import android.util.Log;
 
 import androidx.annotation.Keep;
 import androidx.annotation.VisibleForTesting;
@@ -44,9 +45,12 @@
  */
 public class SubscriptionGrouping
         implements UnaryOperator<List<SubscriptionAnnotation>> {
+    private static final String LOG_TAG = "SubscriptionGrouping";
 
     // implementation of UnaryOperator
     public List<SubscriptionAnnotation> apply(List<SubscriptionAnnotation> listOfSubscriptions) {
+        Log.d(LOG_TAG, "Grouping " + listOfSubscriptions);
+
         // group by GUID
         Map<ParcelUuid, List<SubscriptionAnnotation>> groupedSubInfoList =
                 listOfSubscriptions.stream()
@@ -89,8 +93,8 @@
         annoSelector = annoSelector
                 // eSIM in front of pSIM
                 .thenComparingInt(anno -> -anno.getType())
-                // subscription ID in reverse order
-                .thenComparingInt(anno -> -anno.getSubscriptionId());
+                // maintain the ordering given within constructor
+                .thenComparingInt(anno -> annoList.indexOf(anno));
         return annoList.stream().sorted(annoSelector).findFirst().orElse(null);
     }
 }
diff --git a/tests/unit/src/com/android/settings/network/helper/SubscriptionGroupingTest.java b/tests/unit/src/com/android/settings/network/helper/SubscriptionGroupingTest.java
index 97bdb74..bea7209 100644
--- a/tests/unit/src/com/android/settings/network/helper/SubscriptionGroupingTest.java
+++ b/tests/unit/src/com/android/settings/network/helper/SubscriptionGroupingTest.java
@@ -68,7 +68,7 @@
         List<SubscriptionAnnotation> result = mTarget
                 .apply(Arrays.asList(subAnno2, subAnno1, subAnno3));
         assertThat(result.size()).isEqualTo(1);
-        assertThat(result.get(0)).isEqualTo(subAnno3);
+        assertThat(result.get(0)).isEqualTo(subAnno1);
     }
 
     @Test
