Saturday, November 01, 2008

SharePoint SUSHI version 3.1 released


After a long delay, a new release of SUSHI has been published. This version includes the following:

  • Improved "Select A Site" functionality.
  • Updated Documentation.
  • Bulk List creation updated.
  • Profile picture import feature improved.
  • Bulk site creation includes both user site templates and system site templates.
Stable Release
This release has been tested in multiple SharePoint environments and used in many production environments as well. Stability and Security are SUSHI's highest priorities.


Future Releases

I already have another release with some nice graphics improvements which improve the look and user experience of SUSHI. I have enlisted a couple programmers to help with testing, and graphics work. The are quite helpful and good to work with so hopefully we can make SUSHI even better. I have lots of ideas but just not enough hours in the day to turn all my ideas into reality. I'd love to improve the backup/restore (I haven't touched that in about a year. I'd like to improve the security reports and add a few new security reports.



SharePoint SUSHI has been downloaded 8,500 times!  Not bad, I never thought SUSHI would be so popular. But I find myself using it often so I guess the thousands of other SharePoint administrators out there are using it as well.

Thursday, August 14, 2008

Naming a SharePoint Site

A few thoughts on picking a URL name for the a SharePoint Intranet site: The URL name is one of the most central branding pieces of the site. From my experience, this is a tough decision for organizations because a corporate Intranet is so many things and (will become many things that are not even conceived yet). Nevertheless, it is an very important one and one that needs to be made at the beginning of the Intranet build.

- The URL name needs to be easy to remember, be consistent with company branding, represent the content it delivers but also not be so specific that it can’t be flexible and grow and deliver new functionality.

- I would not vote for the name “” because users shouldn’t have to care what technology is being used to deliver functionality. We aren’t selling sharepoint to employees. We  are delivering company content and the company brand to employees.

- Many companies use their company name along with a generic word like “web” or “net”. This is because the name should represent the company, and the content it contains, but also be general enough so that you can add content to it in the future that is still described by the URL name. For example Microsoft uses “http://msweb”.

Here is what some other companies are naming their Corporate Intranets. Some of these are projects I’ve worked on, and some are from research:

Microsoft uses


Home Security Company uses


McKinney ISD uses (I think this is a bad name, it was decided on in a hurry)


Bank ONE





On other projects where I haven’t pressed my client to come up with a good URL name for their Intranet, we end up using a name that no one likes and then we get stuck with it. Note it is relatively technologically simple to change the URL name (DNS entry change and a SharePoint setting), but it is difficult to change user habits once a name has been chosen.

Saturday, July 19, 2008

ISO extraction utility


I just found this great lightweight ISO extraction utility. I don't need anything fancy, just something to read the ISO. I need:

  • reliably extract an ISO image
  • lightweight /fast install
  • free

I've found the tool I've been looking for. So cool. Find out more and download here: Extract Now.


Wednesday, May 14, 2008

Cool new idea for SharePoint Development


I am a big fan of the SharePoint API and I was thrilled to see this MSDN article suggesting many great uses of the SharePoint API that you might not have thought about:


May 2008 MSDN magazine article on MOSS is a must read for SharePoint developers. It summarizes all the options, and also has a really innovative and I think great way to roll out changes to multiple environments and that is to “script” those changes using the SharePoint API in a console app, and run it in both dev, staging and production. SharePoint API requires just a few lines of code for most tasks and is easy to log, debug etc. You can do almost everything with the API: site navigation changes, webpart customizations, Web.config changes, create web app, create site, create list, create a publishing page from a layout. The one thing you can’t do with the API, is create site and list definitions.


Comments on Site Templates vs. Site Definitions:

Using Site Templates has performance costs as SharePoint stores the parent list definition on disk and all variances in the content DB. Also if you have data in your list, it is lost or has to be migrated to the new list that you create from the template. With Site Definitions you can make changes to multiple sites or lists without loosing data. The only good thing about Site Templates is they are very easy and require no coding.


There are list definitions and site definitions and this is the Microsoft recommended approach because you can roll these out as features and they perform well because they live on the Web Front End file system. And most importantly you can roll out changes to a list or site without losing the data in existing sites and lists. Good article on Creating custom site and list definitions. MS tool to make it easier. (Unfortunately this tool from Microsoft is not supported on VS 2008 until June, so you'll have to use VS 2005.)



Monday, April 28, 2008

Extensions for stsadm.exe

Thanks to Peter Brunone for this post. Peter pointed out that you can extend SharePoint stsadm.exe command line tool and that there are lots of free extensions already out there to download, plug and play.


Peter writes:

"I just came across this concept and was floored by it (maybe I’m just a pushover).  With a strong-named assembly and an XML file for description, you can add your own operations to the STSADM utility.

Gary Lapointe has a few too many (you can download his 100-command extension from the blog):

That’s all. "


Good tip!

-Joseph Fluckiger

Monday, March 24, 2008

Coveo Search vs. Ontolica Search for SharePoint

    Coveo vs. Ontolica.

    Search is very important part of a corporate Intranet portal or Internet site. Choosing the right search engine is critical, but can also be a difficult process because the most important questions like "is this search engine scalable, reliable and secure" take the longest to answer. I've worked with two of the more popular search engines for SharePoint over the past 6 months and have gathered enough data on the two to make some valuable, well-tested observations. Below I will compare Coveo and Ontolica.

  • Both Ontolica and Coveo are very good products. I have really been impressed with both. They offer fantastic, have-to-have features over out-of-the-box SharePoint. After you have used either Ontolica or Coveo, you will not want to go back to native SharePoint Search.
  • About Ontolica
    • Ontolica uses the SharePoint native search engine. Note that the native SharePoint search engine is included with the purchase of WSS 3.0 and MOSS.
    • Ontolica is installed as 4 SharePoint features and is administered through SharePoint application pages
  • About Coveo
    • Coveo has its own search index engine, and its own administrative interface.
  • Cost estimate for Ontolica:
    • Costs about $9,000 per production WFE (Web Front End) and an additional $4,500 for all development environments. So for example if you have a production farm with 2 WFE and a staging and a development environment and a VPC on your laptop, the cost would be 9k+9k + 4k = ~$20k.
    • Coveo offers two trial license options: either 1) you can have only two uses access the search index at a time and the license does not expire, or 2)you can have unlimited users use Ontolica for a limit of 30 days. Not that it is easy to add or remove a license without having to reinstall Ontolica.
  • Cost estimate for Coveo
    • Coveo licenses based on total documents indexed. They have a 100k document license, a 10k document license, 1M license etc. For example, a 100k document license is about $12k cost for the primary indexer which would run on the first WFE and the cost for a mirror is 60% of the primary indexer which would run on the 2nd WFE = $7k in our example. Development environment costs %50 of primary indexer = $6. $12k + $7k + $6k = ~$25k. This includes an annual support license.
  • Index browser
    • Coveo comes with an index browser, Ontolica does not have an index browser.
    • This is quite significant because it allows you to see what is in the index. It helps for troubleshooting and development purposes.



  • Customer Support
    • Customer support for Coveo is very responsive. They send you a livemeeting link and stay on the phone until the issue is resolved. I called support at least 15 times over the past two months, and they were very helpful each time. I actually have the direct phone number to the support rep that I use most frequently. Also, emails are acknowledged immediately and most often responded to within a few hours.
    • Ontolica support was slow to get back to me. When you call, you only get a receptionist. (granted my client had not purchased the product yet so the experience may be different after you have purchased the product and have a support license)
  • Administration interface
    • Coveo has a rich administration and configuration interface, with more options and quick, responsive navigation. It does take some getting used to, and is a lot to learn, but when you have learned it, it is very powerful and much more logical layout than MOSS native Search, in my opinion.
    • Ontolica uses the SharePoint infrastructure for its admin interface so if you are used to this interface, you will feel comfortable with the admin and configuration Ontolica interfaces. But there are fewer options available to you.
  • Search Results interface.
    • The single most important feature of both Ontolica and Coveo is results filtering. These allow the user to further filter results with a few single clicks. It also gives some great information about the result set by grouping results into categories like document Type, Author, SharePoint site, and displaying how many documents are in each group. (see screenshot)

    Screenshot of Coveo search result filtering user interface:

    • clip_image002[4]

    Screenshot of Ontolica search result filtering:


    • Coveo uses a nice Ajax interface which searches as you type. This provides a superior user experience. Instead of having to press enter to navigate to the results page, the user is able to see the results in a dropdown and click directly to the result.
    • clip_image004[4]
  • Security Trimming:

    ○ both Ontolica and Coveo do security trimming. (not showing results for documents and items you don't have permissions to view.

  • Transferring settings from one SharePoint environment to another
    • For Coveo there is a single config.txt file which holds all configuration settings. So moving settings from Dev to Stage to Prod is simply a matter of copying that file from one environment to another.
    • With Ontolica you have settings both MOSS search configuration and in Ontolica search configuration. If you backup a content database from dev to another environment, Ontolica configuration will be included, but MOSS search configuration (managed properties for example) will not be included and Microsoft does not provide a good tool that I know of to move those settings between environments, although there are some tools on that do this.
  • Index Crawler Performance:
    • Ontolica and MOSS native search have supported 64 bit platform since RTM of MOSS 2007.
    • Coveo crawler is faster than Ontolica crawler, as of version 5.1.2960 Coveo supports the 64 bit platform.

    - Results Settings

    • Coveo offers many more settings for results customization without having to write code
      • Options include turning off the advanced search panel, highlighting the title, displaying or hiding RSS feeds, etc.


  • Results presentation - Complete Customization of
    • Ontolica: XSLT results customization
      • Ontolica uses XSTL templates to control how results are displayed. If you do not have remote desktop access to the Web Front end servers, then Ontolica is probably the choice for you because all you need is a web browser to customize the display format of search results. There is one Ontolica Styles library per site collection.

    Screenshot of Ontolica Styles Library. This library contains XSLT templates which you can use to affect how search results are displayed.

    • clip_image006[4]
    • Coveo: custom ASCX files
      • Coveo uses custom ascx files ( user controls) to allow you to customize search results.
      • Ultimately this ASCX technique will be more powerful for customizing search results because you can do server side scripting as well as client side scripting.
    • If you are more comfortable with ASP.NET development than with XSLT development, Coveo may be your best choice.
    • Note that with Coveo you need to have remote desktop access to the box to add an ascx file. But once that file is uploaded, it is available to all SharePoint sites in the Farm.
    • clip_image007[4]
  • User interface for search results.
    • Both Coveo and Ontolica have an clean results page. However, the Coveo search results returns a larger set of metadata and the layout is cleaner. The coveo results also display how many of each item per result group are contained in the result set.

    Coveo results:


    Ontolica results:


  • Managed Properties
    • Setting up managed properties is easier in Coveo than in MOSS/Ontolica Search. For example, you have to scroll though many pages to get to the managed property in MOSS, which is inconvenient. MOSS does have a "search crawled properties" which is helpful, but there is no "search managed properties".
    • Also in MOSS/Ontolica, you have to set up the properties in two places: once as a managed property in MOSS, and once in Ontolica.

    Setting up properties in Coveo:


    Setting up properties in MOSS/Ontolica:


  • Troubleshooting tools
    • The Coveo console is a nice real-time peek at what the index is doing. It allows you to view the indexer as it crawls and if any errors occur, you can see in real time what is going on.
    • MOSS/Ontolica view of current progress. Very bare bones. It only tells you the status of the crawler, and does not update real time.


  • Scopes
    • Controlling and building Scopes is easier in Coveo. Moving between screens is faster,
    • MOSS prohibits two different content sources from pointing to the same URL. This is inconvenient for search engine tuning and testing when you want to index a subset of information (for example a particular document library) In MOSS because of this limitation you are forced to redraw the entire site collection each time you make a change instead of being able to crawl just the library you are working on.
  • Custom scripts
    • Both Coveo and MOSS/Ontolica offer scripts for customizing search result ranking.
    • Coveo offers the ability to write and run VB scripts which modify index content and ranking.
      • For example if you want to strip out the pound sign from a metadata value, or you want to boost the search index ranking for items that have a metadata value set to "premium=true".
    • Modifying the MOSS index involves using the SharePoint API. Using the SharePoint API is generally easy and powerful, but note that I have not yet used it to modify index content so I cannot comment on how easy or hard this would be with MOSS/Ontolica.
  • Misc
    • Coveo Webparts
    • clip_image013

Friday, March 21, 2008

Donate to SUSHI

If you would like to make a donation to the SharePoint SUSHI project, click the donate link below.

Saturday, March 15, 2008

SUSHI's popularity

SUSHI has become more popular than I had ever imagined. Codeplex has just added a fantastic statistics page which shows exactly how popular it is. The stats include number of downloads, visits and referring sites. SUSHI has been downloaded over 2000 times!

Figure 1: Downloads since the project began in November 2007:



It is interesting to see where most of my traffic comes from, and read the reviews on those sites. My favorite review is from a this German site: "Send a Test Email – Um die outbound Mail Funktion zu testen ist dieses Tool super handy." :) It looks like has brought me a lot of traffic and of course google.

Figure 2: Top Referring Sites over last 30 days:



Final Comments

SUSHI fills a need for SharePoint in a way that very few other tools do and it is much more user friendly than command lines, or SharePoint features. But it is not yet finished. I still have a lot of additions to make. I would love to have community help with building SUSHI. If anyone is interested in contributing to SUSHI by writing code, testing code or suggesting features, I would love to hear from you. Please post  a comment on the SUSHI discussion boards, or contact shoot me an email at home@

Monday, March 10, 2008

SUSHI Version 2.22 Released!

You can download the latest version of SUSHI here. Improvements in this version include:


*Improvements to the "Copy a view" feature.

    • Change copy a view so it doesn't require all fields to be present. This is a nice improvement! so that this feature can be used without having to have all the columns of the view present in the destination list.

**More tab for less popular features, click on the More tab to open up these features.
BugFix: For Import Documents feature, Upload button was disabled after pressing the validate. button. This is fixed now.


version 2.23 is in the works:

I've been working on improvements to the security report in SUSHI so that the report will also take into consideration active directory group membership in determining if a user has access to a site. To accomplish this, I've had to brush up on the System.DirectoryServices namespace used to access Active directory.



Tuesday, March 04, 2008


I never thought that I would like XSLT and I hoped that I wouldn't have to learn this "wimpy web language" which is how I used to see it. But after this weekend, I am a big XSLT fan.  Which is appropriate because this month marks the 10 year anniversary of XML.

So why is XSLT so cool? I think I would have embraced it much sooner had someone made this simple comparison for me: XSTL is like TSQL. I love TSQL: it is so powerful for getting and manipulating data. It is blazing fast and it takes way way fewer lines of code than it would take in .NET. XSLT is similar because both TSQL and XSTL are declarative languages: they focus on saying what do do rather than how to do it. When writing TSQL or XSLT I only have to say what I want done, and the parsing engine is responsible for figuring out how to do it.

Another way to look at these two languages is that they do one thing really really well: TSQL manipulates data in a database, and XSLT transforms XML.

I strongly recommend the Wrox XML book: Beginning XML. I spent most of my Saturday looking at other XML books, but I always seem to come back to Wrox. They are just so so much better than everything else. Some of the other XML books are just embarrassing and it is a shame that bookstores sell them to poor unsuspecting victims who read them and end up being more confused than when they started reading those horrible books. My advice: stick with Wrox.

<xsl:template match="/">
      <h3>I love XSLT</h3>

Saturday, February 16, 2008

What is great about Windows Server 2008?

What are my favorite features of Windows Server 2008?

  • Install experience is way faster. You don't even enter a name for the machine until after the install is complete. This is huge since virtualization is so big and installing Windows Server is happening more and more. This will save the IT industry hundreds of thousands of cumulative man hours.
  • Windows Server 2008 is built for performance, not beauty. This is what I don't like about Vista. It is pretty but terribly slow. I hate when Vista's wastes my time. Windows Server 2008 is focused on performance. Perhaps I'll install Windows Server 2008 on my laptop..
  • Event Viewer is much improved.
  • Interface is written by a non-developer and it is helpful. This is so nice that each tab and button is much more clearly described exactly what the feature does and what will happen when I hit the OK button. This will make me much less nervous about making changes on a production server.
  • The interface is Humane. I read a book a few years ago that influenced me "Humane Interface".

Now you know how some things are just engrained in your brain like they have to be that way and they will never change, and one day someone crazy changes that thing and you realize it really didn't have to be that way. Well that is how I would describe the install of Windows Server 2008: crazy easy. You don't even have to choose a name for the machine until after the OS is installed! woah, who would have ever thought that was possible? You don't select a password until after the install either so, you save so much time installing because you can stick the install disk in and do all the configuration after the OS is installed.


The upgrade from Windows XP to Windows Vista was an un-breathtaking experience, but not this upgrade, I can't breath.. Ok, so a little dramatic there, but man I'm thinking about all the hours of time that I've wasted over the past year that could have been saved if I'd this cool new stuff. I think I'll install Windows Server 2008 on my laptop because it is optimized for performance, now beauty like Windows Vista is. When you accumulating hours of wasted time each week waiting for beautiful windows explorer to load, you don't care about beauty...


  • The event log is great, no more modal dialogs. We are finally out of the 90's modal dialog boxes. (See Figure 1)


Figure 1

  • The default install comes with a shortcut to server manager. Oh, that is beautiful. That alone will save years of my life not having to click on start->program files->admin tools->manage my computer each time I open up a clean image of Windows Server. (see Figure 2)


Figure 2

  • Adding Windows Features is much improved. again no modal dialog boxes, much more descriptive, helpful interface and much more efficient because you can turn on all the features from one place at once, instead of drilling down into window after window.



Figure 3: The old way to add windows features. Tons of nested modal dialog boxes: yuck!

Friday, February 01, 2008

Enabling IntelliSense in Visual Studio - Feature in SharePoint

I've been trying to figure out for a while how to turn on intellisense in visual studio for feature.xml files. Here is the trick, thanks to this post.

Inside the TEMPLATE directory there is a directory named XML that contains several XML schemas, including one named wss.xsd. If you associate this schema file with feature files such as feature.xml and elements.xml, Visual Studio will provide IntelliSense, which makes it much easier to author a custom feature. You may also copy these XSD files into C:\Program Files\Microsoft Visual Studio 8\Xml\Schemas\.

Can't install MOSS on a different drive than C:

In production environments, my clients often want to put as little as possible on the C: drive. This is a very good idea for performance reasons. Unfortunately, I confirmed today that you can’t install all the MOSS files on a drive other than the C drive.

During install, WSS/MOSS asks you where you want to install MOSS. Even when you specify a drive other than C during the install most of the files end up on C:. For example I chose the “I:” drive for the install path, but all my “12 hive” files still showed up on the C drive.


Here is my 12 hive on C: even though I installed MOSS on the I: drive.



The one folder that does obey my wishes is the “Microsoft Office Servers” folder. Which is 381 megs and as you can see is on the I: drive.



So it does save you 381 megs that would have gone on the C drive, but you can’t prevent most of the MOSS install files from ending up on the C: drive.

A look under the hood, using Reflector to explore Microsoft.SharePoint.dll


We've all used Reflector to open up a .NET assembly and look at the code. But did you ever think of doing this to the core SharePoint assemblies? I had never thought of it until last week at Sleepless in Dallas, Nadeem Mitha of Infusion suggested it. It is quite instructive, and reveals a couple very important nuances that if you don't understand can make your code very slow.  For example, looking at the SPList.Items property you can see that this property simply calls the GetItems() method to retrieve all items for that list. So here is the kicker, any time you call the Items property it is retrieving all the items in the SharePoint list, even if you just call the Items[0] , SharePoint retrieves all the items in a list and then peels off the first one and gives it to you, very inefficient.


Other classes to look at are  GetItemByUniqueId(Guid uniqueId). You can see that behind the scenes, Microsoft is creating a CAML query and retrieving items. Why Microsoft insists on throwing an exception when no results are found, is beyond me. A simple null would have sufficed, thank you very much!



I always thought the assemblies would have been obfuscated, but surprisingly, and to our benefit, they aren't. Hope this gives you some idea, but I think this is a great tip! It takes a lot of the mystery out of SharePoint, and also shows what the heck Microsoft was thinking.

Monday, January 28, 2008

Sleepless in Dallas done

Sleepless in Dallas is over and what a whirlwind weekend! My brain is still swimming from all the SharePoint knowledge jammed in over the past two days. At 11pm Sat night they gave us our overnight assignment. It was to create something to include in the CKS (Community Kit for SharePoint). For my team’s project we worked on adding functionality to SUSHI, which is the SharePoint utility that I’ve been working on for almost a year now and have made available to the SharePoint community for free on CodePlex

Unfortunately for me, the rules of the contest say that you can’t use what you’ve already built, so the only item that was entered into the contest was a couple small features that we added to SUSHI that night. However, they wanted to present special recognition for SUSHI and gave me the Community award for having created a utility for the SharePoint community. So far, the CodePlex sushi page has gotten 6,000 page views, and over 600 downloads.

My team narrowly got 2nd place of 4 teams for the overnight competition so unfortunately I won’t get to fly to San Jose for the OBA conference, but I think our team fought a good honorable fight and I hope that I represented Catapult Systems well.

During training Saturday we would get quiz questions after each presentation, and I answered 4 out of 9 questions so I won some books and copies of SharePoint Search Edition.

Here is a blog post from Michael who was on the winning team. He actually has posted an audio MP3 podcast with some of the greatest highlights from the event which is very cool. Listening to this brought back some great memories of a crazy crazy 30 hours of SharePoint madness! Chris Catto also blogged on the event.



Monday, January 21, 2008

I got accepted to the Sleepless in Dallas SharePoint event

Hey great news, I found that I am a final candidate fro Sleepless in Dallas! Sweetness! The event is billed as the ultimate SharePoint developer's conference and put on by Infusion Development. Post by Chris Koenig on the event. Andrea from Infusion who interviewed me said that my application caught her attention because I mentioned that I had won the grand prize in a programming contest in the 8th grade, that she thought that the most successful programmers were people who had programmed all their lives and who were passionate about programming.


For the record, the programming contest involved using Apple IIe Basic to create an animated face that could express various emotions: happy, sad, angry, etc. This was part of the Odessy of the Mind contest and the challenge was to incorporate a robot that expressed emotion into a skit. So we perched our monitor on a cart and dressed it up with clothes. Our robot was a brilliant actor, let me tell you what! :) It was the cheesiest program ever, but let me tell you at the time it was way cool seeing an animated computer screen show "emotion", and I loved building it, I remember being so excited to work on that program, programming tedious PLOT command coordinates to make the face come to life. And when it won the grand prize I was thrilled. But I never knew it would get me into a programming contest 18 years later.


So wish me luck in the contest. Hopefully I can come up with another victory! Hopefully I can leverage my SharePoint experience and come up with something cool.

Thursday, January 10, 2008

Version 2.18 of SharePoint SUSHI Released!

The latest version of SharePoint SUSHI has been released!

SharePoint SUSHI version 2.18


This version includes the new treeview SharePoint browser. This makes it easier to find a site on your local farm by browsing, rather than having to type it in. Click the "select a site" link button to use this new feature.