Friday, June 01, 2007

Great new SharePoint book by Ted and Dan, see you at TechEd


Inside Microsoft Windows SharePoint Services 3.0

The SharePoint book that I have been waiting for the most has finally arrived. It seems like Clinton was still president when I ordered it :), but this book was well worth the wait. Back when I first heard that Ted Pattision and Daniel Larson were teaming up to write a SharePoint book, I got pretty excited. I knew these guys would have a knock-out book for SharePoint developers, and I'm happy to say I was right.

With this book, you will learn how to:
  • Build application pages and site pages
  • Develop and deploy reusable Web parts to enable customization and personalization
  • Exploit Windows SharePoint APIs to deploy Microsoft ASP.NET AJAX components
  • Use XML and Collaborative Application Markup Language (CAML) to create provisioning components
  • Design and implement custom document libraries
  • Use Windows Workflow Foundation to create applications that automate business process
  • Create Site Definitions to aggregate components and package them for deployment
  • Implement Code Access Security, Trust Levels, authentication, and authorization
Do yourself a huge favor, and go spend five minutes on Amazon ordering yourself a copy.

I hope that I get a chance to run into Ted and Daniel next week at TechEd in Orlando, to compliment them on the outstanding book. Are you going to TechEd? If so, please stop by our SharePoint Solutions booth and say hi. We'll be happy to demo our software add-ons for SharePoint, show you our training materials, talk about consulting, or just shoot the breeze. Our booth number in #254.

Wednesday, May 23, 2007

Need expert InfoPath knowledge?


There are lots of people who use and develop with InfoPath and many of them post tips, tricks, etc. to their blogs.

One that stands out, in my mind, is actually an entire company that is devoted 100% to InfoPath consulting and solutions. InfoPath is ALL they do.

The company is Qdabra Software and they share their expert InfoPath knowledge on a public site they host named InfoPathDev.com. On this site, there are well over 100 "How-to" articles, tips and tricks. And, they don't write articles about "101" InfoPath topics. They write about the difficult issues that we all face when we try to implement an InfoPath solution in the real world.

There is a reason that Qdabra has all of this deep InfoPath knowledge. The company was founded and is owned by Patrick Halstead, one of the original development managers at Microsoft on the development of InfoPath v1. Also, Patrick is the author of the best advanced-level book on InfoPath 2003, Developing Solutions with Microsoft InfoPath. (If you follow this link to Amazon, you will find that the book has a rating of three-stars out of five. Don't be fooled by that. I've read the entire book from cover to cover and have used it extensively to develop InfoPath-based applications. It is not perfect, but it is by far the best text out there on advanced usage of InfoPath 2003).

So, while there still is a real shortage of expert-led classroom-style InfoPath training, there are some very good resources available on the Internet and InfoPathDev.com is one of the best.

(If you go to their site, you will see that a lot of the most recent tips are written in Japanese. If that is not your preferred language, keep searching their site because the tips in English still far outnumber the Japanese ones. The reason they are posting a lot of new tips in both Japanese and English is because InfoPath is BOOMING in Japan. :))

Wednesday, May 16, 2007

Branding SharePoint


There are lots of articles and tips for branding SharePoint 2007 and customizing the look and feel. Just do a Google search or hunt down the bloggers that specialize in this area.

But what if you are under the gun to do a SharePoint branding/customization job and you really need to absorb all of the details fast and get the job finished as soon as possible?

In my mind, you can't find a better solution than our Extreme Makeover SharePoint 2007 Edition course. It's a three-day class and will cost you roughly $2000, but you will leave with a thorough understanding of how to do this type of work and will have worked through numerous hands-on labs practicing the art.

Since this course is all about the visual aspects of SharePoint 2007, maybe the best way to sell you on it is to show a before and after image of the kind of thing you will do in the class:

Before:



After:





Here's another one:





Here is a quick and dirty list of some of the topics that the course covers:
  • The SharePoint 2007 CSS files and architecture
  • Master Pages
  • Page Layouts
  • Site Definitions
  • List Definitions
  • Themes
  • SharePoint Designer Customization of navigation and the UI
  • The "Features" feature
The full course description and outline is available here.
On top of all this, the course was written and is taught by a true expert in SharePoint branding and customization. You won't often hear his name tossed around in the SharePoint Community, but he has as much, if not more, experience branding SharePoint as anybody out there.
His name is Kevin Pine and he has a background as a professional web site developer. For the past three years, he has been devoted full-time to SharePoint branding here at SharePoint Solutions. He wrote our Extreme Makeover 2003 course that was very successful and popular during 2003 - 2006. He has also done numerous SharePoint branding projects for our consulting clients including BP, Central Michigan University, Sarah Cannon Cancer Research Institute, and many others.
On top of all this, Kevin is an outstanding classroom teacher.
So, if you need to come up to speed quickly on all of the details and nuances of SharePoint 2007 branding and customization, in my opinion you can't find a faster and better way to do this than come take Kevin's class.




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.