Corruption des données utilisateur dans la migration de phpBB3 vers WP/Discourse

Occasionnellement et apparemment juste après une nouvelle importation de données utilisateur de notre ancien site basé sur phpBB3, nous constatons un problème où certaines données utilisateur sont corrompues avec les données d’un autre utilisateur lors de la synchronisation WP-vers-Discourse. Cela n’arrive pas souvent et n’est pas reproductible à la demande, ce qui a malheureusement conduit notre équipe de développement à l’ignorer largement comme un problème.

Dans le premier cas, l’un de mes comptes utilisateur de test a été supprimé dans le cadre d’une nouvelle importation de données, mais l’avatar de cet utilisateur de test a ensuite été attribué au profil d’un autre utilisateur et je me suis connecté en tant que cet utilisateur une fois l’importation terminée.

Dans un second cas, j’ai enregistré un utilisateur de test dans WP et lorsque la synchronisation avec Discourse a eu lieu, cet utilisateur de test a pris le nom d’utilisateur d’un utilisateur existant dans Discourse ainsi que certaines de ses données de profil et de groupe personnalisées. Voir capture d’écran…

Dans ces deux cas, des utilisateurs en double dans Discourse étaient impliqués dans la corruption du compte de l’utilisateur de test. Par exemple, agmolnar et agmolnar1 et tbm960c et tbm960c1.

Nous avions un certain nombre de ces utilisateurs en double qui, je suppose, provenaient très probablement d’utilisateurs anonymes sur le fichier de données phpBB3 importé.

Quelqu’un a-t-il déjà vu quelque chose de similaire ou a-t-il des indices sur la nature du problème ? Voudrait-il la peine que notre équipe nettoie le fichier d’importation phpBB3 des utilisateurs anonymes avant de procéder à une nouvelle importation ?

Merci pour toute suggestion.

Salut Ryan,

Vous pourriez jeter un œil à ces fichiers et voir si vous trouvez des informations utiles :

Aussi :

Et :

Peut-être que vous pouvez modifier cette partie pour ne pas importer les utilisateurs anonymes, ou trouver un indice qui mènerait à votre problème étrange.

Merci Coin-coin. Si nous nettoyons les utilisateurs anonymes du fichier de données utilisateur avant l’importation, je suppose que tous les messages anonymes seront attribués à l’utilisateur « system » comme ils le sont de toute façon. Y a-t-il une raison dont je ne suis pas au courant pour ne pas inclure les utilisateurs anonymes de notre instance phpBB dans le fichier d’importation ?

Je déduis de cela et d’autres fils tels que…

Le problème pour nous semble lié aux utilisateurs anonymes, qui sont essentiellement des utilisateurs en double qui n’existent pas dans WP, une nouvelle importation vers WP qui modifie la structure des identifiants utilisateur WP mais pas les identifiants Discourse en éliminant les utilisateurs de test WP nouvellement créés, et le fait que Discourse essaie d’associer les utilisateurs d’abord par leur identifiant WP externe.

Lorsque nous effectuons une nouvelle importation, cela supprime certains utilisateurs de test WP de la base de données. Les identifiants utilisateur de quelques utilisateurs anonymes de phpBB que j’ai recherchés semblent tous avoir les identifiants utilisateur entiers les plus élevés dans Discourse (4505, 4506, etc.). Il semble donc que lorsque nous exécutons une nouvelle importation et supprimons les comptes de test dans WP, un utilisateur nouvellement créé dans WP est ensuite synchronisé par l’ancien identifiant de l’ancien utilisateur de test désormais inexistant.

En forçant les utilisateurs à être mis en correspondance par e-mail plutôt que par identifiant externe lors de la nouvelle importation, comme décrit dans le message n° 5 lié ci-dessus, nous devrions pouvoir exclure la possibilité de toute fusion indésirable d’anciens et de nouveaux utilisateurs.

Tout cela vous semble-t-il raisonnable ?

Merci

Un problème avec cela est que l’attribution des messages aux utilisateurs uniques sera perdue, il sera donc difficile de suivre une conversation où tous les messages semblent provenir d’un seul utilisateur système - vous ne pourrez pas distinguer les participants distincts les uns des autres.

Exactement ; conceptuellement, vous pourriez soit laisser les choses telles quelles et utiliser manuellement l’interface du profil utilisateur administrateur pour fusionner les utilisateurs qui devraient être les mêmes, OU vous pourriez simplement envoyer des e-mails comme ID externe à la place comme vous le suggérez, ce qui permettra aux nouvelles connexions d’être connectées à un compte existant avec une adresse e-mail correspondante.

Cette dernière option est clairement la voie de la moindre résistance :+1:

@kiefferr J’ai remarqué certains détails dans les images que vous avez incluses et je les ai supprimés au cas où vous n’aviez pas l’intention de les partager. N’hésitez pas à re-télécharger les images si nécessaire. :slight_smile: :+1:

1 « J'aime »

Êtes-vous en train de dire que vous gérez simultanément les communautés discourse et phpbb3 et que vous importez périodiquement des données de phpbb3 à nouveau ?

C’est ce qu’il semble à ce stade alors que le développement de notre nouveau site WP/Discourse s’éternise, mais non, Discourse est toujours en cours de développement. Nous remplaçons un site personnalisé qui a été construit autour de phpbb3.

Nous avons effectué une importation initiale, puis avons décidé de faire une autre importation de test avant une importation finale avant le basculement. Je suis content que nous l’ayons fait, car je ne voudrais pas avoir à corriger ces bugs sur un site en production.

1 « J'aime »

Salut à tous, j’ai une question de suivi si vous pouviez être si aimable. J’ai partagé les conclusions ci-dessus avec l’équipe de développement concernant la nécessité de faire correspondre les utilisateurs par e-mail au lieu des identifiants externes lors de l’importation/migration finale juste avant la mise en ligne, ainsi que la suppression des enregistrements SSO afin qu’ils puissent être correctement régénérés.

Mais ils semblent maintenant penser qu’il y avait quelque chose qui n’allait pas avec les données d’exportation phpBB3 d’origine, à savoir qu’il y a des utilisateurs dupliqués/anonymes dans ces données ainsi que certains utilisateurs phpBB sans e-mails associés. Tout cela semble être quelque chose que Discourse devrait être capable de gérer en termes d’importation de données phpBB3. Ai-je tort ? Surtout en ce qui concerne la façon dont Discourse attribue des noms d’utilisateur fictifs aux utilisateurs anonymes, c’est une procédure opérationnelle standard.

Si nous devons obtenir des données plus propres de notre installation phpBB3 actuelle, nous pouvons probablement le faire. Mais il ne semble pas que nous ayons besoin ou devrions modifier les données phpBB. Ce n’était pas vraiment le problème.

Nous avons effectué une nouvelle installation de Discourse et importé avec succès des données de phpBB.

Voici nos conclusions :
La table “…_users” contient un total de 3270 enregistrements.
En téléchargeant les utilisateurs importés de Discourse, nous avons observé qu’il y a 3251 utilisateurs dans Discourse.
Lors de notre analyse, nous avons découvert que plusieurs utilisateurs ont un “1” ajouté à leurs noms d’utilisateur Discourse, qui provenaient en fait de leurs noms d’utilisateur dans les données phpBB. Un seul utilisateur spécifique est “redacted_username1”, qui n’existe pas dans les données phpBB. Cependant, l’utilisateur “redacted_username” est présent dans les données phpBB.

L’e-mail associé au nom d’utilisateur Discourse “edacted_username1” est “anonymous_52996ba94025464fdf3e5f3ae131bdf5@no-email.invalid”. Cela suggère que le nom d’utilisateur “redacted_username” était déjà utilisé par un utilisateur anonyme, qui a ensuite ajouté “1” à son nom d’utilisateur.

Pour éviter de telles occurrences lors des futures importations, nous devons obtenir des données fraîches qui excluent les utilisateurs anonymes et autres utilisateurs indésirables.

L’écart du nombre d’utilisateurs entre phpBB et Discourse est de 19. Dans les données phpBB, il y a 53 utilisateurs qui n’ont pas d’e-mail associé à leurs comptes.

En recherchant les utilisateurs “anonymous” dans Discourse, cela renvoie 32 utilisateurs avec des e-mails anonymes qui sont actuellement suspendus. Les noms d’utilisateur attribués à ces utilisateurs anonymes ne se trouvent pas dans les données phpBB. Cela implique que Discourse attribue des noms d’utilisateur fictifs aux utilisateurs anonymes, ce qui pourrait potentiellement causer des erreurs futures.

En résumé, 19 utilisateurs sans e-mail n’ont pas été importés, tandis que 32 utilisateurs ont été synchronisés en tant qu’e-mails anonymes avec des noms d’utilisateur fabriqués.

Veuillez partager des données PHPBB propres afin que nous puissions les importer.

De plus, si vous avez des réflexions à ce sujet, n’hésitez pas à nous en faire part.

À moins que vous n’alliez supprimer ces utilisateurs de la base de données, je modifierais le script pour ignorer ces utilisateurs. Obtenir un dump partiel n’est probablement pas facilement reproductible.

Si vous pouvez simplement supprimer ces utilisateurs du site actuel, cela semble être une bonne solution. Ma préférence dans les situations comme la vôtre est de lire directement la base de données en direct plutôt que de transférer à plusieurs reprises un dump.

1 « J'aime »