Friday, June 29, 2007

I mentioned in a previous post that I was having trouble with Forms Based Authentication (Open LDAP) into SharePoint, or more specifically with the Client Integration part of it (opening Word and Excel when logged in using LDAP). I've received confirmation from Microsoft that this is by design: IIS and Office will only integrate using NTFS authentication.

Now, having said this, and having personally seen it not working, there is a chance you can still use Office integration and FBA. I'm linking to Mike Fitzmaurice's blog where he discusses this issue in detail: FitzBlog.

Willie Rust on his blog mentions that checking the "Sign me in automatically" checkbox when you log in using Forms Based Authentication will save a persistent cookie to your desktop.

I did try this, but the browser wouldn't let me sign in if tried this...It was either log in successfully without setting a persistent cookie; or fail to enter the site at all. So your mileage may vary. Good luck!

Tuesday, June 26, 2007

SharePoint development is a bit of a tricky thing because its whole philosphy seems to blur the software development lifecycle. One of the big selling points of SharePoint (or at least the way Microsoft positions it) is how it supposedly shifts the burden off of IT's shoulders and onto business users. Witness how simple it is to fire up SharePoint Designer and make changes to design or workflow; create your own lists and sites; upload documents to libraries and manage your own content publishing. All of this makes information workers' eyes light up and gives IT staff the shakes.

The problem is, a lot of the changes that are made are hard for IT to replicate. If you get a call from an end user asking you to restore the special document library columns they created a month ago, what do you do? Not only are there a wide variety of software artifacts created during a SharePoint solution, but many of them are virtual and "live" in the SharePoint database itself!

If this were change-managed in the traditional IT sense, there would be development environments, source code repositories, installation packages, regression testing, quality assurance...which while reassuring and reproducable is also a bottleneck and frustrating for end users who love the new flexibility and control they get with SharePoint.

So what's the middle ground? The jury's still out on this...but we're starting to see some best practices. One key document came out just the other day by Patrick Tisseghem of U2U fame. It's a first-class document outlining development considerations around SharePoint. The links to the document's two parts are here:

There is also some documentation called "Under The Hood" which explains how Microsoft developed its Fantastic 40 templates and gives some great insight into what can be done with the platform. Read it here: Key things the white papers touch on include the importance of applying the same principles of solution architecture, identifying and applying design patterns, and assessing the capabilities and limitations of technology that you would use on any software project.

Perhaps the most important thing is to try and treat SharePoint with the discipline and process required for any major Enterprise application. I'll try to delve into this topic in more detail in future blog postings, for my own benefit as I am often puzzled as to what the best approach is to manage the code and customizations that are developed during the course of a MOSS implementation.

As a final note, there is a Microsoft Developer Portal here: and the SharePoint newsgroups contain lots of guidance about development issues.

Thursday, June 21, 2007

More information about SharePoint Web Operating System (shall we call it "MOSS WOS"?):

Mary Jo Foley has posted about Microsoft using SharePoint as its Web 2.0 Hub...
The link is here. She mentions that Derek Burney, the general manager of SharePoint Platform and Tools, announced in a keynote speech at this week's Enterprise 2.0 Conference in Boston that Microsoft will be releasing 100 business applications on top of SharePoint within the next twelve months. Says her blog posting:
"[Microsoft's internal Field Center of Excellence] are using SharePoint as a base to build ‘no-code’ solutions - using 80-90% out of box SharePoint functions and for the remaining 10-20%, leveraging re-use components such as web parts,” a company spokeswoman clarified.

Speaking of Mary Jo Foley, check out this other blog article of hers: Steve Ballmer basically confirmed at a conference that SharePoint is "the definitive OS or platform for the middle tier"!

And here's Matt Asay posting on InfoWorld:

There's lots to think about here....My first impression is that positioning SharePoint as an OS is inspired because it simultaneously protects Microsoft's two cash cows by requiring Windows and Office licenses, and neatly straddles the current divide between software "on the desktop" (where Microsoft is strong) and software "in the cloud" (where Microsoft is much weaker). In the fairly near future we'll have pervasive internet connections and there won't be any divide at all, but in the short term this is a big step by Microsoft to compete with Google in the online software arena.

For SharePoint to work as an OS Microsoft needs to get compelling, rock-solid services and products on top of the SharePoint stack so companies and individuals face no barriers to adopting this end, witness its efforts to encourage open-source development on CodePlex which is already starting to produce some great additions to the SharePoint universe.

It sure feels like a tectonic shift in the web programming world is happening...the tricky part is seeing which way the ground's moving!

Wednesday, June 20, 2007

Yesterday I attended the monthly Sydney SharePoint User Group. The presenter was Grant Paisley who is the Chief Solutions Architect at Angry Koala. Grant demonstrated some of the ways Microsoft's Business Intelligence solution set has been improved in 2007. He covered a lot of ground and I thought I would write about the many great tips and insight he presented to us. This may hop around a bit as I have the memory span of a goldfish and the handwriting of a spider.

To begin with, Grant made a very interesting remark....he basically suggested that Business Intelligence had been brought out of the "back room" and was now what Microsoft would call a "first-class citizen".

We've all spent the last decade creating enormous quantities of data and we don't know how to manage it (or even find it!)...Now the major software vendors like Google and Microsoft are trying to get a handle on these problems and this overriding need to unify all our scattered data is becoming central to their business models. The proof of how seriously Microsoft takes this is that they are in the process of turning SharePoint into the web platform that will underpin all of their applications. I bet within 5 years the only significant Microsoft product that does not leverage SharePoint services and integrate with it- and I'm including desktop applications here - will be SQL Server itself.

So Grant's analysis that Microsoft is assigning more importance to Business Intelligence makes perfect sense because Microsoft would be missing a big piece of the data management pie if BI was given junior status. More to the point, the individual BI tools are being rolled into the SharePoint stack.

To prove this, Grant showed a slide of the BI stack...At the bottom was what he called the Operational Systems (Oracle, SAP, PeopleSoft, SQL Server, etc). These were the initial data repositories. The next level of the stack was the BI Platform: Reporting Services, Analysis Services. These provided the data for the third level of the stack, the End User Tools & Performance. Here I saw the new PerformancePoint product mentioned. The final level of the stack was the Delivery layer, where the end users manipulated and displayed the data. Again, the key element (at least to my eyes) was the SharePoint platform (read: MOSS), because on it sits Excel Services, KPIs, and published reports.

Grant then gave a demonstration of manipulating an Excel spreadsheet attached to an OLAP cube via Analysis Services. Someone asked where the best place to put KPIs is, because at the moment you can do that in a variety of places (Analysis Services, Excel Services). He suggested that the best place is within Analysis Services as those KPIs then become available everywhere else.

Grant demonstrated how to organize an Excel spreadsheet; using Pie Charts and Heat Charts he helped visualize the data within the spreadsheet. Next he published the spreadsheet to a report library using Excel Services. He mentioned that you can publish individual items, worksheets, or the whole report. One great tip he showed us was how to rename the Excel objects (such as the worksheet) before he published the form. This is important because the web parts refer to the object names and so it's a good practice to give them meaningful names ahead of time.

He had another tip - if you "Convert to formulas" (it's an Excel option somwhere) you'll get full control over how the spreadsheet appears and can move the cells around. I didn't understand this requirement too well, not being much of an Excel user, but it is apparently helpful when your end users are, how to put it delicately...."particular" or "precise" about how they want the spreadsheet showing up!

Finally Grant showed us a neat little add-in for Excel allowing a user to data-mine within the client. The link for these tools is here. As an example of its use he conducted a little campaign analysis on the Excel spreadsheet. Using the addin he was able to quickly drill down on what influences prompted the users to want to purchase certain products.

Obviously Grant provided a great deal of information and demonstration for us. There's a lot of progress being made in the Business Intelligence space and I thought it was a great overview.
Incidentally, he is a SQL Server MVP and is also the president of the Sydney SQL Users Group (

Tuesday, June 19, 2007

UniqueWorld hosts Sydney's monthly SharePoint User Group at their office on 24 Campbell Street near Town Hall. It's a great chance to meet other SharePoint users, listen to speakers talk about SharePoint and related activities, eat pizza and drink beer.

Tonight's talk was about Business Intelligence in Office 2007. The speaker was Grant Paisley...From the invitation blurb:

Grant Paisley is the Chief Solutions Architect for Angry Koala (, a Microsoft Partner specialising
in Business Intelligence Solutions. Grant is a SQL Server MVP, and president of
the Sydney SQL Server User Group. With more than 10 years of consulting
experience in Business Intelligence and data warehousing Grant has worked on
many complex projects and produced a wide range of solutions.

Grant's presentation was very interesting and I'll be blogging about it in detail tomorrow evening. Essentially he gave a rundown of ways Excel 2007 can interact with OLAP data, talked about Excel Services, integrated reports in SharePoint, dashboards, and demonstrated some useful Excel add-ons.

If you're in Sydney, do yourself a favour and sign up for the monthly events. Details available at Unique World's website at

Saturday, June 16, 2007

If you're crawling case-sensitive URLs in your search catalog, such as an Apache-hosted intranet, you'll run into some strange errors. In your crawl log, you might see "Content for this URL is excluded by the server because a no-index attribute.". This implies that there is a no-index or no-follow metadata tag on the content, although there probably isn't. Further, the log will indicate the URLs as being all lower-case, when they aren't...

There is a Microsoft hot fix for this (SharePoint Hotfix, April 12 2007). The KB article is at Basically you have to call up Microsoft and ask for the download, which they will send you a link for.

Once you've installed the hotfix, go to your Shared Service provider(s)'s Search Settings. Reset all the crawled content and do a full crawl on your sources. Subsequently, the SharePoint crawler will pick up and crawl the URLs appropriately.

Friday, June 15, 2007

I've been struggling to implement Open LDAP Authentication. I've posted a technical article about it how to do it here. Today I ran into some more technical issues around it: the big one as mentioned is client integration but there is also an issue around web permissions.

I created a master page that had a variety of images, uploaded into a SharePoint portal's Style Library. This was done on the default port 80, which had Windows Authentication. When extending this app to allow LDAP Authentication, I had a problem: the image and css references in the master page all resolved to the new port number, and didn't show up, because they didn't exist in the SharePoint database for that application.

SharePoint Designer couldn't access the new LDAP site because of the client integration issue, so I couldn't upload the images and css to it.

As a workaround, I tried to hardcode the references to point to the port 80 worked for some of my user accounts but not for others.

Finally I had to create a completely non-SharePoint site in IIS, make it anonymous authentication, stick all the images and css in there, and reference that site from the Master Page. Not pretty, but it worked.

The moral of the story: SharePoint and Forms-Based Authentication is PAINFUL.

Thursday, June 14, 2007

I had to create a custom CSS for a SharePoint portal, and ended up struggling a bit with the SharePoint CSS classes. Not being much chop at CSS, the only way I could get the job done was with Firefox’s Web Developer plugin and Heather Solomon’s excellent SharePoint 2007 CSS Resource Chart (

In this latest project I had to modify the colours of the top menu bar. Easy enough, but I noticed when I viewed the dropdowns that if the submenu text was too long, it caused discolourations to appear in the flyout menu.

Notice that there is a light blue bar next to the submenu item I was hovering over. Personally I think with the default SharePoint colour scheme this looks quite nice. However, as I was asked to make the row all the same colour, I had to modify the menu flyout classes as follows:

.ms-topNavFlyOuts tr td
background-color: #C0C0C0;
.ms-topNavFlyOuts a:visited
background-color: #C0C0C0;
color: white;
.ms-topNavFlyOuts a:link
background-color: #C0C0C0;
color: white;
.ms-topNavFlyOutsHover a:link
background-color: #ffeaad;
color: black;
.ms-topNavFlyOutsHover a:hover
background-color: #ffeaad;
color: black;
.ms-topNavFlyOutsHover a:visited
background-color: #ffeaad;
color: black;
.ms-topNavFlyOutsHover tr td
background-color: #ffeaad;

The final result:

Monday, June 11, 2007

Microsoft has released Microsoft Office Interactive Developer Map, a new Windows Presentation Foundation (WPF) app to help identify the various resources and solutions available for SharePoint work.

This tool is a must-have.

The Map is essentially a visual matrix, divided up into sections such as "Programs", "Tools", "Services", and "Servers". Each area contains a stack of programs, services, or tools. Hovering over an item in the stack provides a popup overview of how this item can be used.

Clicking on an item provides a cool "page-flip" effect, drilling in on the item's details. As an example, clicking on "InfoPath" provides a very detailed explanation of InfoPath news, technical references, community resources, and "features" or areas of functionality.

Not only is this tool slick-looking, it provides an excellent gateway for Office development. One of the big challenges right now is identifying and learning the myriad platform components. At least this tool puts that knowledge at your fingertips. It isn't always clear what the best development path is. I'd love to see best practices documents appearing on here, populated by the Patterns and Practices group or wider community. It's a "living document", meaning they will keep it up-to-date as new offerings and documents become available.

You can learn more at Microsoft's SharePoint Products and Technologies Team Blog at, while the tool itself is available for download at

P.S.: Having built some excellent functionality into the SharePoint platform, Microsoft's next big task is to empower developers to extend it. The Map is a great start. You can expect a Business Data Catalogue schema-generating tool imminently (or maybe it's already on the market ;) ? ). It's likely other tools are also on the way - an obvious candidate is something to help generate and deploy Content Types and Custom Columns.

P.P.S.: "Office Fluent" is what they're calling the Ribbon now!

Saturday, June 09, 2007

Server error: Access is Denied When Using SharePoint Designer

Every once in awhile I get an annoying error in SharePoint Designer when I'm trying to copy files or check something in or out. The error only says "Server error: Access is Denied".

To fix this, I add my windows account to the Policies for Web Application in All Zones and give the account Full Control.

To do this, log in to Central Administrator and select the Applications tab. Click "Policy For Web Applications". Click "Add Users". Choose the right web application and All Zones. Click Next. Choose your user account and make sure it resolves using the People Picker. Give the account "Full Control" and click "Finish". Hope that helps other people.

K2 has a new community-driven website, K2 Underground, which replaces the existing site. The new community area allows registered users to participate in forums, blogs, groups, and file shares, although unregistered users can browse the site. It's a good idea and looks well built; it'll be interesting to see if the K2 community coalesces around it.

You can access K2 Underground here.

Friday, June 08, 2007

Don't Forget IIS Compression!

A colleague mentioned today that he had been trying to reduce the page size of a web app he was building. One thing I do whenever I install IIS is to turn on HTTP Compression. In IIS 5, HTTP Compression was introduced, but was too flaky to actually use. IIS 6 does it right, but keeps the option "hidden" in the metabase file where no-one ever goes. In IIS 7, there will be a GUI option to configure it, but apparently it will be on by default.

Here are the instructions you need to turn on HTTP Compression for your Web-Front End servers and application servers. You should notice a significant improvement in load speed:

1. Right-click Internet Information Services in the Management Console; Click "Properties".

2. Check "Enable Direct IIS Metabase Edit".

3. Navigate through windows folder structure to this path: "C:\WINDOWS\system32\inetsrv".

4. Open the Metabase.xml file in Notepad.

5. Modify the IISCompression scheme element whose location ends in "gzip" and "deflate":

a. For both, set HcDynamicCompressionLevel = 9.

b. For both, set HcScriptFileExtensions="asp
c. For both, set HcFileExtensions="htm

Thursday, June 07, 2007

Yesterday I saw a great webcast about K2 [Blackpearl] given by Adriaan Van Wyk, CEO of SourceCode Technology Holdings. For those of you who haven’t tried it, K2 is a Business Process Management (BPM) or “workflow engine”. BlackPearl is pretty exciting stuff because it is built directly on Windows Workflow (WF), Microsoft’s new workflow framework.
K2 has just released a public Beta 2 version of their engine. Beta participants will receive a 25% discount on all Blackpearl software if they order it before 30th June 2007 (but licencing info won’t be made available for a few more days!). RTM is expected within a few months.
Key points brought up from the webcast:

  • BlackPearl is heavily integrated with the Office 2007 stack, including SharePoint. K2 workflows are hosted in SharePoint libraries just like the out-of-the box MOSS workflows are; the appropriate workflow actions are easily available from the Actions menu; workflow tasks appear in Office 2007; and so on.
  • Workflow development “scales” according to technical ability and need. A Business Analyst can draw up a general business process using Visio and deploy to SharePoint. A developer can import that workflow into Visual Studio, add more complex logic, and then re-export the changes.
  • Related to that last point….the K2 Studio is now fully integrated into Visual Studio – so no mucking around in a separate IDE!
  • All K2 BlackPearl workflows are xoml files (the WF format).
  • All workflow actions are fully surfaceable using an API, which means you can easily incorporate them into your other applications.
  • K2 provides the source code for its templates, allowing you to poke around and customize as required (although whether they will support any template changes you make remains to be seen!).
  • Exporting K2 2003 workflows to a target server was a bit difficult. Now you can publish your workflow as a CAB file, which combined with an XML configuration file for each environment means you can deploy K2 workflows with no K2 software installations required at all on the target servers! This will really please server administrators. During the webcast Adriaan demonstrated how you can extract a K2 workflow CAB file using a command line on the server.

Some other nice features:

  • There is a Forms Generator tool to autogenerate .aspx pages from K2 workflows. Autogenerating InfoPath 2007 Forms will not be possible at RTM but hopefully shortly thereafter.
  • Workflow process information can be surfaced in SharePoint using the Business Data Catalog.
  • Smart Objects allow you to keep your BPM data outside of K2. This is a great feature because you can reference the Smart Object’s unique ID in the workflow, but update the rest of the SmartObject’s properties over time, and all workflows using that SmartObject will still work. This simplifies maintenance of data structures.
  • Reports are generated using Report Definition Language, which means you can create and customize them using Reporting Services technology.
  • A Context Grid allows K2 to make decisions based on the runtime environment, such as rerouting tasks or messages based on a user’s availability (perhaps determined by Live Communications Server).
  • Black Point is an AJAX designer which is hosted in MOSS. This component allows business users to generate and modify workflows without even leaving their browser window.

Workflow is a vital component of the SharePoint story – enabling customizable, real-value business solutions in a reasonable timeframe. You can already develop workflow using Visual Studio or SharePoint Designer, but a sophisticated product like K2 really takes much of the pain away, allowing you to focus on the business requirements. K2 continues the trend towards declarative software development.

With SharePoint 2007 and workflow forming a solid platform, I think we’ll soon see a new kind of Extreme Programming: one developer and one business analyst paired together at a computer, happily rolling out business solutions.