New .Text to CS 2007 Blogs migration tool available
There seems to be a small resurgence in migrating .Text to Community Server after the CS 2007 release. For those of you that are still on .Text and want to upgrade to CS 2007, I've released a new migration tool to help you.
I've also been thinking lately about how to handle migration, or content import/export, in future versions of Community Server blogs. This is something I've been working on for a while, and I think I finally have a good plan. But first, a little recap on how I got there.
The Past
Back in the day of Community Server 1.0 there were many .Text bloggers who wanted to upgrade to CS. Several people worked on solutions for this, most of which did a direct database conversion using scripts or DTS. I was one of those bloggers running .Text who really wanted to try out this spiffy new Community Server platform if only I could find a way to migrate my content. Partly as a way to get familiar with it, I decided to write my own simple conversion utility to migrate content from .Text to CS 1.0 using the Community Server API and a few custom sprocs.
As more people used it and submitted feature requests and bug reports, my simple migration tool grew and grew into a quite large wizardish WinForm UI. I updated it to support CS 1.1, but that was the final supported version. During the CS 2.0 development, I decided to throw that away and start over on grand new suite of Import/Export WinForm utilities. The biggest reason was that I wanted to support migration from other blog platforms besides .Text, which would have been difficult to wedge into the original utility.
My goal was to create an extendable XML format (later dubbed Community Server eXtended Atom - CSXA) that would completely describe CS weblogs and weblog data. You would be able to export and import these CSXA files from/to Community Server, and export data from other platforms like .Text, Movable Type, WordPress, etc. to CSXA so you could then import it into CS. There would be a seperate WinForm app for each step rather than one big monolithic one. I decided to base the XML format on the Atom 1.0 spec since that already contained common blog data fields, was well defined (unlike RSS), and provided an easy way to extend it using XML namespaces.
Unfortunately the proceeding project then turned into a case study of how not to do software project in your spare time. First to "save time" I downloaded the incomplete source to the Atom.NET project on SourceForge (which has been abandoned for several years), and dove headfirst into finishing/fixing it to use as a base for my Atom file rendering and parsing. The deeper I got into that, the more I realized how bad it was, and how much still needed to be done to get it working with the 1.0 spec. Instead of throwing it away and writing my own, which in hindsight would have saved a huge amount of time and headaches, I kept plowing ahead.
By last spring I had three relatively reliable working pieces that I used for a few large conversion projects internally. These were the .Text to CSXA exporter, a MTImport file to CSXA exporter, and a CSXA to Community Server 2.1 importer. But I still had to create nice polished WinForm UI's for each piece before they could be released publicly, which is the part that I suck at the most. Unfortunately this also coincided with me getting an XBox 360, so the UI work dragged on very very slowly over the past year. :P
The Present
But to help those who are trying to migrate from .Text to Community Server right now, I decided to release much of my existing WinForms utilities "as is." They have been updated to work with Community Server 2007 SP1 (only) and have had a small amount of testing but please keep in mind they are rough around the edges and may still have bugs - especially in the UI. Use at your own risk, and always test first with a backup database.
You can find the zip file in the downloads section of this site. It includes the .Text-to-CSXA exporter and CSXA-to-CS2007 importer together in the same folder with all the binaries and config files you need already there. A simple set of instructions is included as well, and you can email me if you have questions after reading them.
The Future
There are two big goals I have for implementing an import/export system in future versions of Community Server.
- Be web based. I now believe WinForm utils are a suboptimal choice when working with web application data, and make it hard to update and expand going forward.
- Be flexible and allow the community to write "plug-ins" so that CS blogs can import/export any file format or API.
I think #2 is especially relevant as there are now several good formats and APIs that can be used to migrate or backup blog data:
- The CSXA format I mentioned earlier, which can fully describe CS blog data.
- BlogML project has grown quite popular and has been used by many people to migrate posts between platforms. The accomplishments of BlogML have been impressive so far. The limitation is that it does not support every type of CS post data, including a way to preserve PostIDs.
- Automatic recently decided to add very similar functionality to WordPress, but based their format off of the RSS 2.0 and called it WordPress eXtended Rss (WXR). I had previously been calling the CS Atom-based format "Atom+CS", but decided to change it to CSXA as I really like the eXtended nomenclature and it works much better as an extension name.
- The Atom Publishing Protocol is used by Blogger to export content, and will likely be used by more and more blog platforms once the spec gets locked down.
- The MTImport format is outdated and very limited, but is supported by several of the most popular blogging platforms.
With a dynamic plug-in based system, similar to the to the CS Spam Rules, you could add Import/Export plug-ins to your site as needed depending on what formats you are interested in using. I'll likely work on this at first as a prototype add-on for CS 2007, with the possibility of it being included in a future CS version.

blog bits Bill "The Bruiser" Bosacker lists all of the cool features of his new CS2007 Event
Kevin Harder releases a new .Text to CS2007 blogs migration tool. Kevin also contemplates future import
Pingback from New .Text to CS 2007 Blogs migration tool available - Kevin Harder
The migration from .Text to CS 2007 is finally complete! All content, comments, trackbacks etc. have