Wednesday, April 25, 2007

MSDN: Team-Based Development in Microsoft Office SharePoint Server 2007


Eric Charran of Microsoft recently published a MSDN article covering team-based development on the SharePoint 2007 platform. Eric begins by delineating the roles of artifact development and assembly development, discussing environmental and procedural similarities and dissimilarities. Eric’s article then covers integration builds and deployment processes, with the aid of some well-designed illustrations. Overall, Eric’s article is informative, and should be read by anyone seeking a high-level understanding of team software development on SharePoint.
For a few years now, our software engineering team here at SharePoint Solutions has been using a development environment similar to what Eric describes. Because we are geographically distributed, we rely on local virtual development environments (robust Dell laptops running Virtual Server 2005 RC2), that connect to Team Foundation Server over VPN. Prior to TFS and VPN, we used Visual Source Safe with SourceGearSourceOffSite and CruiseControl.NET. SourceOffSite was (barely) a workable solution, but now seems like the dark ages in comparison to Team Foundation Server. As for the source code vault itself, we take the approach of using a common mainline for team builds, with each of us working in isolated virtual build labs for incremental building and testing. We merge from our independent VBLs to the common Mainline, and kick off team builds for testing and release.
We are primarily focused on producing software solutions for redistribution, so every artifact and assembly we create must be packaged for deployment. In Visual Studio, our solutions are comprised of modified C# class library projects which have been customized to output SharePoint deployment packages (.wsp). Although the VSeWSS toolset has some nice conveniences, it just doesn’t provide us with the granularity we need for packaging commercial applications. A simple example of how we structure a project can be found in my October 2006 post Anatomy of a SharePoint WSS v3 Feature Project in Visual Studio 2005.
Finally, we depend on the WiX toolset for creating Windows Installer packages to distribute our software products. Here too, we use modified C# class library projects which have been customized to output MSI setup packages. The last step of our team build process zips up the appropriate outputs, then places them in a staging area where they await manual release to web (RTW).

Friday, March 30, 2007

Extranet Collaboration Manager - Standard Edition 1.0.0 Final has been Released to Web (RTW)


This morning our software developement team released Extranet Collaboration Manager - Standard Edition 1.0.0 Final for download and purchase.

I wanted to thank the literally hundreds of SharePoint Solutions software customers who have helped us with Beta testing ExCM - SE over the past few months. Your input and assistance have been invaluable in helping us to release another quality add-on product for SharePoint 2007.

For full details on the features and functionality of ExCM - SE 1.0.0, please visit its product home page.

Wednesday, March 07, 2007

Latest Release of ExCM - SE for SharePoint 2007 Adds User Profile Management


Last night we released an updated version of our ExCM - Standard Edition for SharePoint 2007 product. The new package can be downloaded from our SharePoint Solutions Software site's Releases and Downloads page.

Many of our software customers have been asking for us to add user profile management capabilities to the ExCM - SE product. As a result, with this latest release you can now define custom user profile properties of text, date and yes/no data types. You are further able to configure user profile fields as required or optional for users to complete when registering for access to your site. As well, you can apply a custom validator to your user profile properties, requiring data to be input in a specific format. From your users' perspective, you can now enable them to manage their own profile properties by selecting a menu item on SharePoint 2007's Welcome menu.


Adding functionality such as user profile management in ExCM - SE illustrates that we appreciate the feedback we receive from our software customers, and we will continue to take you seriously when we make design decisions for our products.

Thursday, February 22, 2007

Extranet Collaboration Manager for SharePoint 2007



Planning and implementing a collaborative extranet environment using SharePoint 2007 brings with it a unique set of challenges that you as a SharePoint administrator must overcome to be successful. Primarily, you want to provide SharePoint sites for your users to collaborate with customers, suppliers, and partners, but you have to be sure that proper security is maintained. You've probably decided that you want to keep extranet user account data stored separately from internal user data, but who is going to manage those extranet users, and how will these user management activities be controlled and audited? What about requests from extranet users for new SharePoint sites? How will requests for new extranet sites be processed and subsequently provisioned?

The solution to the challenges you are facing is our new Extranet Collaboration Manager for SharePoint 2007 product. ExCM comes in two versions - Standard Edition and Enterprise Edition.


  • ExCM - Standard Edition provides you with a suite of tools to Simplify SharePoint 2007 extranet user access and management. See the ExCM product page for more details.

  • ExCM - Enterprise Edition allows your users to submit a request when he or she would like to have a new SharePoint 2007 site provisioned. You can easily associate custom workflows with the new site requests, asking for approval prior to site creation. Once a site request is approved, ExCM - EE will automatically provision the site for you using any SharePoint 2007 site definition you have specified.
I'm happy to announce that ExCM - Standard Edition is now available for download from our new SharePoint Solutions Software site.
We are actively seeking organizations which are interested in using ExCM - SE to augment the collaborative capabilities of their SharePoint 2007 extranet, and are willing to particpate with us in an implementation case study. Upon completion of the case study implementation, we would want to interview the salient participants and reference them in one or more press releases. If you are interested in working with our team of SharePoint experts to implement ExCM - SE in your SharePoint 2007 extranet, please contact me for further discussion.

Wednesday, February 21, 2007

New SharePoint BI Course


As everyone is aware, one area of design emphasis for MOSS 2007 is to enable it as an industrial-strength delivery mechanism for Business Intelligence applications. In order for Business Intelligence applications to do any good they have to be accessible and usable and what better way than to use SharePoint as a front-end?

Microsoft has poured many man hours into deepening the integration between MOSS 2007 and its SQL Server and Excel Services business intelligence tools, but to-date has not provided publicly available classroom training on how all of this is designed to work, best practices and tips and tricks.

We have just completed work on a course to do just that: Building Reporting Portals and BI Dashboards with SSRS, Excel Services and MOSS 2007. You can read the full course outline here.

I think this is going to be an outstanding course (first class to be conducted in Nashville, TN on March 6 - 8 and to be conducted regularly in Nashville, Chicago and Dallas thereafter). One of the reasons I think this course will be very good is due to the deep BI experience of the author and lead instructor, Paul Vaughn.

Paul is a 20-year industry veteran and has spent the last four years developing a multi-terabyte data warehouse for a large healthcare company here in Nashville. Nashville is a hot spot for the healthcare industry (the world's largest for-profit hospital chain, HCA, is headquartered here) and the healthcare industry is a huge user of BI applications and technologies. So, Paul has some very relevant and first-hand practical experience to share with his students. This all adds up to an outstanding learning opportunity for those wanting to develop industrial-strength BI applications with MOSS 2007 as the delivery mechanism.

Thursday, February 01, 2007

Great example of Office System integration


Yesterday, I delivered the keynote address at the first-ever SharePoint Information Worker Conference. We are holding the conference in Orlando and at 8 a.m. we had a ballroom full of Information Workers eager to see what SharePoint 2007 has to offer that will help them in their daily work. It amazed me that we had attendees from around the world - as far as Kazakhstan.

I think the way Microsoft continues to enhance the integration between all of the Office programs and SharePoint may be the #1 reason why the Office System stands out from the crowd. To this end, I demo'd an application that I developed easily and with no code. The application featured my Pocket PC Phone running Windows Mobile 5.0, OneNote 2007 Mobile, OneNote 2007 on my laptop, MOSS 2007 and Outlook 2007.

In a nutshell, the application involves using the Pocket PC Phone's camera and OneNote Mobile to snap and store a picture of an expense receipt. Then Activesync automatically adds the note to OneNote on the laptop and I quickly annotate the image of the receipt. After that, I publish the OneNote page with the image to a SharePoint document library for the project the receipt relates to. The document library has the out-of-the-box MOSS Approval workflow setup to route the receipt for approval through my boss and then to accounting for reimbursement. Once the approval workflow kicks in, my boss never has to go to the document library to do his part. Instead, he is notified automatically by the workflow via Outlook 2007 and can approve the receipt right in Outlook.

This is the type of application that would have previously required hundreds of development hours to custom develop. Now, all of the pieces are baked right into the Office System. Way to go Office team in Redmond! After the demo, one of the Information Workers in the conference held up a sign with a 9.5 score (out of 10) on it. I took it as a compliment, but who knows, maybe he thought he was judging a figure skating competition :).

Thursday, December 28, 2006

Using SPWebConfigModification to modify a SharePoint web application's web.config for all servers in the farm


At some point in your career as a SharePoint developer you may find it necessary to push out a change to a SharePoint web application's web.config file for all servers in the farm. In the simplest of scenarios, it may be realistic to make the change to web.config manually, but if you are creating a packaged application for redistribution or there are many servers in the SharePoint farm, a better approach might be to make the web.config modifications programmatically. The WSS v3 API contains the SPWebConfigModification object which allows you to do just that. For example, if you have been following Daniel Larson's excellent series of articles on implementing AJAX in WSS v3, you know that AJAX requires an additional HttpHandler be added to a SharePoint web application's web.config in order to function properly. Here's the HttpHandler in question:
<add verb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>


To push out the AJAX HttpHandler declaration programmatically, the following example console application calls SPWebConfigModification. For the purposes of illustration, I've hard coded the web application's name ("Default Web Site"), but this could have just as easily been passed in as a command line argument:
12/28/2006 - MODIFICATION: Updated code listing with bug fix and added logic to remove the web.config modifcation.

Copy Code
using System;using System.Globalization;using Microsoft.SharePoint.Administration; public class Program { static void Main(string[] args) { string webAppName = "Default Web Site"; // Add AddAjaxHandlerToWebConfig(webAppName); // Remove //RemoveAjaxHandlerFromWebConfig(webAppName); } /// <summary> /// Adds the Ajax HttpHandler to a web application's web.config for all servers in the farm /// </summary> /// <param name="webAppName"></param> private static void AddAjaxHandlerToWebConfig(string webAppName) { AddOrRemoveAjaxHandlerToWebConfig(webAppName, false); } /// <summary> /// Removes the Ajax HttpHandler from a web application's web.config for all servers in the farm /// </summary> /// <param name="webAppName"></param> private static void RemoveAjaxHandlerFromWebConfig(string webAppName) { AddOrRemoveAjaxHandlerToWebConfig(webAppName, true); } /// <summary> /// Adds or removes the Ajax HttpHandler to a web application's web.config for all servers in the farm /// </summary> /// <param name="webAppName">Name of web application</param> private static void AddOrRemoveAjaxHandlerToWebConfig(string webAppName, bool removeModification) { string assmDetails = string.Format(CultureInfo.InvariantCulture, "Microsoft.Web.Handlers.ScriptResourceHandler, Microsoft.Web.Extensions, Version={0}, Culture=neutral, PublicKeyToken={1}", new object[] { "1.0.61025.0", "31bf3856ad364e35" }); SPWebConfigModification modification = new SPWebConfigModification("add[@path='ScriptResource.axd']", "configuration/system.web/httpHandlers"); modification.Owner = "Ajax"; modification.Sequence = 0; modification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode; modification.Value = string.Format(CultureInfo.InvariantCulture, "<add verb=\"{0}\" path=\"{1}\" type=\"{2}\" validate=\"{3}\"/>", new object[] { "GET", "ScriptResource.axd", assmDetails, "false" }); SPWebApplication webApp = SPWebService.ContentService.WebApplications[webAppName]; if (webApp != null) { if(removeModification) webApp.WebConfigModifications.Remove(modification); else webApp.WebConfigModifications.Add(modification); SPFarm.Local.Services.GetValue<SPWebService>().ApplyWebConfigModifications(); } } }

Real world use cases where this functionality may prove useful include calling SPWebConfigModification from a Window's Installer package Custom Action or perhaps extending stsadm with a custom operation.



Thursday, November 16, 2006

Released! Download WSS v3 and MOSS 2007 RTM


After much anticipation and ballyhoo, the production releases of Windows SharePoint Services 3.0 and Microsoft Office SharePoint Portal Server 2007 are available for download.
Take a deep breath, and download the bits!
WSS v3
Download Details: Windows SharePoint Services 3.0
Download Details: Windows SharePoint Services 3.0 Lanuage Pack
Download Details: Windows SharePoint Services 3.0 x64
Download Details: Windows SharePoint Services 3.0 Language Pack x64
MOSS 2007
Download Details: Microsoft Office SharePoint Server 2007 Trial Version
* The trial keys for MOSS 2007 are listed in this blog post.
After you've got the bits, here are some instructions and howtos on getting up and running:
Version to Version Supported Upgrade Paths
Installing Windows SharePoint Services 3.0 on a Server Running Windows Small Business Server (This document shows you how to install Windows SharePoint Services 3.0 side-by-side with Windows SharePoint Services 2.0)
Installing MOSS 2007 RTM on a farm running MOSS 2007 Beta2 TR (Shane Young [MVP])
Upgrade from TR to RTM Work Around (Shane Young [MVP])
Upgrading from Windows SharePoint Services 3.0 Beta 2 Technical Refresh to Release Version (Joel Oleson)
Upgrading from Office SharePoint Server 2007 Beta 2 Technical Refresh to Release Version (Joel Oleson)
If you would like instructor-led assistance for upgrading to the latest versions of SharePoint, sign-up for our Upgrading From SharePoint 2003 to SharePoint 2007 course.
Once you've got things installed and running, send your information workers to our Applying SharePoint 2007 - Core Features course.
Categories: , , , ,

Wednesday, November 15, 2006

OBA RAP for SCM, ArcStream, and Skyscrapr


Today I was doing some research on the OBA RAP for SCM when I stumbled across ArcStream and Skyscapr

Sound Greek?  Well, the OBA Reference Application Pack for Supply Chain Management is a reference implementation put together by Microsoft to illustrate how we can build Microsoft Office System 2007 based composite solutions.  Microsoft calls these composite solutions Office Business Applications (OBAs) and describes an OBA as being "designed to support cross-functional processes and allow information workers to collaborate" across organizational boundaries.

ArcStream is a relatively new initiative from the East Region Microsoft Developer & Platform Evangelism Team which strives to provide "a constant flow of technical information as well as networking opportunities for enterprise, application, systems and aspiring architects living and working on the east coast".  A few of the key folks involved with ArcStream include Chad Brooks, Bob Familiar, Chris Bowen and Scott Jamison.

Finally, Skyscapr.net is maintained by the Architecture Strategy Team at Microsoft with the primary goal of "promoting a community-wide discussion about system architecture".  The  site provides access to videos, training, glossaries, ARCasts, and blogs that will help you learn more about technology architecture.

Good stuff! Now if I can just get all the way through Beyond Bullet Points.  So much to read, so little time!

Tuesday, November 14, 2006

The "Features" feature


The first time anyone hears about the "Features" feature in SharePoint, they either laugh or frown at it. I have yet to see anyone without at least some kind of reaction to it. However, once you get past the name, the concept of Features seems really appealing.

Features provide the “light up” functionality within SharePoint. You no longer need to decide on all the components of a site ahead of time. Each "Feature" can be added on and attached to a site after the site is provisioned. Features can be scoped at the Farm, WebApplication, Site Collection or Site level. Want to know more about Features?? Well, take a look at the following presentation and associated code that I used to present at the SharePoint Connections conference.

Features