Skip to content

Professional Microsoft Office SharePoint Designer 2007

Most folks who know me know that I have a love-hate relationship with SharePoint Designer. (Some say I love to hate SharePoint Designer.) I’ve written about my feelings on a few occasions. In truth it’s not that I hate SPD — I actually love it. I just hate when it’s used for evil. Of course, my definition of evil may be different than yours. I tend to think from the perspective of infrastructure here in terms of the solutions I can’t deploy, I can’t migrate, and I can’t upgrade.

So when my buddy Woody started working on a new book about SharePoint Designer, I wasn’t exactly positive. However, knowing Woody, I knew that he’d cover both the good — and the bad. I’m happy to say that he’s done that. Along the way, he picked up two other MVPs to help. Asif and Bryan.

One of the real challenges, from my perspective, with SharePoint designer is that the demos you see, the web casts, etc., are all the same features (HTML editing, workflow, and Data Views) so you can’t really see what the tool can do. The examples and articles are always fairly trivial. They don’t seem to punch through to the hard issues that you face when using SharePoint Designer to design a site and to build solutions for users. However, I’m happy to say that the book appears to do that.

If you’re trying to figure out how SharePoint Designer can help you design your SharePoint site, or build sites that are truly useful for your users, I’d recommend it.

Speaking at the SharePoint Best Practices Conference

I speak at a fair number of conferences each year. My wife might tell you that I speak at too many conferences. I enjoy every experience. Each speaking experience is different — but there’s a topic that’s near and dear to my heart. It’s a topic that many conferences shy away from. The topic is Governance. I enjoy the topic because it’s a way to make things a lot better with a relatively small amount of work. However, it’s not a topic that most conferences spend much time on.

I’ve given talks at various conferences but the organizers realize that governance can be a real snoozer if not done correctly so it generally gets an odd time right between the pasta lunch and the end of the conference. I’m happy to say that governance is something that the SharePoint Best Practices Conference will be spending a lot of time on — I’ve got three sessions including governance and some other best practices and I’m joined by tons of the best speakers in the SharePoint space.

My first session, Selling Governance in Your Organization, is a must see if you’re struggling to help your organization put some governance together. (By the way, here’s a sneak peek — think of governance as risk management, and a governance plan as insurance. Everyone buys some form of insurance.)

The second session is Governing Development in SharePoint. You’ve probably seen the Microsoft Patterns and Practices group’s SharePoint Guidance. In this session I’ll walk you through some of the conversations that they had internally and with the advisory team to talk about what went behind the best practices that they published.

Finally, I get to talk about How to Upgrade Your Applications in SharePoint. This is fun because there’s a ton of information out on how to get started with SharePoint but there are also some real rough spots you hit when you try to upgrade.

Certainly there are many conferences to consider attending, but this conference is the only one where the focus will be on getting you a well rounded set of best practices which you can use to improve the engagement with your users, deliver rock solid infrastructure, and facilitate developer productivity. If you’re a team leader, architect, or manager, there isn’t a better conference publicized today that you can go to this year.

[Oh yea, I’ve also got a major product announcement I’m going to be making at the conference.]

VLANs to the Rescue

Many moons ago I started a journey into having VLANs at my house. A VLAN (Virtual Local Area Network) for those developers out there allows you to partition traffic off on to certain switch ports. I got the functionality with a set of NetGear WAG302 access points. I need a set because I have a separate building on my property. The WAG302 has both 802.11a and 802.11g support. Generally I try to use 802.11a since there’s less interference compared to the 802.11b/g. Anyway these guys support multiple SSIDs and VLAN tagging. The idea was to have a secure wireless for my stuff and then a public wireless for guests — that wouldn’t be on the private network.

That of course meant I needed a switch (or switches) that support VLANing. Enter the Linksys SRW2008 (8 port) and SRW2016 (16 port) switches. I’ve had them for a while — from when I switched to a Gigabit infrastructure. However, I hadn’t done anything because there hadn’t been a pressing reason to fire up the anonymous wireless.

However, I ran into a challenge. My new office space was setup with Cat6 twisted pair … no coax. I have the AT&T U-verse service which allows me to deliver to the TVs (boxes) via Coax or UTP. Of course, those boxes need to be attached directly to the home gateway — and I need my firewall to pickup the VPN to my co-location center. (Bluelock absolutely rocks.) I use a SonicWall TZ170 (it’s the predecessor to the TZ190 which is available today.) Everything I have is behind the TZ170 so I can use the site-to-site VPN.

So enter the need for a VLAN … one that would tie my U-verse home gateway into the receiver in my office — three switches away. After fighting with authorizing the trunks to the VLANs (Why do we have to authorize a trunk to a VLAN?) I finally got it working. It’s VERY cool. Now all I need to do is get Media Center to recognize the U-Verse and I’m all set. If anyone has any tips … I’d love to hear them.

The SharePoint Calendar – SharePoint Events and Releases

Several of the folks I know, including Joel and the SharePoint Product Team started posting “calendars” as text in a blog post. That was entertaining because I was just getting ready to do the same thing to talk about the conferences I’d be at and the presentations I’d be giving. However, I realized that we’ve got the same problem with calendars as we have with most content, it’s scattered all over the internet. So I created a SharePoint Calendar that has all of the major events that I could find. I’ve added an email alias [email protected] that you can send requests for calendar updates to. (My assistant will process these for now, if we get enough activity I’ll automate the system.)

Once we get a few people linking to their entries in the calendar I’ll put a web part on the page that will provide a set of links to pages linking to the event (so you can see who’s presenting what at the event)

With a little luck we’ll end up with one calendar for SharePoint stuff.

Video Screen Cast Samples Available

Last week I mentioned that Office Online posted a few of The SharePoint Shepherd’s Guide for End Users tasks. Well, I’ve decided to make the screen casts for these tasks available too. Here’s the list, use the (screen cast) link to get to the screencasts.

I hope you enjoy the screen casts!

 

The SharePoint Shepherd On Office Online

I just was catching up and realized that earlier this week Laura announced that the first three tasks from The SharePoint Shepherd’s Guide for End Users appeared on Office Online. Earlier this year I agreed to let Microsoft publish a few tasks from the book on Office Online. The first three tasks are:

Go check them out!

Adding a Second Global Navigation to Pages in SharePoint

Recently I had a client that was interested in having two different global navigations. The first global navigation across the top — using the default global navigation that SharePoint implements. However, they wanted a second global navigation in the left column on top of the normal Quick Launch menu. As it turns out this isn’t that hard, if you’re willing to create a site to host the second global navigation. Sahil Malik posted a blog entry titled “Implementing Consistent Navigation across Site Collections” that showed some promise, however, he was using an XmlSiteMap provider and a custom .sitemap file — I needed to allow my customer to perform the modifications to the global navigation themselves.

The answer I came up with was to create a site off of the root, which I called global navigation (/globalnav). I hid this from the real global navigation (so it didn’t show up in the top bar) and managed the navigation in the site so it had the navigation items I needed at the top of my Quick Launch bar. However, the question was how to plug it in.

The left navigation, or Quick Launch, is emitted out of a placeholder in the master page. The default.master file contains the PlaceHolderLeftNavBar which already contains some default content. In that default content is a delegate control called QuickLaunchDataSource. (You can learn more about Delegate controls in my article “SharePoint’s Delegate Control Power“). The default contents of the delegate control is a SiteMapDataSource control:

This is referring to the SPNavigationProvider in the web.config file. There’s a node in /configuration/system.web/siteMap/providers/ which is the site map provider — As shown below:

<add name=”SPNavigationProvider” type=”Microsoft.SharePoint.Navigation.SPNavigationProvider, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c” />

You may notice that the SiteMapDataSource is referencing a StartingNodeUrl of “sid:1025”. This is important for two reasons, first, StartingNodeUrl is useful for navigating to the node in the SiteMapProvider that you want to start at and second because 1025 is the ID for local navigation (quicklaunch) in SharePoint. (By the way, global navigation has an ID of 1002).

This data source is consumed by the SharePoint AspMenu which appears immediately below the delegate control:

The SharePoint AspMenu is a thin shell over the Menu control in ASP.NET. It has the same format for attributes — including the DataSourceId which matches the id of the SiteMapDataSource above. So following the chain… The SharePoint navigation provider returns a set of nodes, the SiteMapDataSource starts at the 1025 (quick launch/local navigation) node and returns the child objects. The SharePoint AspMenu displays the items that are returned (based on the attributes provided.)

With this knowledge we can create a secondary SiteMapDataSource for our global navigation and use the StartingNodeUrl to override where we start at. However, we need one more piece of information. One of the other entries in the web.config file is:

<add name=”GlobalNavSiteMapProvider” description=”CMS provider for Global navigation” type=”Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider, Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c” NavigationType=”Global” EncodeOutput=”true” />

This site map provider is useful because because it expects to receive a URL in its StartNodeUrl attribute from the SiteMapDataSource. Thus we can create a SiteMapDataSource like this:

Wait a moment you say, what happened to Asp:SiteMapDataSource, well, I wanted to get a few more attributes (described in a moment) so I changed to the actual type of the SiteMapDataSource (PublishingNavigation:PortalSiteMapDataSource). This is a subclass of Asp:SiteMapDataSource so it can be used wherever SiteMapDataSource is expected. Of course, I need to register the PublishingNavigation prefix at the top of the file if it’s not already registered, like this:

<%@ Register TagPrefix=”PublishingNavigation” Namespace=”Microsoft.SharePoint.Publishing.Navigation” Assembly=”Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c” %>

So other than the additional attributes, I changed to the CurrentNavSiteMapProvider from SPNavigation Provider, StartingNodeUrl to “/GlobalNav” from “sid:1025”, and changed the ID to “GlobalLeftNav” from “QuickLaunchSiteMap”. This effectively gives me a navigation provider that would be local to /GlobalNav (my global navigation site).

Then all I have to do is copy the <SharePoint:AspMenu> that currently is used for QuickLaunch and replace the DataSourceId with my new GlobalLeftNav Id from my PublishingNavigation:PortalSiteMapDataSource. In the end I have a working second global navigation.

I promised to explain the additional attributes in the PortalSiteMapDataSource. Well, by default the navigation will include sub-sites and pages in the site in question. Rather than relying on the users to remember to hide them if they created any, I can tell the navigation provider that I don’t want any subsites or pages returned. The effect of which is that I get only the headings and links that they added manually to the navigation of the site.

In the end I chose to implement the changes I describe here in a page layout so that the users could easily choose to include the navigation — or not, based on the page they were creating.

Dumping the RAW CQWP Query Results (or How To Change the ContentQueryMain.xsl)

Sometimes working with SharePoint feels like picking a lock. You know that if you get the right combination the lock will open and you’ll be able to get what you want — however, figuring out that critical combination is difficult. I’ve spent too many hours trying to do something simple — I wanted to look at the results of the query generated by the CQWP in its raw form. There are several posts that talk about how to dump out the attributes/fields that are coming back from the query, including Heather Solomon’s. This uses a simple technique in the ItemStyle.xsl which creates a template that iterates through each of the attributes by using a select of @* (meaning Attributes, All). However, I just wanted to see the raw XML. The XSLT to do that is pretty trivial…

However, there aren’t a ton of examples on how to even customize the main XSL for the Content Query Web part. The property you need to change in the web part file is MainXslLink. However, this property isn’t covered in either How to: Customize the Content Query Web Part by using Custom Properties or How to: Customize XSL for the Content Query Web Part. I located the property and tried to customize it with my little dumpall.xsl that I keep around (it is little more than the XSL snippet above). However, every time I’d use it I’d get an error message:

Well, it turns out that there are some dependencies in the CQWP to what’s in the main XSLT file. (No I didn’t isolate them.) So instead of starting with a blank file to dump out everything I made a copy of the ContentQueryMain.xsl where I replaced the following snippet:

with the snippet above to dump everything out. This worked beautifully. It dumped out what the CQWP was providing to the XSLT for transformation.

Microsoft Certified Master: SharePoint

There has been a bit of discussion in the public blogs about the new Microsoft Certified Master program for SharePoint. Folks I respect, like Joel Oleson have said, in effect, I can’t do this because it requires that I think both from the perspective of a developer and an IT Pro. I’ve spent my whole career as an IT Pro. (Joel – Please forgive me for paraphrasing so bluntly.) He graciously complements me as someone who could possibly achieve this certification because I can do both sides. As a point of fact, I tend to drift towards the development but I can absolutely talk about load balancers, link aggregation control protocol, VLANs, core switch bandwidth, etc. Frankly I know I’m in the minority about the ability to do this — my clients remind me of it all the time.

So I’ve seen a ton of email traffic beyond what’s public in blogs and here’s what I can confidently say about the Master program — it will set you apart.

I’ve got a ton of paper certifications behind my name from CompTIA, Microsoft, and even some expired Novell certifications. I rarely write them down any longer. In fact, the seven CompTIA certifications I have are all listed as “etc” in my signature. I’ve been involved in just about every aspect of the exam development and certification process. (I suppose I’ve never proctored exams so not everything.) I’ve written exam questions. I’ve written books about exams. I’ve written articles about exams. And one thing I’ve come to realize is that I’m really good at “gaming” the questions. What I mean by that is that I use the question itself to lead me to the answer. While smart people on the exam development teams try to prevent this from happening, I can tell you that I do it on every test I take — certification or not. (What’s really fun is gaming a personality test.) So I know that you can have people who don’t know the technology who can get these certifications. (I’m not saying I don’t know them — just that I can clearly see how one could pass without knowing the requisite knowledge.)

Here’s the thing. A certification is SIMPLE thing. It’s a STANDARD, a bar which the candidate has to get over. Some could argue that the computer based exams set the bar too low. (I’ve got a book on psychometrics you can read if you believe this is the true problem — I don’t need it any longer. It cured my insomnia.) The trick with computer based exams is they are designed for VOLUME. They’re designed to provide a MINIMUM standard that people should meet. They’ve never been designed with the idea of having only a few people pass them. I was once told that each computer based certification exam could cost more than $200,000 to develop. Ouch. I hope they get a lot of people to take it.

Several years ago when Cisco released the CCIE program there were a bunch of folks who didn’t believe the costs for those exams were worth it. However, the market has proven out that this was a good thing — for Cisco and for the participants in the program. Having a CCIE really does distinguish you in that field. It’s not as prestigious as it once was, but it still carries a ton of respect.

What does all of this have to do with the MCM program? Well, first, having a high bar — having a bar that provides a real hurdle for most folks has value. Sure there won’t be tons of them in the market — but there aren’t tons of Microsoft SharePoint Rangers either — you know when you get one that you’ve managed to get the right person to help you solve your issues. Having a high bar with a practical test is worth it in and of itself. That being said, that isn’t all the program is about. The much discussed fee has been a big sticking point for people but let’s look at what it really is. It’s three weeks of training.

However, it’s three weeks of training by the folks who know that topic best. You’re not going to an Microsoft Training Center that trains on Word one day and SharePoint the next — or even the SharePoint training companies that I respect that teach on Development, Administration, Branding, etc. You’re talking about the guy (or gal) that knows the topic the best. If you take the $18,500 and break it down into three weeks of training it’s $6K/week — I’m not saying that’s cheap but I’m also not saying it’s really too bad either. You’ll spend ~$3K/week for a decent training class. For me, it’s a solid deal. It’s the best you can get…

Why should someone get it? That’s one of the most frequent questions that I’ve seen in private threads. The obvious answer is so that you can make more money — make more than your investment back. Of course, for some this won’t work and others it will. My perspective is a bit different. The reason to get it as an individual is to distinguish yourself. I wrote an article “Standing Out from the Crowd” for Developer.com. This would definitely qualify, but it’s more than just finding a better job, or the next job. It’s also about doing something that you can be proud of.

One of the things that I’m the proudest of, with the exception of my family, is my pilot’s license. I earned it about seven years ago. I don’t fly much right now because I’m busy working, raising a son, and loving my wife, however, it’s still something that I can say I did. It’s not practical at all — for me. However, I know it’s something that I learned to do that relatively few people on the earth have done. Similarly I’ve met people who have learned to Scuba dive who have a similar feeling. I’m saying that there’s a certain sense of pride in knowing that you can do something. I think the MCM may be that for some people.

Another common question is why should an employer send their employee? There are a few hidden questions here but let’s start with the fact that having an MCM will distinguish your entire organization. If you’re a Microsoft Gold partner you’ve probably got competitors in your space who are also Microsoft Gold partners. How do you distinguish against them? The other hidden item is a fear that if you invest in an employee they’ll leave to go get more money, etc. Well, the fear is valid, however, there are ways of mitigating it. How? How about writing the training as a loan to the employee that’s 0% that you pay back for them in the form of a bonus for a certain amount for every month that they work for you after they come back from receiving the certification? Of course the loan becomes payable immediately if they leave.

Beyond that, you’ll select the people you send very carefully. If you send someone it’s unlikely they’ll leave unless you do something truly boneheaded. Why? Because in the end analysis we don’t work for money. We work because we like and respect the people we work with. Sure we have to cover the money thing first but most people (particularly looking at this as an option) make enough for a basic needs. At this point we want to work for people we like and respect. An employer that makes this sort of investment in someone has to endear some level of gratitude. I’ve not seen recent statistics about people leaving after they have achieved a certification but it used to be that it didn’t happen as much as employers feared.

So with my position firmly in the camp of “MCM is good” one might reasonably expect that I’ll be the first to sign up and go for it. Ultimately the money doesn’t bother me and I’m quite ready to have something else that I can say I’m very proud of. I know that I’d learn a ton from people who are at the top of their game. However, in all honestly, I’m not ready at this point to spend three weeks away from my family. (I didn’t say friends because I honestly have quite a few friends in Redmond — so I wouldn’t miss time with friends.)

So it’s probably not right for me — but it may be right for you.

Recent Posts

Public Speaking