July 23, 2012 1 Comment
Thank you to everyone who came out to my session! Here’s a link to the latest slides as promised!
July 23, 2012 1 Comment
Thank you to everyone who came out to my session! Here’s a link to the latest slides as promised!
June 12, 2012 2 Comments
In my session at TechEd called “Exploring the Power of Page Layouts in SharePoint 2010 WCM Sites” that I co-presented with Randy Drisgill I touched on the subject of deployment. The topic itself is one that can get very complex quickly so I thought it’d be best to start with sharing an example of a simple branding deployment that includes page layouts. The download includes a Visual Studio solution that deploys a Sandbox WSP (so you’ll need to make sure to check in and publish the masterpage, page layouts, css, images, etc). But it should serve as a good reference:
Here’s some of the other references that I mentioned in my slides:
Creating a Page Layout in SharePoint 2010 using Visual Studio 2010 by Becky Bertram [SharePoint MVP] — http://blog.beckybertram.com/Lists/Posts/Post.aspx?ID=71
Packaging master pages and page layouts — http://blogs.msdn.com/b/bobgerman/archive/2011/01/31/packaging-master-pages-and-page-layouts-with-visual-studio-2010.aspx
CKS:Dev Extensions — http://cksdev.codeplex.com/
February 16, 2012 2 Comments
You’ve probably heard by now, but SharePoint911 was acquired by Rackspace (http://www.rackspace.com/blog/newsarticles/rackspace-acquires-sharepoint911-to-provide-industry-leading-sharepoint-expertise/) Some folks have been sending me various messages asking “Congrats! Is this a good thing?” I thought it’d be good to take to the blogosphere to share my thoughts on this.
The week after Christmas our fearless leader, Shane Young, called a very mysterious meeting on Friday at noon. We have meetings all the time, but the phrasing and wording of this meeting request made us all a bit nervous and I probably got IMs from everyone on the team with various theories. But the news came down then that Rackspace wanted to buy us. Everyone had a million questions and I can’t actually remember most of that meeting — all I remember is that we needed to all book flights immediately to head out to San Antonio to head to Rackspace the following week.
I’ll spare you all the nitty gritty details, but the next week or so was one of the most stressful of my life. Initially I was very excited about the news but there were so many open questions. The whole SharePoint911 crew came down The Castle (Rackspace’s home office which is a renovated old mall) on January 4th and 5th. I was completely blown away from the sheer coolness factor of their offices — they have a slide! But slides alone aren’t enough to give warm and fuzzies. During our time there we had a chance to meet upper management and the rest of the SharePoint team as well as a cast of characters from across the organization. One of the best parts about working for a small company is that “start up” feeling and at SharePoint911 we always worked hard and tried to have a lot of fun doing that. Walking around the Rackspace offices, they’ve figured out a way to keep that same “start up” feel in a company with more than 4,000 people.
Last Friday as we were doing final preparations for today’s annoucement, I mentioned that we might want to move our website out of our current “datacenter” over to some servers at Rackspace. I think the whole process of creating the servers started at about 4pm EST. Somewhere in the middle I went to dinner with my wife, then came back and had everything moved over to Rackspace by about 11pm EST. It was the first time the teams from SharePoint911 and Rackspace had worked together on something like this and it was pretty awesome to see what we were able to do in such a short amount of time. For me, that was a little glimpse into what the future holds and I’m excited.
I left my last job more than 4 years ago to go to work with Shane and Nicola Young at this company called SharePoint911 that they ran out of their house. I’ll never forget when I told my wife this guy wanted to hire me that had never even met me. We were pretty sure it was some type of scam. But Shane and Nicola both came down to Orlando and went out to lunch with my wife and me. I decided to make the jump to go work for SharePoint911 and I’m sure some folks thought I was a bit crazy. At the time, the idea that one day we’d be acquired by a company like Rackspace wasn’t even close to something I thought was ever possible.
I’m so proud to work with such great people at SharePoint911 and excited to join the team at Rackspace.
August 15, 2011 Leave a comment
I just got back from SharePoint Saturday: The Conference (SPSTC) in DC. What a great time! I got to a number of events throughout the year and really have to say I had more fun at SPSTC than I’ve had in a long time. Kudos to the organizers and volunteers on a great event!
It was great get to talk with so many of the attendees and see others in the community that I don’t often get to see! Not to mention the location in the DC area was awesome.
For those of you that were able to come out to my sessions, thank you for coming out! A special shout out to everyone at my search session for helping me get the room set up. I apologize for being a little late making the slide decks available, but here they are.
Hope to see everyone again at SharePoint Conference in Anaheim!
June 10, 2011 Leave a comment
When I give search presentations, one of the demos I always do is about showing users how to do some quick and easy customizations to the Enterprise Search Center to improve the search experience a little better.
Just a quick note before we get into things too deeply. This blog post is specifically for users with SharePoint Server 2010 or Search Server Express 2010. If you happen to have FAST Search for SharePoint (FS4SP) the process for creating scopes will be different, but the same concepts would apply. In fact, you’ll be able to create scopes if you FS4SP the way I describe but you might get incorrect results.
For more information on creating scopes with FS4SP check out these great blog posts:
Just about every organization has a need for scopes. If you aren’t familiar with what a search scope is, you can think of it this way: All of the content that has been crawled by SharePoint is tossed into an index – like the index of a book. But the issue is, that sometimes you might just one to look at a small piece of that content. Maybe just content from a specific department, or all content tagged with a specific piece of metadata (maybe you wanted to only search within documents that were tagged as “proposals”). A scope is what makes this possible.
One thing I suggest in my session, is that you could move old content to an archive location. This could be a specific site, separate site collection or web application, or even a metadata flag on the content itself. Either way, the goal is the same – get the older information out of your active search results. But sometimes, users want to search the archives.
In this example, I’ll walk you through the steps about how to create a scope and set up the Enterprise Search Center with a separate tab your users can use to specifically search the archive.
1. For this demo I’m using an Enterprise Wiki as my starting point. If you are using a different template, your steps might be slightly different. But for the first step, you’ll want to create an Enterprise Search Center if you don’t already have one. To do this, you’d simply need to click Site Actions > New Site then click on the Enterprise Search Center. Give the site a title and URL and hit the Create button.
2. The next step is to create a scope. You’ll need to make sure you have Site Collection Administrator permissions. Click on Site Actions > Site Settings and then from under the Site Collection Administration section click on Search Scopes.
3. From the Toolbar click the New Scope button.
The create scope page will open, for the purposes of this demo you can simply fill in a Title for the scope and then hit OK.
4. This will take you back to the View Scopes page. You should see your newly created scope listed here, but you’ll notice that under the Update Status column it will say “Empty – Add rules.” To add rules, click on the Add Rules link.
5. On the Add Scope Rule page, at the top you’ll see you’ve got 3 options for scopes: Web Address, Property Query, and All Content. In this example we’ll use the Web Address option. However, the Property Query option is useful if you wanted to create a scope based on specific metadata values.
For the folder value, I’m just going to use one of my existing document libraries. So I’m going to cut and paste the URL into this field and remove the /Forms/AllItems.aspx part of the URL since it isn’t needed.
Then for the behavior section at the bottom, I’m going to leave Include selected and hit the OK button.
6. You’ll notice that when the View Scopes page loads that your new scope will likely need some time before it gets populated. In my case, it’ll be another 6 minutes. I With many other search related activities there’s a bit of waiting involved. I usually take this time to catch up on my web surfing
7. Once your scope has been created, it is time to head over to the Enterprise Search Center you created in the first step. Specifically, the results page. In my case the URL is: http://demo.contoso.com/search/Pages/results.aspx
It is okay if the page throws an error if there are no results. But if it would make you feel better, you can always execute a query.
8. Put the page into edit mode by clicking Site Actions > Edit Page.
At the top of the page click the Add New Tab link:
9. On the tab page, be sure to give it a Tab Name and enter a value for the Page. In this case, it is important to remember that when you enter the page name you need to include the full name of the page. In my case, it was archive.aspx. Then hit the Save button.
10. You’ll notice that the new tab has been created, but if you click on it you’ll get an error. Don’t worry. All we need to do is just create the page. And to do that click on Site Actions > New Page. Then press the Create button. In this case, we’ll call the page ‘Archive’ – no need for the .aspx. I know it isn’t consistent. Don’t blame me – I just write blog posts.
11. Once the new page has been created, there’s a couple quick modifications we’ll need to make to a couple of the web parts. First, modify the Search Box web part by clicking the Edit Web Part. When the web part properties menu opens, expand the Miscellaneous section and edit the Target search results page URL to point to itself. The goal here is that when someone does a search from this tab, we want to make sure it doesn’t redirect them to another page. Once complete scroll down to the button and press OK.
12. Next, edit the Search Core Results web part. Expand the Location Properties section and enter the name of the scope you created earlier. This will make sure that the results displayed in this web part are restricted to the scope we created. Press OK when you are done.
Then all you’ve got to do is Check in your page and give it a test. Just remember to publish the page if you want to enabled all users to see this. You can run a query against the All Sites scope and you should get back a big number, and then you click over to the new tab you’ll be only getting results back from your new scope – which should yield far fewer results.
June 9, 2011 2 Comments
Many organizations implement SharePoint for a number of different reasons including collaboration, content management, business intelligence, process improvement, and many others. These are areas where organizations are leveraging the vast capabilities of SharePoint 2010 to allow their users to work smarter and not harder.
But one area that many organizations seem to forget about is the powerful enterprise search capabilities that are available out of the box with SharePoint 2010. Search tends to be one of those areas with SharePoint that “just works,” so what usually happens in an organization is that the farm gets setup and search gets configured — results come back and it is assumed that everything must be working. Right? This approach is very common which is why when I go to work with different companies I often hear the same story about how “Search is broken” or “search sucks.” But the fact of the matter is that in order to work to its full potential, search can’t be entirely an afterthought. However, getting better results from search doesn’t require a lot of effort.
Before we can get into any search discussion we’ve got to start with the key measuring stick for determining whether any search engine works — relevancy. Relevancy is just another way of saying “did you find what you were looking for?” Users who have negative things to say usually aren’t finding what they are looking for and therefore have an issue with relevancy. The following are a few quick and easy ways to improve relevancy across your organization with very little effort.
Put more important documents near the root of the site, less important documents farther down the hierarchy – They say the cream always rises to the top, and with search the same is true. There are many factors that work together to determine the relevancy of a document but one rule of thumb is that the deeper the document is buried in your hierarchy the less relevant SharePoint is going to assume the document is in comparison to a similar document closer to the root. As a rule of thumb, the less “/” in a URL to a piece of content the more relevant it is. For example a document at http://sales/sharepoint-presentation.docx would be considered more relevant that http://sales/products/sharepoint-presentation.docx.
Just remember that you can use this to your advantage. Less important documents and sites can be nested deeper in your hierarchy and more important ones can be closer to the top.
Use natural language for site and file names – Among the easiest and most effective things people can do to improve search relevancy is to name their sites and files effectively. Look at these two URLs:
The first document has a URL which has actual words used for the sites and document where the second one has some shorthand for the sites and document names. The first one is far more effective because the URL and file names for a document in SharePoint are a heavily weighted component of the relevancy algorithm. If you were to type a search query of “sales presentations widgets” SharePoint would be able to determine clearly that the first document was relevant to the query. Although the second document might have some of those words typed somewhere in the content, and would likely still show up somewhere in the results — the first one will be considered more relevant simply because of the way it is named.
It should also be noted that in order for this to work as effectively as possible it is important to NOT run your words together. This is because SharePoint doesn’t know where words break unless you’ve got something between them that it identifies as a “wordbreaker.” Although spaces are recognized as a word breaker in SharePoint, my recommendation is to use “-“ between words instead. The main reason for this is because if you use spaces in things like site or page names when SharePoint will automatically remove them and you’ll lose out on the relevancy benefit you’d get otherwise. Other common word breakers that get used are things like underscores (_), periods, semi-colons. If you happen to be using these, they are also all valid word breakers.
Supply metadata for your files — If you aren’t familiar with the term metadata it basically means “data about data.” If you were talking about a car some common pieces of metadata would be make, model, color, mileage — think about the types of things you’d use to find a car on a web site. All of those pieces of data describe the car; they are its metadata.
For your files in SharePoint, by tagging them with descriptive metadata you can make it easier for your users to find what they are looking for. Remember, that metadata is always going to carry a heavier relevancy weight than content in the body of a document.
How much metadata do you need? Generally I recommend 5 to 10 fields that would be useful for categorizing a file. Common examples would be: department, product name, type of document, client, etc. The key to metadata is that it needs to be clear and consistent. Here are a few metadata recommendations:
This article covered just a few basic tips, but even though they may seem small, they can have a huge impact on search relevancy for your users. And the best part is that it doesn’t take any custom code or even a lot of effort. The end result should be that users will spend less time looking for things in SharePoint which can add up to tons of ROI. Managers like things that bring ROI and it usually puts them in a better mood when it is time to do performance reviews!
March 24, 2011 1 Comment
One of the quickest and easiest ways to begin customizing the search experience with SharePoint 2010 is to customize the refinement panel web part. If you’ve aren’t familiar with what I’m talking about it is web part that shows on the left hand side of search results page. Each of the sections, are ‘refiners’ which are basically just metadata – and below each refiner the available values that have been entered for content that is being returned in your search result. In this screenshot you’ll see the refinement panel that was displayed when I did a search for ‘contoso’
What is being shown in the screenshot is the default refiners that are displayed for SharePoint search. The refiners allow me to perform a very general search and then click on the refiners to basically filter my results. I can start with a very broad search and then keep refining until I get to what I’m looking for.
But in many organizations, they might want to display their own values here instead of the out of the box ones. The refinement panel uses XML to display the results, so if you wanted to change what you see – it only takes a few steps.
1) Go to your search results page in your Search Center and put it in edit mode. Then edit the Refinement Panel web part.
2) Expand the ‘Refinement’ section. After the field that says ‘Filter Category Definition’ click the ellipsis button which will bring up an editor that allows you to more easily see the code.
I know, there’s no formatting for the XML. It is pretty terrible to look at. You can try to parse it out on your own if you enjoy that kind of thing. I don’t – I’ve found the easiest way to clean up the code is to paste it into Visual Studio 2010. I’ve experimented with a few other editors, and Visual Studio 2010 is the best one.
3) Assuming you are us VS2010, you can open up any project (or create a new one) and Add a New Item. Choose to add an XML file (under the data section). You can name it whatever, because you don’t really need to save it. Then paste your code in and it will all be automagically formatted for you!
QUICK TIP! Visual Studio will add the following code to any new XML file: <?xml version=”1.0” encoding=”utf-8”?> You’ll want to remove this before you paste your code in. If you don’t, it will cause the Refinement Panel to error because that line is already included in the XML you are pasting in from the web part. SharePoint doesn’t like it if it sees two of those lines at the top of your XML.
4) This is going to be a very basic example and we are going to configure the refinement panel to only show the Author refinement. To do this we want to everything inside the <FilterCategories> tag except line 85. In other words, when you are done your XML should look like this:
<?xml version="1.0" encoding="utf-8"?>
<Category Title="Author" Description="Use this filter to restrict results authored by a specific author" Type="Microsoft.Office.Server.Search.WebControls.ManagedPropertyFilterGenerator" MetadataThreshold="5" NumberOfFiltersToDisplay="4" MaxNumberOfFilters="20" SortBy="Frequency" SortByForMoreFilters="Name" SortDirection="Descending" SortDirectionForMoreFilters="Ascending" ShowMoreLink="True" MappedProperty="Author" MoreLinkText="show more" LessLinkText="show fewer" />
It should be pretty obvious what most of the tags do here – but the most important one is MappedProperty. In this case, the refiner is looking at the Author managed property. But really you could set this to be whatever you wanted. So if you had a custom field that you wanted to refine on, no problem! All you’d need to do is add a managed property, and copy/paste the line in the XML which defines the Author refiner, and rename it to match the name of your managed property. Obviously update the other values too – like title and description.
Don’t know how to create a managed property? Check out my blog post on the topic:
5) Copy and paste your new XML from VS2010 back into the text editor in SharePoint. Then his the OK button on the text editor.
6) Now here’s the tricky part that trips people up. Before this will work you need to remove the check from the box at the bottom of the ‘Refinement’ section in the web part properties that says ‘Use Default Configuration’ – if you don’t do this, your changes will not be applied!
7) On the web part properties panel, hit the Ok button. Then you’ll need to press the Check In button on the ribbon.
8) Run a new search and you’ll see that your refinement panel has been customized! If you don’t see results, there could be a couple reasons why. First, make sure that there’s enough items being returned in the search which contain the refiner you are looking for. I’m not sure of the exact number needed, but generally at least 5 will do the trick. Second, if that isn’t the issue you might want to double-check your XML. It is very unforgiving by nature.
This is one of the more common search customizations I’m doing these days for clients. As a final thought, my recommendation is that if you plan on a field being used as a refiner it is best if it isn’t free-text. That means something like a Choice or Managed Metadata field works best.
The other tip I’d suggest is when customizing the refinement panel, don’t try to do 50 refiners all at once. It never seems to end well. I suggest starting with a couple, confirm they work, and then add a few more. Repeat that until you are done. Slow and steady win the race!
Final thought – remember you can always just add the out of the box refinement panel to the page if you want to get back to the original. Or, just go back into your custom web part and check the box again to use the default configuration. Just remember if you check that box again it will overwrite the changes you made to the XML so you’ll have to start over again to reapply your changes. That’s why once I get my refinement panel web part customized the way I like it – I export it out just in case!