Dynamics NAV: Mandanten mit verlinkten Objekten umbenennen
Eine Tätigkeit, die man als Navision-Entwickler relativ selten macht, ist das Umbenennen von Mandanten in Dynamics NAV – Eine Sache, die normalerweise auch nicht weiter problematisch ist, solange man eine einfache Standard-Implementierung hat.
Nutzt man aber Linked Objects (wenn man mit SQL-Views arbeitet) kann es schon etwas kniffeliger werden, wie ich selber gerade erfahren durfte.
Aber auch dies ist mit wenigen Handgriffen ganz einfach zu erledigen, wie Ihr im folgenden seht.
Mandanten umbennen
Normalerweise öffnet man einfach den gewünschten Mandanten, geht auf Datei –> Mandanten –> umbenennen und trägt dort den neuen Namen ein. Wenn man nun dies bestätigt, läuft Navision durch alle Tabellen dieses Mandanten und benennt diese im Hintergrund auf dem SQL-Server um.
Besitzt man nun allerding Tabellen-Objekte, die mandantenabhängig (DataPerCompany = Yes) und gleichzeitig Linked Objects sind, dann erscheint folgende Fehlermeldung:
Die Tabelle „Tabellenname“ bezieht sich auf das SQL Server Objekt „db.Mandant$Tabelle“. Sie können verknüpfte Objekte nicht umgestalten.
Mandanten mit verlinkten Objekten umbenennen
Wie man dieses Problem umgeht ist eigentlich ganz logisch und einfach. Ihr müsst nur einge Zwischenschritte durchführen, wie Ihr im folgenden sehen werdet:
- Zunächst werden die Views der verlinkten Tabelle mit dem SQL Management Studio umbenannt.
- Die Navision-Objekte der „View-Tabellen“ exportieren (ich hab es als Txt-Datei exportiert).
- Dann löscht man Navision-Objekte.
- Nun kann der Mandant wie gewohnt umbenannt werden.
- Danach werden die Navision-Objekte wieder eingespielt.
- Nun werden die Views wieder umbenannt, natürlich mit neuen Mandanten-Präfix.
- Schließlich werden die Objekte bei Txt-Export wieder kompiliert (F11).
- Ggf. müssen noch die Views selber angepasst werden, wenn sich diese auf Tabellen des gleichen Mandanten beziehen.
So aufgeschrieben sieht es nach viel mehr Aufwand aus, als es zum Glück ist. Also lasst Euch nicht irritieren 😉