SharePoint Designer is FREE

The title says it all.   Microsoft has made SharePoint Designer available for free at http://www.microsoft.com/spd.

A few words of advice when using SharePoint Designer

  • Use SharePoint designer on your development environment and then have a developer package up your modifications into a solution package (.WSP) that can be redeployed and reused in the future.
  • Using SharePoint Designer for 1 off simple workflows is not a sin.   Just remember that it is not a simple process to move an existing SharePoint Designer workflow to another location.
  • Remember that if you make any change to a web page in SharePoint using SharePoint Designer it becomes “unghosted”.   This means a copy of the page is now stored in the content database instead of living in its original location.  If the original file that the page is based upon is changed or updated it will not be reflected in your unghosted page.
  • SharePoint Designer is great for creating dataview web parts or for working out XSL formatting issues.   Once you have the web part working the way you want, always export it and then revert the page back to the site definition.   You can then import the web part back into the site and place it on the page.    This will prevent the page from staying unghosted.
  • SharePoint Designer can help you tweak your Master Pages and CSS files.    Make sure that you do this only in your development server and then package the results into a solution package (.WSP) for deployment on your production servers.
  • Make sure your server is patched up well before using SharePoint Designer.   There was a bug fixed in a recent hot fix that would cause the W3WP worker process to crash when SharePoint Designer is connected to a site.     You don’t want that to happen on your production site. 

If you have any constructive best practices for using SharePoint Designer please post a comment.   For those anti-SPD people, please don’t just say “Don’t use it”.    :-,,)

Windows Server 2008 with Hyper-V as a Developer Workstation

Microsoft Windows Server 2008 with Hyper-V is a great platform for developers who need to work across a wide variety of platforms.   Many developers are already using Microsoft Virtual PC for their development environments but soon this will not be a viable option.  Why?  All future Microsoft server products will only be offered in 64bit versions and Virtual PC only supports 32bit guest operating systems. Windows Server 2008 with Hyper-V can solve this issue since it can host both 32bit and 64bit guest operating systems.

I have been running Windows Server 2008 R2 Beta with Hyper-V for a while now and have to say that I am really impressed with the performance and capabilities.   There is, however, one small issue that may turn people off from using Windows Server 2008 with Hyper-V as their OS of choice…   Poor 3D video capabilities in the primary OS partition.

At first I was a bit confused by this.   I can enable all of the cool Windows 7ish desktop features including Aero but the performance was not good at all.  I thought maybe it was my video drivers since my computer ran Windows 7 beta lightening fast.     I updated the drivers and still slow performance.

I finally realized the issue.   When you enable Hyper-V on Windows Server 2008 the primary OS is lifted up and the hypervisor is placed under it.   This means that your primary OS is actually running just like any other virtual server.    Requests from the primary OS now go through the hypervisor first.   

In most situations you won’t notice much of a difference in performance but when you kick up the 3D graphics it will cause things to feel sluggish.   This is because 3D video operations do a lot of memory reads/writes and the hypervisor has to manage all of these calls.    This causes the calls to respond slower than if it was running native to the hardware.

If you do decide to use Windows Server 2008 with Hyper-V as your development platform you will most likely want to choose a desktop theme without all of the fancy 3D Aero graphics.  This will make your system feel like it is performing much faster and is more responsive to mouse and window operations.

I can live without all of the fancy 3D graphics on my development machine as long as I have a good development experience in my virtual environments.

W3WP Crash When Using SharePoint Designer

While attempting to use SharePoint Designer to make some minor modifications to the editform.aspx page of a list I ran into a situation where the W3WP.EXE process on the SharePoint server would crash. 

In the application event log on the SharePoint server I found the following error:

Faulting application w3wp.exe, version 6.0.3790.3959, stamp 45d6968e, faulting module kernel32.dll, version 5.2.3790.4062, stamp 46264680, debug? 0, fault address 0x0000bee7.

This really doesn’t offer much help.  But what I did know I could reproduce the error easily by attempting to edit any aspx page in SharePoint Designer.    I decided to load up Fiddler to take a peak at the HTTP requests to the server to see if I could find any clues as to the cause of the error.

With Fiddler running I could see that everything was loading fine into SharePoint Designer right up until it tried to call the GetAssemblyMetaData method on the webpartpages.asmx webservice.   Once that request was made I immediately saw the w3wp.exe error in the event log and according to Fiddler all other request just appeared to hang.  

Within Fiddler I could look at an XML representation of the request.  There I saw that the GetAssemblyMetaData method was taking a few parameters.  One of the parameters was called assemblyName and was being set to microsoft.office.server.search, version=12.0.0.0, culture=neutral, publickeytoken=71e9bce111e9429c.

Interesting, why would SharePoint Designer be trying to get assembly meta data information from the SharePoint search assembly?   I opened up my custom masterpage for the SharePoint site and found the following registration:

<%@ Register TagPrefix="SEARCHWC" Namespace="Microsoft.Office.Server.Search.WebControls" Assembly="Microsoft.Office.Server.Search,Version=12.0.0.0,Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

I did some research and from everything I can see I really don’t need that assembly registration in my masterpage.   Once I removed this line from the masterpage I was able to load and edit the editform.aspx file within SharePoint Designer with no problems.

It is important to note that this issue didn’t surface until the December cumulative patches were applied bringing the environment to version 12.0.0.6335.  Prior to that patch we were able to use SharePoint Designer without issue even when the masterpage had the SharePoint search assembly registration. 

One other interesting point is that after this registration tag was removed I watched all of the calls SharePoint Designer made to the SharePoint server.   The GetAssemblyMetaData method was never called.    I really wonder what triggers SharePoint Designer to call that method on the SharePoint search assembly registration and not on any other assembly registration.    

I would love to hear from anyone who has had a similar experience or might be able to shed some light on the GetAssemblyMetaData method call from SharePoint Designer.

Update: It looks like this may have been fixed in the February cumulative updates for SharePoint.     From the release notes: “issues fixed: When you open a SharePoint Search site by using SharePoint Designer, the W3wp.exe process crashes.”

SharePoint 2007 – Issue with Active Directory User Information Sync

Problem:  User had personal information changed in Active Directory, such as last name or email address and SharePoint continues to display and/or use the old information in sites.   The user profile information on the mysite appears correct.

Issue:  SharePoint only syncs user information in sites for “Active” users.  These are users that are explicitly added to a SharePoint group in a site.   A user that belongs to an AD group that was added into a SharePoint group is not considered active by SharePoint.

Fix: Add the user directly to a group within the site temporarily until the profile sync process occurs.  Once the information is updated you can remove the user from the group.  You can try to force a sync with the command stsadm –o sync

Additional Information:
It is possible to verify this issue by running a query directly against the SQL Database tables.    Run the following query against each of the content databases to find out in what sites the user information needs to be synced.

select tp_login,tp_title,tp_email,tp_isactive, c.fullurl from dbo.userinfo a
inner join dbo.sites b on a.tp_SiteID = b.Id
inner join dbo.webs c on b.RootWebId = c.Id
where a.tp_login=’domainusername’

Replace domainusername with the full domain and username of the affected user.
The field tp_isactive should be 1 when the user is directly added to the site and 0 when the user is not directly added to the site.   The sync process will only occur with the tp_isactive is set to 1. 

NOTE:  Do not use insert, update or delete statements against the database tables. 

Windows 7 “Previous Versions” Feature

I know that the “Previous Versions” feature is not something exclusive to Windows 7.  In fact Windows Vista users have this same functionality built in.   Most people probably don’t even know it is there and if they do they have no idea what it is for.

The previous versions feature is a very hand dandy thing for when you royally screw something up like I did this evening.   While messing around with one of my favorite free services, Live Mesh, I managed to accidentally delete several hundred files and folders under the My Documents directory.   It was totally my own fault.   Not only did I send them into my recycle bin, my nasty habit of keeping things clean caused me to also flush out the recycle bin before I realized what I had done.     A couple hours later I realized what I had done and freaked out like any normal person would when they figured out what kind of damage they just caused.

What to do… indeed.   Well my first thought was “undelete”.  Back in the old days before recycle bins you could run a handy little utility to find and recover deleted files as long as their sectors on the hard drive had not been overwritten.    So a quick search I found a few of these tools; one being free (my favorite price).   For some reason this just didn’t feel right.    I knew I was missing something.    I kept thinking that these new great operating systems must have one last trick to save us when we do something dumb.

Then it hit me.  I remember seeing the previous versions tab on the properties dialog box for a folder.   I right clicked on the root folder where I had committed the file massacre and then selected properties.   Within a moment there it was; the previous versions tab.   I click on it hoping to see something good and after a few seconds there it was in all of its glory.    This folder had eight previous versions listed, with the last one having a time stamp just about 30 minutes prior to when I engaged in my stupidity. 

It now only took me a simple selection and then the click of the restore button to watch almost 1,000 files magically restore back to their original location.    The good news is that I had not made any changes to files in that folder after the restore point had been automatically made by the operating system.

I am all back in business!   

I would recommended that besides having regular backups of your important files you also check out and understand this great buried gem in Windows Vista and Windows 7!   Who knows, it might save you some headache too.

More information: WinHelp Online Article