Nach einer Namensänderung des Dateiservers, einer Pfadanpassung im Netzwerk oder dem Wechsel auf ein anderes Netzwerklaufwerk lassen sich Dokumente, die im xRM zu Kontakten oder Vorgängen hinterlegt sind, nicht mehr öffnen. Die Verknüpfung zeigt ins Leere.

Ursache

Werden Dokumente im xRM mit dem Speichermodell „Dateidokument verknüpft" abgelegt, speichert die Sage 100 in der Tabelle BCSPjmDokumente:

  • SourceRoot – den Ablagepfad ohne Dateinamen
  • SourceFile – den Pfad inklusive Dateiname

Über diese Felder erfolgt der Zugriff. Ändert sich der Pfad, sind die Dateien aus dem xRM nicht mehr erreichbar – ohne dass die Datei selbst weg wäre.

Lösung

Ein Standard-Tool zur Massenkorrektur gibt es derzeit nicht. Mit folgendem SQL-Skript lässt sich das Problem aber zuverlässig lösen. Initialisieren Sie @oldPath mit dem alten und @newPath mit dem neuen Pfad – inklusive abschließendem Backslash.

DECLARE @oldPath VARCHAR(100);
DECLARE @newPath VARCHAR(100);

SET @oldPath = '\\cssage01\xRM_Dateiablage\';
SET @newPath = '\\cssage02\xRM_Dateiablage\';

UPDATE BCSPjmDokumente
SET
    SourceRoot = REPLACE(SourceRoot, @oldPath, @newPath),
    SourceFile = REPLACE(SourceFile, @oldPath, @newPath)
WHERE
    SourceRoot LIKE CONCAT(@oldPath, '%')
    AND SourceFile LIKE CONCAT(@oldPath, '%')
    AND Dokument IS NULL;

Die Bedingung Dokument IS NULL schließt sicherheitshalber aus, dass intern in der Datenbank gespeicherte Dokumente angefasst werden – betroffen sind ausschließlich verknüpfte Dateidokumente.

Vorgehen in der Praxis

  1. Backup der xRM-Datenbank, bevor Sie das Skript ausführen.
  2. Skript zunächst ohne UPDATE, sondern als SELECT mit den Filterbedingungen ausführen, um zu prüfen, wie viele Datensätze tatsächlich umgeschrieben werden.
  3. UPDATE ausführen.
  4. Stichprobenartig in der xRM-Oberfläche prüfen, ob ein paar Dokumente wieder geöffnet werden können.

Bei vielen Servernamen-Mixes

Verteilen sich die Dokumente über mehrere alte Pfadwurzeln (z. B. nach mehrfachen Migrationen), genügt es, den UPDATE-Block mit anderen Werten von @oldPath und @newPath mehrfach auszuführen. Die LIKE-Bedingung sorgt dafür, dass jeweils nur die betroffenen Datensätze angefasst werden.

Kontakt