Discourse Migration

Since Fall of 2016, I have helped dozens of communities migrate to Discourse from inferior forums (since my entire living comes from Discourse, I believe that all other forums are inferior!).

After you read below, please email jay@literatecomputing.com with your details.

Can you migrate my forum?

If you can get a dump of your forum’s database and an archive of the uploaded files, the answer is almost certainly “yes.” There is list of importers that are available here on Github. If you do not see yours listed there, a new one will have to be written. I typically charge $1000-2500 to write a new importer.

If an importer already exists for your legacy forum, I typically charge $500-2000 to import to Discourse for a small to moderate-sized forum. Some variables include how much data you have, how many times I need to run the importer to resolve problems that emerge, and how critical down time is.

You can also search meta for “yourForum #howto”. Here is a partial list:  phpbb3MBOX, vBulletin4 (and 3), vBulletin5, Phorum, Kunena3,  XenforoGoogle GroupsNingVanilla, bbPress (3.2 is problematic).

That sounds expensive! Can I do it myself or get it for free?

Sure! Lots of people do. Search on meta for “#howto forumName.” There you can find instructions for doing it yourself; that is how I learned. If you are not a do-it-yourselfer, pay for a year of Business hosting from Discourse.org ($3600 at time of this writing) and they will do it for you in addition to hosting your site for a year! If you are getting hosting from them, you should definitely check with them first to see if they will cover your migration.

Another solution is to use crowdfunding to have your community pay for the move. It worked for BlenderArtists.

What do you need in order to make an estimate?

Here are things I need to know to get started:

  • Have you read this document so you understand what to expect?
  • What forum and version are you moving from?
  • What is your approximate budget and time frame? 
  • How many users and posts are there?
  • Do you have user fields other than name, username, and email address that are important to maintain?
  • Does your forum have more than two levels of categories? Would you like some old categories to become Discourse tags?
  • Has your forum always used the same software, or has it been imported from some other forum to your current one?
  • Do you want to import passwords? (It may or may not be possible, so have a look at this topic to understand the issues).
  • Is it important to have 301 redirects so that links to the old URLs get redirected to the new ones? Do you know how many formats there are and/or what the formats are?
  • Does your forum have any customizations or special features that you need to have on Discourse?
  • Who will be hosting your site? If it’s discourse.org (whom I highly recommend), have you asked whether they will do your migration at a rate I cannot compete with?
  • NOTE: I apologize that this list is so long, but I promise that I really need to know these things–and need to know that you have considered them–in order to give you an accurate estimate and to minimize the likelihood that there will be some unpleasant surprise. If you do  not have time to read this document and answer the above questions then I will expect to spend several extra hours to get this job done and will adjust your estimate accordingly (think brown M&Ms).

 How does it work?

Once we have ironed out the details for your import and you have approved the estimate, typically, it goes like this:

  1. I get database and attachments
  2. I run an initial import for approval, sometimes on a subset of data
  3. You check how things work and point out anything that’s not what you expect
  4. Repeat previous 2 steps until it looks good
  5. I get a new database and do the penultimate import
  6. You approve it
  7. We schedule a time for the switch
  8. You notify your users, freeze your forum, and get me the data
  9. I do the final import
  10. I give you the backup or restore it to your Discourse instance

For a large forum, a full import can take over a week. The importer skips data that it has already imported, so re-running it with the updated database takes much less time, so your old forum needs to be frozen for less than a day, and with careful planning, less than an hour.

Can my old URLs be 301 redirected?

Yes. I typically charge $150 to configure the script and test for each different type of redirect (e.g., topics, posts, users, categories). If the script does not include support for the desired redirect adding support for it is typically $150-300.

Are Avatars included?

Typically they are. You can look through the source code for your forum, and even if you are not a programmer, you can search for the word “avatar.” If “avatar” does not appear in the source code, you can bet that avatars will not appear in your new forum. Adding avatar support to an importer is typically $150-300.

Are Passwords migrated?

Not usually. They can be, but it requires a plugin. You will need to be hosted somewhere that includes the plugin. Discourse-hosting includes it with many of their plans; Discourse.org includes it only with their Enterprise plan. If I manage or install your Discourse installation, I can include the plugin for you. Things can go wrong with importing passwords, so I charge extra to check that the passwords are imported correctly.

Are attachments included?

Most import script include attachments. Sometimes a forum will include attachments that are not recognized by the importer. For example, some forums can attach files to a post without mentioning them in the body of the message, the import script identifies attachments by replacing references to them in the message body; when this happens, those un-linked attachments are omitted.

This is an unhappy scenario. I cannot guess before running the script if your data are incompatible, and an additional function is required to identify the un-linked images in the database and modify the corresponding posts to include a reference to each un-linked image. This is typically an unexpected $500 up-charge.

Can Forum Categories be re-organized on import?

Discourse supports only two-levels of categories: category, and sub-category. If your forum has more than two levels of categories, then the script usually moves all of the sub-sub-categories up to the top level. If that is the case for your forum, you have a few options.

The cheapest solution is for you to move things around yourself, either before you give me the database, or after you have the data in Discourse. If you have many categories and topics to move around, however, such a reorganization is a daunting task. If you prefer, I can write code to re-map the categories, and optionally add tags, during the import. For example, you might have a subcategory named “Our Great Application” with sub-subcategories “bugs,” “releases,” and “howtos.” I could re-map the topics in the sub-subcategories to the “…Application” category and, to keep you from losing track of which topics were bugs, add a tag to those topics. (See “It’s Time We Talked about Tags” for discussion.)

Re-mapping categories is typically a $500-1000 charge, and adding tags is typically $500.

What about User Groups and Permissions?

These are sometimes supported, but usually not very well. If groups and permissions are important, we will need to discuss how to proceed. Depending on the complexity, this would be in the range of $500-$1500.

Can you import my custom user fields?

If your forum has custom user fields that Discourse does not have (e.g., phone, fax, signature), they can be added. Most importers do not include this feature. Adding it would typically be an additional $300-500.

Can you merge data from another forum into an existing Discourse?

Usually. It’s probably $500-1500 depending on just how intricate the merge is.

How Do I Restore a Backup?

I usually upload and restore backups to get your system up as quickly as possible. If you prefer to restore the backup yourself, copy it to


and restore it from the admin panel. Before you can restore it you have to enable the “enable restore” system setting. If you like the command line, see this topic.