Workflow dev in MOSS 2007/WSS 3.0

I’m doing research into developing “simple” workflows in MOSS 2007/WSS 3.0.

This is mostly a linkdump post, but I wanted to say that the “simple” workflow I have to work with (publishing documents from a private workspace/subsite to a public parent site, seemingly cannot be accomplished with SharePoint Designer 2007, which seems to be limited to publishing from one Document Library to another within the same site.

Thus, I’m investigating how to do workflow dev in Visual Studio 2005.

Site Definition and Themes Customization Research Links

I’m doing some research into Site Definitions and Themes in MOSS 2007/WSS 3.0. My goal: Determine how similar or different the mechanisms are from SPS 2003/WSS 2.0. Answer: looks pretty similar!

MOSS 2007 server farm architecture links

All in all, it looks like MOSS 2007 server farms consist of:

  1. Front End Web Servers – (low storage, hosting IIS, SharePoint and any custom web parts/custom site definitions/templates – this is a guess)
  2. Application Servers – (high storage, hosing IIS, SharePoint and indexes for search – again a guess)
  3. Database Server – (hosting the content and configuration databases)

Sounds like MOSS 2007 is in general way more flexible and configurable in Server Farms than SPS 2003 (with its three major themes of “supported configurations”).

Don’t miss all the planning you should be doing vis a vis Server Farm Architecture as you design your environments:
Planning worksheets for Office SharePoint Server 2007

Also, the configurations of the Shared Service Provider(s) give you a lot of flexibility.

Unfortunately, it looks like most of the Technet articles are still TBD (to be written), but I found one that was decent:
Determine hardware and software requirements (Office SharePoint Server)

Also, my Systems Engineer homie at my workplace sent me a lot of very interesting seeming audio-briefing links:
TechNet Events: Supporting Materials

Creating new My Site hosts for MOSS 2007

If you should happen to recreate your SSP or your MySite host in MOSS 2007, you may find that the wizard that helped you out the first time with properly configuring your MySites host may have flown the coop and you’re left at sea about how to proceed. I know I was.

On trying to create a new My Site (for a user that doesn’t already have one), typical error messages will tell you that Self-Service Site Creation is disabled, or that there was an error in creating your personal site. Both error messages will entreat you to contact your administrator.

Here’s the full scoop on creating a My Site host in MOSS 2007 by hand from the ground up (i.e. at Web application creation on up):

Prepare new web application to take up My Site host duties:

  1. Create a new web application (e.g. http://mossdev1:25000/)
  2. Inspect Managed Paths for the new web application. You should already have:
    1. (root) - Explicit inclusion
    2. sites - Wildcard inclusion
  3. Delete managed paths:
    1. sites - Wildcard inclusion
  4. Create managed paths:
    1. personal - Wildcard inclusion
    2. mysite - Explicit inclusion
  5. End state for managed paths should be:
    1. (root) - Explicit inclusion (thanks to imsaurabh for catching this!)
    2. personal - Wildcard inclusion
    3. mysite - Explicit inclusion
  6. Create a site collection at /mysite/ managed path. This will use a My Site Host template:
    1. Choose correct web application (e.g. http://mossdev1:25000/)
    2. Title: My Site Host (doesn’t matter, really)
    3. URL: http://mossdev1:25000/mysite (no fill-in because path is explicit in managed paths)
    4. Template: Enterprise (tab) -> My Site Host
    5. Specify primary and secondary administrators.
    6. Click OK.
  7. Create a blank site collection at the / managed path to enable self-service site creation:
    1. Choose correct web application (e.g. http://mossdev1:25000/)
    2. Title: Blank site (doesn’t matter, really)
    3. URL: http://mossdev1:25000/ (no fill-in because path is explicit in managed paths)
    4. Template: Collaboration (tab) -> Blank Site
    5. Specify primary and secondary administrators.
    6. Click OK.
  8. Enable Self-Service Management. Choose from Application Management -> Application Security.

Now that you’ve created the host, here’s how to make sure it works properly in the SSP’s My Site Settings:

  1. Navigate to My Site Settings (go to your SSP’s admin pages, it’s the 3rd link in the 1st section).
    1. For form’s sake, inspect the Preferred Search Center entry. This URL should end in /SearchCenter/Pages/.
    2. Set Personal Site Services to http://mossdev1:25000/mysite/. Note that this points to the URL for the explicit inclusion path and My Site Host Template site collection you created above.
    3. Set Personal site Location into just personal. Note that this points to the URL (after SharePoint puts context to it) for the Wildcard inclusion managed path you created above.
    4. Choose the 2nd Site Naming Format: User name (resolve conflicts by using domain_username).
    5. Enable Allow user to choose the language of their personal site.
    6. Disable My Site to support global deployments.
    7. Default Reader Site Group: NT AUTHORITY\authenticated users.

Now try to navigate to your MySite link and you should be golden. Creation should go just fine.

Good luck!


I’m doing research today to answer multiple questions.


  1. I recreated my MOSS 2007 SSP a while back and now MySite creations aren’t working for anyone. It’s not working exactly like the discussion at Technet Forums. Still researching this one.
  2. On a related note, I need to nail down exactly how to create personalized MySite services scoped to a particular web application on the MOSS 2007 farm. No articles yet.
  3. How do we federate/rollup content (if possible, what’s best practice?) from multiple sites? Client has security policies that require internet/extranet servers/farms be separate from intranet servers/farms, but they also have a requirement (it’s thankfully more of a “nice to have”, since even they are not sure it’s possible) to make it so that a single user doesn’t have to go to multiple sites to see all of their content, especially their personalized content. I’m aware that this is possible in many ways in SharePoint, but not sure if any implementation is ideal. The first really helpful link I’ve found along these lines of thinking is Joel Oleson’s blog entry about managing Global and Multifarm deployments. Another good one from Mr. Oleson. I’m reading it right now.
  4. I have to do some research on the best ways to integrate outside LDAP, AD and custom-schema organizational directories for user information into MOSS 2007. No links there yet.
  5. I need to get on the stick and do Workflows in VS 2005 against WSS 3.0/MOSS 2007. I did try SharePoint Designer for my needs and while it does address most of them, one thing I couldn’t figure out how to do was to make a workflow that publishes documents across sites (up, down, sideways, between sites, subsites and unrelated sites). All I could figure out how to do was publish from one document library to another in the same site. There are other options:
    1. Major/Minor versions in Document Libraries: Probably the most elegant of the solutions, since it’s already built-in to SharePoint 2007, the major down-side is that this may be too complicated a new feature for users to learn given that check in/check out is already foreign to them (unless they’re developers). I know the pat answer is learn, but honestly that doesn’t cut any ice with client-focused business analysts. They have a point. The “learn” answer just offloads the effort on another group: either training or support. Not everyone is as technically focused as implementors are. Not everyone wants to learn a new feature every version upgrade just to do their jobs right.
    2. The Send-To->Other Location option on document libraries’ documents works just fine with Firefox 2.0 but barfs completely with IE7. See my discussion of it on the Microsoft Newsgroups (I think you’ll need a passport identity – alternate link via Google Groups) for more information. It’s possible I’ll call MS support about this, but only if the client says it’s critical path and means it. It’s too risky to burn a support call on a bug. I wish MS really provided other meaningful ways of reporting bugs.
  6. I also need to find out whether the helpful Weather and other free, useful, fuzzy good feelings web parts exist any more, like they do in SPS 2003. Weather’s a big request these days. If they’re a download/install I need to do that. No research here yet either.
  7. Finally, I asserted to a friend/co-worker a few days ago that from a programmer’s perspective, I can’t see why Perfmon would, as his manager asserted, bring a server to its knees. Given that in the programming I’ve done that does create Perfmon counter objects, I never check to see if any monitors are running, I just throw the stats over the wall for the OS to do with it as it will. The guy’s job would be made so much simpler if his manager relaxed about this, and I simply don’t have the resources myself to do the exhaustive system profiling and performance monitoring this might take to convince anyone. So maybe someone else has. No research here yet.

So what do you think? Do I have enough to do?

Installing .NET 3.0 on a balky workstation

So if you keep trying to install .NET 3.0 and keep getting an error during install (and looking at the Error Log link in the failure message refers to the Windows Communication Framework being missing), go look for a file named something like “dd_dotnetfx3install.txt” in your %temp% directory (in my case, that was at C:\Documents and Settings\[username]\Local Settings\Temp, but just open a command shell and type “echo %temp%” to find out what it is for your system/login). If THAT log shows something like:

[02/02/07,12:55:41] WapUI: ***ERRORLOG EVENT*** : DepCheck indicates Windows Communication Foundation is not installed.
[02/02/07,12:55:41] WapUI: Return for Windows Presentation Foundation indicates a successful installation. DepCheck indicates the component is installed.
[02/02/07,12:55:41] WapUI: Return for Windows Workflow Foundation indicates a successful installation. DepCheck indicates the component is installed.

Then you need to restart your workstation in Diagnostic mode with minimal services and then try the install. It should work.

Details are here in an obscure Microsoft forums post. The method I used, transcribed for your pleasure is as follows:

  1. Set your system to start in diagnostic mode with some additional services:
    1. Click Start, then Run..., then type msconfig. Click OK.
    2. Click the radio button to start your machine in Diagnostic Startup.
    3. Click the Services tab and enable the checkbox to the left of “Windows Installer“, “Plug and Play” and “System Restore“.
    4. Click OK. Authorize your system to restart.
  2. In Diagnostic Mode, do the .NET Framework 3.0 install:
    1. When your system restarts, click OK to acknowledge the msconfig popup warning and set the msconfig window aside (or close it and call it back later to set you system to boot normally).
    2. Now install the .NET 3.0 Framework. Install should go off without a hitch.
  3. Put your system back into Normal startup:
    1. When the installation is complete, recall or get back the msconfig window and set your workstation to Normal startup. Click OK.
    2. Authorize your system to restart.

You’re done!

Deleting an unwanted file or set of files completely from your Subversion repository

This is not designed to be easy to do, since Subversion is a source control repository, but it’s possible.

We had a large file added to our repository by a new guy, who will not since do such a thing again, and it’s not a big deal except that we do backups every day, and we’d rather just keep the damned thing out of the backups and out of permanent or volatile storage in general.

Here’s the general writeup of the process for dumping, filtering out unwanted files, and reloading your repository.

In our specific case:

  • You are doing this on a DOS system (which is why I’m blogging it)
  • You have required privs on the Subversion server (probably admin-level, or at least read/write privs in the filesystem)
  • Your Subversion server is running (check your Services for SVNService running)
  • Repository exists at C:\Subversion_Repos\SPS
  • You have a temp directory somewhere where you have lots of room to put your various versions of the Repository Dump (in our case, C:\Temp\Subversion_Rebuild\)
  • Our Subversion repository is called svn://localhost/sps/
  • Your offending file is at path /SPS/bad_file.txt in the repository


  1. Dump your whole repository to your temporary working area: svnadmin dump "C:\Subversion_Repos\SPS" > "C:\Temp\Subversion_Rebuild\dump_for_filter_operation"
  2. Get spammed a line per revision in your repository. (i.e. * Dumped revision 0., * Dumped revision 1., etc.)
  3. Use svndumpfilter to filter your bad file out of your dump and into a truncated dump file: type "C:\Temp\Subversion_Rebuild\dump_for_filter_operation" | svndumpfilter exclude "/SPS/bad_file.txt" > "C:\Temp\Subversion_Rebuild\filtered_dump_file" (Note: UNIX’s cat is DOS’s type)
  4. Create a new repository (if you’re feeling daring, just delete the old one, but for my money, I’d probably do a hot backup of the old one just because and archive both the recent dump and the hot backup somewhere else for safekeeping until I was sure the new filtered copy worked): svnadmin create "C:\Subversion_Repos\SPS2"
  5. Load filtered dump file into the new repository: svnadmin load "C:\Subversion_Repos\SPS2" < "C:\Temp\Subversion_Rebuild\filtered_dump_file"
  6. Get spammed by load operation
  7. Test your Subversion repository and make sure it's working

You should be done!