I’ve been a bit stuck with blog engines. I run Community Server and have done for a long time and, during that time, the product’s become very big and very rich and I only use about 10% of what it does. I just want a blog engine.
I was recently considering what to do about this as I’ve been getting behind on Community Server versions. I tried Graffiti CMS which looks to be a fork of Community Server designed for people like me who just want the blog engine bits but, frankly, whilst the UI looked great and it seemed so much simpler than Community Server I found that the migration process from Community Server didn’t really work for me and I was also left wondering whether the product was very “alive” as there’s quite a bit of discussion out there about it dying off and my questions to the forums went unanswered.
So, I returned to Community Server and decided that it was time to upgrade to the latest and greatest and I thought I’d blog my experiences for anyone else that has the same situation.
Firstly, let me explain my setup;
- Community Server – reported version is 2.1.61129.2 ( wow, hope that’s a build number and not a version! 🙂 ) and it’s running on ASP.NET 2.0
- Website is hosted for me so I have access to the files via FTP and ( this becomes important later on ) I also have access to the SQL Server that hosts my data which is SQL 2000
As far as I can work out, you can’t go straight from CS2.1 to CS 2008. You need to go via CS 2007. Fair enough.
Now, the first time I tried this I failed completely and that was because I managed to just about get to CS 2007 by running database update scripts on my SQL Server before I realised that the upgrade from CS 2007 to CS 2008 didn’t want to work that way and is factored as an executable program that wants to see both the Community Server files and the database.
So, I gave up on that attempt and tried something else. Good job I’d tried my upgrade on a copy of my live database rather than the original but, then, I guess everyone does that and that’s definitely what the Telligent guys advise.
So, here was my procedure for upgrading;
- Copied entire set of files from my hosted CommunityServer 2.1 virtual directory to my local filesystem via FTP.
- Copied the data from my hosted Community Server 2.1 database ( SQL 2000 ) to a local database ( SQL 2008 ). I did this by backing up the database on the hosted end ( the web hoster has a UI for this ), copying the file down over FTP and then restoring the backup to a new database locally.
I then went away for many hours whilst this little lot ran because the SQL transfer wasn’t so long but the file transfer via FTP took ages.
I then took a good, long look at the ( slightly complicated imho ) Community Server downloads page and pulled down a few of the files with upgrade in their title 🙂
Upgrading to Community Server 2007.1
I unzipped the file CS2007_3.0.20611.960.web.zip and took a look at the READ_ME.txt file. It said;
- Read the HOW_TO_SETUP_DATABASE.txt and upgrade your DB
- Ideally, copy the web files to a new location on your website for CS 2007.
- If you can’t do (2) then copy the web files over the top of your existing files.
So, I decided to do (1) first. I read the file which essentially said to look in a folder called Upgrade_From_Previous_Versions and execute cs_2.x_to_3.0_upgrade.sql.
This wasn’t the first time that I’d run this script so I knew that I was going to hit an error if I ran it;
Creating…cs_Schema_Patch_3.0.04
Msg 208, Level 16, State 6, Procedure cs_Section_Delete, Line 7
Invalid object name 'cs_Section_Delete'.
I found someone else with the same experience here;
and so I made sure that I’d executed this bit of script before running the other script;
exec sp_ExecuteSQL N'ALTER TRIGGER cs_Section_Delete ON cs_Sections
FOR DELETE
AS
BEGIN
DELETE cs_SectionPermissions WHERE SectionID IN (SELECT SectionID FROM DELETED)
DELETE cs_Threads WHERE SectionID IN (SELECT SectionID FROM DELETED)
DELETE cs_ThemeConfigurationData WHERE SectionID IN (SELECT SectionID FROM DELETED)
END'
and then I ran the upgrade script and it ran through fine 🙂
Next, I decided to not go with option (3) above but, instead, to go with option (2) and copy the new CS 2007 web files over the top of my existing ones ( my local copy anyway, not the actual files on my web server ) and so I did that. Not surprisingly, that worked ok – it’s just a file copy 🙂
Upgrading to Community Server 2008
I now wanted to get to Community Server 2008. I first looked at the package CS2008_SP1_4.0.30619.63.web.zip but couldn’t find anything about upgrading in there and so I then looked at the package CS2008_SP1_4.0.30619.63.upgrade.zip which has a .EXE inside it that can do the upgrade for you.
This is why I copied everything locally in the first place because I knew that I was going to have to run this package – there no longer appears to be an option to just run some SQL scripts and copy a few files, you’re meant to use this .EXE which isn’t “so easy” in a hosted environment.
Anyway, I set about running the .EXE and then I realised that it asks for the location of your community server files locally, opens up the configuration file and tries to talk to the database in there. Hmm. Not what I want to have happen because the connection string it’s trying to use has just been ( luckily ) over-written by my copying the CS2007 files over the CS2.1 files. Otherwise, this thing might have tried to talk to my real database out on the web and tried to upgrade my live database.
So, I changed the connectionstrings.config file to point to my local ( 2007 ) database and managed to get the tool past the 1st screen. It then asks you for the location of file galleries, photo galleries, forum post attachments, blog post attachments. As far as I know, I have never used any of these features so I just let them all default and ran the tool.
The tool ran through perfectly until it hit “Step 6: Move existing files into centralized storage” and then it through an error dialog with “Object reference not set to an instance of an object”. It emits a log file though and that log file had;
21/06/2009 21:01:08 — Executing Step 6: Move existing files into centralized storage
21/06/2009 21:01:09 — Removing dangling files
21/06/2009 21:01:09 — Upgrading file galleries
21/06/2009 21:01:09 — EXCEPTION: Object reference not set to an instance of an object.
at CommunityServer.Upgrader.FileUpgrader.UpgradeStorageType(ApplicationType type, String filePath)
at CommunityServer.Upgrader.Part4.MoveFilesToCfs()
I found a post here that referenced the same error and it perhaps made me realise that you were supposed to copy the CS 2008 files over the top of the CS 2007 files yourself before running the upgrade tool – somehow I thought the tool would do that.
So, I re-did the process and that worked just fine 🙂
Upgrading to Community Server CS 2008.5 or maybe CS 2008.5 Sp1
In order to move to CS 2008.5 Service Pack 1, I revisited the downloads page and realised I’d missed;
which gave me package CS2008_SP1_4.0.30619.63.upgrade.zip which looked to follow the same model of “copy the web files over your web files and then run the upgrader program” and that all seemed to run through fine.
Upgrading to Community Server CS 2008.5 Sp2
This one looked to be back to the previous mechanism of copying files into the web folder ( and also copying some assemblies into the bin folder ) and then running a SQL script.
So, with that, I’ve got a bunch of files and a new database that need uploading back to my website to see if any of this works.
If you’re reading this post then I should be on CS 2008.5 Sp2 🙂