A Tale of Moving Blog Engines: Community Server to WordPress

After more than two years using Community Server 1.0 I finally threw in the towel and moved to WordPress. If you’re reading this you made it to the new site (or RSS feed).

Community Server 1.0
In June of 2005 I decided to start blogging. I surveyed the blog engine landscape and although a friend of mine who was more familiar with blogs told me to use WordPress, I opted for Community Server (CS), since I’m a .NET developer and CS is written in .NET.

The initial configuration should have been a warning to head for the open source hills. After the installation I had two semi-custom items on my agenda:

  1. Make my blog the home page (since by default CS has a landing page where you can visit forums, galleries, and other pages)
  2. Run the RSS feed through FeedBurner so I could track subscribers.

Together, these tasks must have taken north of 8 hours. It was insane.

When I was a little younger and had a little more free time I loved to tinker with this type of thing, but these days when I set out to accomplish a task I don’t want to deal with trivial technical issues that turn into all-day rabbit trails.

The problem was there was no real community around CS, it had a small user base, it was overly complex, and the blog engine is actually a secondary feature of the application (forums and other community features are the focus).

The Decline
Over the next year it got worse. Anytime I wanted to add some kind of functionality I did a search, but no one makes plugins for the CS blog engine…oh wait, that’s because there’s no plugin architecture.

My initial thought that I would make modifications to the code went out the window in the first week, when I spent 4 hours and couldn’t get the thing to compile. This is what I do for a living…every day, 8-10 hours a day, and I gave up out of frustration.

That was the point when I abandoned hope that I would modify my blog to any degree larger than pasting a 3rd party widget in the sidebar.

When IE7 came out the WYSIWYG textbox stopped working, so I switched to Firefox for my editing only to have FF 1.5 render pasting into the textarea useless.

So I began copying the raw HTML from Google Docs (where I wrote my drafts so I could hyperlink items, since that didn’t work in CS using Firefox), and pasting it into the HTML view of the WYSIWYG editor, then saving immediately, because if I switched to the visual editing mode and then back into HTML it lost everything (which I learned the hard way).

I also tried adding automatically generated links to the bottom of each post. I wanted every post to have a “Digg this Post” and “Add to del.icio.us” at the bottom, pre-populated with the post’s permalink URL. In WordPress this is a slam dunk.

After an hour of searching I posted to the CS forums about this, but no dice. I posted again a few weeks later but didn’t hear anything.

I could keep going, but I’ll spare both of us the fun and excitement of re-living those days.

Enter WordPress
While this was going on I started a few other blogs, this time using WordPress. And sweet mother what a difference. Like night and day. Like a Pinto to a Porsche. Like a Dell DJ to an iPod.

Things just work.

And when you think of a feature you want to add (“Hey, I want all of my beer recipes in the sidebar”), someone’s already thought of it and made a plugin that drops your implementation time to 3 minutes.

Needless to say I’d been entertaining the idea of migrating to WordPress for well over a year, but the idea of moving my posts, categories, comments and customizations was enough to keep me plugging away with CS 1.0. In addition, with thousands of incoming links I didn’t want to abandon the URLs of my posts if I moved to WordPress, so I would have a lot of custom 301 redirects (or mod_rewrites) to worry about. It just never seemed like there was a good time to tackle this.

But as CS 1.0 got worse and I began dreading writing new posts I realized I needed to take action. I decided, if nothing else, I needed to migrate to the current version of CS, called 2007.1.

The migration was easier than I expected and took less than an hour. The problem came when I tried to find a decent skin; for the life if me I couldn’t find any good skins for CS blogs.

I don’t even mind paying for a skin, but without having a custom design it doesn’t seem like there’s much out there for CS (whereas WordPress has literally thousands, and finding a custom skin designer is quite easy). I even emailed two DotNetNuke designers, neither of whom worked on CS skins. After 3 hours of searching I decided to take a serious look at moving to WordPress.

After a brief search I found a recent standard for exporting blogs called BlogML, and also found an exporter for later versions of CS.

Without BlogML I estimate it would have taken around 3 days to migrate my blog. With the steps I took below that number was around 7 hours:

  1. I installed the CS 2007 BlogML converter and exported my posts, categories, and comments to BlogML. Elapsed time: 30 minutes.
  2. I created a new install of WordPress using DreamHost’s one-click installation. Elapsed time: 15 minutes.
  3. This step was the gold-mine find: I installed and ran Aaron Lerch’s WordPress BlogML importer, which as far as I can tell is the only one of its kind. I had to make some modifications to the PHP because WordPress 2.3 moved from categories to tags. Elapsed time: 90 minutes.
  4. After viewing the new posts I realized the funky line-breaks in the BlogML exported by CS had to go, so I tried it again. Elapsed time: 15 minutes.
  5. After a couple test runs I was ready for the real deal. I created a second WordPress installation, my “real” installation, and re-ran the import. Elapsed time: 15 minutes.
  6. The genius of Aaron Lerch’s importer is that it lists all of the URLs that you need to 301 redirect to the new WordPress URLs. I sat down with UltraEdit and 30 minutes later had a working .htaccess file. I ran into a slight problem with dashes and underscores, but some regular expression search and replace (god bless UltraEdit) took care of it.
  7. Finally, I found a rocking theme from the thousands of themes available, added the FeedBurner plugin, made my sidebar customizations, and re-pointed my DNS. Elapsed time: 4 hours.

I’m not in any way bashing Community Server or the guys over at Telligent, I’ve met several of them and they are really solid developers and good guys. But CS is built for high-load community sites, not one-person blogging operations. Some of the blame rests with me for choosing a tool that’s not made for my situation.

The moral of this story is if you are the end user, choose software based on features and community, not on technology. The technology is almost irrelevant when everything you need is available as a plugin or widget.

I still have a few kinks to work out; if you run into an issue I’d appreciate an email (rob -at- softwarebyrob.com). I’m especially interested in 404s.

[tags]community server, wordpress, blogging[/tags]

Start Small, Get Big
Growth Secrets for Self-Funded Startups. It'll Change Your Life.
What you get for signing up:
  • A 170-page ebook collecting my best startup articles from the past 5 years
  • Previously unpublished startup-related screencasts
  • Exclusive revenue-growing techniques I don't publish on this blog
"The ideas and information Rob provides should be required reading for anyone that wants to create a successful business on the web." ~ Jeff Lewis
Startups for the Rest of Us...
If you're trying to grow your startup you've come to the right place. I'm a serial web entrepreneur here to share what I've learned in my 11 years as a self-funded startup founder. Luckily several thousand people have decided to stick around and join the conversation.

For more on why you should read this blog, go here.


#1 JD Conley on 10.05.07 at 12:37 pm

I got a 404 yesterday, but it looks like you cleared it up. I recently moved my blog from one in DNN to Subtext (http://www.subtextproject.com). It’s a C# OSS blogging engine. Out of the .NET ones I tried it stood out. Of course, the community isn’t nearly as large as the WordPress one.

#2 Breaking Up: Moving Blog Engines | Aaron Lerch on 10.05.07 at 1:13 pm

[…] Rob Walling from softwarebyrob.com has updated the import module to work with WordPress 2.3 – get the updated […]

#3 Chris Mullins on 10.05.07 at 2:43 pm

That’s funny. I had just posted a few days ago to the MVP Private Author’s newsgroup for asking “Which blog package should I use?”.

The answer that kept coming back was WordPress. I had decided to make the switch this weekend, and then JD pointed me at your blog. That’s too funny.

Now, I just need to decide where to host it, and how to have it work with my personal domain that’s setup using Google Apps….

#4 Pete McNamee on 10.05.07 at 3:45 pm

I’m glad you’ve found a better BLOG engine but I’ve gotten a ton of the same entries over and over today. Any idea why?

#5 John Sharpe on 10.05.07 at 5:03 pm

Looks like they have an importer for Blogger: http://wiki.wordpress.org/BloggerImport.


#6 Apple Ipod, Ipod Nano and Ipod Video News » A Tale of Moving Blog Engines: Community Server… on 10.05.07 at 9:54 pm

[…] none so negative wrote an interesting post today onHere’s a quick excerptA Tale of Moving Blog Engines: Community Server to WordPress October 5th, 2007 — About this Blog After more than two years using Community Server 1.0 I finally threw in the towel and moved to WordPress. If you’re reading this you made it to the new site (or RSS feed). Community Server 1.0 In June of 2005 I decided to start blogging Posted in The Human Side of Software Development — Software by R… ( 200 links from 94 sites) by rwalling […]

#7 Jason Alexander on 10.07.07 at 9:56 am

We’re sorry to hear you left us, Rob! But, this is all great feedback – I’d love to stay in touch with you and get your feedback on our upcoming product, Graffiti. Would you mind pinging me offline so we can keep this communication line open?

CTO, Telligent

#8 susan on 10.08.07 at 12:40 pm

welcome rob, you started me on WP last year, i have loved it, I even went to WordCamp in SF this summer…. did you know matt mullenweg is ranked above the yahoo guys as one of the most influential people on the web, and he is the most googled ‘matt’, their product is great and it will be fun to watch where it all goes.

love the new theme, check out ajax comments edits plugin.


#9 Jeff on 10.08.07 at 3:09 pm

Rob, I agree. I have had the same experience. It has been a headache to configure CS. WordPress seems like one of the best blogs out there.

#10 Rob on 10.10.07 at 4:20 pm

Pete – You received multiple versions of the same posts because the RSS feed refreshed from scratch and some readers aren’t able to properly resolve this. Hopefully this has gone away by now.

#11 Karthik on 10.11.07 at 9:52 am

Sorry to hear that you’ve had so much trouble with CS. Our new product, Graffiti, should really alleviate a lot of these types of issues as it is built with single user blogs in mind.

This will give the WordPress lovers a .NET powered option in the near future 🙂

#12 Jon Galloway on 10.12.07 at 12:32 pm

Why edit posts in an HTML interface when blog posting clients as good as Windows Live Writer are available?

Had you heard of the SubText blog engine? My first install took me less than 30 minutes. It’s really simple to set up, supports BlogML import / export, etc. Not nearly as full featured as CS, but it’s pretty good for a simple blog setup.

#13 Rob on 10.12.07 at 1:25 pm

Jon – I was using the HTML interface because the version of CS I was using wouldn’t interface with LiveWriter or BlogJet (or at least, I wasn’t able to get them to work). I also post a lot from different computers, so I don’t want to be tied to a desktop app.

I have heard of and evaluated SubText. I liked it a lot, but it doesn’t have the massive number of plugins of a platform like WordPress. Pretty much anything I’ve thought of adding to WP is already built as a plugin (e.g., show related posts, rate a post, AJAX comments, threaded comments and several others I’ll be adding over the next several weeks).

Thanks for the suggestions – definitely worth looking at.

#14 Community Server Byte for October 13, 2007 - Dave Burke on 10.13.07 at 10:42 am

[…] a second interesting narrative about a journey away from Community Server, read Rob Wallings's "Tale of Moving Blog Engines from Community Server to WordPress."  I understand everything Rob was saying here, especially about community, but geez, using […]

#15 Tale of Moving Blog Engines from Community Server to WordPress - Dave Burke's Community Server Bits on 10.13.07 at 10:53 am

[…] a second interesting narrative about a journey away from Community Server, read Rob Wallings's "Tale of Moving Blog Engines from Community Server to WordPress."  I understand everything Rob was saying here, especially about community, but geez, using […]

#16 Nils Kaczenski on 01.13.08 at 2:57 pm


Perhaps you remember me. Some weeks ago I sent you a mail related to this article. I was just planning to move my CS 2007.1-based web site to WordPress and your article was so promising! However, I could not get this BlogML plugin for CS to work (as it turned out I was not the only one who failed). What’s more, the BlogML maintainers were not able to even understand my issues.

But I did find a solution: WordPress supports a BlogML-like technique out of the box, so all I had to do was to generate a matching XML file from my CS content with a small script. Fortunately I had a full backup copy of the database and so I could work it out on my local machine. Some fix-ups to the XML (replacing poison characters and so on), and there it went – more than 200 articles from 30+ authors imported in less than two minutes. Great!

So if any of your readers suffers from the same issues – perhaps they can use the result of my work which is a tiny VBScript that reads the CS db and makes WordPress XML (WXR) out of it. If so – drop me a line at Nils at kaczenski dot de.

Thanks, Nils

#17 Al Pascual on 01.29.08 at 10:55 am

I created a simple tool to be able to move your blog.

#18 Kristopher Cargile on 08.03.08 at 12:08 pm

I’ve been working on a WordPress importer to handle exactly this situation. I’ve posted the first release, along with some notes about the general CS to WP migration process here:



||| Kristopher Cargile
||| http://www.bettersoftwarenow.com

#19 Perry on 08.03.08 at 11:15 pm

Hi, I’ve been toying with moving off of CS and onto WordPress for a long time…but my blog has hundreds of posts and I wonder if I should just scrap it all…which would suck. Your post has given me something to fiddle with for a few days. Thanks for the great post. Any advice for a hosting provider?

#20 Rob on 08.04.08 at 8:19 am

@Perry – I really like DreamHost. They have tons of one-click installs (including WordPress), Subversion hosting is included, unlimited domain hosting, and a bunch of other great stuff for around $10/month. Use my affiliate link if you sign-up:


Also, if you’re migrating from CS to WordPress also check out (the previous commenter) Kristopher’s tool at:


#21 Migrating from DasBlog to WordPress on 10.23.08 at 7:38 am

[…] Imported data to WordPress: Aaron lerch had done all the hard work by creating the import module for WordPress for BlogML. I downloaded its updated version that had been modified to work with WordPress 2.3 when Rob Walling migrated from Community Server to WordPress. […]

#22 Dave on 12.25.08 at 5:06 pm

I have a blog running on Subtext and one on Community Server 2007. I want to move them both to Drupal. So far, I’m having trouble finding any tools to help with this.

#23 Kristopher Cargile on 12.26.08 at 3:31 pm


I’m not very familiar with Drupal and how to get data into it, but I can get you a copy of the SQL script I created for the CS-WP tool. Should get you half way there anyhow. Contact me through my site and I’ll send it along…


#24 Dave on 03.10.09 at 5:14 pm

Hi Kristopher,
Thanks for your response. My site that was formerly running on Subtext is now on Drupal. But my Community Server site still needs to be converted. I downloaded your tool and I will check it out. Would you be interested in expanding it to Drupal (as a paid consulting project)? The contact form on your site doesn’t seem to be working, so I can’t contact you directly.

#25 Abandoning BlogEngine.NET :-( « Read Bits on 03.26.09 at 3:59 pm

[…] use that plug-in). Fortunately, Aaron Lerch wrote a PHP plug-in for importing BlogML. Rob Walling posted his notes on Aaron’s […]

#26 How to Convert from Community Server 2007 to Wordpress - Pop Art Blog on 07.20.09 at 2:31 pm

[…] in October 2007, Rob Walling wrote a post about switching from Community Server 2007 to WordPress. He updated Aaron’s […]

#27 How to Convert from Community Server 2007 to Wordpress at Space Ninja on 10.27.09 at 2:15 pm

[…] in October 2007, Rob Walling wrote a post about switching from Community Server 2007 to WordPress. He updated Aaron’s […]

#28 Matt Plichta on 11.20.09 at 11:05 am

The link to Kristopher Cargile’s tool (comment #18) is dead. Does anybody have a working link or source? Please let me know: matt dot plichta at sgandco dot com

#29 Backing up your Wordpress blog on 01.28.10 at 11:36 am

[…] http://www.softwarebyrob.com/2007/10/05/a-tale-of-moving-blog-engines-community-server-to-wordpress/… […]

#30 Source and Code » Blog Archive » Importing other blog content to WordPress on 08.06.10 at 2:07 pm

[…] Kavinda’s BlogML to WordPress import module (ZIP file link), originally created by Rob Walling and Aaron […]

#31 eralper on 12.16.10 at 4:45 am

Hello Rob,
Actually I’m thinking of moving to a more flexible CMS application. But sharing the same reasons like being a .NET developer for years, working with Microsoft technologies I’m staying away from WordPress.
Unfortunately the difference is too much. But I think of moving the forum, galleries, files sections too besides moving blogs and blog posts.
Did you have an experience moving CS Forums to any other CMS?

Rob Reply:

Nope; I never moved forums. Only the blog.