diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java
index b1d2f28c3137d176830956aa7bd2a13b983760b3..57739bda76cf581a58549f51f6a1140d540a1b10 100644
--- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java
@@ -194,6 +194,8 @@ public class Case {
     private final SleuthkitEventListener sleuthkitEventListener;
     private CollaborationMonitor collaborationMonitor;
     private Services caseServices;
+    // matches something like '\\.\PHYSICALDRIVE0'
+    private static final String PLACEHOLDER_DS_PATH_REGEX = "^\\s*\\\\\\\\\\.\\\\(PHYSICALDRIVE)\\d*\\s*$";
 
     private volatile boolean hasDataSource = false;
     private volatile boolean hasData = false;
@@ -1305,6 +1307,13 @@ private static void updateGUIForCaseOpened(Case newCurrentCase) {
             String path = entry.getValue();
             boolean fileExists = (new File(path).isFile() || DriveUtils.driveExists(path));
             if (!fileExists) {
+                // CT-7336: ignore relocating datasources if file provider is present and placeholder path is used.
+                if (newCurrentCase.getMetadata() != null
+                        && !StringUtils.isBlank(newCurrentCase.getMetadata().getContentProviderName())
+                        && (path == null || path.matches(PLACEHOLDER_DS_PATH_REGEX))) {
+                    continue;
+                }
+                
                 try {
                     // Using invokeAndWait means that the dialog will
                     // open on the EDT but this thread will wait for an