Aug12

Using Add from existing site column (and how to break CQWP!)

One of my clients called me last week and seemed to be a little troubled.  To protect his identity I'll call him Gary. 
 
We've been working together to roll out an internal site for a large company.  We'd setup a number of Team Sites and wanted information from several of these sites to roll up into Product sites using the Content Query Web Part (CQWP).  We had created Site Columns at the site collection level to describe the documents we were uploading and set them as Choice fields.  We setup the CQWPs using the filtering capabilities to only show us documents that met specific criteria (the CQWP can only filter on site columns created at the site collection level). It worked like a charm. and everything rolled up as it should until one day a new requirement was introduced to make it so the same documents from a single Team Site could show for multiple product sites.   Gary changed the site column on the list to a choice field with checkboxes. 
 
This is about when phone rang.  Gary told me that the CQWP didn't seem to work with the checkboxes.  (NOTE: There had been about a month since we initially set these columns up and when the call came in).  I checked it out and he was correct, the CQWP wasn't working.
 
Then it occured to me what was happening.  The site column was originally created at the site collection level to support the filtering of the CQWP.  We then created a document library and added our site column as metadata by clicking "Add from existing site column" -- this basically just makes a copy of the site column to the list.  When Gary went in and changed the choice field to use checkboxes it essentially changed the data type.  The CQWP was trying to apply a filter based on a single value choice field but the actual data in the field in the list was choice w/ checkboxes which caused an error.
 
The bottom line is, if you make a site column at the site collection level don't change it!  You run a big risk of having fields of the same name with different types of data.
 
JR
 
 
Published: Aug-12-08 | 2 Comments | 0 Links to this post

Aug08

Updated my blog to CKS:EBE 2.0

As a SharePoint consultant I thought it was important to blog of the platform that I tell my clients to use.  I'm lucky enough to have access to a public facing MOSS server so I thought I might as well take advantage of that.
 
I blogged on the OOTB SharePoint blogging engine for a few months and began to notice a few things that bothered me.  Specifically that anonymous posts come in and don't have a user associated with them.  This allows anyone who comments anonymously to see all the rest of the anonymous comments whether they've been approved or not.  There were a number of other minor issues that were less than ideal.
 
I decided to check out the Community Kit for SharePoint: Enhanced Blog Edition 2.0 -- turns out it fixes just about every one of my issues and even some I hadn't even thought of!!
 
Really great stuff!  Definitely shows off the type of things that are possible with this platform we call SharePoint!
 
JR
Published: Aug-08-08 | 0 Comments | 0 Links to this post

Aug07

Setting Expectations: Forms Based Authentication (FBA) with SharePoint

This is the first in what I'm hoping will be a series of posts focused on giving the full story for different pieces of SharePoint functionality.  SharePoint is a very powerful product with a laundry list of features and functionality.  When planning a project the question comes up as to whether SharePoint can do something, the answer is often viewed as yes or no.  In many cases, the answer should be "it depends on what you expect."
 
A good example of this is the decision to use Forms Based Authentication (FBA) with SharePoint.  Because SharePoint 2007 is built on top of ASP.NET 2.0, developers and admins can use FBA to allow users, who's identity information is stored in SQL (or ADAM another non-AD db), to authenticate to SharePoint. 
 
This is very attractive because many times companies want users who are not in their AD to authenticate to SharePoint.  Most often, I see this used for Internet site or Extranet scenarios.  The option to use FBA opens a lot of possibilities for what you can do with SharePoint.
 
I spend a lot of time in the Microsoft TechNet SharePoint Forums and also often get calls from clients who want to use FBA simply because they want to allow external users to authenticate to SharePoint.  This is one of those times where it is important to set expectations properly. 
 
FBA does provide a mechanism where external users can authenticate to your SharePoint server without having to be in AD, but there are some tradeoffs that I don't see mentioned very often (if ever):
 
1) It is complex to setup and configure.  There's a lot more to it than just flipping a switch
 
2) Management of users isn't the greatest.  There are some 3rd party utilities out there that can help out with this though.  I often install this to help make things easier:
 
3) MOSS cannot crawl web applications using FBA so you'd need to use a dual authentication configuration to ensure that search works.  For more information on that, Andrew Connell has a great post about this:
 
4)  **This is the one I never see anyone bring up** Users who authenticate via FBA do not have the same level of functionality available to them as users who authenticate with a Windows Authentication method.  Essentially the client integration features won't work:
  • Links that start client applications are not visible.
  • Documents are opened in the browser. Documents cannot be opened by client applications.
  • Users cannot edit documents on the site directly from the client applications. However, users can download the document, edit the document locally, and then upload the document.
For more information take a look at "Expected Behavior When Client Integration is disabled" in this link:
 
You can always attempt to use some type of workaround, but the point of this post is to explain that FBA isn't a silver bullet.  Anything can be done given enough time and money, but the goal here is to set expectations and give the whole story. 
 
If you have a situation where you want to give external users access to SharePoint and maybe FBA doesn't sound right for you, consider setting up a separate OU in AD for your external users and set a policy that doesn't allow them to authenticate locally to your domain.  Or you could always spin up a separate AD with a one-way trust.
 
Setting expectations is key to any SharePoint implementation.  Take the time to do proper planning and it will make your life easier and lead to happier end users! 
 
If you'd like to get more information about SharePoint Project Planning, sign up for the class I'm co-authoring with Joel Oleson and Nicola Young for the Ted Pattison GroupSharePoint Planning and Governance
Published: Aug-07-08 | 3 Comments | 0 Links to this post

Aug06

SharePointers - What do you tell your friends and family you do?

I run into this all the time -- my parents or friends ask me "What do you do?"  I can tell them I'm a consultant but inevitably they always ask for more details.  What do you say?  Heck, my own wife barely understands it.  For those of you that have ever watched Friends, she says I'm like Chandler - no one knows what I really do.
 
I normally go with something like "Basically, I work with an enterprise server product from Microsoft that makes it easier for companies to manage their information."  Which is almost always followed up with "Oh! So you work with computers!?" 
 
I've worked long and hard to remove the idea from people's heads that I know anything about "computers" because it always leads to phone calls from friends and family about why something is slow (which is normally related to the fact they randomly clicked on a blinking ad somewhere - but I digress). 
 
All you SharePointers out there -- what do you tell your friends and family you do? 
 
JR
Published: Aug-06-08 | 3 Comments | 0 Links to this post

Aug01

SharePoint Navigation -- learn something new every day!

I've been working with a client and we are nearing the final stages and getting ready to go live with a site.  We've done a custom master page and made some changes to allow 2 levels of dynamic flyouts from the global nav.  Nothing too exciting. 
 
So the client calls me the other day telling me he can't figure out how to prevent a specific subsite from showing in the Global Nav.  His nav is structured like this:
Portal
       -SubSite lvl2
             -SubSite lvl 3
                    -SubSite lvl 4
Since we allowed the Global Navigation setting for MaximumDynamicDisplayLevels="2" we'd expect to see all of the SubSites up to lvl 4 in the Global Navigation.  Should be easy right?  Just go in and turn off allow to show subsites. 
 
Normally that would be true however in this case we were inheriting the Global Navigation from the parent and had the Current Navigation set to only show navigation items below the current site.  The client's goal was to show SubSite lvl 4 in the Current Nav but not in Global Nav. 
 
We unchecked to Show Subsites, but SubSite lvl 4 was still there.  Why?  It turns out that in order to get SubSite lvl 4 to show in the Current Nav the client manually added it as a link.  This caused it to roll up to the Global Nav.  If you take a look at the default nav control in a publishing master page it looks something like this:
 
<PublishingNavigation:PortalSiteMapDataSource ID="GlobalNavDataSource"
    Runat="server"
    SiteMapProvider="CombinedNavSiteMapProvider"
    ShowStartingNode="false"
    StartFromCurrentNode="true"
    StartingNodeOffset="0"
    TrimNonCurrentTypes="Heading"
    TreatStartingNodeAsCurrent="true" />
 
The line I've highlighted tells the navigation control to trim out headings from the navigation control, but apparently manually created links are not.  To fix the problem we changed the line to look like this:
 
TrimNonCurrentTypes="Heading, AuthoredLink"
 
This prevented both headings and manually created links from showing up in the navigation.  Unfortuntely, you can only control whether pages or subsites roll up in the navigation using the UI.  The navigation definitely allows for much greater control but all the changes must be made through in the master page itself.
Learn something new every day.
 
JR
 
Published: Aug-01-08 | 0 Comments | 0 Links to this post