diff --git a/ash/webui/print_preview_cros/resources/js/data/destination_manager.ts b/ash/webui/print_preview_cros/resources/js/data/destination_manager.ts
index 58b38a96..af53a665 100644
--- a/ash/webui/print_preview_cros/resources/js/data/destination_manager.ts
+++ b/ash/webui/print_preview_cros/resources/js/data/destination_manager.ts
@@ -71,6 +71,7 @@
     assert(
         !this.sessionContext, 'SessionContext should only be configured once');
     this.sessionContext = sessionContext;
+    this.fetchInitialDestinations();
     this.dispatchEvent(
         createCustomEvent(DESTINATION_MANAGER_SESSION_INITIALIZED));
   }
@@ -92,20 +93,6 @@
     // Digital destinations can be added at creation and will be removed during
     // session initialization if not supported by policy.
     this.insertDigitalDestinations();
-
-    // Request initial data.
-    this.updateState(DestinationManagerState.FETCHING);
-    // TODO(b/323421684): Once the initial local destinations fetch completes
-    // update has initial destination set, determine relevant initial
-    // destination, and create the initial print ticket. If policy restricts
-    // fetching a destination type an empty destination list will be returned.
-    this.destinationProvider.getLocalDestinations().then(
-        (destinations: Destination[]): void => {
-          this.addOrUpdateDestinations(destinations);
-          this.updateActiveDestination(PDF_DESTINATION.id);
-          this.initialDestinationsLoaded = true;
-          this.updateState(DestinationManagerState.LOADED);
-        });
   }
 
   // TODO(b/323421684): Returns true if initial fetch has returned
@@ -184,6 +171,26 @@
     this.destinations[index] = destination;
   }
 
+  // Requests destinations from backend and updates manager state to `FETCHING`.
+  // Once destinations have been stored, the state is updated to `LOADED` and
+  // attempts to select an initial destination.
+  private fetchInitialDestinations(): void {
+    assert(this.isSessionInitialized);
+    // Request initial data.
+    this.updateState(DestinationManagerState.FETCHING);
+    // TODO(b/323421684): Once the initial local destinations fetch completes
+    // update has initial destination set, determine relevant initial
+    // destination, and create the initial print ticket. If policy restricts
+    // fetching a destination type an empty destination list will be returned.
+    this.destinationProvider.getLocalDestinations().then(
+        (destinations: Destination[]): void => {
+          this.addOrUpdateDestinations(destinations);
+          this.initialDestinationsLoaded = true;
+          this.updateActiveDestination(PDF_DESTINATION.id);
+          this.updateState(DestinationManagerState.LOADED);
+        });
+  }
+
   // Insert hard-coded digital destinations into set of known destinations.
   // Function should only be called once per session.
   private insertDigitalDestinations(): void {
diff --git a/chrome/test/data/webui/chromeos/print_preview_cros/capabilities_manager_test.ts b/chrome/test/data/webui/chromeos/print_preview_cros/capabilities_manager_test.ts
index b7ec6b6d..08070e69 100644
--- a/chrome/test/data/webui/chromeos/print_preview_cros/capabilities_manager_test.ts
+++ b/chrome/test/data/webui/chromeos/print_preview_cros/capabilities_manager_test.ts
@@ -40,6 +40,7 @@
   // Initialize the DestinationManager and wait for it to send all events.
   async function waitForDestinationManagerLoad(): Promise<void> {
     const destinationManager = DestinationManager.getInstance();
+    destinationManager.initializeSession(FAKE_PRINT_SESSION_CONTEXT_SUCCESSFUL);
     const activeDestinationChangedEvent = eventToPromise(
         DESTINATION_MANAGER_ACTIVE_DESTINATION_CHANGED, destinationManager);
     return activeDestinationChangedEvent;
diff --git a/chrome/test/data/webui/chromeos/print_preview_cros/destination_manager_test.ts b/chrome/test/data/webui/chromeos/print_preview_cros/destination_manager_test.ts
index fb0e0b3..bf6152b 100644
--- a/chrome/test/data/webui/chromeos/print_preview_cros/destination_manager_test.ts
+++ b/chrome/test/data/webui/chromeos/print_preview_cros/destination_manager_test.ts
@@ -72,13 +72,21 @@
     assertNotEquals(notFoundIndex, pdfIndex, 'PDF destination available');
   });
 
-  // Verify getLocalDestinations is called on construction of manager.
-  test('on create getLocalDestinations is called', () => {
-    const expectedCallCount = 1;
+  // Verify getLocalDestinations is called during initializeSession.
+  test('initializeSession calls getLocalDestinations', () => {
+    let expectedCallCount = 0;
     assertEquals(
         expectedCallCount,
         destinationProvider.getCallCount(GET_LOCAL_DESTINATIONS_METHOD),
-        `${GET_LOCAL_DESTINATIONS_METHOD} called in construction of manager`);
+        `${GET_LOCAL_DESTINATIONS_METHOD} not called`);
+
+    // Initialize destination manager.
+    instance.initializeSession(FAKE_PRINT_SESSION_CONTEXT_SUCCESSFUL);
+    ++expectedCallCount;
+    assertEquals(
+        expectedCallCount,
+        destinationProvider.getCallCount(GET_LOCAL_DESTINATIONS_METHOD),
+        `${GET_LOCAL_DESTINATIONS_METHOD} called`);
   });
 
   // Verify destination manager state updated called when getLocalDestinations
@@ -86,14 +94,18 @@
   test(
       'starting and resolving getLocalDestinations triggers state update',
       async () => {
+        let stateChange =
+            eventToPromise(DESTINATION_MANAGER_STATE_CHANGED, instance);
+        instance.initializeSession(FAKE_PRINT_SESSION_CONTEXT_SUCCESSFUL);
+        await stateChange;
         assertEquals(
             DestinationManagerState.FETCHING, instance.getState(),
             'Fetch in progress');
 
-        const stateChanged =
+        stateChange =
             eventToPromise(DESTINATION_MANAGER_STATE_CHANGED, instance);
         mockTimer.tick(testDelay);
-        await stateChanged;
+        await stateChange;
 
         assertEquals(
             DestinationManagerState.LOADED, instance.getState(),
@@ -101,28 +113,23 @@
       });
 
   // Verify destination manager sets fallback destination to PDF if no other
-  // destinations are returned in local printer fetch.
+  // destinations are returned in local printer fetch and session is
+  // initialized.
   test(
       'starting and resolving getLocalDestinations triggers state active' +
           ' destination update',
       async () => {
         assertEquals(
-            DestinationManagerState.FETCHING, instance.getState(),
-            'Fetch in progress');
-        assertEquals(
             null, instance.getActiveDestination(),
             'Fallback destination is not set before loading local printers');
 
-        const stateChanged = eventToPromise(
+        // Resolve local printers fetch and initialize session.
+        const activeDestChange = eventToPromise(
             DESTINATION_MANAGER_ACTIVE_DESTINATION_CHANGED, instance);
-
-        // Resolve local printers fetch.
+        instance.initializeSession(FAKE_PRINT_SESSION_CONTEXT_SUCCESSFUL);
         mockTimer.tick(testDelay);
-        await stateChanged;
+        await activeDestChange;
 
-        assertEquals(
-            DestinationManagerState.LOADED, instance.getState(),
-            'Fetch complete');
         assertDeepEquals(
             PDF_DESTINATION, instance.getActiveDestination(),
             `Fallback destination is ${PDF_DESTINATION.displayName}`);
@@ -265,6 +272,7 @@
       async () => {
         const destinations = [createTestDestination()];
         destinationProvider.setLocalDestinationResult(destinations);
+        instance.initializeSession(FAKE_PRINT_SESSION_CONTEXT_SUCCESSFUL);
         const stateChanged =
             eventToPromise(DESTINATION_MANAGER_STATE_CHANGED, instance);
 
@@ -286,7 +294,7 @@
         const testDestination = createTestDestination();
         testDestination.printerManuallySelected = true;
         instance.setDestinationForTesting(testDestination);
-
+        instance.initializeSession(FAKE_PRINT_SESSION_CONTEXT_SUCCESSFUL);
         let managerDestinations = instance.getDestinations();
         let expectedDestinations = [PDF_DESTINATION, testDestination];
         assertDeepEquals(expectedDestinations, managerDestinations);
diff --git a/chrome/test/data/webui/chromeos/print_preview_cros/destination_select_test.ts b/chrome/test/data/webui/chromeos/print_preview_cros/destination_select_test.ts
index 9448f456..9aec8a7 100644
--- a/chrome/test/data/webui/chromeos/print_preview_cros/destination_select_test.ts
+++ b/chrome/test/data/webui/chromeos/print_preview_cros/destination_select_test.ts
@@ -41,6 +41,7 @@
 
     DestinationManager.resetInstanceForTesting();
     destinationManager = DestinationManager.getInstance();
+    destinationManager.initializeSession(FAKE_PRINT_SESSION_CONTEXT_SUCCESSFUL);
 
     element = document.createElement(DestinationSelectElement.is) as
         DestinationSelectElement;
@@ -125,10 +126,7 @@
             isChildVisible(element, loadingSelector),
             `${loadingSelector} should be visible`);
 
-        // Move time forward to resolve getLocalDestinations in manager and
-        // ensure manager is initialized.
-        destinationManager.initializeSession(
-            FAKE_PRINT_SESSION_CONTEXT_SUCCESSFUL);
+        // Move time forward to resolve getLocalDestinations in manager.
         const changeEvent =
             eventToPromise(DESTINATION_SELECT_SHOW_LOADING_CHANGED, controller);
         mockTimer.tick(testDelay);
