[gelöst]Upgrade 2013 --> 2016

15. April 2016 15:22

Hallo zusammen,

ich habe eine vielleicht ziemlich blöde Frage:

Bei einem Upgrade von 2013 auf 2016 habe ich zunächst wie im MSDN beschrieben in der 2013-Datenbank die Objekte (außer den Tabellen) gelöscht und die Datenbank erfolgreich in 2016 konvertiert und diese synchronisiert. Gleichzeitig habe ich eine fob-Datei mit den 2016-Objekten erstellt und diese dann in die konvertierte DB eingelesen (mit ReplaceAll) und Sync Later. Dann kamen noch die Upgradeobjekte dazu. Soweit ist alles klar.

Was passiert aber jetzt? Nach der Beschreibung müsste ich jetzt synchronisieren, und zwar mit Validate. Und anschließend die Upgradeobjekte laufen lassen. Aber wie soll das gehen? Nachdem ja einige Felder aus der 2013-Datenbank wegfallen werden (davon gehe ich zumindest aus) gibt es beim Sync mit Validate Fehler, außerdem könnte ja dann der Upgrade nicht mehr laufen, wenn die dazu benötigten Felder vorher schon weg sind. Mache ich da einen Denkfehler?

Viele Grüße

Rainer
Zuletzt geändert von rainergaiss am 20. April 2016 21:22, insgesamt 1-mal geändert.

Re: Upgrade 2013 --> 2016

15. April 2016 19:06

hi rainer,

ich geh immer nach saurav's Anleitung vor
http://saurav-nav.blogspot.de/2015/10/microsoft-dynamics-nav-2016-data.html

zu deiner Frage: es kann natürlich zu validation errors kommen - je nachdem, ob du "richtig" gemerged hast.
du solltest dir die fehler ansehen und prüfen, ob die felder tatsächlich gelöscht werden sollen.
durch upgrade-codeunits und tables werden die standardobjekte so "vorbereitet", dass die daten darin nicht verloren gehen (kommen ja beim dataupgrade wieder), sodass dort keine fehler auftauchen sollten.
sind allerdings individuelle felder vorhanden, musst du die dann eben mitmergen, oder per updatecodeunits behandeln - oder einfach forcen, wenn die felder nicht mit nach 2016 sollen.

Re: Upgrade 2013 --> 2016

18. April 2016 11:12

Hi Stephan,

danke für die Antwort. Sie schien mir zunächst weniger hilfreich, da ich das schon wusste, dann habe ich feststellen können, dass offensichtlich im Standard von 2013 nach 2016 keine Felder wegfallen (klar kommen neue dazu), so dass das alles so durchführbar ist. Es lief dann auch alles sauber durch.

Gruß

Rainer

Re: Upgrade 2013 --> 2016

19. April 2016 10:07

Hallo,

ich hänge genau an der selben Stelle fest. Synrchonize Schema Changes läuft nicht durch, da "may delete data" und das Data Upgrade startet nicht, da "current tenant state: 'OperationalWithSyncFailure'".

Sie Aussage "... dass offensichtlich im Standard von 2013 nach 2016 keine Felder wegfallen ..." stimmt so leider nicht. Sync-NAVTenant mit -Mode CheckOnly bringt etwa 30 Meldungen. Nur ein Beispiel ist die Spalte Item.Next Counting Period, die gab es in allen Versionen ab 2013. In 2016 entfällt sie und wird anscheinend ersetzt durch Item.Next Counting Start Date und Item.Next Counting End Date.

Die oben verlinkte Anleitung kenne ich auch, aber auf diese Situation geht sie nicht ein.

Hat jemand schon eine Lösung?

Grüße,
Ralf

Re: Upgrade 2013 --> 2016

19. April 2016 10:29

ich hänge genau an der selben Stelle fest. Synrchonize Schema Changes läuft nicht durch, da "may delete data" und das Data Upgrade startet nicht, da "current tenant state: 'OperationalWithSyncFailure'".


das kann eigentlich nicht sein, denn der Sync nach der Konvertierung sollte noch auf den alten Tabellen laufen, die ja noch nicht geändert wurden. (Steht auch so bei Saurav) Das einzige Problem könnten geänderte Systemtabellen sein, die Felder enthalten, die in der neuen Version nicht mehr enthalten sind. Dann kann mal wieder der gute alte "Upgrade Step 1" nötig sein.

Gruß Fiddi

Re: Upgrade 2013 --> 2016

19. April 2016 10:51

tepler hat geschrieben:Nur ein Beispiel ist die Spalte Item.Next Counting Period, die gab es in allen Versionen ab 2013. In 2016 entfällt sie und wird anscheinend ersetzt durch Item.Next Counting Start Date und Item.Next Counting End Date.


Also bei mir waren die beiden letzteren Felder auch schon in der 2013-Version vorhanden, Next Counting Period ist in der 2016 nicht mehr vorhanden. Aber dennoch hast du vermutlich Recht, denn bei mir war das Feld höchst wahrscheinlich leer und konnte deswegen gelöscht werden. Wo ich ganz große Zweifel habe, ist das Einlesen der neuen, angepassten Objekte. Bislang musste man ja immer ReplaceAll benutzen, und damit flogen die im Step 1 gesicherten Felder raus. Hier gibt es aber keinen Step 1, so dass man möglicherweise beim Einlesen der neuen Objekte den Merge statt Replace nutzen muss. Vielleicht macht dann die allgemeine Updateprozedur die alten Felder weg. Da müsste man sich die Update-Codeunits mal genauer ansehen.

Früher gab es ja immer ein recht umfangreiches Update-Dokument, aber heute wird man ja leider von M$ alleine gelassen und muss sich halb offizieller BLOGs bedienen. Eigentlich sollte man da den Hersteller wieder mehr in die Pflicht nehmen.

Gruß
Rainer

Re: Upgrade 2013 --> 2016

19. April 2016 11:10

Hallo,

wenn sich das in NAV 2016 nicht geändert hat, würde ich folgen Weg gehen:
  • Datenbank konvertieren
  • neuen Service starten
  • Sync mit Validate ausführen. (sollte kein Problem sein, sind ja noch die alten Tabellen)
  • neue Objekte und Upgrade- Toolkit mit Sync=Later einspielen.
  • Upgrade durchführen.
  • Abschließend ein Sync mit Validate (Sollte wieder ohne Probleme durchlaufen, sind ja nur noch die neuen Tabellen/Felder)

Sollte jetzt beim Upgrade was schief gehen, hast du jetzt entweder ein Feld vergessen zu sichern und/oder zu löschen, oder die Konvertierug für diese Tabelle auf Force zu setzen.

Gruß Fiddi

Re: Upgrade 2013 --> 2016

19. April 2016 11:34

Bleiben die alten Felder noch drin, wenn du die neuen Objekte einspielst aber noch keinen Sync machst? Das wäre dann in jedem Fall die Lösung.

Re: Upgrade 2013 --> 2016

19. April 2016 11:44

Bleiben die alten Felder noch drin, wenn du die neuen Objekte einspielst aber noch keinen Sync machst? Das wäre dann in jedem Fall die Lösung.

Die Felder werden erst gelöscht, wenn du einen Sync mit Validate (dann müssen Sie leer sein) oder Force (Dann werden Sie in jedem Fall gelöscht) machst, oder eben das Upgrade durchführst.
Ich bin mir jetzt nicht sicher, ob du zu löschenden Felder während des Upgrades nach dem kopieren/umwandeln leeren musst.

Gruß Fiddi

Re: Upgrade 2013 --> 2016

19. April 2016 11:56

@Ralf:

Soll ich es auf gelöst setzen?

Re: Upgrade 2013 --> 2016

19. April 2016 13:15

@Rainer: Ich bin kurz vor der Lösung und melde mich dann, wenn ich durch bin. Es ist doch etwas anders als hier bisher vermutet. Wenn ich durch bin, schreibe ich die Erkenntnisse hier rein.

Re: Upgrade 2013 --> 2016

19. April 2016 14:08

So, bin durch.

Die Liste von fiddi mit den Änderungen durch NAV 2016:

  1. Datenbank konvertieren
  2. neuen Service starten
  3. Sync mit Validate ausführen - kein Problem, sind ja noch die alten Tabellen
  4. neue Objekte und Upgrade-Toolkit mit Sync=Later einspielen - mit ReplaceAll - damit sind die NAV Tabellen Objekte schon aktuell, die SQL Tabellen noch nicht
  5. Sync mit Validate - sollte ohne Probleme durchlaufen - hierbei wird automatisch der erste Schritt des Upgrades durchgeführt: bei destruktiven Tabellenänderungen sucht NAV nach einer Upgrade Codeunit, die für diesen Fall Anweisungen enthält und führt sie aus (TableSyncSetup Funktionen) (siehe https://msdn.microsoft.com/en-us/library/dn757164%28v=nav.90%29.aspx) - z.B. werden hier die temporären Tabellen wie 'UPG Item' gefüllt
  6. Data Upgrade durchführen - sollte ohne Probleme durchlaufen - hierbei wird der zweite Schritt des Upgrades durchgeführt und die Daten aus den temporären Tabellen in die Tabellen geschrieben
Ich hatte das Upgrade-Toolkit vor dem 2. Sync mit Validate nicht eingespielt (und einige uralte Tabellen, für die es keine Anweisungen hatte) und dadurch die vielen Meldungen.

Wichtige Erkenntnisse:
  • Sync mit Validate ist nicht nur eine einfache Synchronisation der NAV Tabellen Objekte und der SQL Tabellen, sondern führt in Verbindung mit einer vorhandenen Upgrade Codeunit automatisch Funktionen aus
  • Sync-NAVTenant <SERVER> -Mode CheckOnly bringt keine Meldungen für destruktive Änderungen, wenn dafür eine passende Upgrade Codeunit vorhanden ist
  • Sync mit Validate und das Data Upgrade müssen zusammen ausgeführt werden, ansonsten verbleiben die zu migrierenden Daten in den temporären Tabellen und gehen verloren, wenn die Upgrade-Objekte gelöscht werden

Re: Upgrade 2013 --> 2016

19. April 2016 15:03

Klasse, wenn es einen Beitrag des Monats gäbe, hätte ich dich jetzt dafür vorgeschlagen :-D . Es ist mir jetzt ziemlich viel klargeworden. Setzen wir's auf gelöst?

Re: Upgrade 2013 --> 2016

20. April 2016 16:53

Ja, klar, ist gelöst.