October 18, 2008

Moving forward...

It's been a while since I last blogged, but rather than worry about it I'll just have to live with it! As always, too much to do and never enough time.

I have spent some time trying to get users engaged in using SharePoint recently. This is never easy as the change in culture required is pretty big. I often wonder whether we should just decide to switch off shared drive write access and force users to use SharePoint instead. Will they then eventually see the benefits or will we alienate them?

I ran two SharePoint Technology Overview sessions, both well attended and I hope well received. I aimed at the "what is SharePoint?" audience to try and engage those who had never used it before. It seemed to work. I wanted them to start thinking about how they might use SharePoint, even for trivial things.

It was a challenge for me, as a developer, to pitch at user level, but I thoroughly enjoyed doing it. Never one to stand in front of a crowd, it surprised me that I was able to talk for 90 minutes without a break! This was kind of outside my comfort zone but I would certainly do it again.

Working for a large company and being one of the key exponents of SharePoint is an interesting place to be. There are a lot of things I want to do with it but it's a struggle to make it happen. We need to take a few risks and get that snowball building momentum. I have a vision for how we should use SharePoint but there are many obstacles in the way, some can be overcome. Others will require persuasion and investment, although in the current climate this will not be easy.

I will be starting on a small scale. My team will hopefully be growing and I can include SharePoint development in my service offering now.  Want my team to be skilled in all areas, from consultancy to project management, from development to system testing. They need to be able to build a SharePoint virtual environment and understand how it hangs together. They need to understand it all from a user's point of view. Ideally I want them to be solution architects too.

Is that too much to ask? I don't think so, not if you really want to succeed in SharePoint.

I still spend far too much time trying to play with SharePoint just to see what I can do. Probably too much time :-)

I feel the need to set myself a stretching challenge, something that will allow me to use all of the things I need for the WSS and MOSS MCTS certification.

But for now, I need to clear the backlog of SharePoint projects I have at work. If only one of them was challenging...

August 19, 2008

SharePoint? What's that then?

As an advocate of Microsoft Office SharePoint Server I spend a lot of time explaining the benefits of the product. I understand that not everyone is as interested in this as I am, but I do find it a little odd that for a product that offers so much in the collaboration and productivity stakes that MOSS does that we still struggle to get the appropriate buy-in and support.

Simple things, such as a centralised absence management application or an expenses processing system, would bring benefits to an organisation that doesn’t have these things. This is just small stuff. Imagine the savings, both in take and money, that could be made by tackling some of the larger opportunities.

So why do we struggle so much? I think the issue is that many companies do not see their intranet as a serious productivity tool. Their judgement is clouded by their experiences on the internet. The internet and an intranet are two very different beasts. They have different purposes, different audiences and different content.

But do they really? Or is it a matter of scale?

I see the internet as three distinct “offerings”;

Services – what do I mean by services? Well, any site that offers it’s audience a service, be it online banking, e-commerce or a window to a high street shop. They are all offering you something and you have to pay for it.

Information – this group would include not-for-profit and government facing websites. The World Health Organisation (WHO) would be an example. The British Library another. This group would also include user groups, such as the SharePoint User Group UK.

Throwaway – these are the kind of sites that have a short shelf life. Sites thrown together that don’t really serve any purpose and usually wither and die due to lack of interest by their owners. These kind of sites often appear when free hosting is offered by a service provider.

There is a fourth category, adult entertainment, which could be argued that it would sit under the Services section – I suppose there is a service in there somewhere! We’ll ignore it as we only want to talk about the useful stuff.

Services have a purpose, they are there to generate money. Information covers knowledge exchange and Throwaway is, well, expendable! It is possible for sites to start out in the Throwaway section but move into Information section as they become more popular and then start to serve a purpose.

So, what does this have to do with SharePoint? It’s all about perception. If your experience is based around the internet then approximately 85–90% of the sites you come across will be in the Throwaway section and will have not painted a very good picture. You may also have used the Services and Information based sites to a limited degree but you have probably had a good reason to use them. Fact finding and product ordering? The number of people who have not used e-commerce sites is getting smaller by the day.

Let’s look at this from the point of view of a senior manager who has very limited knowledge of SharePoint. How do you convince them to spend the time, cost and resources into supporting an enterprise installation of MOSS? How do they see the end product? When do they get to realise the benefits? What do we need it for? How much?? You can just imagine the conversation.

We could do “death by PowerPoint” to get the message across but they would probably be asleep by the end of it. So what is the answer?

A forward-seeing senior manager might commission some investigation work – go and see what other companies are doing. Do they have applications that you can see? Personally I think this is the best way of selling SharePoint. Frankly the document management and collaboration side of it is just the tip of the iceberg and they’re pretty self explanatory.

Extolling the virtues of SharePoint as a productivity tool is always a good starting point. Most organisations have shared network drives, some may have Microsoft Exchange Public Folders. They will all have information stored in various places and will most likely not have a robust information architecture for it all. SharePoint would certainly help here – documentation all in one place with version control and the ability to check-in and check-out documents. Think of the collaboration opportunities let alone search! Think of the reduction in the number of emails with large attachments flying around the network. Think about the workflow and approval functionality. Think of the benefits that could be realised and this is just the document management side of things.

Let’s take it a step further – how many spreadsheets are out there that do nothing but hold lists? No functions, no formulas, just basic data. Again, these files are stored in various locations and are not exposed to any kind of search facility. You can’t easily share them. They serve virtually no purpose as they are. Now if we were to move them to a SharePoint custom list, what could we do with them? They are still just lists of information but they are now exposed to the SharePoint Object Model – they can be used by other applications, other users and other lists. More often than not if you need a list with that information in it then someone else is also likely to. Why not share it? Make it useful.

Next stop? Online absence management system? Online expenses processing? All pretty simple stuff that we all know would make life a lot easier if they were available as online applications.

Where do you stop? I went on a course for SharePoint Designer 2007 with Learning Tree International last September and the instructor said something quite important – “if you can think it, you can do it in SharePoint” – I have not seen anything to the contrary yet.

Imagine an application which linked into your profile data on My Site and exposed everything you need for your daily routine in one place. Fully customisable. Your home page built around your role and your needs. All of those paper processes are now online. All of the information you need to get your hands on is available and searchable. Real time data appears via a dashboard to senior management. Detailed data available to those that need it. Sounds ambitious? With a bit of time and investment there is no reason why all this should not be available to everyone that uses SharePoint. Would you be a fool not to back something like this?

So, to all of you out there who are trying to get SharePoint implemented as a strategic solution, keep at it – one day those with their hands on the money will see the light!

As always, your comments on my posts are welcome.

 

Until next time…

July 30, 2008

SiteSpider

I was recently asked to help out with a problem where we had to add a new field to every document library in our SharePoint 2007 farm.

We covered new sites using Feature stapling to add the new field to the document library via the GLOBAL template, but we needed to make sure all existing sites had the new field also. I could feel a console application coming on…

Having not done anything like this before, I needed to work out what I actually needed to do.

Outline

Figure 1.0

Figure 1.0 above was my (very) high level outline of what I needed to do. Obviously I needed to break this down further, put some logic behind it all and because it needed to be run on multiple web applications, I wanted it to accept some parameters. All quite new stuff for me.

I normally like to break things like this down into small chunks, so the first thing I wanted to do was open the selected top-level site collection and list all the webs and sub-webs.

Initially I just wanted to list out the top-level site collections, so I tried out this snippet;

        public static void AddColumntoList()
        {
            using (SPSite sites = new SPSite(“http://sitename”))
            {
                foreach (SPSite site in sites.WebApplication.Sites)
                {
                    Console.WriteLine(site.Url);
                }
            }
        }

There is no doubt a better way of doing this, or at least a more efficient one, but this worked for me. So now we have a list of all of the top-level site collections to work with. The Url is just one of the properties available from the SPSite site object.

        // All site collections in parent web application               
        foreach (SPSite site in sites.WebApplication.Sites)
        {
              Console.WriteLine(site.Url);

              // All web sites in site collections
              foreach (SPWeb web in site.AllWebs)
              {
                   if (web.ParentWeb == null)
                   {
                       Console.WriteLine("     " + web.Title);
                   }
                   else
                   {
                       // Indent web sites
                       Console.WriteLine("          " + web.Title + " (a subsite of " + web.ParentWeb + ")");
                   }
              } 
        }

Because site.AllWebs in the foreach statement above gets all webs and sub-webs in one go, I’ve added in a check to see if web.ParentWeb is null, this looks for the sub-webs and then indents them when they are displayed through the console.

So, where next? We need to identify the document libraries that are in each web.

        // Display all lists within each web site
       
SPListCollection listcollection = web.Lists;
        for (int i = 0; i < listcollection.Count; i++)
        {
             if (list.BaseTemplate.ToString() == "DocumentLibrary")
             {
                 SPList list = listcollection[i];
                 Console.WriteLine("               " + list.Title);
             }
        }

In the above code you can see that we have built a list collection for the current web and then, in this example, checked to see if the base template used is a document library. Finally we write out the name of the list.

Because I don’t want to add the field to internal document libraries, I can add in an additional if clause before the SPList statement.

        if (list.Title == "Site Collection Documents" || list.Title == "Site Collection Images" || list.Title == "Form Templates" || list.Title == "Style Library" || list.Title == "Reporting Templates")

The result of this if clause is to do nothing at this stage, the Console.WriteLine would be in the else part of the statement.

The next step is to check to see if the field already exists;

        if (list.Fields.ContainsField("Confidentiality Level") == false)
        {
              .....
        }

The final part of the process is to actually add the new field :-)

        // Add Confidentiality Category field
        string fieldName = list.Fields.Add("Confidentiality Level", SPFieldType.Choice, true);
        SPFieldChoice categoryField = (SPFieldChoice)list.Fields["Confidentiality Level"];

        categoryField.Choices.Add("Public");
        categoryField.Choices.Add("Internal");
        categoryField.Choices.Add("Confidential");
        categoryField.Choices.Add("Highly Confidential");
        categoryField.DefaultValue = "Highly Confidential";
        categoryField.Update();

        Console.WriteLine(" *** Confidentiality Level has been added to " + list.Title + " ***");

That’s pretty much it. I have added some extra coding around it all to add in two parameters, the site collection to be updated and a switch. I wanted to be able to execute the application and go through the whole process without actually performing the update. I have added a /norun switch which will do just that. The alternative is the /run switch. The final switch is /backout, which removes the field, using the following code;

        list.Fields["Confidentiality Level"].Delete();

There is, of course, an if clause around it! So there it is – I have tested the full code on my virtual environment and everything works just fine.

For those of you who would like the full code, I’ve attached the C# file here – SiteSpider.cs – I hope you find it useful! Please do post any changes you make here, especially if you can make the code more efficient!

 

 

 

June 01, 2008

Site Definitions - Customisation Part I : Cloning

There are various ways that you can customise a SharePoint site, some easier than others. I think that before you take the first steps to customising your environment, you need to consider what your final deliverable is going to be. There seems to be some disagreement on whether site definitions or Features is the way to go. I don’t profess to know the answer to that one but it does seem to depend on what you are trying to do.

 

For this post I will look at cloning an existing site definition, the Team Site. We won’t be modifying the definition at this time (we’ll save that for a future post). Your cloned site definition will appear as a new entry on the Collaboration tab.

 

First things first…

 

Cloning the “Team Site” site definition

The first thing we need to know is where the site definitions are actually stored. To confuse things, Microsoft called the directory SiteTemplates and you can find it here;

 

          C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\SiteTemplates

 

Within the SiteTemplates directory are multiple sub-directories. Which ones you see will depend on whether you have Windows SharePoint Services 3.0 (WSS3.0) or Microsoft Office SharePoint Server 2007 (MOSS) installed. The image below shows the MOSS installed site definitions

 SiteTemplatesDirectory

Figure 1 – The SiteTemplates Directory

 

The next thing you will notice is that there isn’t a directory called “Team Site”. The definition is held within the STS directory, so this is the first place we need to look. The directory structure for STS is as follows;

 STSDirectory

Figure 2 – The STS Directory

 

Within the xml directory is a file called ONET.XML. We’ll come back to ONET.XML later on.

So, the first thing we need to do is take a copy of the STS directory and then rename the copy. In this example I have called my new site definition CUSTOMSTS. We will need this name later on.

 CUSTOMSTSDirectory

Figure 3 – The CUSTOMSTS Directory

 

You should now see your CUSTOMSTS directory within SiteTemplates. Leave this as it is for the time being.

 

The next step is to make sure that our custom site definition appears in the Collaboration tab on the site creation page. There are a series of XML pages that tell SharePoint what site definition to display and on what tab. For these files we need to look at another directory, which you can find here;

 

          C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1033\XML

 

Within the 1033\XML directory are several XML files, as shown below

 1033XMLDirectory

Figure 4 – The 1033\XML Directory

 

The keen-eyed among you may spot a pattern in the naming convention used here. The majority of the files begin with WEBTEMP. The second part of the file name will correspond to the name of one of the sub-directories within SiteTemplates, so;

 

          WEBTEMPSPS.XML --> SiteTemplates\SPS

          WEBTEMPOSRV.XML --> SiteTemplates\OSRV

          WEBTEMPOFFILE.XML --> SiteTemplates\OFFILE

 

There are a couple of XML files here that you do not need to worry about at this time;

 

          DEADWEB.XML

          RGNLSTNG.XML

 

These XML files are used for administrative purposes and shouldn’t be touched.

 

So, where is WEBTEMPSTS.XML? Good question! For some reason, Microsoft decided to bundle multiple site configurations together into WEBTEMP.XML and WEBTEMPSPS.XML.

 

The following table provides a bit more detail on what is where.

 

XML File

SiteTemplates Directory

Site Creation Page Tab

Template Name # Configuration ID

Tab

ID

Hidden

WEBTEMP.XML

 

Global template

GLOBAL

 

0

Yes

WEBTEMP.XML

\STS

Team Site

STS#0

Collaboration

1

No

WEBTEMP.XML

\STS

Blank Site

STS#1

Collaboration

1

No

WEBTEMP.XML

\STS

Document Workspace

STS#2

Collaboration

1

No

WEBTEMP.XML

\CENTRALADMIN

Central Admin Site

CENTRALADMIN

 

3

Yes

WEBTEMP.XML

\MPS

Basic Meeting Workspace

MPS#0

Meetings

2

No

WEBTEMP.XML

\MPS

Blank Meeting Workspace

MPS#1

Meetings

2

No

WEBTEMP.XML

\MPS

Decision Meeting Workspace

MPS#2

Meetings

2

No

WEBTEMP.XML

\MPS

Social Meeting Workspace

MPS#3

Meetings

2

No

WEBTEMP.XML

\MPS

Multipage Meeting Workspace

MPS#4

Meetings

2

No

WEBTEMP.XML

\Wiki

Wiki

WIKI

Collaboration

4

No

WEBTEMP.XML

\Blog

Blog

BLOG

Collaboration

9

No

WEBTEMPBDR.EN-US.XML

\BDR

Document Centre

BDR

Enterprise

7

No

WEBTEMPOFFILE.XML

\OFFILE

Records Centre

OFFILE#0

Enterprise

14483

Yes

WEBTEMPOFFILE.XML

\OFFILE

Records Centre

OFFILE#1

Enterprise

14483

No

WEBTEMPOSRV.XML

\OSRV

Shared Services Administration Site

OSRV#0

 

40

Yes

WEBTEMPSPS.XML

\SPS

SharePoint Portal Server Site

SPS#0

 

20

Yes

WEBTEMPSPS.XML

\SPSPERS

SharePoint Portal Server Personal Space

SPSPERS#0

 

21

Yes

WEBTEMPSPS.XML

\SPSMSITE

Personalisation Site

SPSMSITE#0

Enterprise

22

Yes

WEBTEMPSPS.XML

\SPSTOC

Contents Area Template

SPSTOC#0

 

30

Yes

WEBTEMPSPS.XML

\SPSTOPIC

Topic Area Template

SPSTOPIC#0

 

31

Yes

WEBTEMPSPS.XML

\SPSNEWS

News Site

SPSNEWS#0

 

32

Yes

WEBTEMPSPS.XML

\PUBLISHING

Publishing Site

CMSPUBLISHING#0

Publishing

39

No

WEBTEMPSPS.XML

\BLANKINTERNET

Publishing Site

BLANKINTERNET#0

Publishing

53

Yes

WEBTEMPSPS.XML

\BLANKINTERNET

Press Release Site

BLANKINTERNET#1

Publishing

53

Yes

WEBTEMPSPS.XML

\BLANKINTERNET

Publishing Site with Workflow

BLANKINTERNET#2

Publishing

53

No

WEBTEMPSPS.XML

 

Minimal

MINIMAL#0

Minimal

99

No

WEBTEMPSPS.XML

\SPSNHOME

News Site

SPSNHOME#0

Publishing

33

No

WEBTEMPSPS.XML

\SPSSITES

Site Directory

SPSSITES#0

Enterprise

34

No

WEBTEMPSPS.XML

 

Community Area Template

SPSCOMMU#0

 

36

Yes

WEBTEMPSPS.XML

\SPSREPORTCENTER

Report Centre

SPSREPORTCENTRE#0

Enterprise

38

No

WEBTEMPSPS.XML

 

Collaboration Portal

SPSPORTAL#0

Publishing

47

No

WEBTEMPSPS.XML

\SRCHCEN

Search Centre with Tabs

SRCHCEN#0

Enterprise

50

No

WEBTEMPSPS.XML

\PROFILES

Profiles

PROFILES#0

 

51

Yes

WEBTEMPSPS.XML

 

Publishing Portal

BLANKINTERNETCONTAINER#0

Publishing

52

No

WEBTEMPSPS.XML

\SPSMSITEHOST

My Site Host

SPSMSITEHOST#0

Enterprise

54

No

WEBTEMPSRCH.XML

\SRCHCENTERLITE

Search Centre

SRCHCENTERLITE#0

Enterprise

90

No

 

As you can see, there are quite a few entries that the user doesn’t actually see.

 

Following on with the WEBTEMP naming convention, we need to copy WEBTEMP.XML and rename it to WEBTEMPCUSTOMSTS.XML. Open the new file and remove everything except the following code;

 

<?xml version="1.0" encoding="utf-8" ?>

<!-- _lcid="1033" _version="12.0.4518" _dal="1" -->

<!-- _LocalBinding -->

<Templates xmlns:ows="Microsoft SharePoint">

<Template Name="CUSTOMSTS" ID="1">

  <Configuration ID="0" Title="My Team Site" Hidden="FALSE" ImageUrl="/_layouts/images/stsprev.png"

Description="My Team Site – based on the original STS team site."

DisplayCategory="Collaboration" />

</Template>

</Templates>

 

You can see that I have changed the Template Name to CUSTOMSTS to match the directory we created in SiteTemplates. Title has changed to My Team Site and I have amended the Description field. Save your amendments.

 

We now have a new directory and a new XML file. At this point we will just have a copy of the “Team Site” site definition.

 

To get SharePoint to pick up our new changes we will need to reset IIS, so open a command prompt window and enter IISRESET.

 

Now go back to SharePoint and create a new site – under the Collaboration tab you can see your new site definition, as shown below.

 CreateNewSite_MyTeamSite

Figure 5 – The Site Creation Page

 

You will now be able to create a new site based on the My Team Site definition, although it won’t look any different to a normal Team Site. In the next post we’ll apply a custom master template to the site definition.

 

As always, your comments on my posts are welcome.

 

Until next time…

May 10, 2008

Understanding the RESX Resource Files

When you first start looking through a SharePoint 2007 aspx page you realise that there isn’t an awful lot of actual changeable code in them. Its is pretty much impossible to decode the cryptic references used by the ASP.NET controls, such as text boxes, labels and SharePoint:SPLinkButton.

An example of what I mean can be seen below;

<SharePoint:SPLinkButton id="idNavLinkViewAll" runat="server"
   NavigateUrl="~site/_layouts/viewlsts.aspx" Text="<%$Resources:wss,quiklnch_allcontent%>"    AccessKey="<%$Resources:wss,quiklnch_allcontent_AK%>" />

The item in bold, $Resources:wss,quiklnch_allcontent, will be translated to View All Site Content when the page is displayed in the browser. I’ve used this example from the GLOBAL default.master page as in this case, it is a little more obvious as to what it means. It makes it a little easier to understand when you see one that does make sense!

So, what is happening here?

Rather than hard code all of these textual elements, some of which are repeated on many pages, their values are stored in a Resource file. This allows the developer to change the value in just the one place, where it will be picked up by all of the pages that reference it.

Before we look at the format of the resource file, it’s time for a quick tip:

Tip Start
You’ve found the wss.resx file under the 12 hive’s CONFIG\Resources directory. You have made some changes and checked your web page. It hasn’t picked the changes up even though you have performed an IISRESET. Why is this not working? Well, the CONFIG\Resources directory holds the master copy of the resx files. The one you need to amend will be sitting under;

drive:\inetput\wwwroot\wss\VirtualDirectories\app_name\App_GlobalResources

The directory path may be different depending on your installation. Don’t get confused; once you make the changes in this directory, it will work.
Tip Finish

The App_GlobalResources directory contains a host of resx files. Many of them will be named so that it is (reasonably) apparent which bit of SharePoint uses them.

Tip Start
It’s also worth noting that each web application has its own set of resx files. This means that you can tailor the messages for each web application.
Tip Finish

If we navigate to the App_GlobalResources directory and take a copy of wss.resx we can open it up for editing to see how the file is constructed.

Don’t worry about the top portion of the file for now, we are more interested in the name / value pairs further down.

<data name="quiklnch_allcontent">
      <value>View All Site Content</value>
</data>

The name / value pair shown in the code above is the text called by $Resources:wss,quiklnch_allcontent from the code we looked at earlier. Breaking this down further we see that $Resources: tells SharePoint that it needs to look in its resources library for the translation. WSS is the name of the resource file and quiklnch_allcontent is the name within the resource file that contains the translation text, View All Site Content.

If you were to change the contents between the <value>…</value> tags, the changes would be picked up by all aspx pages that referenced it. You can, of course, update the wss.resx file yourself. Ideally, I believe that you would want to create your own custom resource file by copying wss.resx and removing the name / value pairs that you don’t need and putting in your own.

To do this, create a copy of wss.resx and call it myapplication.resx. Edit the file and remove everything below the first name / value pair. In the case of wss.resx this will be

     <data name="accessDenied_pagetitle">
      <value>Error: Access Denied</value>
</data>

Change the name=”…” and <value>…</value> tags as required. You can repeat the three lines to add more name / value pairs.

Once you have made all of your changes, save the file and make sure it is in the App_GlobalResources directory of your chosen application.

To reference your new resource file, place the following code within your aspx page(s);

<%$Resources: myapplication, data_name_label%>

For example, if you had created a name / value pair called

<data name="site_welcome_message">
      <value>Hello, welcome to my site!</value>
   </data>

You would reference it as;

<%$Resources: myapplication, site_welcome_message%>

Where-ever you used the reference above, the text “Hello, welcome to my site!” would be displayed.

Resource files are an efficient way to manage static text in this way. It is also possible to embed HTML within the <value>…</value> tags. Here is an example;

<data name="folders_pagetitleintitlearea">
      <value><![CDATA[View Folders in <a href="{0}">{1}</a>]]></value>
</data>

Hopefully this post will help you understand all of these references to $Resource that you see in SharePoint 2007 aspx pages and will act as a starting point for you to create your own resource files.

I am still on a learning curve with SharePoint 2007 so please point out any errors or omissions, and please let me know if you found this helpful.

As always, your comments on my posts are welcome.

Until next time…

May 08, 2008

Hide and Seek - Exploring the 12 Hive (Part 1)

In this post we will take a first look at the structure of the file system in SharePoint 2007 and how the files are used. This was one of the first things I did when I started my development work.

If we look at a standard Microsoft Office SharePoint 2007 installation we can see that a new directory has been created under the following;

          C:\Program Files\Microsoft Shared\Common Files\web server extensions

You will now see a 12 directory. This is known as the “12 hive” and is the directory that holds the necessary system files that drive SharePoint 2007.

It is also worth noting that for each virtual directory, or web application that is created through Central Administration, a set of directories will be created under;

          C:\Inetpub\wwwroot\wss

We will take a look at these directories and files another time.

Let’s go back to the 12 hive. The following directories can be found under the 12 hive;

          ADMISAPI
          BIN
          CONFIG
          HCCab
          Help
          ISAPI
          LOGS
          Resources
          TEMPLATE

For the purposes of SharePoint development you will, for the majority of the time, be working with the TEMPLATE directory.

The TEMPLATE Directory
Here is the structure under the TEMPLATE directory;

          1033
          ADMIN
          CONTROLTEMPLATES
          DocumentTemplates
          FEATURES
          GLOBAL
          IMAGES
          LAYOUTS
          Pages
          SiteTemplates
          SQL
          THEMES
          XML

The TEMPLATE\1033 Directory
There are two directories that you need to know about here. The Workflow directory is where you will find the WSS.ACTIONS file. This file is used by SharePoint Designer 2007’s Workflow Designer. All of the workflows functions available to Designer are defined here. If you create workflow functionality using Visual Studio 2005/2008 and you want the functions to appear within the Workflow Designer, you will need to create a new .ACTIONS file. We will look at creating custom workflows in another post.

The TEMPLATE\1033\STS Directory
The SharePoint Team Services or STS directory has one sub-directory within it. The DOCLIB directory contains several further sub-directories, each of which holds a template for a specific content type. There are templates for the Office applications, Word, Excel, PowerPoint and OneNote. There are also templates for the different types of page that can be created in SharePoint.

The TEMPLATE\1033\XML Directory
A more important directory within 1033 is the XML directory. Within this directory are several XML files.

DEADWEB.XML – this file is used during the site expiration process. Only change this file if you need to change the message that is displayed during the site expiration process. Changes to this file could be overwritten by SharePoint Service Packs

RGNLSTNG.XML – this file holds the regional settings used by SharePoint 2007. You should not need to change this XML file. Changes to this file could be overwritten by SharePoint Service Packs

WEBTEMP.XML – this file defines the pointers to the GLOBAL, STS, MPS, CENTRALADMIN, WIKI and BLOG site definitions. You can amend this file to either display or hide site templates during the New Site Creation process (newsbweb.aspx and scsignup.aspx). Changes to this file could be overwritten by SharePoint Service Packs

WEBTEMPBDR.en-US.XML – this file defines the pointers to the BDR site definition. You can amend this file to either display or hide site templates during the New Site Creation process (newsbweb.aspx and scsignup.aspx). Changes to this file could be overwritten by SharePoint Service Packs

WEBTEMPOFFILE.XML - this file defines the pointers to the OFFILE site definition. You can amend this file to either display or hide site templates during the New Site Creation process (newsbweb.aspx and scsignup.aspx). Changes to this file could be overwritten by SharePoint Service Packs

WEBTEMPOSRV.XML - this file defines the pointers to the OSRV site definition. You can amend this file to either display or hide site templates during the New Site Creation process (newsbweb.aspx and scsignup.aspx). Changes to this file could be overwritten by SharePoint Service Packs

WEBTEMPSPS.XML - this file defines the pointers to the SPS, SPSPERS, SPSMSITE, SPSTOC, SPSTOPICM, SPSNEWS, CMSPUBLISHING, BLANKINTERNET, SPSNHOME, SPSSITES, SPSCOMMU, SPSPORTAL, SRCHCEN, PROFILES, BLANKINTERNETCONTAINER and SPSMSITEHOST site definitions. You can amend this file to either display or hide site templates during the New Site Creation process (newsbweb.aspx and scsignup.aspx). Changes to this file could be overwritten by SharePoint Service Packs

WEBTEMPSRCH.XML - this file defines the pointers to the SRCHCENTERLITE site definition. You can amend this file to either display or hide site templates during the New Site Creation process (newsbweb.aspx and scsignup.aspx). Changes to this file could be overwritten by SharePoint Service Packs

It is preferable to clone and existing site definition and associated WEBTEMPxxx.XML file rather than edit an existing one. This will prevent your changes from being overwritten if a Service Pack is applied.

The final directory under 1033 is STS. This directory holds a subdirectory, DOCTEMP which contains further subdirectories that hold the definitions and templates for document types that are associated with document libraries. You will find templates for Microsoft Word, Excel and PowerPoint amongst others. You should not need to amend any of these files. Changes to these files could be overwritten by SharePoint Service Packs

The TEMPLATE\ADMIN Directory
The files in the ADMIN directory are used by the Central Administration pages. There are three directories within ADMIN; 1033, Content Deployment and SSO. 1033\Policy\Report contains a reporting template and sample data. The Content Deployment directory contains the DeploymentUpload.aspx page. Finally, SSO contains all of the aspx pages for Single Service Sign-On. These files should not be amended. Changes to these files could be overwritten by SharePoint Service Packs

The TEMPLATE\CONTROLTEMPLATES Directory
The CONTROLTEMPLATES directory is where the ASP.NET 2.0 control template files are held. Control templates are small re-usable files that contain components of a web page. An example is welcome.ascx. The welcome.ascx file defines the dropdown menu that appears under Welcome name on the top navigation section of a SharePoint 2007 page.

These pages are pulled into SharePoint 2007 aspx pages. You can create your own ascx pages although it is advisable not to amend the existing ones as they will be overwritten if a Service Pack is applied.

I plan to take another look at the control templates and look to explain what each one does in another post.

The TEMPLATE\DocumentTemplates Directory
This directory contains one file, wkpstd.aspx, which is the base master file for Wiki pages.

Tip Start
It is worth noting that although this page can be cloned and modified it will not be used by any Wiki page other than the first page that is created. This is because the wkpstd.aspx page is hard coded and is always used to create further Wiki pages.
Tip End
Changes to these files could be overwritten by SharePoint Service Packs

The TEMPLATE\FEATURES Directory
The FEATURES directory holds subdirectories for each Feature that is available within SharePoint 2007. Each of these subdirectories will hold at least one file, feature.xml – this file will define the Feature and will have pointers to any other files required by the Feature. Changes to any of these files could be overwritten by SharePoint Service Packs

The TEMPLATE\GLOBAL Directory
The GLOBAL directory holds two very important files; default.master and mwsdefault.master.

The default.master file is the master file that all files are based on. If you change this file, the change will be applied to every page that was created using an out-of-the-box site definition. Changes to this file could be overwritten by SharePoint Service Packs

The mwsdefault.master file is the master file that all Meeting Workspace files are based on. If you change this file, the change will be applied to every Meeting Workspace page that was created using an out-of-the-box site definition. Changes to this file could be overwritten by SharePoint Service Packs

The GLOBAL\XML directory holds the master ONET.XML file and master view XML files.

You should not need to modify any of the files within the Lists or XML directories at this time.

The TEMPLATE\IMAGES Directory
The IMAGES directory holds all images used within SharePoint 2007. Changes to any of these files could be overwritten by SharePoint Service Packs

The TEMPLATE\LAYOUTS Directory
The LAYOUTS directory is another one of those directories that you should pay attention to. If you ever see /_layouts/ in the URL of one of your SharePoint sites, the aspx page will be in this directory. You will also notice the odd .ascx (control template), .js (JavaScript) and .master file within this directory. I am not sure why Microsoft didn’t tidy these files up and put them in more appropriate directories – as you become more familiar with SharePoint you will notice little inconsistencies like this.

Hiding in the LAYOUTS directory is application.master, the master file for all of the “admin” type pages, such as upload.aspx. When you begin to look at site customisation and branding you will see that application.master is one of the files that will need to be looked at, but more of that in another post.

The 1033\IMAGES directory contains many of the images used in publishing sites, such as the thumbnails for each of the different pages types. There are also icons in this directory.

The 1033\STYLES directory contains additional cascading style sheet (CSS) files.

The MOBILE directory contains a series of aspx pages that are optimised for mobile devices.

The STYLES directory contains one file, corefixup.css – more of an afterthought by Microsoft?

The TEMPLATE\Pages Directory
The Pages directory contains three aspx pages that are pulled in as subpages to other aspx pages.

The TEMPLATE\SiteTemplates Directory
A slightly misleading directory name as the SiteTemplates directory actually contains all of the SharePoint Site Definitions. It is in this directory that you would create any new site templates.

There is a sub-directory for each site definition. Each sub-directory will contain at least an XML directory and a default.aspx file. The aspx file is the initial home page that is displayed when a site definition is used in SharePoint. The XML directory will contain at least an ONET.XML file, which defines the setup of the site definition, such as which Features to load, where the web parts go and what they are, which document library templates to assign.

There will be extra files in some of the directories but they are used to provide the extra functionality that the site definitions require.

When creating new site definitions, you will place your directories here. I will look at creating site definitions in more detail in another post.

The TEMPLATE\SQL Directory
The SQL directory contains a series of XML and SQL files. Some of these are used to define SharePoint configuration and content databases. You should not need to change these files.

The TEMPLATE\THEMES Directory
The THEMES directory contains 22 sub-directories, one for each theme that is available within SharePoint. Each sub-directory contains all of the files required for the theme, including all the images and the cascading style sheets.

You can create your own theme and associated files and place it within the THEMES directory. We will be looking at creating themes in a later post.

The TEMPLATE\XML Directory
The final directory, XML, contains XML and XSD files that are used in configuration of SharePoint. You shouldn’t need to venture in this directory, but if you do, be aware that any file you modify may be overwritten by SharePoint Service Packs.

This is by no means an exhaustive look at every file under TEMPLATE but it should be a good start for you to go off exploring further. There are areas that you will concentrate on more than others depending on what you need to do.

As always, your comments on my posts are welcome.

Until next time…

May 04, 2008

Building a virtual development environment

When I was asked to get involved with the customisation of site definitions and master pages, my first questions was,

“Ok, I’ll have a go. Can you give me access to the development environment?”

Although “yes” was the answer, it came with a caveat,

“Try not to change too much as we have lots of people using it”

I was, at the time, right at the beginning of my SharePoint 2007 learning curve so I wasn’t overly confident that I wouldn’t bring the system down at some point! I needed another option, one that would allow me to work independently of the other users and that when, notice how I didn’t say if, I break the installation, I can quickly and easily re-build it.

Virtualisation was the only real option. I somehow didn’t think I would get my own development server environment so I never asked for one!

As a laptop user I quite liked the idea of being able to continue to work whilst on the move (or, in the case of travelling by train, not on the move). My humble ThinkPad T42 with its relatively aged processor and 1Gb RAM raised its “eyebrows”.

“I have a 30Gb hard drive, most of which you have managed to fill up and you do remember that I have just 1Gb?” it cried.

Not to be deterred I decided to perform a spring clean and archived almost 12Gb of “stuff”. That gave me nearly 18Gb of free space so that was no longer an issue.

For those of you who may not know, SharePoint 2007 is a bit of a resource hungry beast. To actually do any development work you need the following software;

Microsoft Windows Server 2003 plus service packs Microsoft SQL Server 2005 plus service packs Microsoft Office SharePoint Server 2007 plus SP1 Microsoft Office SharePoint Designer 2007 plus SP1

I know SharePoint 2007 comes with its own internal SQL database but there are limitations to using it – one of them being that you cannot access it through applications such as SQL Server Management Studio, that’s why I have suggested installing the full version of SQL Server 2005. You also get far more options to expand your environment going forward.

For the meatier stuff, add the following;

Microsoft Office 2007 Professional plus service packs Microsoft Visual Studio 2005/2008 plus service packs Microsoft .NET Framework 2.0 Microsoft .NET Framework 3.0 Microsoft Visual Studio 2005 Extensions for SharePoint 2007

Even on a non-virtual machine, this is pretty demanding stuff.

Having never built a server before I hunted around to see in there were any instructions on how to do this. I came across The SharePoint Reporter blog, by Tony Zink. Tony has written an excellent series of articles detailing each step in building your SharePoint 2007 virtual environment. You can find the guide here; How to Create a MOSS 2007 VPC Image: The Whole 9 Yards

This whole process took almost all day on my laptop but I ended up with a full Microsoft Office SharePoint Server 2007 environment including Office 2007, SharePoint Designer and Visual Studio 2005.
You may be surprised to hear that I had this all running in 512Mb of RAM. Yes, you heard correctly. You are also probably wondering what the performance was like, well it wasn’t as bad as you may think. It wasn’t lightening fast but it was usable. It did become painfully slow when running the laptop on battery power only as the processor speed drops to conserve power. There was a lot of disk activity as the virtual machine struggled with the small amount of RAM. I ended up with a 15Gb VHD file that I then cloned onto a portable hard drive and copied over to a P4 3.4Ghz desktop with 4Gb RAM. I did this mainly to have a backup but the performance was much better, as you would expect. Still, it wasn’t my primary development machine. That needed to be beefed up a bit.

I upgraded the memory in my laptop to 2Gb maximum and gave the virtual machine 1.5Gb of it. The performance improved no end. I now have a virtual development environment that I can pretty much do whatever I need to. In future posts I will explain a couple of issues I came across that initially appeared to be memory, or lack of it, related. But for now, I was happy!

I have been using the laptop for quite a while now and it’s worked well for me. The only changes I have made are to move the VHD file across to the portable drive and run it from there. This means that I can attach it to any machine and still get access to the latest installation.

I have also invested in VMWare Workstation and will be looking at how the performance compares to Virtual PC 2007. My long term goal is to get a top spec quad core machine and max out the memory and storage so that I can host multiple virtual environments. This should hopefully allow me to build an environment where I can have a proper farm installation. I’ll let you know how I get on once I have saved up the money to buy it all!

I’d love to hear about your development environments and any tips or suggestions you may have on how to improve performance.

As always, your comments on my posts are welcome.

Until next time…

May 01, 2008

SharePoint Connections 2008 - Orlando, Florida

I was recently fortunate enough to be able to go to this years SharePoint Connections conference in Orlando, Florida. Run as part of the DevConnections series of conferences, which included ASP Connections, SQL Connections and Visual Studio Connections amongst others.

Co-located in the Orlando World Centre Marriott hotel, the conference ran from Saturday 19th through to Thursday 24th April. The Saturday, Sunday and Thursday were devoted to pre- and post-conference workshops, one of which I was able to attend. The remaining days were given over to various drop-in sessions given by speakers working with SharePoint 2007 and its associated technologies.

I arrived on Saturday afternoon after leaving a pretty cold London Gatwick airport. Orlando wasn't as hot as I was expecting (I have been there many times before), but the humidity was just as I remembered! The hotel wasn't far from the airport and within an hour or so of getting off the plane I had checked into our room.

The following morning, I took a wander down to where the conference was to see what I had to do about registration as I was booked into one of the pre-course workshops, SharePoint Workflow. It was quite early so there weren't many people around. Registration included a free rucksack, course content CDs and session information along with a show guide. Also included was the usual advertising papers!

Pre-Conference Workshop - SharePoint Workflows
I had about ten minutes before my workshop started so I went in and sat down - I was quite surprised as the room was almost full. The speaker, Robert Bogue, was getting a feel for what people were working on and the general skill level in the room. 9am came and the session started.

I’d chosen to come to the SharePoint Workflows, as I’d pretty much exhausted SharePoint Designer Workflow Designer’s options. They’re ok, but not really suitable for real-world business solutions.

Robert introduced himself and then began to talk about the different options available to someone looking to develop workflows. He discussed the out-of-the-box options and how limited they were. He looked at SharePoint Designer’s Workflow Designer and explained some of the reasons why you might not choose to use it. The main reason is that the workflows Designer creates aren’t portable, so they cannot be re-used.

Hold on a minute, aren’t the rules generated by the Workflow Designer just stored in files? Can’t we copy them?

Well, yes, if only it was that easy. Whenever you reference a list within a SharePoint environment, a unique GUID reference is generated. You may very well have a list on another server that has the same name, but its GUID will be different, so your workflow won’t work. This is a shame, but is a fundamental flaw in Designer based workflows.

The final option left to the dedicated workflow builder? Microsoft Visual Studio 2005 lets you build workflows at the lowest level. You can pretty much do anything with it.

Robert then spent the rest of the session showing us how to create a workflow using Visual Studio. How to debug the workflow. How to deploy the workflow. Options on what you could use workflows for. Despite the heavy content, and believe me, it was heavy – this stuff isn’t easy but I was pleased to say it didn’t go over my head, the audience stayed with him.

Workflow in SharePoint is ridiculously powerful. But as they say, with power comes responsibility. Robert said that there were a lot of questions the customer had to answer before you could start to build a workflow solution for them. I’ve built a few in SharePoint Designer and I can see what he means!

I always find that in sessions like this that I start to think of things that we can actually use this for. Workflow forms the backbone of our business processes and we don’t nearly use it enough.

The session showed a lot of code which Robert has promised to make available, including a handy toolset which I am keen to take a look at.

On the whole I thought this was a very good session and am looking forward to getting to grips with workflows.

Understanding How to Develop Office Business Applications from the Client to SharePoint and Beyond
This was my first session on the Monday and was run by Steve Fox, a Microsoft evangelist. The conference room was about half full, which, to be honest, wasn’t surprising as most attendees would be SharePoint developers.

So, why did I go along? Well, as Steve said, Microsoft Office is rather widely used, so the customer base is going to be pretty large. We use Office all the time and using Visual Studio 2005 or above will allow us to develop pretty rich applications.

Steve then showed us a demo of a Microsoft Word document that integrated with an SQL database. The document was an employee appraisal form that extracted data from the database and populated fields in the document. Once changes had been made a further option then synchronised the data back to the database. To get all of this to work, the document had to be installed on the local user’s machine.

Why would you use Word in this way when you could actually either write a web application to do this or use InfoPath? Well, using Word opens up the rich functionality that isn’t available in InfoPath. Could this be an option for us in Lloyds TSB? We’ll need to look into it further I think.

Integrating a Word document with workflow was another option and this sounded like something we could certainly benefit from, as this kind of processing would form the basis of a compliance system.

Steve then showed us how to add a specific document as an option on the New menu within a document library. This would be handy and could possibly save a lot of time if we were to put template documents on the New menu.

We then took a brief look and WPF (Windows Presentation Foundation), the graphical subsystem of the .NET 3.0 framework. You might be more familiar with WPF’s original name – Avalon.

After a brief run-through of how the Business Data Catalogue could be integrated with Office, Steve closed the session with five minutes of questions and answers.

There seems to be quite a few benefits to using Microsoft Word 2007 instead of InfoPath 2007 as a form processor. You do get access to all of Word’s functionality, none of which is present on InfoPath. The issue of having to install the document on the client machine is outweighed by the functionality that will be on offer.

I will be looking further at building Office business applications on my virtual machine once I get back into the real world.

But for now, onto the next session!

SharePoint Governance and Information Architecture Guidance
This is one of those subjects that you know you have to address but never really get around to doing. For one reason or another Governance and Information Architecture don’t appear to be seen as important enough, but, like a disaster recovery plan, you only really appreciate having this in place when everything starts to crumble.

Robert Bogue was the speaker for this session (he was the guy that did the SharePoint Workflow workshop) and one of the first things he covered was an explanation of what governance actually meant. He explained the distinction between governance and guidance and how using the term ‘guidance’ was much more likely to get buy-in from users.

Robert then went through the process he used to build taxonomy to classify information. This is a lengthy process but the amount of time spent building the taxonomy would significantly decrease the amount of time it would take to search for that information once it was in the ‘real-world’ I am going to spend more time looking into how to manage taxonomy as this seems to be something that would drive the performance of search.

Information Architecture is another area that Robert covered, although a little more briefly.

It was an interesting session and I can certainly see the benefits of having both governance and a robust information architecture.

Capacity and Performance Planning for Microsoft SharePoint and Technologies 2007
Ben Curry of Mindsharp covered this session, my final one for the first day. Capacity management and performance planning isn’t something I have been involved with but I went along to this session as I thought it would be useful to see how SharePoint reacts under a little pressure.

Understanding capacity management should hopefully allow me to build better applications that perform as well as they can.

Much of the content was over my head but it sounded good!

The one thing I did take away from this session was that you can use Visual Studio 2005 or higher to perform load and stress testing on web sites, including SharePoint. Ben set up a series of tests that included opening the home page, opening a list, setting list parameters plus some generic IIS stress tests. Ben was then able to specify the number of users, the type of browser they were using and also the length of the test. Visual Studio then went away and ran these tests and stored the results in a separate database. Not only could these tests be run against SharePoint, but they could be run on any web site. I thought this was really useful.

Another thing Ben explained was the Auto-Grow and Pre-Grow options on site collections. Ideally a site collection should be set to its full size from the start and not use the Auto-Grow option.

Why?

Well, say you had a site collection that had a size limit of 100Mb and your Auto-Grow option was set to 1Mb. You are at 99Mb and then add a 50Mb document. Rather than Auto-Grow by 50Mb all in one go, your site will read 1Mb of the file, Auto-Grow by 1Mb, fill up the 1Mb and move on to the 2nd megabyte of the file. It will do this 50 times so you can image the overhead on the system. If Auto-Grow had been set to 50Mb, this action would have only occurred once.

Branding Your Microsoft Office SharePoint Server 2007 Sites using Site Definitions and Features
The first session of day two started at 8am and despite the early start there were quite a few people there. By about 8.15, the conference room was almost full. Emer McKenna was the presenter for this session and I was quite surprised to hear a lovely soft Irish accent!

Emer began by explaining what branding meant as far as SharePoint was concerned and the followed this with a demo of the out of the box branding options using the master page galleries and themes. She went through the limitations of branding sites this way before moving onto Features and how they can help when branding a site.

We then went through a demo where a Feature was built that changed the logo of the site. The demo covered all of the associated files that were required for the Feature. Emer then showed us the deployment method and how it was possible to activate the Feature on all sites.

We then looked at Site Definitions and how the look and feel of a site could be customised using them. A further demo followed where a new site was created using a custom site definition.

Finally we looked at Feature Stapling and how pre-defined Features could be attached to custom site definitions – this was shown via a further demo.

We covered quite a lot in the sixty minutes. The session was of particular interest to me as I had created custom site definitions previously. I liked the idea of Features and wrapping them up and deploying them via Solutions. Emer explained that there were events that could be triggered when Features were installed, uninstalled, activated or de-activated. This offered up some powerful options which I plan to investigate further.

All in all a good session which could easily have taken up a whole day workshop.

Monkeying with Master Pages (taking control of your SharePoint user experience)
As Robert mentioned before the session actually started, “we go off the page with this one”. We certainly did! The whole point of this session was to show us what we could do if we completely broke the rules. The things that Robert covered wouldn’t be supported by Microsoft as we would be breaking the core installation files.

Sounded fun!

Robert Ginsburgh of Version 3, started by showing a site he had helped design and build called School of the Future. This site, hosted by SharePoint, was used by children in a disadvantage school. Robert explained that many of the children were unable to understand some of the terms used within SharePoint so the aim was to redesign the look and feel so that imagery could be used, something which the children would find easier to understand.

Robert then went on to explain some of the techniques implemented, one of which was to create a series of user controls that were added to the global master page. The user controls added a series of coloured bars to the top left hand corner of the screen. The page would then poll external data sources and when changes came through, the coloured bars would change. These visible page changes would alert the children that there was something that they needed to look at.

Robert showed us many other master page amendments and explained that by amending the global master page, these changes were applied to every page in every site. This did go against Microsoft’s recommendations, but as Robert explained, the ends justified the means.

Robert then explained that master pages could be modified on the fly by placing code between the Init and PreInit placeholders – this looked really interesting and I shall be investigating this further. Overall this was another good session. Many of the techniques shown would be really useful and I plan to investigate this further.

Building Custom Navigation with SharePoint
Mauro Cardarelli from Journata presented this session, the last one before lunch. He spoke about the different types of navigation available, from the top navigation bar to the Quick Launch panel and link lists. He then went through a series of demos showing how each could be modified. We then looked at the code in more detail.

The session went very quickly and by the time we had looked at the code and spoken about best practice, it was over.

Navigation is key to a good website, whether it is on SharePoint or not, so this is yet another area I'd like to look at further. My list is growing longer with each session I go to!

Quick Integration from SharePoint to your Application
Robert Bogue was again the presenter for this session, the first after lunch on the Tuesday. As the session title says, this was about integrating application data into SharePoint and vice versa.

This could be in the form of links from SharePoint to another application or through the use of Web Parts such as the Page Viewer Web Part.

Robert explained that the Page Viewer Web Part was easy to use and, as it was available out of the box, the costs were very low. The downside to using the Page Viewer Web Part was that it was built around the IFRAME tag. This caused potential problems with things like branding, menu issues and the unwanted appearance of scroll bars. It is, however, a quick and easy way to get external information into SharePoint.

Link Lists were the next thing that Robert looked at. These are purely hyperlinks to external locations and are simple to add and maintain. The downside is that no content from the external site is displayed and there is no option to set a target window for the link.

Navigation links followed Link Lists. Navigation links are integrated into SharePoint’s normal navigation structure. This has the advantage of SharePoint controlling the style for you. The downside is that it can be confusing to users and you don’t get an awful lot of space to add new links. The tabbed navigation option can quickly cause horizontal scrolling and looks very messy.

Another option for integration is to add options to the SharePoint menus, such as Welcome, Links and Site Actions. This has benefits in that security trimming can be applied if appropriate, so that users only see the links they have access to. It also has a more polished finish as the links can have associated images and additional text to provide further information on the action the link performs. This option does require knowledge of creating and deploying Features and is not something a normal user would be expected to do.

Robert then gave a demonstration on how to create a Feature that enhanced the navigation. A run-through of the code, including the feature.xml and element.xml files followed. Robert then went through the copy, install and activate process to get the files onto the SharePoint site.

Robert then looked at the Site Properties and how this could be used to enhance integration. He then moved on the creating Web Parts that did the integration for you. He explained that this was full integration and not just linking. Robert explained the disadvantages of this approach, which included the effort required to develop and build a custom web part.

Finally Robert looked at the options available with the Business Data Catalog (BCD). There were many advantages in using the BCD. The effort required to integrate data from other applications was minimal, if a little confusing. Search integration to other applications also became available through the BCD. The downside was that the BCD was only available with the version of SharePoint 2007 and that came at a cost.

This was an interesting session and Robert covered a lot of detail in a short time. Features definitely seem to be the way to go when making any kind of enhancements to the SharePoint front end. Yet another thing to look further into!

Design Powerful Workflows with SharePoint Designer
Asif Rehmani of SharePoint Solutions hosted this session. I came to this session even though I had done a full session on SharePoint Workflows on the Sunday before the conference started, just in case there was something new.

Asif started by looking at what workflow meant. We looked at the chain of steps that needed to be performed to achieve a specific goal and that each organisation had many different types of business processes. Workflows enable each of these steps to be defined and monitored.

We then explored the two types of workflow; human and system and the effects each type could have. We also looked at the workflows available through SharePoint and how the user could interact with them. We looked at workflow integration with Office 2007. Asif then went through a demo, building an out of the box workflow.

He then looked at the tools available to build workflows before using SharePoint Designer to actually build one. We looked at the XAML file that SharePoint Designer creates.

Finally, we looked at creating custom workflows using Visual Studio 2005 following up with looking at some workflow scenarios and the tools you might choose to actually build them.

Although this was a good session, the majority of it had been covered in the Sunday workshop. The only difference was the review of the XAML files created by SharePoint Designer, yet another thing I want to look into further.

Enforcing Content security in a collaborative environment
Robert Ginsburg from the ‘Monkeying with Master Pages’ session was the speaker for this one. I was quite curious over this subject as I could see this as pretty important in any environment that potentially stored sensitive information.

Robert explained that most systems (including SharePoint) require discrete security structures. It is not easy to apply a general ‘rule’ to every content type as the requirements will be different. Collaborative working invariably requires ad-hoc relationships due the way information is shared, the technology used must ‘blend the perspectives in a way that users understand’. This isn’t always that easy.

Robert then looked at the differences between ‘authentication’ and ‘authorisation’. Just because you have been authenticated doesn’t mean that you have indiscriminate access to everything within a site. Authentication means that you have been recognised as a valid user. Just because I can get into the building where I work, doesn’t mean I can get into every room. For that, I need authorisation.

Robert explained that security principles must be persistent otherwise audit trails are useless. Even with a good audit trail it is possible for content to be removed from the system. Any content that is deemed as read-only should be stored in an immutable format, such as a PDF or secured through Microsoft Digital Rights Management (DRM) services. Read-write content should be versioned to preserve the audit trail.

A simple security construct is needed as users invariably do not understand access control lists (ACL’s) or, in SharePoint, roles and groups. Constructs, such as ‘I share with you, us’ and ‘I give to you, you give to me’ etc are far easier to understand.

Robert returned to the School of The Future site to explain the scenario and how they overcame the issues. This was done through a demonstration.

He then finished with a quick review summarising the session. This was an interesting session as I expected.

And Finally…
I looked at the final session list for the conference and for the first time there wasn’t anything I really wanted to listen to. I was tempted by Robert Bogue’s Custom Authentication for SharePoint but decided against it as this was not something I was likely to use.  Exploring the New Microsoft Forefront Security for SharePoint was another option. Again I decided against going as I was more interested in the development side of things rather than the security aspects. I know I should understand it all but it had been a long four days. I decided to sit in on Robert Ginsburgh’s final session, Technology Deep Dive: A Case Study of the Microsoft School of the Future. It turned out to be an interesting session that covered quite a few areas, most of which has already been looked in this blog. I decided that rather than try and make copious notes on the session I would just sit back and enjoy it, I put my laptop to sleep and therefore there is no write-up for this one.

A Q&A session closed the conference. I was really glad I had attended SharePoint Connections. I have learnt a lot and met some very interesting people. I spent most evenings trying to make sense of the notes I took during the sessions and hopefully the above makes sense. If not, well you just had to be there!

All I need know is a reason to go again next year!

For those of you who did go to SharePoint Connections 2008 and have managed to read all the way through this post, I have created a Facebook group, aptly named SharePoint Connections 2008 (Orlando). It’s an open group so if you feel so inclined, why not join. It would be nice to hear from others who attended.

My next task is to go through all of my action items taken from the conference sessions. There is plenty there to keep me interested and busy!

As always, your comments on my posts are welcome.

Until next time…

April 28, 2008

Welcome to my blog!

I've been playing with SharePoint on and off since it's early days but it's only recently that I began to get heavily involved with Microsoft Office SharePoint Server 2007, otherwise known as MOSS. It's got me hooked! I have delved a little deeper and found out quite a lot myself, but I have found it quite hard to get information from the internet. It's slowly coming through but there could be a lot more.

There are lots of little projects that I'll be working on and it is through this blog that I will share my successes and failures. I'll also put up an hits and tips I can find as well as point you in the direction of some of the best MOSS people out there.

I will always be happy to accept your comments and thoughts on my posts, so please do let me know what you think.

Until next time...