Migratie Übercart 2.x naar Drupal Commerce 1.x - Casussen
CUM: Laat maar zitten (feb. 2016)
Installatie & vereisten
- Ik krijg voortdurend waarschuwingen omtrent afwezigheid Encrypt-module, maar dan moet je ook iets met PHP gaan hobbyen, en daar heb ik geen zin in
- De huidige versie van de Commerce Migrate Übercart-module is 7.28. Er zijn grote verschillen tussen 7.1x en 7.2x. Documentatie van 7.1x is niet relevant voor 7.2x
- When you are ready to begin click "register statically defined migrations" on migrate module's configuration page. [1]
- Go back to the main migrate page and click the name of the commerce_migrate_ubercart group. Run the migrations in order, one-by-one. Grouped migrations can sometimes get wonky if you run them all at once. [2]
Je schijnt een bestaand content-type eerst te moeten verwijderen. Misschien README.TXT lezen?
Interface
- Configuratie-pagina:
Administration » Content » Migrate: Configure Ubercart Migration
- Additionele configuratie-instellingen:
Administration » Content » Migrate: Migrate
- Uitvoeren:
Administration » Content » Migrate: Configure Ubercart Migration: Dashboard
Foutmelding: Already an active process
De module heeft verschillende taken, waarvan CommerceMigrateUbercartCustomerBillingProfile er eentje is. Deze heb ik tot op heden nooit aan de praat gekregen. Voortdurend krijg ik deze foutmelding:
An AJAX HTTP error occurred. HTTP Result Code: 500 Debugging information follows. Path: /batch?id=7&op=do StatusText: Service unavailable (with message) ResponseText: MigrateException: There is already an active process on CommerceMigrateUbercartCustomerBillingProfile in MigrationBase->beginProcess() (line 912 of /var/www/example/sites/all/modules/migrate/includes/base.inc).
Ik zit welliswaar niet zozeer te wachten op de uitkomsten van deze taak, maar het lijkt een voorwaarde te zijn, voor de taak die betrekking heeft op de import van orders.
Task CommerceMigrateUbercartOrder
Gelukt! Zo'n 13.500 orders in 7 minuten, al zijn de orders wel allemaal leeg, en zonder bijbehorende klant. Misschien in combinatie met CommerceMigrateUbercartLineItem toepassen, oid?
Foutmelding: Unfulfilled depencencies: CommerceMigrateUbercartCustomerBillingProfile
Hele tekst van de foutmelding:
Skipped CommerceMigrateUbercartOrder due to unfulfilled dependencies: CommerceMigrateUbercartCustomerBillingProfile
Deze fout trad op bij starten van taak CommerceMigrateUbercartOrder. Dat heb ik niet eerder gehad. Ik kan deze foutmelding niet goed vermijden.
Casus mrt. 2016
Installatie: Vereiste modules
Dit gaat eigenlijk vanzelf goed:
- Commerce Migrate
- Commerce Migrate Ubercart
- Migrate
- Migrate UI
Installatie: Eerst Migrate, dan Commerce Migrate Übercart-modole
Je moet dus eerst Migrate installeren. Dan pas CMU bron. Anders heeft CMU geen toegang tot de hooks van Migrate. Om de hooks en classes van Migrate beschikbaar te maken voor CMU: Clear cache.
Installatie: Versie?
Onderscheid tussen de 7.x-1.x- en 7.x-2.x-tak is van belang. Ihb. is het van belang om de juiste handleiding te gebruiken. De actuele versie is 7.x-2.2, en die gebruik ik
Installatie: Gebruikers moeten aanwezig zijn voor correcte relaties
De readme.txt is wat cryptisch:
You need to choose whether you're going to assign UIDs ownership on incoming products, product display nodes, orders, and customer profiles. If you want to do so, then the users need to exist in the system.
- Uiteraard wil ik graag dat orders met de juiste gebruikers worden geassocieerd
- Matching tussen gebruikers en orders, lijkt puur op UID te gaan. Het is dus belangrijk dat in het nieuwe systeem, dezelfde UID's worden gebruikt
- Hoe dan ook: Eerst gebruikers importeren, dan pas overige objecten.
Installatie: Bestaande producttype verwijderen
Op de doelsite moeten bestaande producttypes verwijderd zijn 2:18. Ik geloof dat hiermee bedoeld wordt, dat het standaard-type verwijderd moet zijn
Installatie: Bestaande orders verwijderen, dan pas producten importeren
In het geval van rollback: Zorg dat er geen orders of orderregels aanwezig zijn, voordat je producten gaat importeren.
Installatie: Bestaande producten verwijderen, dan pas producten importeren
Anders gaat er ook iets mis tav. referentiële integriteit. Ik geloof dat cascaded deletion dan verkeerd loopt.
Installatie: Eerst producten importeren, dan pas orders & orderregels
- Alle producten van alle product-types die voorkomen in de orders, moeten geímporteerd worden voordat orders geïmporteerd kunnen worden
- Ik vermoed dat het verstandig is om producten te importeren via de CMU-module, en niet met bv. de migrate_d2d-module, om zeker te weten dat orders & producten correct met elkaar corresponderen
Installatie: Product_types moeten aanwezig zijn
Voor alle type producten die je installeert, moeten de bijbehorende producttypes aanwezig zijn. Anders zal de site daarom vragen
Installatie: Product display genaamd 'product_display' moet aanwezig zijn
Readme.txt:
You must have an existing Product Display content type named product_display.
Installatie: API-foutmelding
Drush zegt:
commerce_migrate_ubercart_migrate_api supports Migrate API version , Migrate module API version is 2 - migration support not loaded.
Bij eerdere casussen kreeg ik vergelijkbare meldingen via de webinterface. Op dit moment kan ik hier niet veel mee.
Installatie: Actie!
- Alle content verwijderd.
delete_all
en Commerce Backoffice hadden er de grootste moeite mee - Bestaande Drupal Commerce-display-types verwijderd
- Alle producten verwijderd mbv. Commerce Backoffice
- Alle producttypes verwijderd (standaard + één voor dit project)
- Brondatabase geconfigureerd in settings.php
Migrate » Configure Ubercart Migration:
Brondatabase geconfigureerdMigrate » Configure Ubercart Migration:
Mapping naar UID aangevinktMigrate » Configure Ubercart Migration:
katwijk ingevuld als machine name voor UID-identification (?)- Waarschuwing dat producttype product niet bestaat. Deze aangemaakt + aangevinkt dat bijbehorende display ook moet worden aangemaakt
- Op pagina
Migrate
verschijnt nu groep Commerce Migrate Ubercart met zeven items. Als ik geen UID-mapping had aangevinkt, waren het er maar vier. Onder andere ontbrak iets met producten - Gepoogd om
CommerceMigrateUbercartProductProduct
aan de praat te krijgen → Foutmelding → Clear cache + reregister hooks.
Installatie: GetMap 200-foutmelding
Na starten CommerceMigrateUbercartProductProduct
krijg ik foutmelding:
An AJAX HTTP error occurred. HTTP Result Code: 200 Debugging information follows. Path: /batch?id=11428&op=do StatusText: OK ResponseText: Fatal error: Call to a member function getMap() on null in /var/www/example.com/sites/all/modules/migrate/includes/migration.inc on line 1401
Suggesties:
- Ik gebruik Migrate 2.8. Hier suggereert de auteur om versie 2.6 te gebruiken
- Eerst Migrate enablen, dan pas Migrate Commerce Ubercart
Acties:
- Alle Migrate-gerelateerde modules uitgezet
- Handmatig Migrate-module verwijderd
- Migrate geïnstalleerd:
drush en migrate-2.6
(drush-loop) - Commerce Migrate geactiveerd (Migrate Extras ging vanzelf mee). Daarna Migrate UI
- CMU aangezet
- Probleem bleef.
Andere aanpak: Het viel me op dat je de complete configuratie van zo'n migratietaak kunt aanpassen. De velden die niet werden gemapped, daar verwijderd → Import van producten gelukt!