SharePoint sucks at document management – or does it? A metal perspective

Send to Kindle

This is an opinion piece, a different tack than a lot of my other topics. I’m going to attempt to use heavy metal music as my metaphor to get my point across. No idea if I will succeed :-).

Opeth \m/ \m/


Firstly, SharePoint, in my opinion, is a collaborative platform, more than it is a collaborative product. In the same way that Lotus Notes can be argued as a messaging platform. Both have their core competencies and solve particular types of problems. However, they can also be customised and sophisticated applications can be built upon the foundation they provide.  Note my emphasis on the word collaborative.

Continue reading

 Digg  Facebook  StumbleUpon  Technorati  Slashdot  Twitter  Sphinn  Mixx  Google  DZone 

No Tags

Send to Kindle

SharePoint Branding Part 5 – Feature Improvements and Bugs

Send to Kindle

So, here we are at the fifth article in my series on SharePoint branding. By now, we have left all the master page stuff way behind, and we have created a custom feature to install our branding to a server.

To recap for those of you hitting this page first, I suggest you go back and read this series in order.

  • Part 1 dealt with the publishing feature, and some general masterpage/CSS concepts and some quirks (core.css and application.master) that have to be worked around.
  • Part 2 delved into the methods to work around the application.master and core.css issue
  • Part 3 delved further into the methods to work around the application.master and core.css issue and the option that solved a specific problem for me
  • Part 4 then changed tack and introduced how to package up your clever branding

Continue reading

 Digg  Facebook  StumbleUpon  Technorati  Slashdot  Twitter  Sphinn  Mixx  Google  DZone 

No Tags

Send to Kindle

DCOM Fun with SharePoint

Send to Kindle

One thing you will first notice in planning a MOSS install is the sheer number of service accounts used. Without proper planning, it is only going to result in a poor set up and most likely be insecure. Despite the complexity of having to learn what each service account is required for, MOSS2007 does a reasonable job in working in a restricted configuration. Properly configured, the majority of these accounts can run with minimal security privileges.

If you follow all the best practice guides, and religiously read Joel’s stuff, I would be preaching to the converted.

Continue reading

 Digg  Facebook  StumbleUpon  Technorati  Slashdot  Twitter  Sphinn  Mixx  Google  DZone 

No Tags

Send to Kindle

SharePoint Branding Part 4 – Packaging up your masterpiece into a Feature

Send to Kindle

Welcome to the fourth article in my series on SharePoint branding. Sorry for the time it’s taken to get this one out, but a certain game called “The Legend of Zelda:  Hourglass Phantom” on NDS got in the way. I finished it yesterday and only had to cheat via google once :-). Anyway it’s out of my system now so I can get back to this.

After 3 epic articles on all that painful CSS and master page stuff (part one, two and three), we now focus on what you have to do to get your branding masterpiece deployed to the SharePoint farm the clever way. In this next set of articles, we will look at where things should go, and then how to get it there the right way.

Continue reading

 Digg  Facebook  StumbleUpon  Technorati  Slashdot  Twitter  Sphinn  Mixx  Google  DZone 

No Tags

Send to Kindle

Property Investor Interlude

Send to Kindle

Taking a quick break from part 4 of my series of articles on SharePoint branding. I hope to have posted in a day or two, but my daughter just got the new Zelda game on Nintendo DS. Of course, now I am completely addicted to it and blogging is coming a distant second 🙂

The last game I got addicted to was the Zelda “Oracina of Time” on the Nintendo 64 – seems I have a weakness for Zelda games

So in the meantime, why not look at a program I wrote some years ago for property investors. Its free, easy to use and allows you to simulate buying investment properties in Australia, and allows you to see the tax and cash-flow scenarios.

Continue reading

 Digg  Facebook  StumbleUpon  Technorati  Slashdot  Twitter  Sphinn  Mixx  Google  DZone 

No Tags

Send to Kindle

Disk and I/O Sizing for MOSS2007 – Part 2

Send to Kindle

This is part two of a two part article that discusses techniques for sizing your disk requirements for SharePoint. It is one of a myriad of tasks that you have to perform as part of the planning process, but it is one task that you ideally want to get right the first time, as storage technology can be a potentially high capital cost. I first performed a comprehensive analysis of disk space and performance scalability requirements for a MOSS07 farm back in February 07.

The first article examines some of the tools and techniques you can utilise to help you fill out Microsoft’s sizing worksheet. Part two builds upon this with a real-world example. So to recap from part 1, we have the following stats captured.

Continue reading

 Digg  Facebook  StumbleUpon  Technorati  Slashdot  Twitter  Sphinn  Mixx  Google  DZone 

No Tags

Send to Kindle

Disk and I/O Sizing for MOSS2007 – Part 1

Send to Kindle

This two part article discusses techniques for sizing your disk requirements for SharePoint. It is one of a myriad of tasks that you have to perform as part of the planning process, but it is one task that you ideally want to get right the first time, as storage technology can be a potentially high capital cost. I first performed a comprehensive analysis of disk space and performance scalability requirements for a MOSS07 farm back in February 07, and at this time, apart from “Yoda Joel“, there was not much out there in relation to planning for SharePoint (particularly in relation to disk sizing). For the record, Joel is *the* ultimate SharePoint all rounder – his blog is essential reading for any SharePoint professional – magnificent stuff. “Give me a ‘J’, give me an ‘O’, give me a”… okay, now that’s definitely getting kinda weird 🙂

Anyway, this post outlines my SharePoint sizing methodology that I employed at that time. What I found personally satisfying about this work, was that when I re-examined this particular farm some months later, the sizing was bang on the money.

So as I mentioned, a lot more material exists now than then, but the information that I did find useful at the time is listed below (it may have been refreshed since I used it):

So here is how I went about disk performance and growth sizing…

The requirements

This client was interested in SharePoint for collaborative document management. They had many projects with teams from 2-100 staff involved. So much of what existed on file servers was to be moved to a SharePoint environment. The growth rate of this company was significant – from 300-1110 staff in less than two years. Hence, as typically happens with such growth, the existing infrastructure, architecture and processed did not cope well with the new scale.

They used a fair amount of files on the existing file server, in the region of 1.2 terabytes. That figure alone is enough to require significant planning across a whole diverse range of SharePoint areas, not just disk space, (I will eventually get around to writing some articles covering these areas as well.). But in additon to the large amount of files on the file server, we had run a pilot SharePoint site for a single smallish project for 2 months prior.

The current regime

So since SharePoint was going to obviously use a lot of document libraries, I initially needed a point of reference to determine the current organic growth in disk space and I/O performance. The Head office had 600 staff,  and two other major regional offices had a large number of staff. I needed to monitor disk usage over time, but as well, I needed estimates on what disk size was in the past.

Using this information, I would be able to interpolate future growth.

So first I talked to the HR department and key management staff to find out the following information for each of the offices:

  • Current staff numbers
  • Estimated staff numbers in 2 years
  • Average growth rate in staff over the last 2 years

From this I derived an annual growth rate in staff numbers per office.

The next step was to examine the current file server performance for each office. This was performed via windows performance monitor (perfmon) and examining specific performance monitor counters. Below are the initial statistics I recorded:

  • System Uptime
  • Total Logons since reboot
  • Logins per minute (total logons / system uptime / 60)
  • Total Opened Files since reboot
  • Files opened per minute Total Opened Files since reboot / system uptime / 60
  • Average Disk Queue length

The specific performance monitor counters are:

  • System\System Up Time
  • Server\Logon Total
  • Server\Files Opened Total
  • PhysicalDisk\Avg. Disk Queue Length


Estimating Disk I/O and Growth Requirements

Now it is important to mention here that you cannot take these counters at face value! You need to perform more analysis against these results. For example:

  • The bulk of user data activity happens during office hours to the ‘per hour’ figures need to be further refined.
  • These figures do not break down the type of I/O. So for example, there still exists lame applications who’s idea of multi-user is to run the application from a shared network drive on the server. Such desktop applications running from the server it have the potential to seriously skew your results as there can be a considerable amount of I/O here.
  • Backups will also potentially affect these figures and you should monitor the affect on the above counters that a backup will have on the overall numbers.
  • SharePoint may only be scoped to replace a particular set of files on the server, yet the file count counters show ALL files. You cannot break it down.

So one has to take these overall figures and eventually apply a weighting, which adjust the values to the estimated portion that is relevant to SharePoint. How that weighting is determined is one of the key requirements of a disk analysis methodology.

Now having said that, you could do this via an educated guess, by talking to administration staff to determine a figure, but it would be what project managers call a ‘plus or minus’ 40% estimate. Such estimates are usually termed ‘preliminary estimate’. If this is acceptable, then go with it, since gleaning more accurate information is a time vs. results tradeoff. (I mean hey, if you are a mining company in Perth right now, this is all small change)

But, if you are accountable for the results of this test and you want to cover your butt, then look more into it 🙂 Try and come up with a plus or minus 10% estimate and document how you came up with the figure.

So below are some of the techniques you can use to dig further.

Backup Logs

Examining past backup logs will allow you to infer many things such as:

  • Disk throughput (examine how long the backup took to run versus the amount backed up)
  • The total amount of data backed up
  • The number of files backed up.

More importantly, allows you to get some idea of the organic disk growth over time, if you can view backup reports from say, 1 year ago to now, then it should paint a reasonable picture.

Always make sure that you are only examining the weekly full backup, not the daily incremental or differential backups. It is not uncommon for some data considered of less importance to be only backed up less frequently, so this should be checked also. But my logic here is unless someone has screwed up big time, you can have reasonable confidence that the figures you get from this are based on the actual important data.

Pilot SharePoint

Running a limited pilot SharePoint production site can be an excellent microcosm of what the eventual full scale production environment will be like. I’ll save the comprehensive article on a pilot installation later. But ideally you limit the pilot scope and affected staff, but still use it in production during this time. It becomes a critical environment to support of course, but the benefit here is it impacts on less staff, allows IT technical and operational personnel to learn the product and starts the ball rolling on governance and other critical issues that need to be addressed. The added bonus is that it allows you to compare what ‘regular’ organic disk space growth is in your environment, to the equivalent growth is when the data is instead in SharePoint. Remember, SharePoint document libraries offer some tremendous productivity enhancements such as version control, indexing and recycle bin affecting space. Later in this article, you will see how I went about estimating disk growth by using a pilot site.

Logical Disk counters

If the administrators of the file server have been clever, they would have split data across different disks or partitions for performance and managability reasons. It is possible to infer from this, the breakdown of file I/O by examining disk performance counters that are collected on a per-partition/disk basis. The best performance monitor counters are the LogicalDisk category, since you can have multiple logical partitions on a single physical disk. Note below I can choose C:\ or F:\ to view the current disk queue length


I remember years back that Microsoft considered anything over 2 to indicate a disk under load. Yoda Joel suggests that the figure should stay over 1. I would advise you to heed his advice – Yodas always know best – they are jedi after all!

Computer Management – Shared Files

Whilst the previous method is useful for I/O performance, its not granular in terms of file breakdown. Examining the open files in the “Computer Management” MMC also will allow you to perform more detailed analysis. Unfortunately, exporting this data leaves something to be desired and you can only grab the data by right clicking in this window and choosing “Export List”


This will generate a tab delimited text file that can be loaded into Excel for further analysis. The columns reported are:

Open File Lists the names of open files. An open file could be a file, a named pipe, a print job in a print spooler, or a resource of an unrecognized type. In some cases, a print job is shown here as an open named pipe
Accessed By The name of the user who has opened the file or accessed the resource
Type Displays the type of network connection: Windows, NetWare, or Macintosh
# Locks Displays the number of application-initiated file locks on the resource
Open Mode Displays the permission that was granted when the resource was opened

Knowing the user that opened the file is very handy as it allows for some other statistics to be inferred.

Other Methods

Unlike my series of articles on branding, I am not going to write an epic 6 part article on performance capturing. But a few other techniques that may be applicable to you depends on the technology and vendor you have. If the servers are SAN connected, you can almost certainly capture detailed disk I/O stats via its management console and likely, SNMP.

A Basic Example

Below is an example of a basic determination of current disk activity with an initial attempt at weighting the numbers.

MYSERVER stats taken 10am – 30/1/2007

  • System Uptime: 551 hours
  • Total Logons since reboot: 927794
  • Logons per minute – 927794 / (551 * 60): 28
  • Total Opened Files since reboot: 114518692
  • Files opened per minute – 114518692 / (551 * 60) : 3463
  • Average Disk Queue length: 2-4

Clearly, on the surface of it, this is a heavily utilized server and before we even think of moving to SharePoint, these figures alone indicate that more analysis is needed. Note that the period in which these statistics were gathered was 10am which is considered a peak time.

MYSERVER is used for shared applications as well as shared files. Luckily all shared applications are stored on E:\APPS.

Here is the breakdown

  • Reported open files in computer management: 1206
  • Number of unique users listed with opened files: 201
  • Number of open files for E:\APPS: 664
  • Number remaining not E:\APPS: 542
  • % of open files to DATA shares: 45%
  • Of non E:\APPS, number of open files (as opposed to folder): 314
  • % of open files versus active listed files (314/1206): 26%

So now we have an idea of the sort of initial weighting to use. At this point, you can move to part 2 of this topic to see how we took these figures and determined both disk I/O throughput as well as disk space sizing

thanks for reading

 Digg  Facebook  StumbleUpon  Technorati  Slashdot  Twitter  Sphinn  Mixx  Google  DZone 

No Tags

Send to Kindle

Optimising SSP User Profile Import – Part 2

Send to Kindle

In the previous post, we modified the Shared Services Provider to include the Active Directory attribute “country” (code C) in the SharePoint User Profile settings. Now we need to configure a full import from Active Directory and create a test audience to see that it is working.

Task 2: Configuring User Profile Import

Now we need to configure a full import (and the schedule for continual import)

In SharePoint central admin, navigate to Shared Services Administration: User Profile and Properties > Configure Profile Import

  • Import profile data from: Current Domain
  • Default Access Account: <choose an account with Read access to AD>
  • Full Import Schedule: 3:00AM Saturday
  • Incremental Import Schedule: 12:00am every day
  • Now click on “Start Full Import”
  • Click Refresh to review status and then click “Start Full Import”

  • When the import has completed, it will show a status of idle.

  • Optionally click the “View Log” to examine how the import performed..

  • Now click “View User Profiles” and choose a user that you know has the country code set in Active Directory.

Now we have confirmed that we can import country information into SharePoint profiles. We now create audiences based on this attribute.

Task 3: Create the Audience

This section assumes that the user profile import has been successfully been configured and imported.

Shared Services Administration: Manage Audiences

  • Click “Create Audience”
  • Name: “Australia Users”
  • Description: Users who’s base of work is in Australia
  • Owner: <choose an account to be the administrative owner of this audience>
  • Include users who: Satisfy all of the rules

Now we add our rule to be satisfied:

  • Operand/property: Country
  • Operator: =
  • Value: AU

Once the rule has been added, we can we see the audience summary:

  • Click “Compile Audience”. This will attempt to now filter the imported profiles for Country that equals “AU”. In the example below, 87 users matched this criteria

  • Click View membership to confirm country matches

  • Note the custom properties showing the country code as “AU”.
  • Finally, click on “Specify Compilation Schedule”. Set schedule to 4:00am every day (ensures that it takes place after the user profile import)

  • Review the summary. In this example, I also added an audience for another country, and there is always the default audience of all users, so there is a total of 3.

 Digg  Facebook  StumbleUpon  Technorati  Slashdot  Twitter  Sphinn  Mixx  Google  DZone 

No Tags

Send to Kindle

Optimising SSP User Profile Import – Part 1

Send to Kindle

This post discusses SharePoint User Profiles. In SharePoint 2007, each user has their own profile stored about them and includes properties such as a user’s title, e-mail, distribution list membership, and contact details. It is by default (and required to) import this information from Active Directory, but it can also import from other sources, as well as be manually created directly inside SharePoint. User profiles can be customized in SharePoint to include additional details, such as country of work. User profiles are used throughout SharePoint Server 2007 to disseminate or target information to users, help users locate colleagues with similar interests, and return search results on people.

In this post, I will demonstrate how to import a user’s country in Active Directory into SharePoint as by default, SharePoint does not import this from AD. I am assuming that you have some Active Directory familiarity.

A users country of work is stored and tracked in Active Directory as shown below


Note the “Country/region” field above.

A component of each Shared Service provider (that I will cover another time) is “User profile import’. By default this is not enabled and if enabled, many Active Directory fields are imported into SharePoint. As previously mentioned however, the user’s country is not a field that is imported by default.

Thus we have three tasks to perform.

  1. Configure the ‘country’ to be imported from Active Directory into SharePoint.
  2. Configure the scheduled import of Active Directory into SharePoint profiles
  3. Create two audiences based on country

Task 1: Add Country to be imported from Active Directory

The first thing we had to do is examine Active directory and find out the distinguished name (DN) of the ‘Country’ property attached to a user. This was performed on a domain controller using the LDP utility.

Click ‘Connection’ Menu and choose connect. Connect to a domain controller.


Click ‘Connection’ menu and choose ‘bind’. Enter domain credentials to bind to Active Directory so its content can be queried.


Click the ‘View’ menu and choose ‘Tree’. Choose your domain in DN format

(eg “DC=co,DC=group,DC=net” for


Now you should be able to browse Active Directory via LDAP view as shown below (image edited to protect the innocent).


Now navigate to the OU that your user accounts reside.

Click on the user account and examine the right pane of LDP. All of the properties associated with that user will be listed. For example here is the left pane showing the user account in an OU called “Internal”


Note to readers: No there is no “Alan Boon” you have witnessed my 3l1t3 mspaint skillz :-)

Expanding base ‘CN=Alan Boon,OU=Internal,OU=Accounts,OU=za,DC=co,DC=group,DC=net’…

Result <0>: (null)Matched DNs: Getting 1 entries:>>

Dn: CN=Alan Boon,OU=Internal,OU=Accounts,OU=za,DC=co,DC=group,DC=net

4> objectClass: top; person; organizationalPerson; user;

1> cn: Alan Boon;

1> sn: Boon;

1> c: ZA;


1> mail: alan.boon@somewhere.else

If we examine the output above we can see that line C:ZA.  I have it marked in bold. It shows that the country is South Africa (ZA). Thus, the name of the country property is simply “C”.

So now we need to add the country property to the SharePoint user profile In Central Administration, navigate to Shared Services Administration: SSP_Default > User Profile and Properties

Click “Add profile property” and here are the parameters I entered.

  • Property Settings/Name: Country
  • Property Settings/Display Name: Country
  • Property Settings/Type: String
  • Property Settings/length: 25
  • Property Settings/Allow multiple values: unchecked
  • Property Settings/Allow Choice list: unchecked
  • User Description/Description: Primary country for users work
  • Policy Settings/Policy Setting: Optional
  • Policy Settings/Default Privacy Setting: Everyone
  • Edit Settings: Do not allow users to edit values for this property
  • Display Settings/ Show in the profile properties section of the user’s profile page: checked
  • Display Settings/Show on the edit details page: Checked
  • Display Settings/Show changes in the colleague Tracker Web Part: Checked
  • Search Settings/Alias: unchecked
  • SearchSettings/Indexed: checked
  • Property Import Mapping/Source Data Connection: Master Connection
  • Property Import Mapping/Data source field to map: c

Note the last parameter matches the field name we discovered from Active Directory.

Now we click OK and we can now examine a user profile and see ‘Country’ listed under ‘Custom properties’.


Great! Thats it for now. In part 2 I will cover the user profile import and audience creation based on country. (thats the easy part)

 Digg  Facebook  StumbleUpon  Technorati  Slashdot  Twitter  Sphinn  Mixx  Google  DZone 

No Tags

Send to Kindle

Poor windows explorer view performance in SharePoint?

Send to Kindle

I found that a 5 server MOSS07 farm was very sluggish in terms of windows explorer view performance compared to a single farm running on a vmware box. This seemed on the surface to make no sense, but some further digging uncovered the issue. I was using a host header and the site name was not the same name as the server itself. However in my VMware farm, the server and site names were the same.


My WFE server was WEBSERVER1

My Web site was MYWEBSITE

The problem as it turns out is with Windows Server 2003, SMB, and strict name checking.

XP Clients, will by default, use the SMB redirector before using the WebDav redirector. But by default, Windows Server 2003 does not respond to SMB queries that use a server name other than the server’s true NetBIOS name or FQDN. If this is attempted, the server will respond with a STATUS_DUPLICATE_NAME error that looks like this in a Network Monitor trace:

SMB: C session setup & X
SMB: R session setup & X
SMB: C tree connect & X, Share = \\WWW.ADATUM.COM\IPC$
SMB: R tree connect & X – NT error, System, Error, Code = (189) STATUS_DUPLICATE_NAME

Because of the robust nature of the Microsoft SMB implementation, the client will attempt this connection many more times before failing. This can cause significant delays in rendering of the Explorer View.

We can force the server to respond to SMB requests regardless of the server name being used and thereby improving the performance of the SMB portion of the Explorer View protocol negotiation. While this will not result in a successful SMB connection being created, it will result in failing over to WebDAV much faster.

KB article 281308, “Connecting to SMB share on a Windows 2000-based computer or a Windows Server 2003-based computer may not work with an alias name” describes how to use the DisableStrictNameChecking registry key to resolve this problem.

As per the KB article I changed the registry key on the affected server.

Start Registry Editor (Regedt32.exe).

  • Locate and click the following key in the registry: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters
  • On the Edit menu, click Add Value, and then add the following registry value:
  • Value name: DisableStrictNameChecking
  • Data type: REG_DWORD
  • Radix: Decimal
  • Value: 1 
  • Quit Registry Editor.
  • Restart your computer. 

 Digg  Facebook  StumbleUpon  Technorati  Slashdot  Twitter  Sphinn  Mixx  Google  DZone 

No Tags

Send to Kindle