Migrate a vBulletin 4 forum to Discourse

This is not true when I started migrating my 24 year old vBulletin forum running vB 3. There were multiple incompatibilities and other issues with the script. However, I put in a lot of effort in creating an importer for vBulletin 3 based on the the script for vB4.

The improved script is included with Discourse, it is called vbulletin3.rb. Usage of the vB3 import script is the same as described in this how-to. Just execute bundle exec ruby script/import_scripts/vbulletin3.rb instead.

The vBulletin3 has some significant changes/improvements:

  1. Forum permissions are copied
  2. Forum moderator groups are created
  3. Joinable user groups are created with proper configuration
  4. Forum nesting in imported up to 3 levels deep (maximum of Discourse)
  5. Permalinks are registered for all threads and posts, preventing link rot
  6. Some basic forum settings are copied over (e.g. title, notification email, company name)
  7. Polls are imported
  8. Major improvements to the bbcode → markdown conversion
  9. URL deep links to threads, post, attachments are converted to discourse references, this requires setting the environment variable FORUM_URL to forum.hostname/path (no protocol).

Instead of trying to convert vBulletin private messages to Discourse private messages users will instead receive a system private message containing an archive of the private messages they had. vBulletin’s PM construction is not really compatible with Discourse. Trying to convert it would also expose some privacy depending how people used PMs in vBulletin.

As it is probably also the case with other importers, it can take quite a bit of time to convert. The conversion script took 5.5 hours on my workstation for 7k users, 16k threads, 415k posts. I have no idea how much time it took for the post processing, I let that run over night. From start to end the forum was down for 30 hours. In the end I’m happy with the result.

2 Likes