Zielstellung

Diese kleine Beschreibung soll erklären, wie man bei einer Migration von Virtuemart von der unter Joomla 1.5.x gebräuchlichen Version 1.1.9 auf die neue Version 2.0.x migriert - dann möglichst unter einer Joomla 2.5.x. Umgebung.

 

Vorab etwas Grundsätzliches

Folgendes ist wichtig zu wissen: VirtueMart 2.0.x ist nicht nur eine forgeschriebene 1.1.9-Version sondern quasi eine neue Generation von VirtueMart. Es enthält so viele und gravierende Neuerungen, dass hiermit auch nicht mehr einfach nur ein Upgrade/Update vorgenommen werden kann, sondern unbedingt eine Migration notwendig ist. D.h. VirtueMart 2.0.x muss quasi neu installiert werden und dass alte VirtueMart aus den Verzeichnissen entfernt werden. Die VirtueMart-Daten müsen dann in die neuen Tabellen übertragen werden. Hierfür stellt das Neue VirtueMart ein Migrationstool zur Verfügung, welches als Bestandteil von VM 2.0.x gleich mit installiert wird und im VM Menübaum eingebunden ist.



 

Wichtig! Bei der Migration werden lt. Aussagen von VM-Entwickler "Milbo" nicht alle VM übertragen. Es wird also ggf. Verluste geben. So werden z.B. keine Produkttype-, Produktattribute- u.ä. Daten übertragen. Hier wäre dann also eine Nachpflege notwendig.

Prinzipiell sollte die wirklich neueste Version von VM für die Migration verwendet werden, die z.B. hier heruntergladen werden kann: http://dev.virtuemart.net/projects/virtuemart/files. Denn auch das Migrationsscript hat z.B. in der Version 2.0.2 leichte Macken. Ggf. ist also für diesen Zweck eine neuere Beta besser geeignet als eine stabile frühere Vorgängerversion.

 

Prinzipiell sollten folgende eigentlich üblichen Regeln beim Migrieren beachtet werden:

  1. Unbedingt vorher das gesamte Projekt sichern - z.B. mit Akeeba Backup
  2. Nicht im produktiven Produktivsystem migrieren - unbedingt vorher das komplette System (Scripte und Datentabellen) in eine Testumgebung kopieren - wenn möglich mit xampp auf einem lokalen System. Ich bevorzuge lieber immer ein Parallelprojekt auf dem Zielhost, weil ich dort dann definitiv die gleichen Ausgangsbedingungen habe - z.B. einfach als eine Subdomain. Außerdem läßt sich das Projekt so schneller in ein Parallelverzeichnis kopieren - z.B. per putty in einer SSH-Sitzung. Das aufwändige mehrmalige Transferieren per ftp, speziell bei umfangreichen Projekten bleibt einem zeitrelevant erspart.
  3. Evtl. sollte man sich in einer weiteren Testumgebung erst noch mal ein Joomla 2.5 mit einem jungfräulichen VM 2.0 installieren und sich so mit dem VM vertraut machen - auch um noch mal sicherzugehen, dass auf dem Zielsystem dann alles so funktionieren wird, wie erwartet. Ich gehe sogar noch ein Schritt weiter bezüglich dieser Installation: Diese Installation ist mein eigentliches Zielsystem. Heißt, ich migriere in der Kopie des alten Projektes VirtueMart und dann Joomla und dann übertrage ich die Datenbanktabellen aus diesem funktionierenden Projekt in meine jungfräuliche Installation. Der Vorteil. Ich schleppe nicht den ganzen rudimentären Ballast aus dem alten Projekt in mein Neues.

Folgendes rät Milbo dazu im engl. Originalartikel vor Migrationsbeginn außerdem an:

  • In der php.ini sollten die Werte für max_execution_time und memory_limit erhöht werden - möglichst bis an die zulässigen, i.d.R. vom Hoster begrenzten Werte. Es soll vermieden werden, dass das Migrationsscript evtl. wg. dieser beiden Grenzwerte in der Ausführung unterbrochen würde, denn das würde einen ordentlichen Datencrash erzeugen.
  • Der Debug-Modus unter Joomla und unter VM sollte deaktiviert werden.

 

Migration von VM in Joomla 1.5 oder in Joomla 2.5

Migriere ich erst Joomla auf 2.5. und dann VM oder wie läuft das ab?
Ja, diese Frage wird in der o.g. Originalbeschreibung von Milbo eigentlich nicht beantwortet. Dazu sollte man erstmal wissen, dass lt. Aussagen von virtuemart.net die Version 2.0.2 sowohl unter 2.5 und 1.7 als auch unter 1.5 läuft! Wenn man das weiss, wird die Vorgehensweise schon entspannter.

Also im bestehenden Joomla 1.5.x zunächst das VM auf 2.0.2 migrieren, so wie nachfolgend beschrieben, und dann - für die die das noch vorhaben - das Joomla selbst migrieren, oder so wie ich es oben vorgeschlagen habe nur die VM Datentabellen aus dem migrierten VM 2.0. unter J!1.5. in das jungfräuliche J!2.5 mit VM 2.0 übertragen (per SQL-Export/Import z.B. mit phpMyAdmin). 

Allerdings geht es nach meinen Tests auch umgekehrt. Zuerst das Joomla von 1.5 auf 2.5 migrieren. Dazu das jUpgrade verwenden, was bei mir in der Version 2.5.1 zuverlässig funktionierte, in früheren Versionen leider nicht so. Die Verfahrensweise wird dann hier etwas anders sein, allerdings etwas leichter. Ein wesentlicher Unterschied besteht dann im Handling mit dem von jUpgrade angelegten Verzeichnis /jupgrade/. Ich habe das nach erfolgreicher J!-Migrierung komplett verschoben in die Webserverwurzel und den Pfadnamen dann ausgetauscht gegen den früheren und den alten dann als alte Originalversion gekennzeichnet. So stimmen dann gleich die ganzen Konfig.angaben und müssen nicht erst noch alle umgeschrieben werden.

 

Nun die notwendigen Schritte zur eigentlichen Migration

Beachten, dass wenn man in einer Projektkopie arbeitet, dass alles Einträge in der configuration.php angepasst sind auf die Projektkopiegegebenheiten (Pfade für temp und logs, DBname, DBuser, etc.).

  1. Die dortigen Bilder für die Produkte, Kategorien, Hersteller etc. müssen verschoben werden, damit das neue VM 2.0 diese nach der Migration finden kann. Die Order /products/, /categories/ und /vendors/ unter /components/com_virtuemart/shop_image/ müssen rekursiv verschoben werden nach /images/stories/virtuemart/.
  2. Die altenVM-Verzeichnisse umbenennen z.B. in /com_virtuemart_1.1.9/, damit diese für das neue VM nicht mehr sichtbar sind und bei der Neuinstallation von VM 2.0. nicht als schon existent stören - sowohl im Komponenten-Verzeichnis /components/ als auch im Admin-Verzeichnis unter /administrator/components/.
  3. Sämtliche VM-Erweiterungen (Plugins und Module) müssen deaktivert werden. Im Prinzip können diese aber auch gleich deinstalliert werden, weil diese unter VM 2.0 dann i.d.R. eh nicht mehr funktionieren werden. Nicht funktionierende Plugins/Module werden beim Frontend-Projektaufruf Fehler verursachen und die Seitenanzeige darduch komplett verhindern.
  4. Die Standard-Frontendsprache von Joomla sollte genau auf die Sprache gestellt werden wie unter VM die Originaltexte z.B. für die Produkt- und Kategoriebeschreibungen abgelegt sind. Das ist wichtig, weil VM unter 2.0 die Mehrsprachigkeit unterstützt und sonst hier eine falsche Zuordnung trifft, die manuell kaum zu entknoten ist.
  5. Jetzt installieren von Virtuemart 2.0. per Joomla-Erweiterungsinstaller.
  6. Dann die Installation des AIO-Archives (all-in-one, welches die VM-Erweiterungen als Paket enthält und auch die Sprachdateien für die Übersetzungen u.a. in Deutsch).
  7. In der Shop-Konfiguration muss die Standard-Shopsprache eingestellte werden, auch dann wenn Ihr Shop oder Joomla nicht als mehrsprachig betrieben wird. Dann die Einstellungen speichern!
  8. In der Shop-Administration muss die Option "Datenbank Aktualisierungs-Werkzeug aktivieren" auf an geschaltet werden, Einstellung speichern
  9. Aufruf der VM-Menüeinträge Werkzeuge > Aktualisierung/Migration und dort den Tab "Migration"
  10. Auswählen Radiobutton "Alles" und Klick auf Schaltfläche "Migration starten".
  11. Es muss so oft auf "Start Migration" geklickt werden, bis alle Produkt migriert sind.

 

In Folge der Migration kann der Bericht über erfolgreiche Aktivitäten dann etwa so lauten:

Start with a new migration process and setup log maxScriptTime 23 maxMemoryLimit 245
703 Media für product im Verzeichnis images/stories/virtuemart/product/ synchronisiert
328 Media für category im Verzeichnis images/stories/virtuemart/category/ synchronisiert
1 Media für manufacturer im Verzeichnis images/stories/virtuemart/manufacturer/ synchronisiert
3 Media für vendor im Verzeichnis images/stories/virtuemart/vendor/ synchronisiert
Processed 4 vm1 shoppergroups time: 0.0045571327209473
Looks everything worked correct, migrated 710 categories
Looks everything worked correct, migrated 710 categories xref
Looks everything worked correct, migrated 1 manufacturer categories
Looks everything worked correct, migrated 6 manufacturers
Found 585 vm1 products to import
Worked on migration for 14.885646820068 seconds
Migration finished

Warnung

shopper_group_name war nicht einzigartig, angefügte Zufallszahl: #__virtuemart_shoppergroups

info

Info: port shoppers found 112 vm1 entries for migration
Info: Processed 112 vm1 users time: 0.51990389823914
Info: port ST addresses found 0 vm1 entries for migration
Info: vendor 1 Stored
Info: Migration: 535 products processed
Info: port Orders found 86 vm1 entries for migration
Info: Migration: 86 orders processed

 

Der Umfang und die Ergebnisse der Migration

Wie oben schon erwähnt, macht es Sinn mit der wirklich aktuellsten Version von VM die Migration durchzuführen, weil auch dieses Tools nach wie vor weiterentwickelt wird und somit die Chance besteht, dass weitere Datenbanktabellen von der Migration erfasst werden. Bei meinen Importen habe ich mit 2.0.3.beta gearbeitet und es wurde folgendes erfolgreich migriert:

  • Produkte und Kategorien sowie deren Referenzierung
  • Kundengruppen, Kunden und Bestellungen/Historie

Nicht migirert wurden und müssen deshalb manuell nachgepfelgt werden:

  • die Versand- und Bezahlarten
  • Produktattribute und -typen

 

Was die Datenbanktabellen anbetrifft, so werden diese bei der Migration als neue Varianten mit einem neuen Präfix abgelegt. D.h. aus den vorherigen Tabellen mit dem Präfix z.B. jos_vm_ wird jos_virtuemart_. Die alten Tabellen bleiben erhalten und stehen für evtl. Notzugriffe oder manuelle Nachimports nach wie vor zur Verfügung. Werden die Daten wie oben angeregt in ein anderes Projekt übertragen, muss man also auf diese mit den im Präfix enthaltenem _virtuemart_ zugreifen. Im Zielprojekt ist zu prüfen was in der Konfiguration für VM als Präfix eingestellt ist.

 

Module und Plugins

Module die unter VM 1.1.x liefen, sind unter 2.0.x i.d.R. nicht mit der Komponente kompatibel. Deshalb sollten diese auch vor der Migration deaktiviert oder deinstalliert werden, weil diese bei Seitenaufruf sicher zu Fehlern führen werden.

VM bringt im Paket AIO einen Satz neuer Versionen dieser Module. Ein Kollision bei der Installation zw. den alten und neuen Varianten gibt es nicht, weshalb eine Deinstallation der alten Erweiterungen also nicht zwingend notw. ist. Wer evtl. alte Erweiterungen nach einer Anpassung an 2.0.x weiter nutzen will kann diese zu diesem Zweck ja installiert lassen und nach Anpassung dann wieder aktivieren.

Die neuen Varianten der Erweiterungen sind nach der Installation daran zu erkennen, dass deren Titel mit "VM - " beginnt.

Hier eine kurze Entsprechungstabelle der Module und Plugins, wobei positiv anzumerken ist, dass unter VM 2.0. nun alle VM-Plugins, die frührer reine VM-Erweiterungen waren nun in der Joomla-Pluginliste geführt werden. Diese werden folglich auch von hier aus konfiguriert und im Shop dann nur noch z.B. den Versand- oder Zahlungsarten zugewiesen.

Erweiterungsscript 1.1 2.0 Vers.
Nr.
Funktionsumfang evtl. Titel
projektabhängig
mod_vm_prod_cat_full ja nein nicht genutz Zeigt eine Liste von Virtuemart-Kategorien und/oder Unterkat. im Menü-Stil Virtuemart Full Category List
mod_catselectlist ja nein nicht genutzt Erzeugt eine Selektionsliste von VM-Kategorien Kategorie-Selektliste
mod_dd_cat_ajax_vm ja nein

Projekt-bezogen genutzt

Eigenentw. von mir:
Ajax-Mod. zur Category-Schnellauswahl und Suche per Drop-Down-Listen

Produkt-schnellauswahl
mod_virtuemart_cart ja ja   Warenkorbanzeige  
mod_virtuemart_product -- ja   Multifunktions-Modul mit einstellbarer Anzeige ausgewählte Produkte in der Form:
- Aktionsprodukte
- neueste Produkte
- zufällige Produkte
- meistverkaufte Produkte

VM - Best Sales
VM - Featured Prod.
...

mod_virtuemart_login ja nein   Anmeldeformular für Shop-Registrierung/Anmeldung Webshop-Anmeldung
mod_virtuemart ja nein   Umfangreiches VM-Hauptmodul mit Shopfunktionen als "Alles-in-einem Modul" mit Konfigurationsmöglichkeit was angezeigt werden soll (kategorien, login, cart ...) Shop-Produktbereiche
mod_product_categories ja nein   Anzeige nur von Shopkategorien als Menü Produktbereiche
mod_virtuemart_category -- ja   Zeigt eine Kategorieliste mit nur max. 2 Ebenen an. Kategorien
mod_virtuemart_latestprod ja nein   Anzeige der zuletzt veröffentlichten Produkte Neueste Produkte
mod_virtuemart_seach ja ja     Shopsuche
mod_productscroller ja nein   Modul in dem Produkte als Thumbnails scrollen üblich ohne
mod_virtuemart_currencies -- ja   Modul zur Auswahl der Benutzerwährung VM - Currencies Selector
mod_virtuemart_manufacturer -- ja      
com_virtuemart_bot ja z.T.   SEF-ServiceMap-Plugin zur Darstellung von Shop-Kategorien innerhalb der Sitemap-Komponente  
virtuemart -- ja   J!-Search-Plugin VM - Search, Virtuemart Product
VM - Custom, customer text input -- ja   vmcustom -> textinput VM - Custom, customer text input
VM - Custom, product specification   ja   vmcustom -> specification  
VM - Custom, stockable variants   ja   vmcustom -> stockable  
VM - Payment, Standard   ja   vmpayment -> standard    
VM - Payment, Payzen   ja   vmpayment -> payzen  
VM - Payment, Authorize.net   ja   vmpayment -> authorizenet  
VM - Payment, Paypal   ja   vmpayment -> paypal    
VM - Shipment, By weight, ZIP and countries   ja   vmshipment -> weight_countries  

 

Migration finished

Start with a new migration process and setup log maxScriptTime 23 maxMemoryLimit 245

 

Eine alternative Vorgehensweise ist auch hier zu finden:

http://www.schaffrath24.de/index.php/migration-virtuemart

 

 

Wenn Ihnen dieser Beitrag geholfen und viel Zeit gespart hat, zeigen Sie sich erkenntlich: Über einen Klick auf Google+1 oder Rückmeldungen freue ich mich. Zeigen Sie mir, dass sich die Mühe für die Beitragerstellung gelohnt hat. Schenken Sie auch den Produktwerbungen Ihre Beachtung, denn damit wird mein Aufwand für diese Beiträge refinanziert.