Migration de Prestashop 1.6 vers la 1.7: les problèmes et la méthode

SEO Pour créer, rédiger et optimiser le SEO de vos pages web --> Contactez-nous


Beaucoup de sites de e-commerce basés sur Prestashop veulent passer à la version 1.7 mais ceci ne se fait pas sans mal.

Parfois, il est même conseillé de rester dans les 1.6 (qui continuent d'évoluer ... pour l'instant).

Parfois, il vaut mieux carrément tout recréer plutôt que de tenter une migration.

Voici quelques points particuliers des difficultés et de la méthode si on ne veut pas que le passage à Prestashop 1.7 soit un massacre..

(Par ailleurs, n'hésitez pas à nous contacter si vous avez une migration à faire, nous saurons faire une cotation au forfait et vous dire sans ambages si cela vaut le coup et le coût, si 'il ne vaut pas mieux tout recommencer ou rester sur une version 1.6.x).

En premier lieu, répétons le: il n'y a quasiment pas de mise à jour automatique d'un Prestashop 1.6.x à un Prestashop 1.7 même si Prestashop le promet ! (voir en fin d'article)

1) Il faut donc créer un second environnement si on en n'a pas (bac à sable) et ensuite"recréer la boutique".

2) Ensuite, on va reconfigurer la boutique 1.7 comme la 1.6 : il est possible d'automatiser la configuration en développant un script (cette automatisation est importante en vue de la migration).

3) Puis, il faut passer au gros morceau qu'est l'importation des données de la 1.6 dans la 1.7 (clients, commandes, catalogue, catégories, pages cms, ...). L'import s'effectue avec des copies de fichiers, de tables de la base de données (avec une moulinette pour faire entrer les données de la 1.6 dans la 1.7).

4) Vient alors le moment de réinstaller les modules dans leur version pour la 1.7 ou de les adapter ou de les remplacer. Un travail de recherche parfois important, avant la migration, est nécessaire pour savoir quels modules seront à redévelopper/changer. Certains modules ont disparu dans Prestashop 1.7, d'autres ne sont pas mis à jour, d'autres sont payant ou gratuits (module RGPD par exemple)

Ne pas oublier: le script d'importation doit importer dans la 1.7 les données des modules dans la 1.6.

5) Eternel problème... le design..

Si on garde le même template, et qu'il n'existe pas en version Prestashop 1.7, il faut recoder le thème.

Le plus simple est de partir du thème classic ou du starter thème fournis par Prestashop pour la 1.7 et tout recoder.

Le moins onéreux est de changer de thème.

Attention au fait qu'en général, le thème contient les templates des emails. Si il y a changement de thème, il faut penser à remettre en place des balises additionnelles pouvant servir par exemple à des codes de suivi .

En vrac:

  • La contrainte majeure n'est pas de réussir à recréer la boutique avec ses données mais d'avoir automatisé l'import/la configuration pour pouvoir effectuer la migration en quelques heures (il faut passer la boutique 1.6 en maintenance pour ne pas perdre de données)
  • Si des surcharges (modifications du comportement du core de Prestashop) ont été mises en place, il faut les reproduire pour la 1.7.
  • Il faut vérifier que le core de Prestashop 1.6 n'a pas été modifié avec des modifications des fichiers natifs. Si tel est le cas, il faut reproduire ces modifications dans des surcharges ou mieux encore si possible avec des hooks, ce qui implique parfois d'avoir à examiner TOUT le code de la boutique s'il n'y a pas eu de document traçant toutes les transformations faites.
 
Import des données
  • Prestashop 1.7 installe près de 270 tables ! De nombreuses tables sont identiques à celles de Prestashop 1.6 et pour celles-ci, il est possible d'effectuer des copies des tables de la 1.6. Ces copies impliquent de vérifier que les liens entre les tables seront toujours ok (par exemple : il faut vérifier par exemple que l'identifiant "id_currency" importé est toujours ok dans la 1.7).
  • Même en connaissant les tables identiques entre la 1.6 et la 1.7, il faut vérifier pour chaque boutique si un module n'a pas modifié une table (en ajoutant une colonne). Il faut alors soit importer la colonne (si le module dans la 1.7 fonctionne pareil), soit créer un script pour importer ces données dans une nouvelle table pour une utilisation par un nouveau module/une adaptation du module pour la 1.7
  • Certaines tables de la DB sont différentes, il faut développer des scripts permettant d'importer les données dans la 1.7.

D'autres problèmes en vrac:

Appels externes: Prestashop 1.7 fait beaucoup d'appels externes. Très vite, à cause d'un module mal "redéveloppé", ceci peut être bloquant (le site ou le bo tournent en rond ou tout est bloqué) et il faut parfois vérifier toutes les données pour voir si elles sont nécessaires (et leur appel aussi)

Modules: certains modules ne sont pas (encore ?) correctement redéveloppés pour Prestashop 1.7 (par exemple en Octobre 2018, les développeurs du module Leetchi veulent checker que le retour de leetchi est bien effectué avec une requête de type "post" alors que leetchi effectue une requête de type "get" -- la requête de type "post" est effectué sur la page de validation qui enregistre le paiement ou non de la commande).

Transporteurs multiples:  Prestashop 1.7 ne gère pas les commandes où les produits ont des transporteurs différents/communs --> il va donc falloir tester tous les cas possibles dans la 1.6 et noter le comportement puis le remettre en place dans la 1.7. Ceci implique de modifier sérieusement le core de prestashop (sélection des transporteurs / formulaire sur la page de paiement / affichage).

 

Au final, il est impossible de savoir combien de temps et combien d'argent coûte une migration Prestashop 1.6 -> Prestashop 1.7.

Chaque site a ses propres caractéristiques et il faut avoir au moins l'accès au back-office avant de faire une cotation sérieuse.

Méfiez-vous des vendeurs de soupe qui vous garantissent une migration rapide et sans danger, beaucoup de boutiques ont ainsi disparu ou sont cassées donc déjà, avant toute chose, faites une sauvegarde et vérifiez que le prestataire travaille sur un environnement séparé (bac à sable).

La migration "automatique" de Prestashop de 1.6 à 1.7 fonctionne-t-elle vraiment ?

Typiquement, Prestashop propose un tuto ici en disant qu'il est possible désormais d'effectuer une mise à jour automatisée de Prestashop 1.6 vers 1.7. Sauf que ça fonctionne si vous êtes déjà dans une version 1.6 assez avancée et que vous n'avez pas trop customisé votre Prestashop.

Dans tous les cas, il vaut mieux, encore une fois, créer un bac à sable pour faire la mise à jour, au cas où ...

Il faut savoir qu'avec une mise à jour automatique : - tous les modules non natifs seront désactivés - le thème de la 1.6 est désactivé et remplacé par le thème classic de prestashop 1.7. Il faut donc recoder le thème de la 1.6 /changer le thème / adapter le nouveau thème.  
Outre le problème des modules, il faudra donc effectuer avant la maj une vérification des surcharges (elles ne fonctionneront certainement plus après la maj => il faudra sans doute les adapter)  
Il faudra également avant la maj auto effectuer un travail préparatoire : choix d'un nouveau thème , liste des modules et de leur compatibilité , liste des surcharges existantes, liste des fichiers du core éventuellement modifiés, ...  
 
En réalité, cette migration automatique peut fonctionner dans le cas où le prestashop n'a pas été trop bricolé (pas de modification des tables natives, peu de surcharge, pas de modification du core) et encore, on peut avoir des problèmes avec le script d'installation.  
 
Voici concrètement ce que nous avons pu tester avec la mise à jour dite automatique de Prestashop:
 
On retrouve dans la boutique uniquement le catalogue, les clients, à savoir les objets natifs de prestashop (pas de module, thème à recoder/changer, surcharges à recréer) => pas de modules, pas de thème.
 
L'installation des modules 1.7 n'est pas aussi facile qu'on pourrait le penser : il faut vérifer module par module la faisabilité (que faire d'un module qui efface ces données à l'installation), il faut remettre en place les surcharges.
 
Si la mise à jour auto peut être réalisée avec le module 1 Click upgrade de prestashop, il est également possible d'effectuer la mise à jour manuellement.
 
Si la mise à jour ne fonctionne pas avec le module de maj auto, la mise à jour manuelle semble pouvoir aller plus facilement à son terme (même si des bugs apparaissent à la fin de la procédure, l'admin n'a plus les droits pour consulter ses clients :-)).
 
 
TEST DE LA PROCEDURE DE MAJ MANUELLE OFFICIELLE

  - Suivi de la procédure manuelle officielle : https://www.prestashop.com/fr/blog/mettre-a-jour-ma-boutique-prestashop-1-6-vers-1-7 sur la boutique d'un client (1.6.1.7)  
 
- Suivi de la procédure "Migration manuelle":   
 
"1) Faire des sauvegardes"
- Nous avons créé une copie de la boutique 1.6 (fichiers + bdd) = un bac à sable
 
"2) Récupérer les nouveaux fichiers"
- Téléchargement de la dernière version stable de presta 1.7 (à ce jour la 1.7.5.2)
 
"3) Déplacer les anciens fichiers"
- Prestashop demande de déplacer tous les fichiers de la boutique dans un dossier "OLD"
 
"4) Charger les nouveaux fichiers"
- Les fichiers de la 1.7 doivent être placés à la racine du site.
 
"5) Récupérer les éléments 1.6"
- Les images, les fichiers téléversés et les fichiers téléchargeables, ainsi que le fichier de configuration de la bdd sont à mettre en place dans la 1.7 en les sortant du dossier OLD précédemment créé.
/img
/upload
/download
/config/settings.inc.php
 
"6) Lancer la mise à jour"
- Il faut lancer le script de mise à jour de la boutique: http://mon-site.fr/install/upgrade/upgrade.php
 
=> Test avec (php5.6*) avec l'erreur suivante et il était impossible de relancer le script (le script indiquait l'erreur 28 => qui correspond à une maj déjà réalisée => le prestashop n'est pas pour autant migrer)
This page contains the following errors:
error on line 679 at column 1: Extra content at the end of the document
Below is a rendering of the page up to the first error.
 
*le script aurait dû fonctionner avec cette version, cf:  https://devdocs.prestashop.com/1.7/basics/installation/system-requirements/  
 
 
----
=> Le test avec php 7.2.2 aboutit à la même erreur
 
Si on relance la page d'upgrade. La page retourne : 
"Error #28: The shop is already at the version you try to upgrade to."

 
 
Cette erreur est documentée ici : https://devdocs.prestashop.com/1.7/basics/keeping-up-to-date/upgrade/  . Elle indique que le prestashop est bien upgradé.
 
Il faut maintenant changer le nom ou supprimer du répertoire install.
 
Vous pouvez finalement accéder au back-office en accédant à l'url monsite.fr/admin.
 
L'accès au back-office peut-être quelque peu chaotique : notre utilisateur "SuperAdmin" n'avait plus tous les droits et avait par exemple le message "Accès interdit" lors de l'ouverture du catalogue, des commandes et des clients. Il est possible de résoudre ce problème via phpmyadmin. 
 
=> Suite à ces problèmes, nous avons testé le module 1 click upgrade sur la même boutique. Le module de mise à jour automatique a retourné le bug suivant (la boutique n'était plus fonctionnel suite à cette erreur)
All files upgraded. Now upgrading database...
[Ajax / Server Error for action upgradeDb] textStatus: "error " errorThrown:"Internal Server Error " jqXHR: "
500 Server Error
Oops, something went wrong.
  
 
 
"Conclusion"
- La procédure se termine exactement par ce message de prestashop:
"Félicitations, votre boutique est à jour sur Prestashop 1.7 !
En quelques étapes simples, nous avons migré la boutique de Prestashop 1.6 à 1.7.
A présent, prenez le temps de découvrir toutes les nouveautés de votre nouvelle version afin d’améliorer l’expérience de vos clients et vos ventes. Et n’oubliez pas que la communauté Prestashop est bien présente pour vous aider en cas de besoin sur son forum et son blog."
 
Si vous arrivez au bout du script de maj manuelle, attention : si la boutique fonctionne désormais avec la version 1.7 de prestashop beaucoup d'éléments sont manquants après la mise à jour et la procédure est très incomplète:
 
- il faut recoder le thème (ou en changer)
 
- les modules de la 1.6 n'ont pas été migrés. Il faut chercher module par module s'il existe une version 1.7. Si elle n'existe pas, il faut la remplacer par un équivalent (ou coder from scratch un nouveau module). Si elle existe, il faut s'assurer que le module ne va pas effacer ses données 1.6 dans la bdd en s'installant ou encore que ses données enregistrées dans la bdd version 1.6 sont toujours exploitées (afin de conserver une bdd avec uniquement des "données utiles").
 
- le script ne nettoie pas la base de données : si un module 1.6 a créé des tables, les tables ne sont pas nettoyées. S'il est heureux que le script de mise à jour n'efface pas les données des modules pendant la migration, ces données peuvent être superflues si le module n'est pas réinstallé dans la 1.7 (ou que la version 1.7 du module n'utilise plus les mêmes tables dans la bdd).
 
- en déplaçant tous les fichiers de la 1.6 dans un dossier old et en récupérant uniquement les images et les fichiers uploadés/téléchargées, de nombreux fichiers sont perdus en route (par exemple, les fichiers de vérification du site auprès de google, bing, ...). De plus, les modules peuvent générer des fichiers (des logs, des pdfs, stockés des images). Il faudra récupérer ces fichiers dans le dossier old, si un module est réinstallé.
 
 
 - Suivi de la procédure "Migration manuelle":    "1) Faire des sauvegardes" - Nous avons créé une copie de la boutique 1.6 (fichiers + bdd) = un bac à sable   "2) Récupérer les nouveaux fichiers" - Téléchargement de la dernière version stable de presta 1.7 (à ce jour la 1.7.5.2)   "3) Déplacer les anciens fichiers" - Prestashop demande de déplacer tous les fichiers de la boutique dans un dossier "OLD"   "4) Charger les nouveaux fichiers" - Les fichiers de la 1.7 doivent être placés à la racine du site.   "5) Récupérer les éléments 1.6" - Les images, les fichiers téléversés et les fichiers téléchargeables, ainsi que le fichier de configuration de la bdd sont à mettre en place dans la 1.7 en les sortant du dossier OLD précédemment créé. /img /upload
/download
/config/settings.inc.php   "6) Lancer la mise à jour" - Il faut lancer le script de mise à jour de la boutique: http://mon-site.fr/install/upgrade/upgrade.php   => Test avec (php5.6*) avec l'erreur suivante et il était impossible de relancer le script (le script indiquait l'erreur 28 => qui correspond à une maj déjà réalisée => le prestashop n'est pas pour autant migrer) This page contains the following errors:
error on line 679 at column 1: Extra content at the end of the document
Below is a rendering of the page up to the first error.
  *le script aurait dû fonctionner avec cette version, cf:  https://devdocs.prestashop.com/1.7/basics/installation/system-requirements/       ---- => Le test avec php 7.2.2 aboutit à la même erreur   Si on relance la page d'upgrade. La page retourne :  "Error #28: The shop is already at the version you try to upgrade to."

 
CONCLUSION TUBBY:  
 
La procédure fournie par prestashop permet de migrer vers la 1.7 en mettant à jour les fichiers et en mettant à niveau la base de données. Cependant, à la fin de la procédure la boutique n'est pas fonctionnelle : les modules sont "perdus" et le thème est à recoder.
 
Cette procédure permet donc de retrouver dans la 1.7 son catalogue, ses clients, ses commandes, tous les objets natifs de et la configuration de prestashop mais pas les fonctionnalités additionnelles.  
 
Si les objets natifs sont retrouvés dans la presta 1.7 certains vont poser problème : par exemple, si un de vos transporteurs a été créé par un module et que ce module n'existe pas dans la 1.7, ce transporteur ne pourra plus bénéficier par exemple d'une mise à jour auto de sa grille de tarification.  
 
Un point important à noter : de nombreux prestashop 1.6 ont subi des modifications directement dans les fichiers du core, il est possible d'avoir cette liste dans Paramètres avancés => Informations. Il faut comme pour les surcharges reproduire si nécessaire ces modifications dans la 1.7 (cette fois sous la forme de surcharge).  
 
La mise à jour vers la 1.7 avec cette procédure nécessite donc un travail préparatoire méticuleux:
-- analyse/consigne des surcharges et des modifications du core afin de connaître les fonctionnalités supplémentaires ajoutées à la boutique
-- analyse/consigne de la structure bdd de la 1.6 (afin d'identifier les tables non natives ajoutées par des modules et de pouvoir ensuite cleaner la bdd si nécessaire après la migration)
-- listing des modules de la 1.6 avec recherche de leur version 1.7 ou de leur équivalent (cette étape peut permettre un nettoyage des modules pour la 1.7)  
 
- après la migration du core, il faut :
-- recoder le thème
-- réinstaller les modules 1.7 (avec un travail d'analyse module par module pour récupérer les données de la 1.6)
-- remettre en place les éventuelles surcharges (hors modules)
-- effectuer des tests de tous les cas d'utilisation (création de compte, paiement avec chaque moyen de paiement, livraison, communication avec des services externes comme un logisticien, ...)  
 
Si la migration auto/manuelle ne fonctionne pas pour une boutique, il faut réaliser la migration du core/de la bdd avec une autre approche (approche qui était recommandé au lancement de la 1.7) :
 
il faut installer une boutique prestashop 1.7 et importer le catalogue, les clients, les transporteurs, ... (cela peut s'automatiser avec des scripts) et réinstaller les modules dans cette boutique (en migrant les données du module du prestasho 1.6 dans le presta 1.7, toujours via des scripts).          

En résumé, s vous avez envie d'une migration Prestashop qui se passe bien, contactez-nous ! :-)

 

Commentaires sur: Migration de Prestashop 1.6 vers la 1.7: les problèmes et la méthode

Véridique

Rédigé par : True | 17 oct 2019 00:50:13


Merci pour cet article très complet encore une fois

Rédigé par : voyance mail gratuit | 17 jan 2019 15:13:58

Pour avoir vécu l'enfer (des mois de galère) avec une migration prestashop avec notre site https://www.stylbio.fr hébergé chez ovh en performance 2 (cela a son importance ). Je tiens à vous signaler que si vous rencontrez des erreurs de type "content encoding error", votre hébergement est arrivé à saturation. En effet prestashop 1.7 est très lent avec PHP 5.6 et génére d'innombrables erreurs bizarres insolubles (erreurs 500, erreurs de syntaxes etc. ).
La solution :
Sous ovh : choisir PHP 7.0 ( attention j'insiste bien sur le 7.0 car au dela de la 7.1 ça ne marchera pas du tout vous aurez une page blanche ). Ensuite upgradez votre hebergement (+de mémoire), vous êtes peut être arrivé à saturation ! Ceci est d'autant plus vrai si vous avez beaucoup de produits dans votre base de données. Nous avons cherché pendant des mois et fait appels à de nombreux experts, pour au final solutionner le problème en 2 clicks... (rien n'était défectueux lors de la migration, c'était l'hébergement qui était insuffisant en puissance de calcul !).

Rédigé par : Patrice | 24 sep 2018 18:11:29

Poster un commentaire sur: Migration de Prestashop 1.6 vers la 1.7: les problèmes et la méthode







« RGPD: que demander aux sous-traitants (modèle de lettre à leur envoyer) et que changer aux contrats ? ? | Accueil | Faire facilement un site de petites annonces avec Wordpress »


Développement it et web, rédaction contenu web,  SEO, scrapping, growth hacking

Besoin de SEO, de développement, de rédaction de contenu web ? Besoin d'un blog, de Wordpress, de Prestashop ou autres nouvelles "choses web" ? Envie de travailler dans ces domaines ? --> Contactez-nous