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

Intro to Excel Services


Last week, Kevin Pine and I got a chance to present at the SharePoint Connections conference. This conference was able to draw a large number of SharePoint folks from all around the country (actually the world... I saw some people there from the Netherlands). Kevin and I presented 3 sessions at the conference with the attendee count of 200+ for our largest session.
Even though this conference was held in Vegas, we didn't want the phrase "What happens in Vegas, stays in Vegas" to be our mantra. We want our attendees to be able to implement the cool stuff we did in our presentations in their own environment back home. So we decided to post all our presentations and related demo notes to our SharePoint Solutions blog.
This first blog entry is associated with our very first presentation which was focused on Excel Services. Excel Services ships with the Enterprise Edition of MOSS 2007 and provides server based Excel Capabilities to the knowledge worker. Being able to share your spreadsheets by posting them to the Excel Server is a new paradigm, but one which is sure to catch on quickly in the business world. In this presentation, I present the overview of Excel Services and then build a Dashboard which takes advantage of the new scorecarding capabilities in MOSS. You can download the zip file containing the presentation and a sample data spreadsheet by clicking on the link below. Enjoy!
Intelligent Dashboard using Excel Services

Adding Custom Links in SharePoint Portal Server 2003 Top Navigation Bar


In SharePoint Portal Server 2003, there is no easy way to add custom links to the top navigation. All the links in the navigation bar are generated dynamically by the server. Using JavaScript, we can extract the code for the top navigation bar, add custom links, and then re-render the code for the navigation bar.

In the example screenshot below, you will notice that we've added both a text link and a graphical icon link to the toolbar. The text link goes to the Google search engine and the telephone icon goes to a phone list. We can mix and match text and images and add as many extra links to the navigation bar as our user's browsers will comfortably allow. Using this method, all our custom links will appear after the dynamic navigation links that are generated natively by Sharepoint Portal Server 2003. If you have links that you want to always be available to every portal user all the time, this is an easy way to add them.
To add links like this to your portal, add the code below to your OWS.JS file and customize it as needed.

Get the code. Sorry, Blogger didn’t seem to like having JavaScript code in the post. :(

Hopefully, the comments in the code are enough to explain what's going on here. Essentially I’m using JavaScript on the pageLoad event to extract the code for the navbar table. I store it in a string variable, remove the closing tags, add onto the end enough code to create a new table cell (or two), append the closing tags back on, and rewrite the navbar table back to the client. The IF statement that looks for the existance of the navbar keeps the code from generating errors on WSS pages since they don’t contain the same navbar element. If you do have any questions, just let me know.

I was inspired to write this script while learning techniques presented in our Extreme Makeover - Portal Edition class, which is being offered again the first week of December, 2006 in Chicago.

Thursday, November 09, 2006

Another point of view


Regarding Tony's post to this blog this morning, I have a somewhat different view from my vantage point. Tony is a developer and a lot of his work involves product design and quality development. He has some marketing responsibilities as well, but that is not his primary focus.

As President of SharePoint Solutions, I have a lot of responsibility for sales and marketing. And, one of the things I have learned over the years is that the sales and marketing function in most companies is critical. Not only is it critical for the company itself, but it is also critical for the customer. Without sales and marketing professionals and good tools for them to use to get the message out, customers would never find out about products that can help them solve their business problems.

I see the services that MSD2D provides as very important sales and marketing tools that help both the advertiser and the customers. We frequently use MSD2Ds tools and services and they have been extremely effective.

I think Tony does make a good point (although perhaps a little too strongly :)) that it is important to properly label advertisements as such. That may be something MSD2D could do a better job of on the article that normally hits our inboxes each Thursday.