diff --git a/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java b/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
index c0f02cd..0a753b4 100644
--- a/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
+++ b/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
@@ -2267,7 +2267,6 @@
                     ploge("cleanupOnDeviceAccessControllerResources: ex=" + ex);
                 }
                 mSatelliteOnDeviceAccessController = null;
-                mSatelliteAccessConfigMap = null;
                 stopKeepOnDeviceAccessControllerResourcesTimer();
             }
         }
diff --git a/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java b/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
index 315184e..3750dd1 100644
--- a/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
+++ b/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
@@ -41,6 +41,7 @@
 import static com.android.phone.satellite.accesscontrol.SatelliteAccessController.DEFAULT_THROTTLE_INTERVAL_FOR_LOCATION_QUERY_MINUTES;
 import static com.android.phone.satellite.accesscontrol.SatelliteAccessController.EVENT_CONFIG_DATA_UPDATED;
 import static com.android.phone.satellite.accesscontrol.SatelliteAccessController.EVENT_COUNTRY_CODE_CHANGED;
+import static com.android.phone.satellite.accesscontrol.SatelliteAccessController.EVENT_KEEP_ON_DEVICE_ACCESS_CONTROLLER_RESOURCES_TIMEOUT;
 import static com.android.phone.satellite.accesscontrol.SatelliteAccessController.EVENT_WAIT_FOR_CURRENT_LOCATION_TIMEOUT;
 import static com.android.phone.satellite.accesscontrol.SatelliteAccessController.GOOGLE_US_SAN_SAT_S2_FILE_NAME;
 import static com.android.phone.satellite.accesscontrol.SatelliteAccessController.UNKNOWN_REGIONAL_SATELLITE_CONFIG_ID;
@@ -96,7 +97,6 @@
 import android.os.IBinder;
 import android.os.Looper;
 import android.os.Message;
-import android.os.Parcel;
 import android.os.ResultReceiver;
 import android.os.UserHandle;
 import android.telecom.TelecomManager;
@@ -586,7 +586,7 @@
         ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class);
         SatelliteAccessConfiguration satelliteAccessConfig = getSatelliteAccessConfiguration();
 
-        // setup satellite communication allwed state as true
+        // setup satellite communication allowed state as true
         setSatelliteCommunicationAllowed();
 
         // setup map data of location and configId.
@@ -625,6 +625,9 @@
 
         doReturn(true).when(mMockFeatureFlags).carrierRoamingNbIotNtn();
 
+        // Verify if the map is maintained after the cleanup event
+        sendSatelliteDeviceAccessControllerResourcesTimeOutEvent();
+
         // satellite communication allowed state is enabled and
         // regional config id is DEFAULT_REGIONAL_SATELLITE_CONFIG_ID.
         clearInvocations(mockResultReceiver);
@@ -664,16 +667,10 @@
     }
 
     private SatelliteAccessConfiguration getSatelliteAccessConfiguration() {
-        Parcel satelliteAccessconfigParcel = Parcel.obtain();
-
         List<SatelliteInfo> satelliteInfoList = new ArrayList<>();
         satelliteInfoList.add(mSatelliteInfo);
-        satelliteAccessconfigParcel.writeTypedList(satelliteInfoList);
-
         List<Integer> tagIds = new ArrayList<>(List.of(1, 2));
-        satelliteAccessconfigParcel.writeList(tagIds);
-
-        return new SatelliteAccessConfiguration(satelliteAccessconfigParcel);
+        return new SatelliteAccessConfiguration(satelliteInfoList, tagIds);
     }
 
     @Test
@@ -2063,6 +2060,13 @@
         mTestableLooper.processAllMessages();
     }
 
+    private void sendSatelliteDeviceAccessControllerResourcesTimeOutEvent() {
+        Message msg = mSatelliteAccessControllerUT
+                .obtainMessage(EVENT_KEEP_ON_DEVICE_ACCESS_CONTROLLER_RESOURCES_TIMEOUT);
+        msg.sendToTarget();
+        mTestableLooper.processAllMessages();
+    }
+
     private void sendConfigUpdateChangedEvent(Context context) {
         Message msg = mSatelliteAccessControllerUT.obtainMessage(EVENT_CONFIG_DATA_UPDATED);
         msg.obj = new AsyncResult(context, SATELLITE_RESULT_SUCCESS, null);
