Persistent sync - vBulletin 4 to Discourse

Greetings all!

I recently purchased an already-established vBulletin 4 forum after being part of the forum staff for a few years. But after reading up on some horror stories of vB security vulnerabilities, dealing with the horrible mobile UI, and having an absolute nightmare fixing out-dated plugins that were broken with the previous owners, we (the staff) decided to investigate migrating to other forum software.

I’ve looked at the vB4-to-Discourse import script, and though I haven’t tried it yet, it seems pretty straightforward, and I hope to modify it a bit for my own needs to import some data from our existing vB plugins and remake them in Discourse (although my knowledge in Ruby is admittedly sparse at the moment, though I plan on changing that soon).

Here’s my question though: I was hoping that during the transition, we could have an instance of vB and an instance of Discourse running at the same time, with their databases somehow in sync. That way, users can take some time to adjust to the new UI and controls, but can still feel comfortable going back to the old site if there’s features they haven’t figured out yet (primarily since some of our members are, in their own words, “curmudgeony”, and may not appreciate the change at first). Any changes (posts, likes, profile updates) on one site would be reflected on the other. Then, after some set amount of time, we switch solely to Discourse.

Is something like this theoretically feasible? I know vB runs on MySQL and Discourse on PostgreSQL, but I found a few programs that should allow periodic syncing between the two, provided I know which fields and tables map to each other. Or (and I suppose this is an opinion-based question) is it even worth it - should I just rip the band-aid off instead of hassling with the transition period?

Thanks in advance!

You should.


Ah, sorry I missed that thread in my search. I do like the idea of having just a few “beta-tester” members to run it through it’s paces - that should be enough to hash out any problems, especially if I can include a couple of the “curmudgeons” in that group as well.

Thanks for the help!


What I’ve done is to do an import, invite some folks to check it out, and warn them that the beta site is temporary. They can then make posts as test to see how things work, rather than worry that they’ll be recorded forever.

I’ve also done the two-in-parallel thing. You can re-run the importer and suck in data from the legacy forum to the Discourse forum. It’s a one-way thing, though, and as everyone says, it’s not recommended. Stuff that happens in Discourse stays in Discourse, and things will be confusing when new data gets sucked in from the old forum and responses are from those who didn’t see stuff that happened on the Discourse side.

For this client, it was important to do lots of configuration on the Discourse side before pulling the trigger on the move. Though he’s done some work and a few users have logged in to have a look around, it’s not an active forum.

If you run into trouble with the import or find that it’s more work than you’d anticipated, my services are available. My contact info is on my profile page.


If you want to talk through migration strategy, start a post in #community and I can help you out. I’ve been part of many migrations.

I’m planning on writing up a #howto post in the coming weeks which might be helpful also. I’ll prioritise that.