If an existing Drupal username collides with a VBulletin user that is being imported, then that user is silently skipped and any threads started by that user are not imported.

1) At the very minimum there should be a warning printed indicating which users were not imported because they were duplicate. Not skipping import of the threads would also be good.

2) Slightly better would be to rename the conflicting users by prepending or appending some unique string, and allowing the import to complete. Also printing a warning of which users were renamed would be good.

3) Even better would be to try to identify identical users (maybe by matching email addresses) and reuse the existing Drupal user account, rather than creating a new one, when possible. Otherwise if no matching user account already exists, fall back to method 2 (create a new user with a unique string appended/prepended).

Comments

liam mcdermott’s picture

Status: Active » Fixed

Thanks for the bug report, sorry for not replying sooner, but I didn't have anything to say about this problem until now. :)

This problem occurs because we use INSERT IGNORE INTO in our SQL, which basically means 'ignore any errors or duplicates'. We try to use SQL for all heavy lifting: that's what it's best at. This makes the import process reasonably fast. So, this issue is occuring because to be fast, we're also stupid. :)

All the threads are, in fact, imported but their user id's are incorrect. To fix this, I've added an extra step in the import process which does pretty-much what you've suggested in 3), only it checks usernames. This has been added to the 5.x branch of vBulletin to Drupal first (as that's what the client is paying me for!), and will be ported to the 6.x branch shortly. :)

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.