Tuesday, October 07, 2008

Error message in Bug Track Template: An error occurred during the processing of . The resource object with key 'ResolveBugPageTitle' was not found.

When you use the Bug Tracking Template from the WSS 3.0 40 templates, you would receive the following error when you go to resolve a bug: "An error occurred during the processing of . The resource object with key 'ResolveBugPageTitle' was not found." This error is caused by missing locale resource files starting with the filename "tsa.*" in the web directory "{wwwroot}\wss\VirtualDirectories\{your website port number}\App_GlobalResources".

1) Browse the directory in 12 hive.
2) Copy all the "tsa.*" files into your website directory "{wwwroot}\wss\VirtualDirectories\{your website port number}\App_GlobalResources"

The bug tracking tempate should now be working again. The tsa files are locale resource files.

Friday, August 01, 2008

Global.asax in VS.NET 2005 not allowing breakpoints

I have spent the last 2 days trouble shooting my VS.NET IDE. When I opened it up the other day my project was displaying strange errors in the global.asax. I searched Google and MSFT Support looking for why global might not debug but came up empty. Then I created a brand new website and added a global file through the IDE...same issue. Hmmm...now I am thinking it is the IDE being flaky.
I opened a MSFT support case after uninstalling and reinstalling the IDE also did not help. 2 hours later, the MSFT tech still was not able to help me and escalated my issue to the next level. I am still waiting on that call. Being a bit persistent, I did not want to sit idle so this morning, with fresh eyes and a good deal of sleep under my belt, I resumed my quest for the answer.

FINALLY - THE ANSWER - I ran across an article on MSDN: Visual Studio 2005 IDE Tips and Tricks...bingo:

devenv /resetuserdata

"You can use this switch to reset Visual Studio to its out-of-box state if Visual Studio ever runs into a damaged state that you cannot recover from. Examples of these problems may be a corrupted window layout file, corrupted menu customization file, or corrupted keyboard shortcuts file. Disclaimer: you will lose all your environment settings and customizations if you use this switch. It is for this reason that this switch is not officially supported and Microsoft does not advertise this switch to the public (you won't see this switch if you type devenv.exe /? in the command prompt). You should only use this switch as the last resort if you are experiencing an environment problem, and make sure you back up your environment settings by exporting them before using this switch."

And it is fixed! Now to convince MSFT to return my suppport incident since I figured it out before the tech did.

Below is a screen shot of what the issue looked like in a pristine web application.

Wednesday, July 16, 2008

Heather Solomon: Branding SharePoint

Heather Solomon has created a great series on her blog titled "Branding SharePoint". This is definitely a required reading for developers and GAs serious about giving their corporate SharePoint instances an identity.

Branding SharePoint - Part 1: Designing your SharePoint Site

Branding SharePoint - Part 2: Creating the Design in SharePoint
Branding SharePoint - Part 3: Changing the look and feel of SharePoint components - Intro and Web Parts

Watch for more articles in this series via her RSS feed

Enhanced Rich Text Field Extended

Check out the CodePlex project to create the Enhanced Rich Text Field that includes not only the normal rich text options but the ability to include HTML code snippets and the ability to use the EMBED tag (for flash).


Creating Re-usable Email Templates for SharePoint Designer 2007 Workflows

Jordan Hull has a great article on creating reusable email templates for SPD workflows.

Check it out

Wednesday, May 14, 2008

Memory Read/Write Errors on a 64-Bit SharePoint System

KBAlertz is a valuable tool for administrators and developers. We were experiencing strange errors on our 64-bit SharePoint farm. We were receiving seemingly random memory read/write errors. Of course we chased our tails for a couple of days by ordering replacement memory sticks for our server...but it still kept throwing the errors.

Check out http://support.microsoft.com/kb/946517 - this fixed our issues.

Monday, May 12, 2008

SharePoint 2007 Permissions Matrix

Mark Arend has created matrix showing the out of the box permissions in SharePoint 2007.

This matrix will help administrators better organize their users permissions as to what they can see in the Site Actions and Site Settings menu.

Download Matrix Here.

Wednesday, April 30, 2008

Automating the install of the SharePoint Application Templates

One of the things we do for our site administrators is load all the Microsoft SharePoint and WSS application templates. This gives them a broad range of templates to suite their needs. Installing these templates is time consuming so I created a batch file that automates this process and I just wanted to share it with my readers.

Copy the following code into a text file and rename the file extension to .bat.

REM **********************BEGIN BAT FILE**********************
REM AllTemplates.exe has to be on the logged-in users desktop

%USERPROFILE%\Desktop\AllTemplates.exe /T:%TEMP% /C /Q

set SPAdminTool=%CommonProgramFiles%\Microsoft Shared\web server extensions\12\BIN\stsadm.exe

"%SPAdminTool%" -o addsolution -filename "%TEMP%\ApplicationTemplateCore.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\AbsenceVacationSchedule.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\BudgetingTrackingMultipleProjects.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\BugDatabase.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\CallCenter.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\ChangeRequest.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\ComplianceProcessSupport.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\ContactsManagement.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\DocumentLibraryReview.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\EventPlanning.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\ExpenseReimbursementApproval.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\HelpDesk.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\InventoryTracking.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\ITTeamWorkspace.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\JobRequisition.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\KnowledgeBase.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\LendingLibrary.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\PhysicalAssetTracking.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\ProjectTrackingWorkspace.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\RoomEquipmentReservations.wsp"
"%SPAdminTool%" -o addsolution -filename "%TEMP%\SalesLeadPipeline.wsp"

"%SPAdminTool%" -o deploysolution -name "ApplicationTemplateCore.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "AbsenceVacationSchedule.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "BudgetingTrackingMultipleProjects.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "BugDatabase.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "CallCenter.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "ChangeRequest.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "ComplianceProcessSupport.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "ContactsManagement.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "DocumentLibraryReview.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "EventPlanning.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "ExpenseReimbursementApproval.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "HelpDesk.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "InventoryTracking.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "ITTeamWorkspace.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "JobRequisition.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "KnowledgeBase.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "LendingLibrary.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "PhysicalAssetTracking.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "ProjectTrackingWorkspace.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "RoomEquipmentReservations.wsp" -allowgacdeployment -immediate
"%SPAdminTool%" -o deploysolution -name "SalesLeadPipeline.wsp" -allowgacdeployment -immediate

"%SPAdminTool%" -o addtemplate -filename "%TEMP%\BoardDirectors.stp" -title "BoardDirectors.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\BusinessPerformance.stp" -title "BusinessPerformance.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\CaseManagement.stp" -title "CaseManagement.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\ClassroomManagement.stp" -title "ClassroomManagement.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\ClinicalTrial.stp" -title "ClinicalTrial.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\CompetitiveAnalysis.stp" -title "CompetitiveAnalysis.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\DiscussionDatabase.stp" -title "DiscussionDatabase.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\DisputedInvoice.stp" -title "DisputedInvoice.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\EmployeeActivities.stp" -title "EmployeeActivities.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\EmployeeBenefits.stp" -title "EmployeeBenefits.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\EmployeeTraining.stp" -title "EmployeeTraining.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\EquityResearch.stp" -title "EquityResearch.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\ManufacturingProcess.stp" -title "ManufacturingProcess.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\MarketingCampaign.stp" -title "MarketingCampaign.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\NewStoreOpening.stp" -title "NewStoreOpening.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\ProductPlanning.stp" -title "ProductPlanning.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\RequestForProposal.stp" -title "RequestForProposal.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\SportsLeague.stp" -title "SportsLeague.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\TeamWorkSite.stp" -title "TeamWorkSite.stp"
"%SPAdminTool%" -o addtemplate -filename "%TEMP%\TimecardManagement.stp" -title "TimecardManagement.stp"

"%SPAdminTool%" -o execadmsvcjobs

REM **********************END BAT FILE**********************

Thursday, April 24, 2008

Escape Characters in SharePoint

This is more for my own information...

The format SharePoint expects is:

_x00[the sharepoint escape code from below]_

CharacterSharePoint Escape Code

Wednesday, April 09, 2008

Five Ways to Manage a SharePoint Site Collection with SharePoint

EndUserSharePoint.com has a very interesting article on managing SharePoint site collections within the enterprise. My employer is currently in the initial stages of creating the topology of our SharePoint portal and this is an interesting take on governance. Definitely a good read.

Check out the article here...

Monday, April 07, 2008

Creating Custom SharePoint Timer Jobs

Andrew Connell does a great job laying out in detail the steps to create a SharePoint time job. Classic .Net developers can equate this to a service we would have created to act on a business rule at a specified increment in time. Our shop implemented this sort of functionality for daily reports, email alerts and other admin alerts.

Check out his article...

Sunday, April 06, 2008

SharePoint 2007 Link List 4/6/2008

Style up your Best Bets results in SharePoint

Creating custom Views on Surveyshttp://www.sharepointblogs.com/ggill1970/archive/2008/04/02/creating-custom-views-on-surveys.aspx

Hidden Content Types and Site Columns in SharePoint

How to create a custom e-mail alert alert handler in Microsoft Office SharePoint Server

SPSite security context and the SPUser

SharePoint Products and Technologies Customization Best Practices

Thursday, April 03, 2008

Applying unique constraints to SharePoint list columns

This is a much needed solution in SharePoint. Next up, foreign keys...
Nice job Scott.

Tuesday, April 01, 2008

Question: STSADM CreateWeb Does not Add to QuickLaunch

We have been in the process of creating scripts for deploying our SharePoint portal. We first scripted out the Site Collection using "stsadm -o createsiteinnewdb" so we can keep our organizations in their own content database. Nested with deach createsiteinnewdb call were multiple "stsadm -o createweb" calls for each organizations divisions to have their own subsite. Here is the kicker. Using stsadm to create subsites does not add the subsite to the quick launch under Sites.

Does anyone know how to script this out...it works using the GUI but that means we will have to create 30+ subsites using the GUI...I'd rather script it out.

Thursday, March 27, 2008

Installing Active Directory

This is a well-written, concise article on the details to install Active Directory. I used this tutorial for creating a VM with SharePoint...a no-no according to MSFT but necessity for our organization so i would replicate what production like. Full text below:


In this guide, we will begin with a non-existent domain and end with a new Active Directory installation, in its own forest. Along with Active Directory we will also configure DNS (Which is required by Active Directory) on the same machine.

Get a machine that is somewhat powerful, when I say somewhat, it can be a lonely PIII 800MHz if you so wish it. I would have at least 512MB of memory in it, a 10/100 Network card, CD-ROM, and I would give it at least a 30GB hard drive. The more features you add (different walkthroughs) the more space you will need.

Grab your copy of Windows 2003 and boot from the CD, install Windows 2003 like any other version of Windows XP you have installed before. When Windows is installed, load all your necessary drivers (video, LAN, motherboard, and others if needed).

Close the Configure Your Server Wizard. We will be doing this the manual way, so we have more options.

First, assign this server a static IP address. This can be found by going to Start -> Settings -> Control Panel -> Network Connections. Inside ‘Network Connections’ you should (by default) have a connection called ‘Local Area Connection’. Right click on ‘Local Area Connection’ and choose ‘Properties’. In the middle of the dialog box there will be a list of protocols, from here choose ‘Internet Protocol (TCP/IP)’ and click on the ‘Properties’ button.

Choose the radio button labeled; ‘Use the following IP Address’ and in the boxes provided type in the IP Address you wish to assign this server to.

If you are unsure, you can use ‘′ as I am going to refer to as the IP Address used throughout this walkthrough or you can check another computer and find out what IP Address it has (Start -> Run -> cmd (enter)) and type ‘ipconfig’ at the command line.

Most routers will probably give you as an IP Address and as an Default Gateway, so if you have this, I would recommend you use for the IP Address on your server, for the Subnet Mask type in: ‘′ and for Default Gateway type in the IP Address of the router for access to the Internet (If you are unsure of what the Gateway IP Address is, then go to another machine that has Internet access and drop to a console (Start -> Run -> cmd (enter)) and type ‘ipconfig’ at the command line and read the line that says Default Gateway).

Now, choose the radio button labeled; ‘Use the following DNS server addresses’ and in the boxes provided type in the SAME IP Address you choose for the IP Address of this machine (Yes, the DNS Server this machine will use is ITSELF!). You do NOT need to fill in the ‘Alternate DNS Server’ address boxes.

Okay, for this test setup I’m going to use these as my settings (remember that your settings may vary and don’t forget to adjust mine when I make future references to them in this walkthrough).

IP Address =
Subnet Mask =
Default Gateway =
DNS Servers =

Click ‘Ok’ on the Internet Protocol (TCP/IP) dialog window, and another ‘Ok’ on the Local Area Connection dialog window. You can close any other windows you may have open on the server so you are back at a nice clean Desktop.

Reboot the server now, just to make sure everything was saved. When it comes back on, we will continue installing the Windows 2003 DNS Server.

Second, now that your server has rebooted, go to Start -> Settings -> Control Panel -> Add / Remove Programs. Inside Add / Remove Programs click on the button to the left that is labeled ‘Add / Remove Windows Components’ when it’s done loading, you should be presented with a box of components you can remove and add.

Click on ‘Network Services’ (don’t check the box, just select the item) and click the ‘Details’ button. In this new dialog check the box next to the item labeled ‘Domain Name Server (DNS)’ and click ‘Ok’. Back at the Windows Components click ‘Next’ and let it finish its job (you may need the Windows 2003 disc to complete this step).

When it’s all done, click ‘Finish’ close all windows again so you are back at the Desktop.

Go to Start -> Settings -> Control Panel in Control Panel open ‘System’. Click on the ‘Computer name’ tab at the top of this dialog and then click the ‘Change’ button near the bottom. Now click on the ‘More’ button near the middle, in the text box labeled ‘Primary DNS suffix of this computer’ type your DNS suffix here…







It does not matter, but if you choose a ‘Standard Convention’ by that I mean, if you choose .net, .com, .org, or another top level domain suffix then you should make sure It’s not in use, or you may run into problems getting to the website owned by that real domain. Say if I choose google.com as my Zone Name, I would have a slight problem going to the REAL google.com now wouldn’t I? This is why I choose .home or .work and such.

When you have chosen your Suffix, click ‘Ok’ then ‘Ok’ again, and another ‘Ok’ going through all the dialog boxes. You will then need to reboot!

When your server has come back up…

Click on Start -> Programs -> Administrative Tools -> then click on ‘DNS’.

When the window has loaded you should have some items on the left side in a tree view. The top most items should be DNS and should fall in like a tree.


(server name)
Event Viewer
Forward Lookup Zones
Reverse Lookup Zones

(You many need to expand the (server name))

Left click, then Right click on ‘Forward Lookup Zones’ and choose ‘New Zone…’ when the dialog comes up click the ‘Next’ button, then choose the radio button labeled ‘Primary Zone’ and click ‘Next’. You will now be presented with a Zone Name box, in this box type the name you choose above for the DNS suffix of this computer, and click ‘Next’ The next page will ask you what to name the file, you can just click ‘Next’ here, as the defaults are fine.

Now, you should be on the Dynamic Update page. Choose ‘Allow both nonsecure and secure dynamic updates’ radio button; (This is not secure I KNOW, but we will change this after Active Directory is installed.) and then click ‘Next’, then ‘Finish’.

You should now be back at the DNS Management console screen with the options on your left in a tree view. Left, then Right click on ‘Reverse Lookup Zones’ and choose ‘New Zone…’. Click ‘Next’ make sure ‘Primary Zone’ is selected and then click ‘Next’ again. Now we are presented with a new screen, Network ID. In the boxes type in the first three portions of the servers IP Address. (Remember that from above?) If your server IP Address was then in the boxes put 192.168.100 and click ‘Next’. Next page should be your Zone File, clicking ‘Next’ will be fine, since defaults are good enough. Again, click ‘Allow both nonsecure and secure dynamic updates’ radio button and then ‘Next’ then ‘Finish’.

Now you should be back at the DNS Management console screen. Close this console screen and you should be back at the Desktop.

Let’s reboot the server to make sure everything gets restarted correctly. (Yes, Windows likes reboots during its setup)

Back at the desktop now, let’s test to make sure DNS is working correctly… Go to Start -> Run and type ‘cmd’ and click ‘Ok’. In the black command console type ‘nslookup’ you should be presented with a few lines that resemble…

Default Server: (server name).(dns suffix you choose)
Address: (ip address you choose for server)

If this shows your doing well thus far, if this does not show, you may have skipped the part of adding your DNS suffix in the ‘System’ part of Control Panel. Type ‘exit’ then ‘exit’ again to close nslookup and the command console and return to the Desktop.

Third, now that you have DNS working correctly, we can now install Active Directory and create our domain.

Go to Start -> Run and type ‘dcpromo’ then click ‘Ok’. The Active Directory Wizard will start; click ‘Next’ then ‘Next’ again after you have read some security information for older versions of Windows. Now you will be able to choose what type of Domain Controller. This walkthrough is for a brand-spanking new domain and such, so we will leave it defaulted for ‘Domain controller for a new domain’ and click ‘Next’. Now we see some choices for Forests. Again for this walkthrough we choose the default ‘Domain in a new forest’ and click ‘Next’. We are now asked for our Full DNS name, in this text box type in the suffix that you choose a while back when setting up DNS, the one that was exampled as:







and click ‘Next’. On the next dialog we will choose the default recommended Domain NETBIOS name and click ‘Next’. Here we can choose where to save the database for Active Directory, for our purposes, the defaults are good and we will click ‘Next’. Then ‘Next’ again when we are asked where to save the SYSVOL files. The next page is sort of important if you have any servers running Windows NT 4 and such (Anything below Windows 2000) when it comes to the Server Operating System, Clients are not affected. But within scope of this Walkthrough we will do the default for permissions which is ‘Permissions compatible only with Windows 2000 or Windows Server 2003 operating systems’, and then click ‘Next’.

Now Windows will ask for a Directory Services Restore Mode Administrator Password, you can choose any password you wish, this password is needed incase you have some sort of disaster and need to do a recovery of the Active Directory. When you have your password entered twice for verification, click ‘Next’. A brief summary of what you have done thus far is shown on this dialog, and you can click ‘Next’ to start the installation of Active Directory.

When the installation has completed, you will be asked to restart the computer, so go ahead and reboot now.

Let’s go back and secure DNS shall we…

Click on Start -> Programs -> Administrative Tools -> DNS

Inside the DNS Management Console left then right click on the + next to Forward Lookup Zones to expand it and then right click on (dns suffix you choose) and choose ‘Properties’ . There should be a button labeled ‘Change’ next to Type: Primary. Click ‘Change’ check the box labeled ‘Store the zone in Active Directory (available only if DNS server is a domain controller)’ and click ‘Ok’. When it warns you, Click ‘Ok’ again.

Now back at the suffix properties click on the drop down list labeled; ‘Dynamic Updates’ and choose ‘Secure Only’. Then click ‘Ok’.

Inside the DNS Management Console left then right click on the + next to Reverse Lookup Zones to expand it and then right click on ((IP Address) (Subnet)) and choose ‘Properties’. There should be a button labeled ‘Change’ next to Type: Primary. Click ‘Change’ check the box labeled ‘Store the zone in Active Directory (available only if DNS server is a domain controller)’ and click ‘Ok’. When it warns you, Click ‘Ok’ again.

Now back at the suffix properties click on the drop down list labeled; ‘Dynamic Updates’ and choose ‘Secure Only’. Then click ‘Ok’.

Active Directory is now installed and DNS is working and secured. You can manage your users in Start -> Programs -> Administrative Tools -> Active Directory Users and Computers

You should have a tree on the left that resembles…

Active Directory Users and Computers
Saved Queries
(dns suffix you choose)
Domain Controllers

I recommend that you create an new Organizational Unit under your (dns suffix you choose) just right click on (dns suffix you choose) and click on ‘New’ then ‘Organizational Unit’ and name it. I usually choose a company name, or workgroup name here. Like ‘Archaic Binary’ :-)

You can then add new users to that OU or create more OUs below that and add users to different OUs and create a more refined structure.

Hope this helps some people install and slightly configure Active Directory on Windows 2003.

Thursday, March 20, 2008

3/20/2008 Websites I am currently evaluating

So I am stuck in Phoenix, AZ overnight on business so i thought I would update my blog with the sites I am looking over.
10 JavaScript Effects to Boost Your Website’s Fanciness Factor

prototype Javascript Framework
FancyForms - form styling using mooTools - a javascript framework.

phatfusion image menus - a great looking menu system using mooTools as well.

This is LightBox on steroids...able to display not only images, but other media as well.
SharePoint 2007
Add subsites and provide navigation functionality in MOSS 2007 - a code approach!

MOSS - Common Issue - events 5325, 4958, 6398 listed in the Event log and/or IIS MMC not responding

So I ran into an interesting problem in my MOSS development environment

Windows Server 2008 Resource Center for SharePoint Products and Technologies

Time-based Optimization

SQL Server Management Studio Standard Reports – Tasks
CodeProject Articles
Dynamically adjusting the size of a drop-down list and adding color to the back-ground and fore-ground of the list items

Access Form based SharePoint Site's Web Service

Exploring Lambda Expression in C#

Tuesday, March 11, 2008

Sample event handler to set a field as a primary key (enforce no duplicates)

This is an interesting workaround to the SharePoint issue of lists not having primary keys.

Read the article here.

Avoiding CSS caching issues

Great article and code that will help SharePoint developers avoid servers caching CSS.

Check it out

Top 10 SQL 2008 Features for SharePoint IT Pros

Joel does a nice job reviewing his top 10 Sql 2008 features that will benefit SharePoint professionals.

Check it out here

Integrate SharePoint Designer Workflows with Web Services

Paul does a nice job working with SPD Workflow Extensions or Custom Actions.

SPWebConfigModification Class

The is a very good article describing how to utilize the SPWebConfigModification class to make modifications to the web.config files for SharePoint sites. This is definitely worthy of some learning time...our developers have anasty habit of opening the web.config themselves and modifying it...big no no!

Take some time to add this to your developers skills - I am.

IE 8 Beta 1 Available

Well, looks like the IE team has finally released IE 8 Beta 1...download it here.

Sunday, March 02, 2008

Understanding how Web Parts are rendered, why to never use Render() and a bit on accessibility

Great post by Andrew Connell...

When building custom Web Parts, you always hear people say "don't use Render(), only use RenderContents() or use the more OO approach and implement CreateChildControls()." Personally I favor the latter approach of using CreateChildControls(). So why should you not use Render()? Because unbeknownst to you, you are actually breaking something quite powerful.

Check out the full post here.

SharePoint 2007 Security Accounts

Great summary on SPS 2007 service accounts:

I’ve been working on a number of MOSS implementations lately, and I always get a lot of questions about what service accounts are needed to get the implementation rolling. Microsoft has a really nice, but very long article on the accounts (http://technet2.microsoft.com/Office/en-us/library/f07768d4-ca37-447a-a056-1a67d93ef5401033.mspx?mfr=true), but most of my clients do not have the time or want to read that article. So I put together some basic guidelines on MOSS service accounts…

The following covers the most common service accounts that need to be setup and their typical permissions in order for MOSS to function properly. Note that each deployment is different, so these accounts may differ based upon individual requirements. There are some additional accounts that you may need for other optional services, but they are not mentioned here.

Running MOSS Setup

On every server where MOSS is to be installed, the account you run setup with must belong to the local administrators group. In addition, this account must be a Domain User and be a member of the following SQL server security roles: Logins, Securityadmin & Dbcreator. This account is going to be doing a lot – creating new databases, and also creating new IIS sites – so make sure you have enough permissions! Typically, an account such as the domain administrator is used to run the installation, which addresses all of the security requirements.

SQL Server (SQL_Service)

This account is specified when a new SQL server is being brought online or a new instance installed. It typically is used for running both the SQL Server & SQL Server Agent, however, each can have their own account. For our purposes, we will utilize one account for both SQL Server & the Agent. The account only needs to be a basic Domain Account with no specific permissions set. When SQL Server is installed, all of the other appropriate permissions will be granted to the account.

Database Access Account / Farm Account (Farm_Service)

This account serves a few roles. The first is that it is used by MOSS to access the databases… it acts as the account by which the server(s) MOSS is installed on communicates back and forth to SQL with (read/write). Additionally, it is used as the identity for the Central Administration application pool & the WSS Timer service. This account needs to be a Domain Account - but note that it is believed to have to be a local admin on every MOSS box - this is not true, as Spence points out very eloquently.

Shared Service Provider (SSP#_Service)

Each shared service provider can run under its own account, therefore, it is desirable to name the account using a number. This way, if your MOSS farm ends up having a large number of SSPs, you can map the SSPs back to their specific service accounts easily. This account is used for the SSP web services & the SSP timer jobs. The account only needs to be a basic Domain Account with no specific permissions set.

Office SharePoint Server Search (Search_Service)

This account is utilized by all of the Shared Service Provider to crawl local & remote content. This account should be a Domain Account & have local administrator permissions on each MOSS server.

Default Content Access Account (SSP#ContentAccess_Service)

When a shared service provider crawls content, this is the default account used if a specific account (see below) is not specified for the content source being crawled. This account is specific for each individual SSP. This account should be a Domain Account & have read access to the content sources it needs to crawl.

Content Access Account (XXXXContent_Service)

If you have specific content sources that need to be crawled, and you do not want to allow the default content access account to crawl them, then you specify an individual content access account (specified at the time a Crawl Rule is setup). This account is a Domain Account with read permissions specifically on the content source it crawls.

Windows SharePoint Services Search Account (WSSSearch_Service)

The WSS Services Search is used only to provide search capabilities within the Help content. If this search feature is desired, then this account should be configured as a Domain Account with no specific permissions.

Application Pool Process Account (XXXXPool_Service)

When each application pool is setup, you must specify an account that will be used for that specific application pool’s identity. This account will be used to access the content databases associated with the web application. It is recommended that a new service account is created for each application pool. This should be a Domain Account with no specific permissions. When the account is specified & SharePoint creates the application pool, it automatically grants the account additional needed permissions.

by cregan: http://cregan.wordpress.com/2006/12/08/moss-setup-service-accounts/

Friday, February 29, 2008

SQL Database Management for SharePoint

Bill Baer as a new whitepaper on database management for SharePoint. This is a must read for SharePoint admins.

Some highlights from the paper:

  • rebuild and reorganize (reindex) the clustered index is what defragments a table.
  • reindex = defragment
  • In order to avoid a huge performance hit, do not set maintenance plans to shink the db.
  • be prepared - maintenance plans can be long running processes.

Wednesday, February 20, 2008

SharePoint 2007 Link Resources for 2/20/2008

Some links for 2/20/2008:

Workaround for creating timer jobs after a restore in SharePoint


Is the hotfix or service pack going to break my SharePoint pages or deployment?


Create SharePoint Server 2007 Crawl Rules using Forms Based Authentication (FBA)


Installing SharePoint Server 2007 on Windows Server 2008 RC1


Ben's 15 easy steps to extend a SharePoint Web Application


Web Application Timer Jobs not automatically created when restoring from SharePoint backups


Verbose List of WSS 3.0 Events


Verbose List of SharePoint Server 2007 Events


Verbose List of WSS 3.0 Events


Exception thrown when logging into SharePoint via FBA against a SharePoint List


Fun with Content Types




Advanced Lectures and WhitePapers (Great Resource)


Tuesday, February 19, 2008

Windows 2008 and SharePoint Server 2007

Great article by Ben:

Installing SharePoint Server 2007 on Windows Server 2008 RC1

1. You must enable the IIS7 Feature Role on Windows Server 2008 RC1 with .NET 3.0

From Control Panel, Programs and Features, Select 'Turn Windows Features On or Off'
Next, Under 'Server Manager, Features' Select '.NET Framework 3.0 Features'. When asked
to install the IIS7 role, select yes. Under IIS7 'Security', be sure to select the authentication
you want, i.e. Basic, NTLM, Kerberos, etc. Next, you must slipstream
Windows SharePoint Server 3.0 SP1 AND SharePoint Server 2007 SP1 into your SharePoint Server 2007
installation directory.

2. I used Winrar to extract the files from my SharePoint Server 2007 ISO, but you can also
copy them into a directory directly from the DVD. Create a directory, we'll use c:\Slipped for our installation point. Copy the entire DVD contents to c:\Slipped

3. Next, you must download and extract both Windows SharePoint Services SP1 and SharePoint Server 2007 SP1
you can get them here http://blogs.msdn.com/sharepoint/archive/2007/12/11/announcing-the-release-of-wss-3-0-sp1-and-office-sharepoint-server-2007-sp1.aspx

First, create a directory to host the WSS 3.0 files after extraction. We will use c:\wsssp1
Second, create a directory to host the SharePoint Server 2007 files after extraction. We will use c:\mosssp1
Third, we will assume we have downloaded both service packs to c:\

Extract the WSS 3.0 service pack files by executing 'c:\wssv3sp1-kb936988-x86-fullfile-en-us.exe /extract:c:\wsssp1' Agree to the license terms, and the service pack will unpack.

Extract the SharePoint Server 2007 service pack by executing 'C:\officeserver2007sp1-kb936984-x86-fullfile-en-us.exe /extract:c:\mosssp1' Agree to the license terms, and the service pack will unpack.

4. Copy the service pack files from the above directories into the installation updates directory.

If you are using x64, replace the 'x86' in the following instructions.

Copy the contents of both c:\wsssp1 and c:\mosssp1 into 'c:\slipped\x86\updates'
5. Last, run the setup from the x86 directory, and it should install!

SharePoint and Active Directory Groups

There are two ways to create groups in AD - domain...right click...new group or domain...users..right click...new group. SharePoint cannot correct ly use groups where one of the CNs is "users" as is the case in the latter scenario above.

The right way to build groups in order to have SharePoint "like them" is by creating groups from the domain level.

Wednesday, February 13, 2008

SharePoint 2007 Link List - 2/13/2008

A list of links I have compiled lately that I feel are good articles:

Email enabled lists in SharePoint 2007 http://clintcherry.spaces.live.com/Blog/cns!AEC0DCBC460E45B9!535.entry

Avoid using hyphens in site column names!
*although I have not tested out this theroy, it would make sense to me that all mathematical symbols would be unusable in site column names for this very reason.

Developing Migration Methodologies

SharePoint and HttpModules - 1 / 3
http://translate.google.com/translate?u=http%3A%2F%2Fwww.gatweb.fr%2FLists%2FBillets%2FPost.aspx%3FList%3D29f0ece6%252Ddd9b%252D454b%252Da6d4%252Dff5563516758%26ID%3D96&langpair=fr%7Cen&hl=en&ie=UTF8 *Translated French to English...

export/import site structure using XML

Content Types: The little engine that could...

Content Types: Part 2 - Creation and Association of Workflows and Document Templates

Announcing the DoD 5015.2 Resource Kit for SharePoint Server 2007

Wednesday, February 06, 2008

Lesson Learned: Patching a SharePoint Server

SharePoint server unavailable after a patch is installed....

Yesterday evening our automated patching systems applied several patches to our development SharePoint server. When we came in this morning, the server was totally unresponsive. The event logs gave us very little to go on other than the following entry:
A database error occurred.

Source: Microsoft OLE DB Provider for SQL Server
Code: 4060 occurred 1 time(s)
Description: Cannot open database "SharedServices1_DB" requested by the login. The login failed.

Context: Application 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
So we set about trying to figure out what was going on. We checked IIS, SQL Server, Services - everything seemed to be in order. We checked Active Director to see if the service account was locked - nope. Hmm...this was baffling.

Finally as a last ditch try before we restored from a backup, we ran the SharePoint Products and Technology Configuration Wizard....and VIOLA! She was living again.

Doing a little more research into the patching and management of SharePoint servers, we read that certain MSFT Office Server patches and SharePoint patches require that once finished the administrator rerun this configuration wizard to finish the process.

The lesson we have taken from this fire-drill is as follows. Configuration Management is of the utmost importance. Our network and development teams will be formulating concise strategies going forward for config mgmt of our SharePoint systems but a high level view of how we are going to patch these systems is as follows:

1. P2V production SharePoint servers to Virtual Machines (VMs)
2. Apply patches to VMs
3. Test VMs
4. Backup production SharePoint servers (additional to normal nightly backups)
5. Apply patches to production SharePoint servers
6. Test production SharePoint servers
7. Destroy VMs created for patch test

This is just a quick idea of how we plan to implement patches in the future.

Tuesday, February 05, 2008

Auto-Refresh a SharePoint Page

This is more of a quick and dirty technique rather than an elegant, AJAX-based approach which might be more desirable.

Enabling your SharePoint page to refresh automatically after x seconds is as simple as adding a Content Editor web part and adding the following javascript to it in the source editor:

<script type="text/javascript" language="javascript">
var reloadTimer = null;
var sURL = unescape(window.location.pathname);

function setReloadTime(secs)
{ if (arguments.length == 1)
{ if (reloadTimer) clearTimeout(reloadTimer);
reloadTimer = setTimeout("setReloadTime()", Math.ceil(parseFloat(secs)*1000));
{ reloadTimer = null;
window.location.replace( sURL );


This script will reload the page ever 30 seconds. In order to hide the web part from the view on the page, set the following properties:
Height: 0px
Width: 0px
Chrome Type: none
Under advanced uncheck all advaanced properties.

That should do it...now your SharePoint page will auto-refresh every 30 seconds.

Good Luck...

Monday, February 04, 2008

Recycling the App Pool Remotely

When you are running SharePoint in the enterprise, inevitably you are going to need to recycle the SharePoint app pool. This is a valuable article from Microsoft TechNet I found so i did not have to log into the server to recycle it.

Taken from TechNet (http://technet.microsoft.com/en-us/library/bb878047.aspx):

"This is a very good question and one that Microsoft gets asked frequently by customers. The short answer is, yes, this can be done remotely. The long answer though requires a little knowledge of scripting if you are running IIS 6.0 on a Windows Server 2003 RTM version.

The script you need to do this locally is in Windows Server 2003 Service Pack 1, available from the Microsoft Download Center.

The command-line syntax used locally is:

iisapp /p /r

For example, if the w3wp process was Process ID (PID) 1234, then the command issued is:

iisapp.vbs /p 1234 /r

You can also use the Application Pool's friendly name instead of the PID by using the /a switch instead of the /p.

You can view all the switches and options using the command-line help for iisapp.vbs by typing the command:

iisapp.vbs /?

However, the iisapp.vbs command-line utility does not support remotely connecting to a computer.

If you are familiar with developing scripts this problem is solved using Windows Management Instrumentation (WMI) scripting or Active Directory Services Instrumentation (ADSI). These technologies are well documented in MSDN and you can use the IIS provider to connect to and recycle the application pools.

For example, here is a simple sample script with no error checking or dialog boxes. It also accepts no switches. However, it enables you to remotely recycle an application pool when you supply the following pieces of information in the script:

  1. Target server Name (strServer)

  2. Target server Username (strUsername)

  3. Target server User Password (strPassword)

  4. Application Pool name

I hope this sample script gets you started on your way to recycling a worker process running on a remote IIS 6.0 server:

strServer = "MyServer" //Replace this with the target server name strUser = "Administrator" //Provide Administrator privilege credentials strPassword = "password" //Input Administrator privileged account password Set LocatorObj = CreateObject("WBemScripting.SWbemLocator") LocatorObj.Security_.ImpersonationLevel = 3 Impersonate LocatorObj.Security_.AuthenticationLevel = 6 Pkt Privacy (required for remote administration over WMI as of Win2k3 SP1) Set ProviderObj = LocatorObj.ConnectServer(strServer, "root/MicrosoftIISv2", strUser, strPassword) Set MyAppPool = ProviderObj.Get( "IIsApplicationPool=w3svc/apppools/DefaultAppPool" MyAppPool.Recycle

There is detailed information in the IIS SDK to help you write a script that can remotely connect to an IIS server at:


By the way, the iisapp.vbs file that is delivered with Windows Server 2003 Service Pack 1 (SP1) can easily be copied to a Windows Server 2003 RTM version. There was no change in functionality to the core server between RTM and Service Pack 1 that would cause this script to not work. However, the script does not work on IIS versions below 6.0.

To review the changes added to Service Pack 1 for IIS 6.0, please review the following document on Microsoft's Web site:


More SharePoint? More .Net? What can I do better here?

Its been some time since i started blogging and I think my little space here has some good articles/tips and tricks for SharePoint/.Net developers.

My question to you is - what can I do better that you think might attract more readers? I am open to all suggestions.

And thanks to those who stop in to read my blog...

SharePoint 2007 Link List - 2/4/2008

Here is a list of resources I have compiled this past week:
SharePoint AJAX Toolkit

People-Picker Control for InfoPath 2007

Free Tool: Register Event Handlers Programmatically

SharePoint and Managed Paths

Use the advantages of custom attributes in your C# applications

Fixed Header and Footers in GridView

HttpWebRequest and Ignoring SSL Certificate Errors


Thursday, January 31, 2008

Graphic Designer Contracts Agreements Forms & Web Designers Contracts

This blog has valuable links to many different free-lance contracts for Designers and Developers. This is a very valuable resource - I will be downloading all of them and storing them in Google Docs.

Outlaw Design Blog - Graphic Designer Contracts Agreements Forms & Web Designers Contracts

Tuesday, January 29, 2008

Lesson Learned: Updating data directly in SharePoint Database

This is a lesson learned from our MindSharp SharePoint developer training:
Don’t update the data directly in a SharePoint database - this will break your Microsoft T&C and your SharePoint instance will not be supported by Microsoft. Data integrity is also not enforced by the schema.

Bottom Line: Don't do it!

Creating a 12 Hive Taskbar

Creating a taskbar menu that will open the SharePoint 12 Hive folder quickly is really a time saver. Follow the steps below to create this taskbar menu.

  • Right-click on Start bar...Toolbars...and choose New Toolbar.
  • Navigate to c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions.
  • Select 12. Then click OK.

A toolbar to the 12 Hive appears on the right side of the task bar.

Monday, January 28, 2008

SharePoint 2007 Link List

Here is a list of resources our development team has compiled for SharePoint 2007:

-SharePoint End-User Training:





http://sharepoint.microsoft.com/blogs/mikeg/Lists/Posts/Post.aspx?ID=665 (May have expired)




-Application templates for WSS 3.0:


Help Desk: http://www.mybren.com/ericblog/2007/09/custom-help-desk-workflow-in-sharepoint.html

-MOSS SP1 Download:


-SharePoint WebCasts:



-Content deployment – Step-by-step tutorial:



-Writing Custom WebParts for SharePoint 2007:






-SharePoint 2007 WebParts Communication:




-Writing custom editors for SharePoint 2007 and ASP.NET 2.0 WebParts:


-Customizing MOSS through the browser:


-MS Office 2007 system preview site:


-SharePoint 2007 Architecture:


-Using SharePoint Designer to create a custom New/Edit/Display form:




-MS and other SharePoint Blogs:




-Blogs, Wikis, and RSS in SharePoint 2007 (includes video):


-SharePoint 2007 – The server side of Office (includes video):




-SharePoint Tips and Tricks:


-SharePoint and Office 2007 Virtual Labs:


-Web Content Management in MOSS 2007: Terminology explained:


-Web Content Management in MOSS 2007 Web Casts:



-MOSS Training from Microsoft:


-- WSS Development: http://www.microsoft.com/learning/elearning/course/5045.asp
-- WSS Infrastructure: http://www.microsoft.com/learning/elearning/course/3369.asp
-- MOSS Development: http://www.microsoft.com/learning/elearning/course/5046.asp
-- MOSS Infrastructure: http://www.microsoft.com/learning/elearning/course/3370.asp

- SharePoint Designer: http://office.microsoft.com/en-us/help/HA102199841033.aspx

-MOSS 2007 Server setup tips:




-Pre-scan tools:


-AJAX.Net for SharePoint 2007:


-WSS 3.0 SDK:


-MOSS 2007 SDK:


-Setting up your SharePoint 2007 Development Environment:


http://weblogs.asp.net/bsimser/archive/2006/02/09/437788.aspx - Virtual PC Development environment



-Visual Studio 2005 Extensions for WSS 3.0:


-How to Create a MOSS 2007 VPC Image: The Whole 9 Yards:


-Migration and Upgrade Information for SharePoint developers:


-Planning and architecture for MOSS 2007:


-SharePoint Products and Technologies Community:


-WSS Developer Center:


-MOSS 2007 vs SPS 2003:




-MOSS 2007 Functionality (WSS 3.0 vs Standard MOSS vs Enterprise MOSS)




-Create a Feature: Master Pages for Site Collections:


-Creating a MOSS 2007 Theme:


-SharePoint content and Resources:


-Business Data Catalog:












http://www.dnrtv.com/default.aspx?showID=62 (video)

-SharePoint 2007 – Enabling Custom Authentication using a Custom Membership Provider:


-Enabling .PDF search in MOSS 2007:



-Additional Search links:



-Free web part for Wildcard searching:


-Worksheets for deployment:


-Defining managed paths (videos):

http://bobfox. net/Video% 20Demos/ManagedP athsDemo. wmv

-Using .ascx controls in your MOSS application:


-Using .aspx pages in MOSS:




-CSS Reference Guide for MOSS 2007:



-Custom STSADM command to report on and fix your WSS sites:


-Military Grade Compliance for MOSS 2007:


-MOSS 2007 as an Application Development Platform:


-Creating a Custom SharePoint 2007 Portal Site Definition using the PortalProvisioningProvider Class


-Configuring multiple authentication providers for SharePoint 2007


-Intro to MOSS video:


-Profile management and custom web part editors (video):


-Creating Web Parts using VS 2005 Extensions:


http://www.microsoft.com/downloads/details.aspx?familyid=19f21e5e-b715-4f0c-b959-8c6dcbdc1057&displaylang=en (Download)

-Printing the contents (default view) of a List:


-SharePoint Instant Messanger (“Chatterbox”):


-Copying a SharePoint list from a source site to a destimnation site:



-Report Viewer SP1 Redistributable Package:


-MOSS and Kerberos:


-MOSS Governance – Key to a successful deployment:


-Large Lists in MOSS:


-Custom field types:

Todd’s RegEx: http://claytonj.wordpress.com/2007/05/15/regular-expression-validation-custom-field-type/

Cascading drop-downs: http://datacogs.com/datablogs/archive/2007/08/26/641.aspx

Cross-site lookup: http://www.kcdholdings.com/blog/?p=56

Phone #: http://www.sharethispoint.com/archive/2006/08/07/23.aspx#first

MSDN Example: http://msdn2.microsoft.com/en-us/library/bb530302.aspx

AutoComplete: http://svengillis.blogspot.com/2007/10/use-aspnet-ajax-framework-with-wss-30.html

Concatenate 1st & last name: http://www.sharepointblogs.com/nicksevens/archive/2007/08/31/create-custom-field-types-for-sharepoint.aspx

Private/secure field (Kevin DeRudder): http://www.u2u.info/Blogs/Kevin/Lists/Posts/Post.aspx?List=6f246d9a%2De4e7%2D4846%2Db776%2Df9a62112ffb7&ID=17

-Debugging MOSS:


-Coding tips and techniques:


-Wokflows: Extracting email addresses and sending email (with video):





-Workflow How-to videos:


-Creating a simple non-human Workflow:


-Accessing SharePoint data through web services:


-Reading ListId and ItemId from an application page:


-Navigation between site collections:


-MOSS and SQL Server Reporting Services (SSRS)





-Outlook integration (CEWP vs OWA web part):


-Performing joins between two SharePoint lists (Requires SharePoint Designer):


-DataForm/DataView web parts:


-SharePoint and Popfly:


-Advanced web parts code (Andrew Connell):


-Workflows and Visual Studio 2008:


-Color calendar for MOSS:


-How to customize web.config with a SharePoint XML customization:


-STSDEV – SharePoint code generator:


http://www.codeplex.com/stsdev/Release/ProjectReleases.aspx?ReleaseId=10119 – Tutorials