Changing the order of the Site Template Cataegories in the create Site Page (newsbweb.aspx)

We needed to change which site template group in the Create Site page (newsbweb.aspx) should be default, and then set the default site template in this default group.

I found the article "Changing the Create Page" on dwinter's blog, and the rest should be easy:
  • \_layouts\newsbweb.aspx?DisplayCategory=ourgroupname
  • Add (or replace the existing) Create Site menu on the Site Action drop down menu.

Later I'll use reflector to see if I can find some more parameters to apply use :-)


Administration tools for SharePoint 2007

SharePoint 2007 / Windows SharePoint Services 3.0 has its limatiations - especially when it comes to administration and soluions maintenance, Several vendors have made (or is in the process of making) usefull tools for the SharePoint Administrator.

Below is a list with some of these I've identified found (but not always have used :-)):
  • DeliverPoint from Barracuda Tools. Security settings, and users and groups.administration.
  • Controlpoint from Axceler. Yes (as Camper correctly commented) this is absolutly a tool worth checking out. I've been to a couple of demos myself, and it is rather impressiv actually.
  • Quest.

More to come!


TechEd 2007 Barcelona Next!

Yes, I'm really looking forward to TechEd 2007, and a very promising session schedule. The "problem" is that there are only 20 session, and too many (what looks like) great sessions :-)

See you there!


Testing incoming e-mail in SharePoint 2007 with or WITHOUT Exchange

I needed to extend my SharePoint Dev image to also include the incoming e-mail option, and without the need for an Exchange server. I'm not an e-mail/SMTP guru so this had to be done "the Google" way, and once a again: "success"!

What do you do? Read Getting email functionality with MOSS without Exchange on PlanetWilson Sharepoint. It also works on Domain Controller+MOSS 2007. Just make sure you get the domain names right both when setting up MailEnable and the local SMTP service (in IIS).

If the e-mail doesn't show up in the list after you have gone through all the steps make sure you also check your library's security settings. "I changed the E-mail security policy for my library to archive all e-mail regardless of sender and was able to receive the e-mail into my library. This made my gray cells to work! I was sending this email from my production domain account and though that account is made administrator in my MOSS2007 on dev it didn't recognize the sender beeing authenticated member. I changed the E-mail security back to Use document library security for e-mail and created new email with dev account and the email was created in my library. Conclusion is that this is working accordingly and you need to keep in mind the E-Mail Security settings for doucment libraries." Link here

If you would like to use Exchange then check out the whitepaper from Combined Knowledge for how to the configuration. Read "How to configure Incoming Email Enabled Libraries in MOSS2007 RTM using Exchange 2003 in an Active Directory Domain." It walks you through every step for a successful configuration .

When and why to use e-mail enabled document libraries or list? Read some comments from Joel Oleson.

Then it's time to create some SharePoint 2007 MailIn solutions!



EPiServer CMS 5.0, SharePoint 2007 and Microsoft CRM 3.0 - THE match your for internet, extranet and intranet?

1) Microsoft Office SharePoint Server 2007 (or Windows SharePoint Services 3.0) on the inside - and for the chosen people you let "in". The advanced intranet/extranet!
  • Collaboration
  • Dashboards
  • Applications
  • BI
  • Workflow
  • Back end integration
2) Microsoft CRM
  • Take good care of your customers
  • Dashboards
  • Integrated with MOSS 2007 / WSS 3.0
  • Update! Soon to be integrated with EPiServer CMS 5.0 as well

3) EPiServer CMS 5.0 on the public outside (or for lightweight intranets - combined with WSS 3.0)

  • You get A LOT for a very good price
  • Easy to set up and brand
  • Easy to use

And they all use a lot of the same technologies - SharePoint and EPiServer is very similar and CRM proably will be in version 4.0.

What do you think? A good match?


Modifying the Asset Picker Dialog in SharePoint 2007 - AssetPortalBrowser

We needed to make som minor changes to the Asset Picker Dialog for selecting images to be used in, for example, in an html editor field. The place to do this is in the file [12-hive]/template/layouts/AssetPortalBrowser.aspx. In this file you find a reference to the PublishingInt:SMObjectList web control. It has several parameters that my be changed:

  • SortExpression. On wich field you want the images sorted.
  • SortDirection. The ordering - must be either "ASC" or "DESC" - case sensitive!
  • ListViewName. Name of the default view, for example, "All documents". The default is the thumbnail view.
  • ThumbnailColumns. Number of columns in the thumbnail view.
  • ThumbnailRows. Numver of rows in the thunmbnail view.
  • PageSize. Number of documents/images to display on each page in the grid view
  • and some others ...

I would like to change the icons and texts in the toolbar as well, but I haven't figured out how to do this... yet ... Any suggestions?


Les Zeppelin reunion concert in London November 26th

Yes! Only 20.000 tickets and several millions that want to go. I've registered in the ballot!! I cross my fingers, and have good hopes for getting a couple of tickets :-)

Register here


Windows 2003 Service Pack 2 x64 "kills" the SharePoint 2007 performance

Yes, it is true: Installing Windows 2003 Service Pack x64 may make your SharePoint 2007 installation reaaaaaaly sloooooow :-(. It occurs the first time the page is beeing hit, and not when it has been cached on the client. The cause of the problem is loading of javascripts (init.js,++) and webresource.axd. We used IEWatch to detect what files where causing our problems. First we belived it was something to do with the init.js and the scripts which it contains, but then we saw that webresource.axd was called just before.

Disable HTTP compression on the client side and the sharepoint farm had to be done to solve our "mysterious" error. Great thanx again to fellow bloggers and forum users. This time it was this article which saved our day(s).

The purpose of webresource.axd : "WebResources are embedded scripts that are streamed out from the framework and referenced by the page at runtime. So, if you built a custom cotrol, for example, and you needed to embed a javascript file right in the control's DLL, it would be referenced as a WebResource when your calling pages run and therefore need to access this script. WebResources can also be images etc."


CAML querying using SPSiteDataQuery and getting distinct values returned

Using SPSiteDataQuery to query lists and sites for specific data is quick and easy. I needed it in a scenario where i needed to query a single list in a site and make sure I don't get any duplicates in the CAML query result.

Combining the following two blog entries from The Kid (who has a lot og great informasjon about SPSiteDataQuery - other stuff), and from Patrick Tisseghem about DataTable and DataView anf how to get distinct values returned.


Ajax for SharePoint 2007 - How to get started?

It was bound to happen sooner or later - I had to write an Ajax Web Part to be used in a SharePoint 2007 sollution. Oohh - Scary! - I thought at first... But thanx to Google and all the great MVPs and other blogg writers - I made a home run in less than 1 hour.

Follow these simple steps (in your development image):
  1. Download and install ASP.NET 2.0 Ajax Extensions 1.0. Click here
  2. Install and activate the Ajax.config feature written by Scott Hillier (at CodePlex). Click here. It does (almost) everything what Mike Ammerlaan has described so well in his blog. You should read Ammerlaan's article to understand what Mr. Hillier's feature does.
  3. Add a ScriptManager into your SharePoint MasterPage (See Ammerlaan's article).
  4. Find, download, install and activate a demo Ajax web part, e.g Adam Buenz's List Rotator Web part
  5. Then the fun part: Write your own! E.g. combine the simple web part in Ammerlaan's article with an Ajax Timer (see this article - make sure you add the Timer to the UpdatePanel's Controls list) and you can write your own list rotator, delay loading aof data - e.g from a slow web service, or ...

Go, go go! Time is money!

Do you get the error "values does not fall within the expected range" when trying to delete a file from the SPFileCollection in SharePoint?

Then it may be the case that the file/page you are trying to delete is set as the Default Page for the publishing site (if it is a publishing page and is located in the Pages list).

Any other causes? Please add a comment.

Creating custom list actions - in the drop down menu for the item - SharePoint 2007

When you write your custom actions it's not always easy to identify which parameters to set in the feature and the CustomAction attributes (RegistrationID, Rights , but here is som help:

  • Starting point and short how to? Look here.
  • CustomAction explained? Look here
  • Which values to put in the RegistrationID attribute? Look here.
  • Rights values? They can be combined, e.g. "AddListItems,ManageAlerts". They are cmobines with an AND relationship - the user has to full all rights. Look here for a list of possible values.
  • Site actions by Chris O'Brien

SharePoint Custom Action Identifiers

Custom Action Identifiers - all the ones modified or added by features

How to hide (or replace) custom actions

Replacing custom action in the file CustomSiteAction.xml..

To add site action from features:

If you want to replace menu items on the Site Actions drop down menu WITHOUT using features edit the [12-hive]\TEMPLATE\LAYOUTS\EditingMenu\SiteAction.xml file. But be aware of possible issues when upgrading or installing services packs.

Adding and removing items on the List Toolbar. Read here...

Using custom actions to modify system pages. Read here...

And of course you need to know from which page you came in order to redirect the user back to the correct site:
<UrlAction Url=”javascript:window.location=
‘{SiteUrl}/_layouts/mypage.aspx?List={ListId}&Source=’ + window.location”/>


Access Denied when trying to create a new crawl schedule for a content source in SharePoint 2007

Yes, you may get an "Access Denied" when you ar trying to add or change a crawl schedule. Why? Probably an error during installation. But, luckily this is an known issue and therefore there is also a solution:

Error when you try to edit the content source schedule in Microsoft Office SharePoint Server 2007: "Access is denied"


SharePoint 2007 hardware, software and capacity planning (disk, memory, CPU)

In recent work with planning a new MOSS 2007 farm I've found the following sources (combnined with own experience) to be very helpful:


Using SharePoint Designer to create "no-code" applications

Dustin Miller had a greate demo/speech on TechEd. Everybody working with SharePoint SHOULD watch it! It will give you some great ideas on how to use SharePoint Designer to write great sharepoint pages. Click here ...


SharePoint 2007 Performance and tuning tips

Here are tips & tricks for how to do tuning on your SharePoint 2007 installation to get better performance:

Different caching parameters:

  • Enable the BlobCache in web.config to create a disk cache for all pictures, style sheets and scripts that are used => Reduced database traffic.
  • Consider reducing the number of application pools used to relase more memory on the server(s). Each application pool is assigned a unique worker process which again loads the runtime => More memory for caching the "real stuff" :-)
  • Set the correct Caching profile on each web site - from the Admin page => Quicker page loads.

Web parts and customizations

  • Write your web parts and custom controls and pages such that the do as little data processing as possible before the user makes an action. => Reduces the time to load a the page that are using your web part/component.

Site structure

  • Depth of the web site hierarchy => Content by Query and other querys will run quicker

SharePoint 2007 Link Fest

Check out the following to web address (owned by 2 MVPs) for a huge amount of information and links related to SharePoint 2007 and Windows Sharepoint Services 3.0:

Creating banners and spots with rounded corners

Great articles for implementing spots with rounded corners both in EPiServer, SharePoint and other web applications. Haven't tested the solutions for browser compatibility - havenæt been nedded (so far).


My memberships are pointing to the old domain address after making a domain change

We had to change the domain address for our SharePoint 2007 installation. This went well, but My memberships (for every user) still point to sites with the old domain address. Why? I don't know, and I don't know why it didn't get automatically updated. Haven't found any information on the profile memership sync job either...

If I don't find a no-code solution, I guess I must go through all the memberships of every user and change the Url's by code. Not a big deal, but... it gave me some hard time until the followin simple code fixed problem:

Membership[] memberships = userProfile.Memberships.GetItems();
foreach (Membership membership in memberships)
// Fix the Url
string newUrl = membership.Url.Replace(textOld.Text, textNew.Text);

// Update the membership Url
membership.MembershipGroup.Url = newUrl;

// Commit the change

Missing Created field in Pages, Documents and other lists after CMS content has been moved between site collections

I do not know if the reason for why the Created column becomes missing (is set to hidden in the list) after moving some migrated CMS 2002 content into a regular Pages publishing list, really is related to CMS and content migration, but ... I really can't understand why SharePoint has done this to me/us/the project, but a solution must be found. At the moment we are unable to display the Created column in the lists view, set the sorting order based on the Created column, and so on.

Using the SharePoint Manager 2007 tool written by Carsten Keutman I was able to discover the fact that
  1. Hidden = True - obviously!
  2. The CanToggleHidden = False (bollocks!) - that gave me the headache - because if it was set to True I could have used Keutman's tool there and then to fix the bug (!?!?). CanToggleHidden can't be changed - it's an internal property - or ...??

But Colin Byrne, Flexnet, had the answer : Set the internal CanToggleHidden property via reflection

string id=list.Fields.Add("NewField5",SPFieldType.Boolean,false);

SPField spfield=(SPField)list.Fields.GetField(id);

Type type = spfield.GetType();

MethodInfo mi= type.GetMethod("SetFieldBoolValue",BindingFlags.NonPublic BindingFlags.Instance);

mi.Invoke(spfield,new object[]{"CanToggleHidden", true});



Haven't tried it myself yet, but comments on the blog confirmed that it would work.

Do not change the owner of a My Site Site Collection in SharePoint 2007

If you change the owner of a My Site Site Collection for a user's (User A) My Site you will, if you put yourself as the owner, be able to administer that user's My Site, but it will also have a very nasty side effect:

If someone click on the User A in, for example, a contact web part they will be taken to YOUR MY SITE and NOT User A's My Site.

Why would i change the owner of User A's My Site in the first place? To be able to have more control and reduce the operations available to User A in his/her My Site.

This is, I guess, by design, but to me it seems to be a strange combination regular program funcionality and security ....


I've been Hit by URL-lengt and Content by Query list count limits

Yes, it's true: There are some limits in SharePoint that we have to be aware of when planning the information and site structure:
  • Max Url length is approx. 260 chars See Louis & Clark.
  • Max number og lists the Content by Query web part can handle is 1000.

Both of these issues made us have to redesign the site structure and how to extract information to be displayed on the front page on our site.

Other limitations see SharePoint unplugged article

SPListItem and the CopyTo method

Yes, I've struggled with identifying the format of the destination url when trying to copy a publishing page from one Pages list to another using the SPListItem.CopyTo method. Again, Reflector came to my rescue. Reflector showed that the Url must contain a page name as well - NOT only the path to the list. If the page doesn't exist it will be created.

Wrong url: http://myserver/site/pages
Correct url: http://myserver/site/pages/thepagename.aspx

Then it works as it should.

Knowing how the publishing process is in SharePoint it really shouldnæt be a surprise, but sometimes the ... brain cells ... seems to be a bit "off line" :-)


MOSS 2007 Search problems

First: Check to see if you are running a Trial version. You are? Check that is hasn't expired. It has - then that's your problem maybe :-)! Not epxired? Then you may find your answer below:

Search in my development image crashed and it gave me a lot of hazzle to restore it again.

Why did it crash in the beginning?? I changed the password for the service account - and forgot the consequences of such a thing - not remembered I had done it I started to do other changes. Correct service account password on all the services in place the Search Service would not run:

Several problems occured:

  • Scopes where note created. Number of items in scope = Error!
  • Created a new Shared Service provider
  • Error in SharePoint: Search Service not started ... or indexer move... something
  • In the event log: ""Your search cannot be completed because this site is not assigned to an indexer. Contact your administrator for more information." How to assign assign a site to an indexer?? You have to configure your database and assign an indexer
  • Operations Database Click on database Select indexer.
  • Then!? Still the Scope issue.
  • Tried to create the Search Center again and then "The trial period for this product has expired" flashed into my eyes!!!
  • So that is the issue! => ReInstall MOSS 2007 !

Wasted hours!! Typical when you are short on time!

What have I/we learned? Do NOT change the password of the service account(s) if you don't have to, AND verify that Trial software HAS NOT expired !¤{#!!# argh!


SharePoint 2007 now a complete document AND records management solution!?

From CMS Wire we can read: "Following through on a commitment made last November, Microsoft has announced that their darling SharePoint Server 2007 (MOSS) product has just received the U.S. Department of Defense (DoD) 5015.2 records management certification."

This may be important to many companies in here in Norway as well. Why?

  • SharePoint 2007 (with the add-on module) has been proven to comply with a standard that I think set the compliance level for other non-US standards. But I'm not a specialist in this area :-)
  • You may now get a way with a single (more or less out-of-the-box) solution for; document management, records management, human-2-human workflow, CMS/Publishing and collaboration, tightly integrated with Microsoft Office 2007
  • Complete plattform for creating high availability inter/intra/extra solutions
  • Application development plattform - bring the essentsial pieces of your business application to the people: the functions they need, the right channel (Office, Web, Mobile, etc) when they need it

For the Norwegian public sector there is a question or issue around the NOARK standard(s) and NARK compliance, but I'm not sure how big of an issues this really is. I hope that someone can address this. Then we have EU regulations, ...

Yes, you have to be a bit pro Microsoft, but you GET a lot even if the license (SharePoint + SQL Server + Office 2007) cost is a bit "rude" :-( . But think about what you get: A GREAT COLLABORATION PLATFORM - built for the future (a life long marriage with Bill Gates and friends :-)).


Global navigation on My Sites

Standard My Site navigation has only two menu entries: My Home and My Profile. This is usually not enough, and you may want to supply the My Sites with a global menu similar to the rest of your intranet, special menu entries, etc, etc. This can be done in several different ways:

  1. Add extra menu entries between My Home and My Profile by accessing "Personalization site links" on the Shared Services admin page. Absolutely the quickest way. Mirjam pin pointed me to this one - thanx!
  2. Add Delegate Control with an ASP Menu control with a Site Map Provider of your choice; plain XML feed, standard SharePoint Site Map providers - there are several (look in your web config file), ...
  3. Combine them...

Displaying the same web parts on different pages

EPiServer has a concept of "dynamic properties" that can be used to display certain elements on multiple pages - complete tree of pages - without having to add the same element (web parts, user controls, text) to each and every page. This is not something (at least I've not found it yet) that is a part of SharePoint. Change the properties or content of these common web parts and they should all be propagated to each and every page in the web site (or sub areas of sites).

How can do similar things out-of-the box in SharePoint?

1) Add a "locked" web part zone (set the LockLayout property on the web part zone to true) to the page layout

  • (+) Makes it possible for the site owner to add web parts that cannot be changes by a user
  • (+) Can be used to set banners on each page in the site from a single point
  • (-) SharePoint Designer is the tool to use - cannot be changed from SharePoint directly
  • (-) The same zone and web parts must be added (and later changed) on mutiple page layouts
  • (-) Changes to the Page Layout after a page has been published WILL NOT affect the published page

2) Add the web parts directly to the Page Layout - outside of a web part zone

(+) Makes it possible for the site owner to add web parts that cannot be changes by a user
(+) Can be used to set banners on each page in the site from a single point
(+) Changes will affect all the published with this page layout - Great!!
(-) SharePoint Designer is the tool to use - cannot be changed from SharePoint directly
(-) The same zone and web parts must be added (and later changed) on mutiple page layouts

3) Add web parts directly to the Master Page itself is the most generic way

(+) Makes it possible for the site owner to add web parts that cannot be changes by a user
(+) Can be used to set banners on each page in the site from a single point
(+) Changes will affect all the published pages - Great!!
(-) SharePoint Designer is the tool to use - cannot be changed from SharePoint directly

4) Code a "dynamic properties" feature. How? Don't now yet :-) Ideas?

  • Use "Resuable content"? No, can only be used with html elements, but it may be the first step in the right direction. See theKid's article on reusable content.
  • Picking up and displaying the content of another sharepoint page initialized with the web parts? Yes..., may be a possible solution, but issues concering the use of iframes, masterpages, formating and layout.
  • ...

What I would like in a "perfect solution":

  1. A page where I can define and configure my web parts ("dynamic properties")
  2. A page where I can set in which part of the site/web structure the web parts should be displayed
  3. A clever way of coding and telling that this zone/area is to be filled with my "common" web parts/"dynamic properties"
  4. The solution must also be performant

Any ideas from anybody "out there" on how to solve this challange would be highly appreciated!


Great tool for shareing your Desktop with co-workers

Microsoft has released a Beta 1 of the their new Shared View application. Download and install it (Click here) on your PC (and let your co-workers do the same), start a new session, pass out invitations either through e-mail or Messanger, and you can share your desktop.

- Running demos
- Provide on line help
- and so on


Document Libraries functionality overview

Working with SharePoint document libraries.

Security on different levels (break the security inheritance):
  • Library
  • Folder
  • Item
  • Security inherited from library -> Folder -> Item
  • Break the security on any level - when needed

Setting permissions:

  • Per user
  • Per Activi Directory groups

Upload or adding documents

  • New Document command from SharePoint - the prefered way
  • Upload a single or multiple documents
  • Save a document directly from an Office 2007 application directly into the list
  • Use Windows Explorer to maintain the documents in the lists - started e.g. from the Explorer View
  • E-mail enabling document libraries and mail document straight into the document library

Best practies for opening document from a library:

  • Right-click the document in the list an select Edit the document ... (Office 2003)
  • In office 2007 the user will be prompted to open the document in readonly or edit mode
  • Select Alerts to be notified when a document is added, changed, etc.
  • Using the RSS view and subscribe to i in either IE 7.0 or Outlook 2007 (or any other RSS reader)

Check-in/out and versioning

  • Enable minor and major versions
  • Turn on/off check in/out
  • Set who will be able to se minor/draft versions
  • Version history is available
  • Rollback to older versions
  • Decide on minor or major version when checking in a document from Office 2007
  • From Office 2003 the publishing of a major version has to be done from the Document Library
  • People with only view rights will only see the major versions of a document

Content approval

  • Approvers have higher rights than editors
  • Approver rights is a part of the Design group in SharePoint
  • Draft -> Pending -> Approved

Three state workflow

  • New library
  • A Choice field must be added to the libray that has three different values
  • Add the three state worflow to the document library
  • Enter the task details for each of the first two states
  • A workflow column wil be added to the list and a part of the default view
  • A task list will be added to the site automatically

Managing content in the libraries

  • Folders are not recommended in every case. Consider meta data in some cases, but in others Folders is still the way to do it. So far I haven't been able to use the Content by Query web part fo filter out documents in specific folders eiter. I've had to write my own web part for this. But if anybody else have a solution please let me know.
  • Use custom columns/fields/properties to add meta data to the list
  • Users will be prompted to fill in custom fields when the document is saved/created
  • Office 2007 will have dcoument properties panel where these properties can be set
  • Use filtering and sorting on views to filter and order documents that you want to see


  • Export the library to Excel and look at the meta data (status, types, etc).
  • Custom templates
  • Multiple content types in a document library
  • Sending document links to other libraries


Setting which web parts should show up in 'suggested web parts for zone' - WebPartZone properties

The WebPartZone class has som properties that can be used to controll the appereance of it, what can be done to the web parts that it contains, define which web parts to put in the suggested web part area, etc.

  1. To define which Quick Add Group to use when picking "Suggested Web Parts for 'MyZone'" add this property to your zone in your Page Layout: QuickAdd-GroupNames="MyGroup"
  2. To exclude lists and views from the dialog for adding web parts add this property to your Page Layout zone: QuickAdd-ShowListsAndLibraries="false"


Setting up EpiServer in a trusted domain scenario

The following scenario had to be solved:

  • Users from domain A and a subset of users (S) from domain B shall be able to access a common EPiServer based intranet solution.
  • Other useres (O) in domain B is not to be granted access.
  • Users already logged on either of the domains should not need to enter their credentsials one more time when accessing the intranett.
  • The intranett should also be accesible from the internet, but then going through an ISA server to enhance the security.
  • Place EPiServer in a new resource domain C where both domain A and be are trusted.
  • The ISA server only allows users (S) from domain B to access the intranet.
  • Users (O) are not given access to the intranet.
  • Two (IIS 6.0 on a Windows 2003 server) web applications are set up (needing two EPiServer licenses): one with forms authentication (for users comming from the internet), and one with Windows Authentication for users alreade logged on to either of the domains.
  • Both applications accessing the same SQL Server 2005 database. Anononymous access is turned off.
Checklist for setting up the solution(s):
  • Ensure that both DomainA\Domain Users and DomainB\Domain useres have access to read the aspx files. If they don't they will not be able to access the site.
  • Ensure that the editor and the administrator groups in BOTH domains are added to the web.config file to give them access to the /edit and /admin interfaces.
  • Ensure that Windows Authentication really is set
  • Ensure that resource domain (IP- or domain address) is added to the intranet zone in internet explorer (Read more...)


SharePoint 2007: Regulatory compliance, Web 2.0 and Office Integration

Microsoft has released three different whitepapers recently that are very helpfull in explaining the possibillities and limitations of SharePoint 2007. They addresses a lot of the questions that may or will come up when trying to match SharePoint with customer requirements:


Web Statistics - Google Analytics

High quality, advanced, user friendly and FREE web statistics for small and medium size web sites then I think Google Analytics is THE tool! Check i out on www.google.com/analytics


Creating filtered lookup fields in SharePoint edit forms

Yes - it is possible - even without coding! Using SharePoint designer you can create custom looukup fields where you set your own filter on which elements from the source list which you want to display. What we will do is to insert our own drop down list instead of the standard lookup field. This drop down will fetch its values from a new data connection.

Below is the steps to follow.
  1. Define your list with all the needed fields and lookups
  2. Create a new custom form(s) - you will need a new New and Edit form. For details see this blog entry.
  3. Delete the existing List Form web part
  4. Add a Custom List Form to your page
  5. Create a new Data Source to use to get and filter your lookup data
    • Open the Data Source Library
    • IF your lookup list is NOT in the same site as your main list do the following
      • Select Connect to another library (at the bottom of the Data Source Library window)
      • Click Add
      • Browse to the web site which contains the list with your lookup values
      • Add a name to your source
      • Click OK
    • Find your list either in Current Site or the site added above.
    • Right click on the list that will be your lookup source and select Copy and Modify
    • A Data Source Properties dialog will be display
    • Select the Fields you need
    • Select the Filter you want to apply
    • Select Sort to set the correct sorting order
    • Click OK
  6. Give your new datasource a name; FilteredDS (or something else :-))
  7. Delete the SharePoint:FormField which controls the existing lookup
  8. Insert a SharePoint Drop Down List Control
  9. Set the parameters of the drop down list
    • DataTextField="MyTitleColumnName"
    • DataValueField="ID"
    • SelectedValue="{@MyListLookupParameter}
    • Id="THEID" - the same as the ID of the FormField just deleted
    • DataSourceID="FilteredDS"
    • __designer:bind="{ddwrt:DataBind('i',concat('THEID',$Pos),'SelectedValue','SelectedIndexChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@MyListLookupParameter')}"
  10. The last step is to set your new input form as default form to use when elements in your list is either edited or created. Right click on the list (in the Folder List) you are customizing and select propertes.
  11. Save, test and debug!

It is important to get all the steps right, but step 10 takes care of posting the data back to the list.

Thanx to Dattard Zebug - which was the primary source on solving this challenge.

Issues and error sources:

  • Suddenly the data source is not recognized any longer and you get a server error. SharePoint designer had added a '0' after the ID of my datasource name. Why? Ask Microsoft.

To create a cross-site lookup field do the following

  • Create the list that you want to be the source of your lookup field - must be deone at the site collection root.
  • Create a new Site Column (at the site collection root as well ) which you define as a lookup field and the liste created above as your source
  • Use the new site column field in your new list - anywhere in the site collection

A lot of the limitations with the lookup field should hereby been solved and addressed - at least for the time being :-), Unfortunately no C# code was needed :-)

SQL Server 2005 Reporting Services and SharePoint integration

I've just demoed the BI capabilities in SharePoint 2007, SQL Server 2005 and Excel 2007 - a very powerful team of tools. The recently released SQL Server 2005 Service Pack 2 and the integration between SharePoint and Reporting Services was included.

The Reporting Services SharePoint integration mode advantages:

  • Single consistent user interface for reports administration and presentation
  • Rich user in experience
  • Reports stored as any other document in SharePoint and therefore standard SharePoint features are available; workflow, report versioning and collaboration.
  • Reports stored in SharePoint, but synconized with the reports executed from the server. Scheduling, caching and subscriptions still stored in the report server database.
  • Single securtiy model
  • Standard reporting filtering through web parts and filters
  • Common storage for reports, data sources and report models
  • Publishing, viewing and managament through a familiar SharePoint user inteface
  • Enables organisations to construct BI dashboards

Resports can be created either through Visual Studio (by a developer) or by online tools (end user.

Important concepts:

  • Report Model. Defines the data soruce(s) of a report, the security parameters for the data soruce, tables, fields and releationships for the model. The report model is published to a library in SharePoint.
  • Report Builder. The tool used by the end user to create new reports. Deployed using ClickOnce, and installed automatically on the client workstation.
  • Report Viewing. Reports are displayed either in a web part or opened directly in the browser window.

Reports are managed from extra menues supplied with the report library template;

  • View properties (cataegories, teimstamps, approvales, etc)
  • Edit properties (meta data, etc.),
  • permissions
  • Edit in report builder
  • Delete
  • Manage subscriptions (add, edit and delete report subscriptions, automatic notifiactions sent to useres when reports are changed)
  • Manage data Sources. Share the same data source definition among multiple reports.
  • Manage parameters. Manage values and parameters passed into the report.
  • Manage processing options. Choose processing, snapshot and timeout options.
  • View report history
  • Check out/in, versioning, send to, version history, alert me - all standard SharePoint features.

Installation and configuration step by step, by Liam Cleary.


Customizing and/or extending or customizing existing standard field controls

There are errors in the DateTimeField control in SharePoint. It crashes when you set either the DateOnly or the TimeOnly fields. We wantet just the date so I had to make a small adjustment and make MyDateTimeField control with two extra properties MyDateOnly and MyTimeOnly, and override the RenderFieldForDisplay() method. I just rendered the DateTime value myself! 3-4 lines of code only!

This article gave me the ideas neccesary to "tweak" and fix errors in the standard field controls provided by Microsoft: Stefan Gossner

Here is my code:

public class DatoFormatFieldControl : Microsoft.SharePoint.WebControls.DateTimeField
public bool DateOnly

if (ViewState["DateOnly"] == null){return false;}
return (bool)ViewState["DateOnly"];
{ ViewState["DateOnly"] = value; }

protected override void RenderFieldForDisplay(
HtmlTextWriter output)
if (DateOnly)
() + " " + ((DateTime)


Creating custom forms for sharepoint lists using SharePoint Designer

Yes, we all have to face it (sooner or later): SharePoint designer IS a great tool - the tool - to customize SharePoint applications! We (as programmers) DO NOT need to write invent the wheel again, and again, and again.... SharePoint Designer AND Visual Studio 2005 (and C# programming) will be OUR tools.

So, how do we create a customized form to register our data in a list? Follow these steps:

  1. Open the site in SharePoint designer where the list is located and navigate to the list
  2. Make a copy of the newform.aspx and name it mynewform.aspx
  3. Open mynewform.aspx in the designer in html view
  4. Select the ListFormWebPart and delete it
  5. Select 'Insert Sharepoint controls Custom List form'
  6. Add design elements, move things around, delete fields, etc to create the form as you would like it.
  7. Save it.
  8. Right click the list name in the folder list and select Properties
  9. Select the 'Supporting files' tab
  10. Select Item in the 'Contenty type specific forms' list
  11. In the field 'New Item Form' browse to mynewform.aspx
  12. Select 'OK'.
  13. Browse to your list in the web browser, select New and your mynewform.aspx should be the form that is used

Other articles:

Error sources and issues when writing Custom Field Types

These are issues and problems I've run into when writing my custom field types:

  1. 'Field type is not installed properly' error. When writing Custom Field Types it is important that the TypeName field in the fldtypes_xxx.xml file corresponds with the class name that actually implements your field type. Typos, renaming, and keeping implementation in sync with the xml-definition file(s) has been my "issue".


Migrating EPiServer projects from .NET 1.x til .NET 2.0 and from VS 2003 til VS 2005 Web Application projects

I belived should be pice of cake, but I was wrong. I quickly got the error "Parser Error Message: Ambiguous match found. " when trying to run the final project. I took me a while - and some "googling" - to discover the problem source: a region was named 'MainRegion' in the defaultframework.ascx file and a variable in the codebehind was named mainRegion !?¤!&#"¤%!.

Other error sources to be aware of:

  • Naming conflicts between your registeres user controls on a page and other variables on the same aspx page OR in the user control itself. Resolution: Rename all your user controls in the Register statement, for example, use the 'ux' prefix.

Other tasks:

  • The language files are not updated automatically, and have to be copied/updated manually.
  • Copy all the new template files intot the new project library (aspx, ascx and cs files). Make sure you don't overwrite your own customizations.
  • Set the correct namespaces - search and replace - but has to be done :-)

Articles you should take a look at BEFORE you start the migration process:

Creating and using CAML Queries

To query SharePoint for data you need to write CAML queries. Complex queries are not easy to write, and therefore you are in a strong need for good tools. Lucky for you AND me there are a couple of these around which you just have to have:

  • U2U Caml Builder - on the web. Link here.
  • STAMIT's Caml Viewer - on CodePlex. Link here.
  • Tips & tricks working with CAML queries. MSDN article ; Operators s null = IsNull, is not null = IsNotNull, etc.

Those 2 tools are good companions. Without tools like these writing the right queries is an error prone challenge, but now .... its much simpler and quicker!

A simple CAML query that is easy to write, but even easier to extract using the mentioned tools:

System.Text.StringBuilder sbQuery = new

sbQuery.Append(" <OrderBy>");
sbQuery.Append(" <FieldRef Name=\"Sortering\" />");
sbQuery.Append(" </OrderBy>");
sbQuery.Append(" <Where>");
sbQuery.Append(" <Neq>");
sbQuery.Append(" <FieldRef Name=\"Page_ID\" />");
sbQuery.Append(" <Value Type=\"Number\">" + properties.ListItem["ID"].ToString()
+ "</Value>");
sbQuery.Append(" </Neq>");
sbQuery.Append(" </Where>");

string sResult = sbQuery.ToString();
SPQuery q = new SPQuery();
q.Query = sResult;

SPListItemCollection val = list.GetItems(q);

Using IsNotNull:

sbQuery.Append(" <Where>");
sbQuery.Append(" <IsNotNull>");
sbQuery.Append(" <FieldRef Name=\"MyField\" />");
sbQuery.Append(" </IsNotNull>");
sbQuery.Append(" </Where>");


Saving/storing Outlook 2003/2007 messages and attachments in a SharePoint library

SharePoint is absolutly not perfect when it comes to e-mail administration. There are several limitations when it comes to storing e-mails and e-mail attachments from Outlook:

  • Attachments are NOT saved in the library automatically - you have to remember to save it with an *.msg extension
  • You ar not prompted to fill inn mandatory fields defined on the list

Read more in SharePoint 2007 Better For Managing Outlook Messages?


Migrating content from Microsoft CMS 2002 (MCMS 2002) to SharePoint 2007 results in a "Attempted to read or write protected memory" error

I've been working on a case where we should migrate content from a Microsoft CMS 2002 (MCMS 2002) database to the new SharePoint 2007 solution. We quickly run into a severe an unrecoverable error, "Attempted to read or write protected memory", when the migration procedure in SharePoint where trying to export data from the CMS 2002 database.

Microsoft Support identified the error and came up with a work-around;
  • Set the UserSid column in the AEUser table in the CMS 2002 database to null
  • Run the migration proceudre from SharePoint Administration again.

It worked! Well done Microsoft.


Creating Custom Actions

Follow these steps to create custom actions and make them available in SharePoint Designer and in the SharePoint solution(s):

Writing your action:
  1. Start writing your action; inherit from the the Activity class
  2. Define your static Dependency Properties that points to your public properties
  3. Override the Execute method
  4. Compile it: MyNamespace.MyActivity
  5. Assign a strong name to your library

Distribute your library:

  1. "GACC" your assembly - or assemblies. Your activity my relay on other assemblies and then these must be added ass well. Add the same assemblies to the SafeControl section in web.config.
  2. Add your library to the authorizedTypes section in the sharepoint application web.config
  3. Make your activity available to SharePoint designer by adding it to the \12\template\1033\workflow\wss.actions file, and placing your action definition inside the Action section
  4. Reset IIS

Of you go:

  1. Open SharePoint designer
  2. Select your activtity and add the defined parameters.
  3. Great!!! .... hopefully ... debug!

Articles with more details:

Possible errors with solutions:



Small things that is important to remember

1) If you want to add custom inline code in your master pages or page layouts:

  • Add the following line to your web.config file
  • <pageparserpaths>
  • <pageparserpath includesubfolders="true" allowserversidescript="true" compilationmode="Always" virtualpath="/*">
  • </pageparserpaths>
  • Mike Walsh

2) Add som inline code to switch master pages, for example, if you want to switch to printer friendly master page:

<script language=CS runat=server>

protected override void OnPreInit(EventArgs e)
SPWeb myWeb = SPControl.GetContextSite(Context).OpenWeb();
string strUrl = myWeb.ServerRelativeUrl + "/_catalogs/masterpage/print.master";
this.MasterPageFile = strUrl;


More code
Serge van den Oever


Windows Communication Foundation

Well, this is not a SharePoint specific technology, but important to any application that will "live" in the "connected society". Here are some tips on where to start if you are new to WCF:
  • WCF 101 . From description of what WCF is, an HelloWorld example, to....

Business Intelligence, reporting and analysis in Office 2007

Writing a presentation and creating some demos of the cababilities with combining Windows SharePoint Services and SQL Server 2005 Reporting services, Excel 2007, Excel Services 2007 and SQl Server Analysis Services I used the following sources to get me going:

It's a lot!!!


WSS 3.0 Administration Tips & Tricks

Check out these tips & tricks

Security in SharePoint 2007

The following link on TechNet, "7 New Features That Enhance Security in SharePoint", explains the new security improvements in SharePoint 2007:
  • Pluggable Authentication Provider
  • Forms based authentication wnd web based SSO
  • Encrypting connection strings
  • Alternate Access Mappings and Zones
  • Target content for secure collaboration
  • Integrated pluggable SSO
  • Information Rights Management (IRM)


Checklist with tips on how to write Custom Web Controls

When writing web controls make sure that you have done the following:

  • Assign your controls values the CreateChildControls event and ONLY there. I they get their values in the class declaration they will be reset every time the page loads (on postbacks)
  • Make sure that you inherit from the INamingContainer - if not you may not be able to pick up all events correctly (e.g. button clicked events)

More to come ...


Customizing My Site

As I was about to customize My Site - by changing the onet.xml - I came across an article by Steve Peschka (SharePoint Rangers Team). Good for me! :-) It is not recommended to ever change the onet.xml when making changes to My Site (unsupported state, issues when upgrading to later versions, etc) and how the private view of My Site is provisioned. Features (and more features), master pages and custom server controls is the way to do it in 2007.

These are the recomended steps that should bring you home safe:

  1. Create a new master page to be used for your my sites.
  2. Create a feature that runs a code snippet that directes SharePoint to use your new MySite master page instead of default.master
  3. Add a feature stapler feature which will run your my site master page feature when a new My Site has been created. Not only does this feature set the new master pages, but also other properties needed to control the behavior and logic in the custom web control (see step 4)
  4. Add your own custom server control to your my site master pages. This control will be responsible for adding and changing web parts to your my site (the private view)
  5. The public view of my site may be changed in SharePoint designer. Open the page http://mysitehost/person.aspx?yourdomain\username

And when I had done a lot of work I found this great release of a My Site Create customization solution on CodePlex. You will find it here. Written by Steve Peschka with others.

I'm currently adding new customization elements, such as:

  • adding and removing navigation elementes
  • adding and removing lists
  • adding list items to lists
  • etc.

It will grow with time as the requirements for customization changes.


Using a feature to simulate a WebCreated / SiteCreated events

In Sharepoint there is no SiteCreated or Web Created events. You therefor have to use other means to execute logic after the web or the site has been created.

Article that put me on the right track

This type of feature stapling is also used when branding the private view of My Site. Feature Stapling has become THE way to do branding and customization in SharePoint.


ASP.NET Ajax articles and sources

Some very good sources to help you, me, everybody to become a better Ajax developer:

More to come.


Working with EPiServer also?

Yes, I do. Great product as well - the number one web publising tool. Check it out:


For my Norwegian readers - funny words in the Norwegian release

Jeg har hatt den glede av å kunne jobbet både med den engelske og den norske versjonen av SharePoint - og det er ikke enkelt! Ikke alltid godt innarbeidede utrykk har sin like opplagte norske utgave:

Crawle = Kravle
Crawler Search = Kravlesøk
AD Forest = AD skog
Name (presence) = Navn (presentasjon)

Du kan jo da tenke deg hva "Perform a crawler search in the complete AD forest" vil bli oversatt til - "Utføre et kravlesøk i den komplette AD skogen". Minner jo mest om en beskrivelse av å være litt for full, på tur gjennom skogen en sen kveld, og lete etter en halvfull spritflaske som man har mistet. :-)


Need to deploy your SharePoint 2007 solutions quickly?

Then follow the following steps:

  1. Create your solution (that has to be done by you completely :-))
  2. Download and use the VS 2005 Solution Deployment template from TheKid. Download it from here.
  3. Then download and use the great solution installation tool from Lars Fastrup, Ontolica. Get it from here.

I think this will save you a lot of time (and possible troubles).

Non Microsoft SharePoint 2007 Products

Here are a list of products that I (and collegues) have tested and found very exciting and promising, and that are worthwile digging deeper into:

Search Enhancements
Offline work

Updates will follow.


How to develop custom code in SharePoint 2007

There are several ways you can extend and customize SharePoint with your own code. Chris Johnsen has in his article described the pros and cons for some of these methods.

  • Custom built web parts
  • An application in the _layout folder
  • User controls and the Son of Smart Part
  • ASPX pages added to a SharePoint Site

Read his article here.

The Kide have added some pros and cons for different ways on how to develop sites in SharePoint 2007 and WSS 3.0:

  • Use the SharePoint Solution Deployment
  • Develop on one farm and use Site Export/Import or Content Deployment

Full article here.

SharePoint 2007 licensing

Finally, I've found some official Microsoft information on SharePoint 2007 licensing. They are estimates, but they give a hint on what the cost will be.

For some background information and licenses tips&tricks:

  • Product features and comparison - which SharePoint version contains what - Microsoft Article: Read more...
  • How to buy SharePoint - product and license overview: Read more...
  • Which licenses do you need in different scenarios: Read more...
  • Critical view on SharePoint for internet facing sites: Read more...

Complete article
ServersEstimated Price
Office SharePoint Server 2007$4424
Office Forms Server 2007$4424
Office SharePoint Server 2007 for Search Enterprise$57,670

Client Access LicensesEstimated Price
Office SharePoint Server 2007 Standard CAL$94
Office SharePoint Server 2007 Enterprise CAL$75
Office SharePoint Designer 2007$187

Internt facing sitesEstimated Price
Office SharePoint Server 2007 for Internet sites$40,943


Problems installing Windows Sharepoint Search services ?

If you get the following error:

The call to SearchServiceInstance.Provision (server 'YourServerName') failed. Setting back to previous status 'Disabled'. System.ComponentModel.Win32Exception: OSearch ('YourSearchAcct') at Microsoft.SharePoint.Win32.SPAdvApi32.ChangeServiceConfiguration(String strServiceName, String strAccountName, SecureString sstrPassword, IdentityType identityType, Boolean bDontRestartService) ....

Then YOU MUST CHECK that you have provided the user name in the format [domain]\[username]


Installing Office 2007 Enterprise, but not able to remove all Beta stuff?

Then download and run MyUninstaller from http://www.nirsoft.net/. Why? Because you will NOT be able to remove all the 2007 Beta things from Add/remove programs. Go for it!

And if that doesn't work , then run the "cleaner" (even it states that do not use this tool to remove Office 2007 component):


Controlling Site Navigation in Site Templates

The following properties may be added to the feature "
541F5F57-C847-4e16-B59A-B31E90E6F9EA" to control the sites navigation controls (global and current):

  • InheritGlobalNavigation. Use the same globa main menu navigation as the parent.
  • InheritCurrentNavigation. Use the same current navigation (i.e. the left quick lanucn menu) as the parent.
  • IncludePages. Set to true to show pages in the site the navigation tree.
  • ShowSiblings. Set to true if you want sub sites to be displayed in the navigation tree.
  • OrderingMethod. 'Automatic' - Sort all node types automatically, and group pages after other types. 'Manual' - Sort all types manually. 'ManualWithAutomaticPageSorting' - Sort all types except pages manually. If pages are included, sort them automatically and group them after all other types.
  • AutomaticSortingMathod. CHECK THE SPELLING!!! 'CreatedDate' - Sort items by time of creation. 'LastModifiedDate' - Sort items by time of last modification. 'Title' - Sort items alphabetically by title.
  • IncludeInCurrentNavigation.
  • IncludeSubSites.
  • IncludePagesOrderingMethod.
  • SortAscending.

Again - check how method i spessled in AutomaticSortingMathod :-) Again Luts Roeder's .NET Reflector was of great help to identify this SharePoint error.

Check the code in the class Microsoft.Sharepoint.Publishing.NavigationFeatureHandler, method ApplyNavigationProperties, and the code lines where the internal dictionary is created.


Common errors when working with Site Templates

Below is a list of errors that I've gotten when I've been working with creating custom site and portal site templates. The errors are sometimes VERY hard to find!

It is important to remember that the sites are created on the fly so if the portal site template is provisioning multiple site you can check the tree structure to se where the provsioning failed.

"The file or folder name contains characters that are not permitted."

  • Most often this error has been casued by incomplete resource statements in the Url-field in List statement in the site configuration or,
  • when a list view is used in a modul definition, e.g. missing ';',
  • or misspelled resource names,
  • referencing the wrong resource file/library, etc.

"Cannot complete the operation".

  • Confllict between the module name in the configuration section and the named used in the module definition
  • xml errors - missing end tags,
  • when you provision a new list there is a mismatch between the list type and the feature id, and it looks like the 3 last digits in the feature id should match the list type!

Speed up development and testing

Following tips & tricks can be useful in speeding up the development process when customizing SharePoint 2007:

  • Recycle the application pool instead of making an iisreset. Works in most cases. Download tool/application.
  • Adding the right schema definitions when working with the different xml-files. They are located under [12]\template\xml and are added to the xml-file by setting the Schema attribute of the xml-file which you are editing, and thereafter selecting the same schema in th xmlns attribute.

If you just want to test ot some simple code - maybe on a server without Visual Studio installed - try the Snippet Compiler tool. A "mini visual studio" to write and test code snippets "on the fly".

Creating Complex Portal Site Templates

Creating large portal site templates that are involving provisioning of many differente webs, sites and custom lists are a challenging task - not how to do it but managing all those details in the onet.xml files. I've done it for one of mye customers, and below is a descripion of the steps that are involved, which files to customize and possible pitfalls or errors that should be avoided.

First, the following files are a part of a Portal Site Template:

  • [12]\templates\1033\xml\webtemp_myportalsite.xml - all the site templates that are used and pointers to where they configurations my be found
  • [12]\templates\sitetemplates\myportalsite\*.* - the site configurations. I've collected all my custom templates in on directory.
  • [12]\templates\sitetemplates\mywebmanifests\myportalsite.xml - the portal site definition with all the webs and sub webs which it contains and which sould be provisioned.
  • [12]\resources\myportalsite.resx - resources used in the portal site and the site defintions. It's a good idea to use a resource file beacause you then can change titles, descriotions, names, locations, etc without entering the onet.xml file which becomes very large.

Suggested process

  • Design the portal site template with all its contents in SharePoint. Build the structure, the web part zones, page layout, master pages, etc. that will be needed. The result of this process is what you then will bring into the Portal Site template. If the structure and content is not well defined when you start it will be more time consuming to do make changes in the onet.xml file.
  • Create a "dummy" team site which includes ALL the web part types that you have used in your portal site.
  • Run SharePoint Solution Generator on the "dummy" team site to create a site template. The content of this template you can then cut and paste in all the site templates that are included in you owen portal site template. Saves you a lot of time and uneccessary cursing :-)
  • Identify all the different site templates that will be needed and enter these into the webtemp_myportalsite.xml file
  • Build the portal site structure in the mywebmanifest\myportalsite.xml file
  • Build the site templates in the sitetemplates\myportalsite\* catalog and the corresponding onet.xml file
  • Adding web parts to the definition. Export the web part from the site and cut and paste the web part data/definition into the onet.xml file.


Dou you want to create great applications without any code?

Then SharePoint Designer is the answer. Looked through some great demos from Microsoft yesterday and they made my head spin - a lot of ideas on how to create new applications quick and easy. You can imagine creating the applications while the business persons are sitting in the same room telling you how they want the application to work - that's an agile process!. Combining lists as sata storage, data view, custom input views, web parts with (including connections), workflows, etc. makes it possible to create pretty cool and useable applications.

Examples to come:

Application Profiling - finding the code lines that consumes alle the CPU power

is not an easy task if there were no tools around to help us, but there is an answer: JetBrains' dotTrace 2.0. It took me only 2-3 ours to download, install, run , and pin point why our CMS site used all the CPU for 4-7 s per request! I did this on a live site - right out of the box.

Instead of guesswork dotTrace gave me an direct asnwer to where the "power leakage" was. And when you know exactly what the problem is - a quick an easy solution is just around the corner :-)

So check it out: www.jetbrains.com


SharePoint 2007 MUST HAVE Tools

Below is a list off tools and applications (with or wotuout source, freeware, shareware, applications with licenses,etc.) that I've found very helpful in my SharePoint projects.

SharePoint Solution Administration

  • Todd Baginski's Feature Manager. Great tool for browsing and installing/removing features on your SharePoint installation.
  • SharePoint 2007 Explorer. Great tool to investigate your site and see all the parameters that is set. More or less the whole object model is made visible in a click and browse manner.
  • SharePoint Feature Pack (Scott Hillier). Print Liste, Theme Changer, PlaceHolder Master, Presence Contact List, Content Type Hierachy, Log Viewer, etc.
  • IEWatch. To check what's going on in IE when a page is being loaded; files being loaded, from where the files are loaded, time it takes, etc.

Mini tools

Business Data Catalog (BDC)

  • BDC Meta Man (license). THE tool for making external data available in SharPoint lists and applications.
File Management


Customization of the application.master page - error sources

All the standard SharePoint pages placed in the /12/template/layouts/ have their own master page: /layouts/application.master. To create a common look and feel for your site - including the admin pages used by a site admin or a site editor - this master pages has to be customized. This my be a little bitt challenging and I think you will be best off starting with the xisting one, and NOT from scratch.
Before you start creating a new application.master set CustomErrors="Off" and .. in the web config. Then you will get "developer friendly" error messagess.

Mistakes that I've made that kept me rather busy:
  • Place the placeholder "PlaceHolderUtilityContent" AFTER the ending FORM-tag tag. If not the post backs stops working
  • Forgot to create a HEAD-section similiar to the original application.master
  • Be very carefull when adding custom javascript components. I had added a componenten that forces all eksternal link to pop up in a new window, but that javascript made the tree-view control for setteing the site/page order "pop away"
  • Missing place holders are an obvious error source

Roles and responsibilities in a SharePoint 2007 project

SharePoint Portal 2007 is a challening product and nobody can be a specialist in every topic related to implementing SharePoint Portal in an organization. Below is a suggested set of roles and responsibilities, and the skills and experience that these people should have.

  • Project leader - runs the project on time, on budget and with the right functionality. Should have a good overview and understanding og SharePoint 2007 and its capabilities and limitiations.
  • Business and Process Analyst (s) - guide the project on which process should be enhanced or changed and why. Verify that SharePoint solution meets the requirments.
  • SharePoint Expert user(s) - setting up SharePoint with sites, publishing sites, document centers, lists, blogs, etc.
  • SharePoint Architect - thorough understanding of SharePoint (admin, developing, functions) and advise when and how new components/web parts should be developed. Microsoft Technologies in general; .NET 2.0 og .NET 3.0, Exchange, Active Directory, Office 2003/2007, IIS and infrastrcture in general.
  • SharePoint Customizer - do all the "non-programmin" customization of the SharePoint solution. Good understanding of SharePoint and the different web parts that are included. Experience with html, stylesheet, caml, xml, xslt, javascript, SharePoint Designer and InfoPath 2007
  • SharePoint Administrator - setting up the SharePoint infrastructure with servers and services; SharePoint 2007, Exchange Server, Active Directory, Windows 2003 and 2008 Servers, SQL Server 2005, IIS 6.0 and 7.0, network infrastructure, ISA server, etc..
  • SharePoint Developer - developing custom web parts and components. Experienced asp.net 2.0, web parts, master pages, Ajax developer and detailed knowledge of the SharePoint 2007 object model. Javascript experience.

Roles and responsibilities in a SharePoint 2007 project

SharePoint Portal 2007 is a challening product and nobody can be a specialist in every topic related to implementing SharePoint Portal in an organization. Below is a suggested set of roles and responsibilities, and the skills and experience that these people should have.

  • Project lader. Run the project on time, on budget and with the right functionality. Should have a good overview and understanding og SharePoint 2007 and its capabilities and limitiations.
  • Business and Process Analyst (s) - guide the project on which process should be enhanced or changed and why. Verify that SharePoint solution meets the requirments.
  • SharePoint Expert user(s) - setting up SharePoint with sites, publishing sites, document centers, lists, blogs, etc.
  • SharePoint Specialist - thorough understanding of SharePoint (admin, developing, functions) and advise when and how new components/web parts should be developed.
  • SharePoint Customizer - do all the "non-programmin" customization of the SharePoint solution. Good understanding of SharePoint and the different web parts that are is included. Experience with html, stylesheet, caml, xml, xslt and SharePoint designer
  • SharePoint Administrator - setting up the SharePoint infrastructure with servers and services.
  • SharePoint Developer - celpoing custom web parts and components.


Are you going to access applications through the Business Data Catalog?

Then you should really check out the BDC Meta Man! It will get you going in seconds, and it offered at a very good price. The tool creates an Application Definition straight from the database tables or the web services wdsl files. Your data will be accesible in SharePoint by point-and-click.

Check it out on: http://www.bdcmetaman.com/default.aspx

After that you can spend time on challenging data integrations (if needed :-))


Writing custom activities for the Windows Workflow Foundation (WWF)

I'm currently writing a custom SMS sender activity that I'll add to our SharePoint 2007 solutions. The .NET 2.o provider modell gives me the opportunity to write and apply different SMS sender providers for different mobile operators/gateways without changing the how the windows workflow activity itself is going to work. The activity becomes VERY simple, while all the details are hidden in the providers.

To get me started on writing the activity I used the following introduction; How to write a Custom Workflow Activity (or for even more help on writing custom activities "How to write a Designer Component") . For a good theoretical basis I've "scanned" (to be read in detail later) the book "Essential Windows Workflow Doundation, by Shukla and Schmidt.

The book "ASP.NET 2.0 Security, Membership and Role Management", by Stefan Schackow gives an excellent overview (and details!) on how the Provider model is applied in ASP.NET, and how it can be utilized in new applications. Several design patterns are in use; Strategy, Factory, Singleton, and Faqade. Check out and download the code (see chapter 9) to se how easy new providers can be implemented.

More on writing activities: To get an overview: http://www.ideseg.com/AddCustomWorkflowActivitiesToSharePointDesignerPart1.aspx Details: http://www.ideseg.com/AddCustomWorkflowActivitiesToSharePointDesignerPart2.aspx