New CSverter build (50301) - Fixes for Single Blogs

Lots of people have been having problems getting CSverter to work for single blog configurations. With the help of a couple people, I figured out why, and have coded a fix for it. This version also fixes some problems with the web service, and has cleaner logging. The logging and UI status updates are very complex, and are still undergoing refinement.

Please read the wiki page for instructions and assistance. It is highly recommended that anyone using the tool upgrade to this new version.

Download Build 50301 now.

37 Comments

  • As mentioned on the CS forums I'm still not having any luck even with this new build :(



    Is DTS just used for the content (blog posts, articles and comments) or is it also used for the blog config aswell? On the assumption that it's just the content, then this would seem to be the part this is not working correctly for some reason.



    Any pointers you can give me to try and find out what the problem might be?

  • I like the new error handling ... much better ... here's the error I get with the one blog that won't convert :)



    See the end of this message for details on invoking

    just-in-time (JIT) debugging instead of this dialog box.



    ************** Exception Text **************

    System.ArgumentException: '100' is not a valid value for 'value'. 'value' should be between 'minimum' and 'maximum'.

    at System.Windows.Forms.ProgressBar.set_Value(Int32 value)

    at CSverter.Form1.BeginMigration()

    at CSverter.Form1.WizardPage10_AfterDisplay(Object sender, EventArgs e)

    at Divelements.WizardFramework.WizardPageBase.OnAfterDisplay(EventArgs e)

    at Divelements.WizardFramework.Wizard.GoNext()

    at Divelements.WizardFramework.Wizard.b(Object A_0, EventArgs A_1)

    at System.Windows.Forms.Control.OnClick(EventArgs e)

    at System.Windows.Forms.Button.OnClick(EventArgs e)

    at System.Windows.Forms.Button.WndProc(Message& m)

    at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)

    at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)

    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

  • Excuse I don't see the lenght of my file:



    the next lines are the lines where errors appears



    17:28:19: Step 7 starting: Migrate Data

    17:28:19: Invalid authorization specification

    17:28:19: Executing DTS for 'vlad'... (1 of 18)

  • Adam,



    Ok, I thought I licked that problem, but I guess I need to go recount my steps again. Time to refactor.



    Memncoh, I've been seeing that with a bunch of people. Are you sure the login you're using lets you save DTS packages? The default settings save the packages to the server.

  • I just tried today's build and I couldn't get it to work. It seems to be related to the fact that I have installed CS 1.0 and .Text 0.95 in non-standard directories. Instead of doing them in c:\inetpub\wwwroot\web\blogs or whatnot, I have them set up in different directories. It appears your application doesn't detect this properly.



    The error I get in the UI is "The source database does not contain a .Text installation." The logfile says something different:



    ---------------------------------------------------------------------------------------

    12:02:01 PM: Could not find a part of the path "\web\blogs\BlogAdminService.asmx".

    ---------------------------------------------------------------------------------------

    3/1/2005 12:02:01 PM

    CSverter Conversion Process Completed.

    ---------------------------------------------------------------------------------------



    I have CS installed (along with csverter subdirectory) in ..\cs-Live and the .Text installation is installed in the root folder of a different subdir as well.



    Are you looking for exact paths or whatever? Any ideas?

  • The best way to make the conversion work is to unzip CommunityServer to a root folder on the hard drive. It should look like "C:\CS_1" or something like that. Then, map the 'cs_1\web' folder to a virtual folder (or main web) in IIS. AFTER the conversion is complete, you can move it into whatever standard directory structure you use.



    It would take too much code to try to take into account every single possible way that you could deploy CS. CSverter assumes that you're starting from the CS distro archive.



    Also, be sure you put the proper folder and site locations in the proper wizard step. There are directions on that page, so please read them carefully.



    If I can convince my girlfriend to let me work for 30 minutes tonight, I'll put together an installation walkthrough that should help.

  • Alright, I tried extracting a clean build of CS 1.0 into c:\CS_1 and I set the proper database config in web.config, made sure that the default website pointed to it for the home directory, then under /web then tried again on csverter.



    I got the same results. I still get an error that says "The source database does not contain a .Text installation" and ther logfile.txt says:



    ---------------------------------------------------------------------------------------

    1:31:51 PM: Could not find a part of the path "\web\blogs\BlogAdminService.asmx".

    ---------------------------------------------------------------------------------------

    3/1/2005 1:31:51 PM

    CSverter Conversion Process Completed.

    ---------------------------------------------------------------------------------------

  • What value are you using for the CS Folder textbox?

  • My user account witch i run the the csverter is adminstrator.

    The Network services whitch run CS on the server web, is just dbo of the cs's database.



    Maybe i must grant more right to the network services account ?

  • If any of the problems with the conversion and a single blog are a result of some of the steps for setting up the single blog, feel free to let me know and I'll look into it.

  • Magic! It worked great this time. I'm not sure if it was the new build or that I tried SQL authentication as opposed to Windows Integrated this time but all my blog content migrated extremely quickly this time. Thanks!

  • Finally was able to get it to create the packages for all the users. Problem was, I had two blogs with the same email address. :)

  • Unfortunately, I'm getting an error like this in one of the blogs.



    I just figured out how to add exception logging to a file for a task in DTS (very handy)..



    Make any sense? In Notepad2 I see A LOT of NUL characters ...



    DATA TRANSFORMATION SERVICES: Data Pump Exception Log





    Package Name: CSverter package for weblogs - User: nik | BlogID: 5

    Package Description: (null)

    Package ID: {6DCF6BEA-239D-4407-A35C-3B1CB0CDE57C}

    Package Version: {EADBB279-15A2-4781-AF2D-28402BCFEF93}

    Step Name: DTSStep_DTSDataPumpTask_1

    Execution Started: 3/1/2005 8:59:26 PM

    Error at Destination for Row number 208. Errors encountered so far in this task: 1.



    Error Source: Microsoft OLE DB Provider for SQL Server

    Error Description:Unspecified error

    Error Help File:

    Error Help Context ID:0



    I can't even post the errors because of the NUL characters :(

  • Robert



    Unless you've changed what the engine keys off of for the blog_Config table, it keys off of the email address and builds everything from there. Having the same email address for multiple blogID's caused my initial code to fail as well, but like I said you might have changed that. If not, looks like we need to :-).

  • @Adam



    That task migrates data from the .Text blog_Content table...have a look at row 208 in that table and let us know what you see. Also, how do you add exception logging for a task in DTS? Man, I really could have used that when I was writing the engine.

  • you can add error logging for the entire package ... go into design view, then on the menu select Package -> Properties ... it's in there ... you can also view the properties of a particular task and the Options tab has that tasks specific logging options ...



    you can even tell it to accept upto X number of failures before failing the task ...



    do you want row 208 of that specific blog, or all entries in the table?

  • From row 208 of the table (no-sort) the only odd thing I notice is that the Text table does not have any data... with a posttype of 4, and a null sourceurl ... this row is for blogid 5 too ...

  • Interesting...yeah, a posttype of 4 in .Text is a trackback, so those other null values are to be expected. Are you sure that's *row* 208, or is that ID 208? Also, any way you can get row 208 for blogID of 5 from that table (something like 'SELECT ID, [row_number] from blog_Config WHERE blogID = 5' <-psuedo-code), and then find that ID in the table? I can't think of a query offhand to get it...

  • Any other trackbacks from "4 NJ7's Blog" in previous rows? My first guess is that the single quote is causing an issue with the execution of the DTS package...SQL doesn't like them too much.

  • yeah, i'm sure it is row 208. the debug output actually shows you the row output with the first row being the id and they match up.



    other blogs have single quotes in the data with a posttype of 4 too ... ones that work in fact ... i'm only having trouble with 3 blogs, i'm trying to tract down what it could be but it looks like it is the same in all of them ...



    the pattern i see so far is that they each have no text data (empty string) and they have a single quote with no matching closing quote (i'm guessing) in any other field ...

  • I think you're right on w/ that assumption, but w/o being able to debug w/ that set of data I can't be certain. IIRC, the correct way to insert single quotes in ANSI SQL is to actually use a pair of single quotes (''), so NJ7's should actually be NJ7''s...the SQL parser figures it out for you when spitting out the value to actually be just a single. So, that appears to be a .Text issue...they didn't double up on their single quotes. I know it's tedious, but can you edit one of the rows above to double up on the singles and see if it works?

  • I may have been wrong by saying it was a .Text issue...regardless, it looks like we'll need to add a second single quote to all instances of a single quote via code so that it's processed correctly by the SQL parser.

  • Some other weird stuff ... (local)\InstanceName doesn't work but ComputerName\InstanceName does ... :) This may be a SQL Server thing ... just incase someone else has trouble ...

  • Also, integrated security doesn't seem to work... if I use SA it works though ...

  • @adam



    That's so strange that the migration works for a virtual directory under localhost but not for a root website...any thoughts Robert? Regardless, so long as the data is migrated over a new URL can be added to the CS database. Weird stuff.

  • It would be great if it would also be possible to convert the galleries ;)

  • I can get the wizard to complete all of it's steps just fine and all the tables and stored procs get added. All the users get migrated over too. However that's all that got migrated, all the other tables are empty. The log shows nothing out of the ordinary. Any idea how migrating the posts/categories/links/etc would fail without logging it?

  • I take that back, there is one log entry that looks out of place --



    1:58:14 PM: Step 7 starting: Migrate Data

    1:58:15 PM: DTS Package 'CSverter package for DotTextBlogs: Url Conversions' already exists with a different ID in this category.

    1:58:15 PM: Executing DTS for 'craig'... (1 of 3)

  • You didn't clear out the DB between tests. If that step fails, all others will fail.

  • I did. I deleted the entire db and created a blank new db. Is there something else I should be doing other than deleting the db?

  • Yeah, you need to delete the DTS packages too.

  • That did it! Thanks Robert, everything migrated succesfully :)

  • I had to copy over the BlogAdminService.asmx manually, not sure why that was failing, but now it's created all the blogs.



    It's failing for me when trying to migrate the data though. I assume this means I don't have osmething installed properly? What do I need besides the SQL Client tools? Is there a particular version or SP i need to get perhaps?



    System.InvalidCastException: QueryInterface for interface DTS.CustomTask failed.

    at DTS.Task.get_CustomTask()

    at DotTextCS.Engine.DtsPackage.Task_Urls(Object goPackage)

    at DotTextCS.Engine.DtsPackage.BuildUrlPackage(DtsDatabase dotText, DtsDatabase communityServer, Boolean savepackage, Boolean executePackage, String logFile)

    at CSverter.Form1.MigrateUrls(Boolean savePackage, Boolean executePackage)

    at CSverter.Form1.BeginMigration()

    at CSverter.Form1.WizardPage10_AfterDisplay(Object sender, EventArgs e)

    at Divelements.WizardFramework.WizardPageBase.OnAfterDisplay(EventArgs e)

    at Divelements.WizardFramework.Wizard.GoNext()

    at Divelements.WizardFramework.Wizard.b(Object A_0, EventArgs A_1)

    at System.Windows.Forms.Control.OnClick(EventArgs e)

    at System.Windows.Forms.Button.OnClick(EventArgs e)

    at System.Windows.Forms.Button.WndProc(Message& m)

    at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)

    at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)

    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

  • Vermyndax -



    Check who the owner of the tables are. I was running into something similar where my tables were owned by something other than DBO. It will fail unless you login with SQL authentication as that user...

  • Rob (or anyone else): Any ideas on that error I'm seeing?

  • I got 404 error when I am trying to download your package.

  • Getting bad Hostname Invalid Hostname when trying to download the package.

Comments have been disabled for this content.