Tuesday, August 14, 2012

Sitecore Tip O' The Evening

Using this in SC 6.5, pretty sure it works with all the current versions...

If you have a lookup field type and need to filter at the child level of the current parent by template name, use this: query:./parent::*[@@templatename='Activity']. Works like a charm. Basically this will allow you to have a mix of TemplateA and TemplateB under the same parent (more for content tree and SEO purposes than anything else) and be able to only allow the content editors to select from like templates in your lookup field.

Friday, August 10, 2012

Sitecore 6.5 Upgrade follow-up

Overall the upgrade went really well. From a public-facing perspective it was pretty seamless and our content editors are definitely happy that they can now use the browser of their choice to do content editing. The only caveat I have found so far is that when I was trying to import windows-encoded csv files using chrome on the mac and my custom tool the characters were getting jacked up. Running the same code with the same file in IE on windows had no problem.

The biggest setback we suffered in the upgrade process was that our site search stopped working cold. This probably should have been obvious given the amount of articles from Alex & Sitecore about the Lucene Search impending obsolescence but I missed it for the most part. I pretty much thought that 'depricated' meant 'will still work' but for whatever reason our search just gave up the ghost. I had config errors with the indexes I had previously defined in our web.config so just commented it out in the initial pass and then forgot about the whole deal. I guess I should have reviewed the first note in my previous upgrade post but we got busy and it slipped off the list. Finally circling back around to this topic, I've been hunting the web for good info. The best info I found is a combination of these two links:


The first helped by getting me a config file that works:
 <configuration xmlns:x="http://www.sitecore.net/xmlconfig/">  
  <sitecore>  
   <databases>  
    <database id="web" singleInstance="true" type="Sitecore.Data.Database, Sitecore.Kernel">  
     <Engines.HistoryEngine.Storage>  
      <obj type="Sitecore.Data.$(database).$(database)HistoryStorage, Sitecore.Kernel">  
       <param connectionStringName="$(id)" />  
       <EntryLifeTime>30.00:00:00</EntryLifeTime>  
      </obj>  
     </Engines.HistoryEngine.Storage>  
     <Engines.HistoryEngine.SaveDotNetCallStack>false</Engines.HistoryEngine.SaveDotNetCallStack>  
    </database>  
   </databases>  
   <search>  
    <configuration>  
     <indexes>  
      <index id="web" type="Sitecore.Search.Index, Sitecore.Kernel">  
       <param desc="name">$(id)</param>  
       <param desc="folder">web</param>  
       <Analyzer ref="search/analyzer" />  
       <locations hint="list:AddCrawler">  
        <master type="Sitecore.SharedSource.Search.Crawlers.AdvancedDatabaseCrawler,Sitecore.SharedSource.Search">  
         <Database>web</Database>  
         <Root>/sitecore/content</Root>  
         <IndexAllFields>true</IndexAllFields>  
         <fieldCrawlers hint="raw:AddFieldCrawlers">  
          <fieldCrawler type="Sitecore.SharedSource.Search.FieldCrawlers.LookupFieldCrawler,Sitecore.SharedSource.Search" fieldType="Droplink" />  
          <fieldCrawler type="Sitecore.SharedSource.Search.FieldCrawlers.DateFieldCrawler,Sitecore.SharedSource.Search" fieldType="Datetime" />  
          <fieldCrawler type="Sitecore.SharedSource.Search.FieldCrawlers.DateFieldCrawler,Sitecore.SharedSource.Search" fieldType="Date" />  
          <fieldCrawler type="Sitecore.SharedSource.Search.FieldCrawlers.NumberFieldCrawler,Sitecore.SharedSource.Search" fieldType="Number" />  
         </fieldCrawlers>  
         <!-- If a field type is not defined, defaults of storageType="NO", indexType="UN_TOKENIZED" vectorType="NO" boost="1f" are applied-->  
         <fieldTypes hint="raw:AddFieldTypes">  
          <!-- Text fields need to be tokenized -->  
          <fieldType name="single-line text" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <fieldType name="multi-line text" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <fieldType name="word document" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <fieldType name="html" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <fieldType name="rich text" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <fieldType name="memo" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <fieldType name="text" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <!-- Multilist based fields need to be tokenized to support search of multiple values -->  
          <fieldType name="multilist" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <fieldType name="treelist" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <fieldType name="treelistex" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <fieldType name="checklist" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
          <!-- Legacy tree list field from ver. 5.3 -->  
          <fieldType name="tree list" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />  
         </fieldTypes>  
        </master>  
       </locations>  
      </index>  
     </indexes>  
    </configuration>  
   </search>  
  </sitecore>  
 </configuration>  

While the second got me the code necessary to fire off the rebuild. The blog link was passing a string of "web" to the Sitecore.Jobs.JobOptions constructor which was not quite correct. I just copied the Builder object into my project, rebuilt and boom! indexes are rebuilding.

For the actual searching, I pulled down the Advanced Database Crawler code from Trac (http://trac.sitecore.net/AdvancedDatabaseCrawler/browser/Branches/v2/) and integrated that way. Still testing and dialing in but so far this looks promising and was only a couple of hours work to get from old style to new style Sitecore search.


Monday, May 21, 2012

50 Home Crossfit Workouts

Ever since my trip to myrle and the wife's unexpected trip back east, I've been slacking on my exercise. Just saw this list of crossfit workouts which seem doable at home. Now I have no excuse! 50 Home Crossfit Workouts

Thursday, May 3, 2012

Sitecore CMS 6.5 migration notes (cont)

More fallout from our migration from Sitecore CMS 6.1 to Sitecore CMS 6.5. So far we've had some roadblocks but everything has been fairly minor and easily solvable.

Problem - Search indexes cannot be rebuilt:
Job started: RebuildSearchIndex|System.UnauthorizedAccessException: Access to the path 'E:\Development\S\SUZ\Sitecore 6.5.0 rev. 111230\data\indexes\__system\segments.gen' is denied.
  at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
  at System.IO.File.Delete(String path)
  at Lucene.Net.Store.FSDirectory.Create()
  at Sitecore.Search.Index.Reset()
  at Sitecore.Search.Index.Rebuild()
  at Sitecore.Shell.Applications.Search.RebuildSearchIndex.RebuildSearchIndexForm.Builder.Build()|Job ended: RebuildSearchIndex (units processed: )


Solution:
Give write permissions on the indexes directory to the application pool identity “IIS AppPool\sitecore_65” (or whatever your app pool is named).

Once this was done, we could then work on updating our indexes from the ‘old’ way to the ‘new’ way. Alex Shyba’s and Brian Peterson’s blog entries are a great resource for this. Since converting, the same search term is only returning 35 results on the dev site vs. 283 on teh current live site so there is definitely more work to do in order to get this wrapped up but it’s a start. My initial guess is that we were indexing more fields in our old, custom index than is happening with the default shared source module.




Problem - Only EN culture in web database:
Once everything above was fixed we started testing the other versions of the sites, namely our en-CA and fr-CA versions. Surprisingly, things didn’t show up properly at all. After some quick investigation, we discovered that there were absolutely no canadian versions of the items in the web db.

Solution:
Use the control panel to add the missing cultures so sitecore knows about them. Kind of weird that they all imported ok as content and then just wouldn’t publish. I would sort of expect to get a warning when importing that the target culture did not exist in sitecore.

Monday, April 9, 2012

Web.Config Fixed

Well, it turns out that a second set of eyes can do wonders for troubleshooting. I filed a ticket with Sitecore and Alexey easily pointed out that the web.config my new site was using was missing the proper XslExtensions mapping. While it was correct in the 6.1 instance, I had missed porting it over to the new 6.5 web.config and then was looking at the old file thinking i had put it in there. Oops, that’s pretty weak on my part. Now that the config has been properly updated things are loading properly and everything is looking good. Alexey also reminded me that this is not their preferred method for upgrading a Sitecore instance but at the end of the day, for my personal situation which is basically a small team and no budget to upgrade from point release to point release manually updating configs and databases, I think that if everything tests out it will be the way we move forward.

Another thing I figured out the hard way via debugging is that any custom handlers you have need to now be set up under in the web.config file when you move to 4.0 of the .Net framework on the server and also switch over to the Integrated pipeline. Not a big ordeal, just took a bit of logic and a second opinion to reason that one out.

Now everything is happy and we’re on to the QA phase.

Friday, April 6, 2012

Sitecore 6.1 -> Sitecore 6.5 CMS upgrade process


Having previously gone through the painful and incremental process of upgrading from Sitecore 5.3 to Sitecore 6.1 and then reading this article, I am attempting to upgrade from 6.1 to 6.5 via a clean install then content migration. Here are my notes as I went through this process.

  1. Read release notes
    1. http://sdn.sitecore.net/Resources/Sitecore%206/Sitecore%20CMS.aspx
  2. Install fresh Sitecore 6.5 CMS instance & dbs
    1. http://sdn.sitecore.net/SDN5/Products/Sitecore%20V5/Sitecore%20CMS%206/Update/6_5_0_rev_111230.aspx
    2. configure a second iis site to point to the new instance, config everything, etc.
  3. Export existing roles from 6.1 instance
    1. Sitecore
    2. Security Tools
    3. Role Manager
    4. Serialize All Roles
  4. Export existing users from 6.1 instance
    1. Sitecore
    2. Security Tools
    3. User Manager
    4. Serialize All Users
  5. I didn’t have any custom domains, but would guess you should do this for domains, if applicable.
  6. Copy the serialization folder from the 6.1 instance to the 6.5 instance
    1. /Sitecore/data/serialization
  7. Import users into 6.5 instance
    1. Sitecore
    2. Security Tools
    3. User Manager
    4. Revert All Users
  8. Import users into 6.5 instance
    1. Sitecore
    2. Security Tools
    3. Role Manager
    4. Revert All Roles
  9. note that this will NOT serialize user passwords and other caveats may apply
    1. http://sdn.sitecore.net/forum/ShowPost.aspx?PostID=28899
    2. solution is to write a job that will reset every password and email the user a notification
      1. http://sdn.sitecore.net/forum//ShowPost.aspx?PostID=39959
  10. profile info migration?
    1. Not sure if this is included with the user when serialized.
    2. I would guess not which would mean I’ll need to write some sort of utility to port it over from the old db to the new db.
    3. Maybe a DTS package?
  11. Update: Steps 3 - 10 above didn't get me anywhere and I think emailing every user to let them know their password changed on them could end up being a huge hassle. I instead used the Sql Server Import/Export Wizard to just migrate the asp.net membership tables from the 6.1 core db to the new 6.5 core db. I checked the content and structure of both sets fo tables and couldn't find any changes so it feel like this was safe. We tested in dev prior to going live as well.
  12. Create package for templates
  13. Create package for layouts/sublayouts/renderings
  14. Create package(s) for media
    1. allow plenty of room for the zip(s) (at least as much as the master db size)
    2. first attempt at single zip failed to import (was almost 5gb). got a “Could not read signature - no data!” error with no other explanation.
    3. tried to do a 4gb file and got “Specified argument was out of the range of valid values. Parameter name: count”
    4. later attempt with a 2gb file did work.
  15. Create package for content
  16. Copy above packages from 6.1 instance to 6.5 instance
    1. /Sitecore/data/packages
  17. Import all the packages in the following order:
    1. templates
    2. layouts
    3. media library
    4. content
  18. Do a full republish on everything
  19. Branch your SVN tree so you can keep working on the base code during migration. (Just in case this takes a while, I get pulled away for other stuff all the time.)

So now that your Sitecore content is up to snuff it’s code time. We had checked the Sitecore install into our SVN repository and had our code intermingled with it. Not sure if this is the best practice since I personally don’t like to check in anything that isn’t compiled from our code but this is where we’re at currently. The first attempt was to just map the layouts, xsl, et al., directories from the branched tree to the new Sitecore website in IIS but Sitecore wasn’t so happy with that.

Could not load type 'SiteCore_Custom.layouts.Main'.

Or so I thought. Turns out that I didn’t copy over my custom dlls to the Sitecore/Website/bin dir. Just reminds me of when my dad used to say a good craftsman doesn’t blame his tools. Lesson learned, pops. Fair enough, then i got this:

Method 'get_EnableCdn' in type 'System.Web.UI.ScriptManager' from assembly 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation

Thisx was easily solved with the googles, which directed me to a StackOverflow article (http://stackoverflow.com/questions/5341324/method-get-enablecdn-in-type-system-web-ui-scriptmanager-from-assembly-syst). I should probably spend some time researching what that actually means (I think that section binds specific calls from older dlls to newer stuff but not totally sure), but I removed the code and winner winner chicken dinner!

With the older code essentially functional under the new Sitecore 6.5 install, it’s time to get down to nuts and bolts. Some stuff that was working prior to upgrade just started failing. There is also some weirdness when debugging in Visual Studio and it seems to enjoy spiking the CPU to 100% and not returning (but seems ok when not attached).

A weird issue I’m seeing is when i try to edit the presentation for one of our product nodes. Everything seems to edit properly but whenever i click OK to save i get the following exception:

Invalid column name 'TargetVersion'.

An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
System.Data.SqlClient.SqlException: Invalid column name 'TargetVersion'.

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

[SqlException (0x80131904): Invalid column name 'TargetVersion'.]
  System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +404
  System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +412
  System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363
  System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6387757
  System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +6389458
  System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +538
  System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +689
  System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +327
  Sitecore.Data.DataProviders.Sql.DataProviderCommand.ExecuteNonQuery() +89

[DataException: Error executing SQL command:  INSERT INTO [Links](   [SourceDatabase], [SourceItemID], [SourceLanguage], [SourceVersion], [SourceFieldID], [TargetDatabase], [TargetItemID], [TargetLanguage], [TargetVersion], [TargetPath] ) VALUES(  @database, @itemID, @sourceLanguage, @sourceVersion, @fieldID, @targetDatabase, @targetID, @targetLanguage, @targetVersion, @targetPath )]

[Exception: Invalid column name 'TargetVersion'.]
  Sitecore.Data.DataProviders.Sql.DataProviderCommand.ExecuteNonQuery() +342
  Sitecore.Data.DataProviders.Sql.SqlDataApi.Execute(String sql, Object[] parameters) +61
  Sitecore.Links.SqlLinkDatabase.AddLink(Item item, ItemLink link) +908
  Sitecore.Links.SqlLinkDatabase.UpdateItemVersionLinks(Item item, ItemLink[] links) +438
  Sitecore.Events.EventSubscribers.RaiseEvent(String eventName, Object[] parameters, EventResult result) +397
  Sitecore.Events.Event.RaiseEvent(String eventName, Object[] parameters) +390
  Sitecore.Events.Event.RaiseItemSaved(Object sender, ItemSavedEventArgs args) +325
  System.EventHandler`1.Invoke(Object sender, TEventArgs e) +0
  Sitecore.Data.Engines.EngineCommand`2.Execute() +267
  Sitecore.Data.Engines.DataEngine.SaveItem(Item item) +234
  Sitecore.Data.Managers.ItemProvider.SaveItem(Item item) +291
  Sitecore.Data.Items.ItemEditing.AcceptChanges(Boolean updateStatistics, Boolean silent) +229
  Sitecore.Shell.Framework.Commands.SetLayoutDetails.Run(ClientPipelineArgs args) +670

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
  System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner) +0
  System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +640
  System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +38
  System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) +35
  Sitecore.Nexus.Pipelines.NexusPipelineApi.Resume(PipelineArgs args, Pipeline pipeline) +379
  Sitecore.Web.UI.Sheer.ClientPage.ResumePipeline() +285
  Sitecore.Web.UI.Sheer.ClientPage.OnPreRender(EventArgs e) +498
  Sitecore.Shell.Applications.ContentManager.ContentEditorPage.OnPreRender(EventArgs e) +25
  System.Web.UI.Control.PreRenderRecursiveInternal() +113
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4201

I don’t see anything non-sitecore in the stack so maybe not. Oddly enough, re-opening the presentation shows it saves the changes and I can publish successfully. My initial thought is that we have some custom event handler in the pipeline that needs to get updated for 6.5 but will look at that later.

The reason I’m playing with the presentation is because one of the xlst’s on the page is not rendering. In the Sitecore logs I see this:

ERROR A rendering error occurred: Xsl file could not be processed (details: System.Xml.Xsl.XslTransformException: Cannot find a script or an extension object associated with namespace 'http://www.sitecore.net/xslext'.

While that looks like it is a Sitecore issue, we actually named our custom XSL extensions using that namespace and in retrospect that was probably not a great idea but still fairly easy to track down. After re-tracing how the extensions get loaded (using the xslExtensions section in web.config) and printing out the executing dll location to verify it did indeed have the extensions built in, I’m kind of stumped. Kind of fatigued right now so I’m just going to post this as is and do a follow up once I have a fix for teh xsl extensions issue. I don’t think re-writing all the xlst’s as sublayouts is a viable option since that would take a huge effort.

Monday, March 5, 2012

Crossfit time!

For Christmas I got the wife a last-second (literally) groupon gift certificate and a few weeks later we saw a sweet deal for our local crossfit gym. It was basically pay for 2 classes and get 10 free or something like that. Since we've been meaning to get back into shape and she has a bum knee I got the goods. Have gone two times now (Thurs then Sat) and it is pretty tough. Either that or I am in really bad shape. Or a combination of those, probably. I haven't puked or anything but really had to dial back the proscribed exercise reps in order to complete in a timely fashion. Felt super sore on Friday and some but not as much on Sunday. Today I'm feeling pretty good and even rode the 'ol DR-Z into work. Going to try and keep it up because I already feel much better and can tell it is a super-solid workout. Plus, everyone there seems pretty chill. It isn't like going to some meathead gym and getting shamed for lifting so little. Maybe in a few more weeks I'll be keeping up with the rest of the people there but for now I'm just going to push myself to do as much as I can and forget about them.

Also, of greater interested to the technical community as opposed to the athletic community, I just switched over to IntenseDebate as the commenting platform for this blog. Going to give it a test run and see what it does. Please comment so I can see how this shit works.

Wednesday, February 8, 2012

Kid Cabniks


Last weekend the wife headed out of town for a group birthday celebration with some friends in San Diego. Since the kids, mostly Sass, had been begging for a 'cabnik' to hang over their beds I figured that would give us a nice weekend project. We ended up only needing two trips to the Depot for parts and supplies. I found this blog that laid out the basic idea of the thing then I let the kids pick out their own shelf configurations. Sass went with the standard config and Matty decided he only wanted 2 cubbies but i managed to talk him into 4 so that he can store more cars in it. Not going to bore anyone with the details of the build, but I cut everything up on the table saw and then the kids helped assemble and sand. Neither wanted to paint but it fits in pretty well with their unfinished wood beds. The only shortcut I took was in mounting the doors. Probably should have chiseled out a notch so they fit flush, but by that time the kids patience and mine were pretty much used up. They look fine and the kids don't really care so overall I'm pleased we knocked it out in one weekend. The kids love them.

Sass' Cabnik

Matty's cabnik

Once they were on the wall the kids decorated with stickers and put some of their prized possessions in them.

Done and Done.

Back in the saddle

Wow, apparently it has been a while since I posted. Trying to get back into this as part of a holistic self-improvement program. Got a lot of stuff I want to figure out and learn about and this seems like a fair place to put it. If it is of interest to you, excellent. If not, there are plenty of other shitty blogs and sites on the infinite interwebs for you to check out.

Here is a sampler of (hopefully) upcoming topics:

  • Responsive Design
  • Home Improvement Projects
  • Restoration of the Ol' Suzuki GS450E
  • Hop-ups of the New Suzuki DR-Z400S
Enjoy!

- w

Tuesday, October 12, 2010

Starter switch, cont.

Stopped in to Radio Shack today during lunch and they have a pretty good selection of automative switches that I can choose from for replacing the kill switch and starter switch. I figured that by this point they would have abandoned the home electronics enthusiast completely in deference to the phone sales dept. Everything pretty much around $3. I dismantled the switch assembly and took this picture of the switches and wiring.


Seems pretty straightforward so I think it should be no problem to swap out the switches and solder new ones on. I also remembered that when I removed the starter motor it required taking off the cam chain tensioner and the gasket ripped. Add that to the list of items I'm going to need to track down.

Monday, October 11, 2010

Starter switch

Got a short opportunity to work on the bike this weekend but didn't make much progress. The starter switch is really corroded so it looks like a new one is required. I got a quote for an OEM from inside Suzuki for $45 which is pretty much what I'm seeing on ebay, etc. so I'm thinking Radio Shack may be a better option. I saw a cool mod from some guy who did this as part of a bobber project but lost the link. He had it mounted under the seat so you could barely see it. I also found a nice troubleshooting post for the starter circuit here, that I'll be trying out as soon as baseball season is over. Hopefully not for another month... go Giants!

Sunday, September 26, 2010

We have ignition! Sort of.

After a lengthy hiatus, I was back in action this weekend and made some major progress on the bike. Maybe 'findings' is a better word than 'progress'. I got the instrument cluster re-installed (was mis-placed for a bit) and the new battery hooked up. Still nothing when I hit the start button but the headlight works (both high and low!) and the indicators light appear to be functional. According to the grainy pdf I found online of a close-match gs450, the red light in the pictures below could be the 'side stand check light and buzzer'. I wasn't able to get it turn off so it is either something else or maybe there a bad switch somewhere. For the first picture, I had the bike in neutral, the clutch in and the side stand up but nothing happened. I put it in gear for the second picture and tried again and still nothing (but was not expecting anything).

Key is in the 'run' position,
bike shifted into gear.
Key is in the 'run' position,
bike in neutral.







So obviously there is a wiring issue with the starter since the starter relay is brand new and the battery is new as well. As a test, I removed the starter and used jumper cables to connect the battery and tap the contact. It spun up so it seems like the starter is not the issue. Next up is to test the switch wires. I have isolated the starter wiring harness so it should be pretty straightforward to diagnose. Once I got the starter re-installed on the bike, I repeated the battery test and the bike turned over. Overall it sounds pretty bad with a loud clunking sound. Not promising but then again this was never supposed to be a quick flip. Each time I put some effort into it I am learning more and making progress so I have to be happy with small victories.

There are still some other lingering issues as well, like these random, loose wires:

Disconnected from something, but what?

I think these two went to the original gas tank.


That's about it for now. If anyone has suggestions about the mystery wires, let me know.

Thursday, September 9, 2010

Progress! sort of.

After a bunch of emails back and forth about the missing starter relay, I finally got fed up (and had a minute) to call them and let them know how frustrated I am. The guy seemed hesitant but eventually conceded that they will ship me another relay while the claim is pending with the USPS. Have to figure another week or so for it to show up so hopefully I can get some work done on the bike next weekend. In the meantime I have discovered that it is leaking a little bit of oil. I guess not surprising given the age and mileage but hopefully that won't end up being a big issue.

Thursday, August 19, 2010

Delayed...

Quick note to break the radio silence this time. I ordered the new starter relay and it finally showed up, sort of. What I got was an empty envelope in the mailbox. I now have pending investigations with both the company and the USPS. so basically the project is on hold until I get a new one with no current ETA on when that will be.

Sunday, August 8, 2010

Electrical 101

I managed to get some time this weekend to work on things and being the aggressive/impatient type I was curious to know if I bought a motorcycle or just 400 lbs of dead steel. I took the old battery to the battery store knowing that it was probably not up to the task and got confirmation from the guy who said it was pulling a mere 2 volts. Getting $10 was too much to pass up so I got a new sealed battery and a tender/charger which has nearly doubled my investment. (see the tally page for details). I got back to the house, hooked it up and much to my surprise the headlight lit up and the high/low switch even works! The bike doesn't turn over, though, so I got the manual out and after some debugging feel fairly confident that it is the starter relay, as pictured here:


I labelled all the loose wires with painter's tape since you never know when this will resume and then ordered a new one online for $35.95 + shipping. Should be here in a week or so. Hopefully I don't have to replace everything electrical because at this rate it will take $5000 and the next decade to get this thing done (while the current value of a good version of this bike is worth maybe $1k at best, see this).

On the bright side, at least there was a general functioning of the electrical system and as a bonus I got the new ignition switch installed. It may the only new and clean part on the whole deal currently.


Overall the swap out was pretty easy. Two bolts hold the headlight to the collars on the forks so once one was removed it swung out of the way (sadly dropping the nut into the headlight bowl). After that there were just a couple bolts with hex heads holding the ignition switch itself onto the top of the triple tree. In order to get the dropped nut out I unscrewed the 3 retaining screws and pulled the light out, revealing a bunch of nastified cob webs but nothing too terrible. Since the kids were napping I just left it and have not vacuumed out yet. I figure it isn't worth putting back together until I know the electrical stuff is all in order but will probably clean it out at some point.

That was it for the weekend. If I'm lucky the replacement starter relay will be here is time for next weekend but I'm not that hopeful that it will be since I ordered late on a Sunday and they said 5 - 7 days shipping.

Thursday, August 5, 2010

New tires? Maybe not...

Tiring at the end of the week and sporting a wicked cough still so not much time or desire to work on the bike tonight but I did have enough time to put some air in the tires to test them and get the gas tank back on. Stupidly I bolted the tank on only to realize that I forgot to put the petcock on first. It didn't really fit so I had to remove the tank insert the petcock and bolt the whole thing back only. Amateur!

My previous assessment about having bad tubes was way off since the bike has tubeless tires. I inflated the them to 42 PSI based on indications on the sidewall for cold tire pressure and so far they seem to be holding their own. There is still a ton of tread on them so we'll see how it goes. If this ends up running well enough to get back on the road I'll definitely take them in to the shop and make sure they are good before any serious riding.

No new pics tonight, it pretty much looks the same. If I can get the bolts from the deport this weekend I might just try to fire it up. Based on replies (thanks!) from the suzuki-l listserv, I am good to use off the shelf bolts since this is a low torque and low stress cover. Having taken the cover off and inspecting, I would tend to agree. Another good resource that I was referred to and have just started to tap is the GS Resources web site.

Wednesday, August 4, 2010

Oil change complete

So I think that the oil change phase of the restoration is complete! Got it finished tonight and overall I would have to say I'm pleased with what I saw. I took of the oil filter cover and it looked like this:


There wasn't much sediment in there and no metal chips that I could find so perhaps that is a good sign for the project.

I also pulled out the plugs and they both look like they have seen some use but are in good condition. There are no indicators of anything amiss visible so I'm pretty happy with that.

That still leaves a bunch of recommended services I need to go through, though. I'm keeping the list up to date in a separate page here. Going to try everything up to the 20,000 km level once I know the engine at least runs a bit. Check back to see what I'm knocking off in my free time. That's it for tonight, peace.

Tuesday, August 3, 2010

The clutch is a dusty, dusty place

Sometimes peer pressure is a good thing. I posted a comment on facebook and my buddy Chris replied that I should post some pics since it is good motivation to keep going. He is definitely right and because of that, I stopped doing real work and took a break to do some fun work on the bike. Little did I know the amount of work I think I am in for. I think I have figured out the clutch cover bolt specs. Based on a tip from a co-worker I just measured the depth of the holes using a wire coat hanger (the hanger was my idea). Turns out I need a 2" and a 2 1/2" bolt. It feels like that is the true depth and there isn't a pre-existing bolt sheared off in there (which was my original fear) because of how accurate the depths are. Also, there are other bolts on the cover which are those lengths. That is the good news. The bad news is that out of curiosity I pulled off the clutch cover to peek at the clutch & tranny itself. I can tell you I was not expecting to hear the creaking of cobwebs when I pulled the cover off but that's what I got. Pre-shop vac it looked like this:
Yes, that is cob webs, leaves and general dustiness inside. After shop vac-ing it really isn't much better it looks like I'll be adding a complete cleaning of that sub-assembly to the list. Maybe I can just power wash and re-lube? I also drained all the oil out of the bike in preparation for the 7,500 tune up which will magically restore the bike to working order.

Here are some more pics of the naked bike. I removed the gas tank so I could clean a little better and get a look at more of the engine.



Friday, July 30, 2010

Missing clutch plate bolts

As previously mentioned, I am missing a couple bolts from the clutch plate cover. Here is a picture of the exact location:

My poor camera's minimum focal length made it tough to get a crisp shot of it but this should suffice. The manuals I have do not indicate what the specs are for these bolts but I have some calls in and feel free to comment if you have thoughts.

Spider update: bike has been sitting for a week and there seems to be only 1 spider left. I think one more vacuum session should finish them off.

Saturday, July 17, 2010

Cleanup Continues


As promised, here are some pics of the bike the day I brought it home.

The next pic kind of shows a 3/4 view. I think the bike must have been dropped on its left side since the ball is missing on the clutch and the left side of the engine is a bit pocked up.



From this angle the bike actually looks pretty good... almost shiny!






I'm not sure if the angle is off a bit or the pipes are actually different heights. It may not matter if they're off a bit, though, since the left side pipe has what appears to be a poorly welded hole that is now a rusted out hole.



I did some major cosmetic cleanup and pretty much got all the cobwebs out of the crevasses and also removed the tail section down to the frame. I realize that this is not how the standard maintenance regimen would go but it seems like making sure I don't get tagged by a spider reaching into the bike seems like a priority.

I am now kind of stuck until the manual shows up but here are some more current pics and an addendum to the list of known issues:

  • ball end missing on the clutch lever
  • hole in the left exhaust pipe (pipes look to be conjoined somehow which probably means having to replace the entire assembly)
  • the clutch cover plate appears to be missing the two lowest screws

Speedo, reading 31,480. The ignition is just for show!

Here's the pocked left side of the engine case:

This is the new rear end. I think that with a new seat and maybe an integrated brake light, license plate holder would help with the whole cafe racer look.

So far there are a few good things about the bike (aside from the bargain basement price):

  • Hasn't leaked anything onto the garage floor. Either everything is dry inside or the seals are all pretty good
  • Gas tank is dry as a bone. Again, if I'm lucky it got drained before getting mothballed instead of having to degunk everything.
  • Looks pretty badass already. while not exactly comparing apples to apples, it seems to be 6" - 8" taller than the GZ250 I have been riding around and if restored to full working order should provide much better commute capabilities.
  • Almost no rust. Certainly living in Cali for 30 years is better than the northeast or many parts of the land but so far the frame and engine components seem to be in reasonable shape. That may change when I start trying to take parts off and find that the bolts are rusted into a single blob but who knows.