Connect.Collaborate.SharePoint
Jul
30
My trip was WLG-AKL-SFO-SEA and back again. There and back I watched the following movies:
  1. 300
  2. Disturbia
  3. Apocalypto
  4. The Astronaut Farmer
  5. Amazing Grace
  6. Black Sheep (Kiwi movie)

All were all good although Amazing Grace is obviously not my normal choice of movie but is probably the only one I would watch a 2nd time.

While in Seattle, at the MS TechReady 5 conference, I had lots of great conversations with SharePoint folks and have come away with lots of ideas and an Insiders Top Gun award from the product team for wssdemo.com.

Categories:

 
Jul
26

Even I sometimes forget that I have a predefined view on a list to support a process. In the older versions of SharePoint the views were display as actions on the left of the list. Now they are hidden in a drop-down which is often scrolled off the screen if there are a lot of columns in the default view.

This happened to me today when I was talking to someone who said they had web page listing all the SharePoint related KB articles and hot fixes. That reminded me that I also had these KB’s listed in my resource list but you would not see the pre-defined view unless you found a page on my site that had the tool bar visible (not often the case).

So I added the view url to the top menu of my site. This made me think that there might be a better way of showing the views available in a standard list page (another demo to add to my to-do list).

Categories:

 
Jul
26
Just passed 70-630 and 70-631 back to back. I was particularly disappointed with how easy the MOSS exam was although I did get 3 questions wrong, but which ones! This is going to bug me as it may mean that I'm telling customers the wrong thing 6% of the time which is not good ;-)
Categories:

 
Jul
22
Putting up with the rain (thought I had left that behind in NZ where it is winter) and hanging out with all the cool SharePoint product and field team. Saw some cool demos today of customer deployments and how the sales/services teams sold and deployed the solutions.
 
Will blog some more if I can get an Internet connection (competing with 6,000 other Microsoft employee's usually kills all the hotel wireless Internet systems).
Categories:

 
Jul
17

It was an internal email that went like this...

We have used the room and equipment template in WSS3.0 to implement a meeting room reservation system but we encountered two problems:

1) The date is always in US format even though the site is in UK format and the region setting of the machine is also UK.

2) Cannot do recurring reservation.

   

Any way to change this?

 

And my answer, after investigating with SharePoint Designer, was...

Hi,

Looking at the page with SharePoint Designer, it is a Data View web part.

The code is

<xsl:variable name="shownDay">

                <xsl:choose>

                                <xsl:when test="$theDate = -1"><xsl:value-of select="ddwrt:FormatDate(string(ddwrt:Today()), number($lcid), 1)"/></xsl:when>

                                <xsl:otherwise><xsl:value-of select="$theDate" /></xsl:otherwise>

                </xsl:choose>

</xsl:variable>

   

The FormatDate function is defined as

FormatDate(string szDate, long lcid, long formatFlag);

Looks like the $lcid variable may not have the correct value.

You can just force the value if all users are in the same local or change the FormatFlag value to 3 which renders the date as Tuesday, July 17, 2007 (nicer in my opinion)

   

You also have to set the formatting of $theDate which is the date returned from clicking on the date picker. So change

<xsl:value-of select="$theDate" />

To

<xsl:value-of select="ddwrt:FormatDate(string($theDate), number($lcid), 3)"/>

   

Just tried it and it seems to work. Will try and troubleshoot the lcid problem later…

   

For #2, have a look at the GroupBoard template. It has a conflict checker for recurring bookings.

Categories:

 
Jul
14

Email alerts on SharePoint document libraries and lists can be based on a view but RSS feeds are for everything in the list. If you want a filtered RSS feed then you can use the Content Query web part (this one is for the person using a Spot watch to get SharePoint tasks).

As an example, my resources list on wssdemo.com has over 1,000 items but if I wanted to create a feed of just the public web sites hosted on MOSS from this list I would add the content query web part to any web part page, specify the filter condition and enable the RSS feed

 

Here is the feed generated by the web part...

http://www.wssdemo.com/_layouts/feed.aspx?xsl=1&web=%2F&page=7cbd50bc-aa88-457c-bc2e-33703120a8b2&wp=d7acf8e9-5950-49c4-a060-5cca1d0c2d2c

 

Categories:

 
Jul
14

When a customer asks me to come and demonstrate SharePoints collaboration features, here is the first thing I do.

Create a site using the blank site template.

That's right. No shared documents, nothing on the home page

The problem with starting with the default team site collaboration template is that people immediately start thinking about documents and publishing of announcements. The number of times I have seen a SharePoint collaboration site with 20 document libraries is depressing.

Once I have people's attention by not showing them anything, I start asking some questions.

  1. What do you do
  2. Why do you do it
  3. What information do you have
  4. What do you collect
  5. What decisions do you have to make
  6. What is the output
  7. 'Who' for each of the above

Then I look for a key piece of metadata. It may be the names of their processes or the names of the stages in a process.

I then create a list containing these values. Now I can look at the lists/ libraries required to store and track information (documents, tasks, contacts, blog's and wiki etc). I add the metadata list to each of the stores as a lookup column. Next I add some data to each of the stores showing how I can classify or tag the information. People immediately see the value of this but then I blow them away with the next step.

I describe the concept of a workbench, where all of the information I require is in one place. I create a web part page and first add the metadata list so that everyone can see the important terms. Then I start adding web parts for all the other stores and connect them to the metadata list so that when you click on an item (step in the process) all the other web parts filter the results so you are left with a view of everything that you should be interested in (whether you know it or not). This is when the light bulb goes on.

I then add the search results web part to this page to pull in other potentially related organizational information from other sources. Now this is an information dashboard!

This is in opposition to the normal process of going into each repository in isolation, trying to find the important stuff and then copy and pasting it into another location.

Before the presentation I will usually go to live.com and search for some data relevant to the customers industry that I can export into excel. Then I discuss the challenges of trying to get people to maintain lists of information and how multiple copies if the truth ends up all over the place. Next I export this spreadsheet to a SharePoint list and demonstrate item level versioning, views, alerts, exporting and reporting this data in excel or access.

That's when the light really turns on and people realise that SharePoint is also a database (yes we know SharePoint uses a database, but users see that SharePoint can be their application front end and database back end) which they lost when IT banned Access from the desktop and left the users with no other choice but Excel.

Now the customer doesn't have to come up with a justification for a collaboration platform, they have a solution to facilitate and most likely improve business process which has a tangible benefit. Wikis and blogs start getting pushed down in importance as people realise there is still a lot of room for improvement in the way things are done.

This is why I hate seeing people just put in a wiki or blog solution. We don't need more islands of information and don't tell me that search is the solution. It is a useful tool but it doesn't make up for short sightedness!

Categories:

 
Jul
13

Here is a typical example of the type of calls for help I see within MS and thanks to our global network and unified communications it is easy to help.

   

 I see an email on the internal SharePoint DL from Steve…

Subject: programmatically download a document??

Hi all,

Two questions:

Does anyone have any sample code for programmatically downloading/saving a document to a local file from a sharepoint list.  For example, given a URL to a doc (http://moss.litwareinc.com/shared%documents/testdoc.docx), I'd like to programmatically save it to c:\testdoc.docx. 

……

 

 

I reply with solution of using UNC path to access the document so that any file operation should work.

 

Steve sees from the presence indicator next to my name in the email that I'm online and selects "Reply with IM"

   

Following is the IM chat

   

Steve  [9:12 a.m.]:

 hi, thank you for answering my question about getting to files programmatically

 do you have a few seconds for a follow up?

Ian Morrish [9:14 a.m.]:

 yep

Steve  [9:15 a.m.]:

 so, in theory I could use something like System.IO.File.Copy() to copy the file locally, right?

Ian Morrish [9:16 a.m.]:

 Yes. So long as the client is running the Web Folders windos service

 Sorry, it is called the Web Client service

Steve  [9:17 a.m.]:

 ok I tried System.IO.File.Copy() on a file from my mysite (\\my\sites\stevebus\shared%20documents\atlanta%20mtc.jpg) and it gave me an access denied

 how can I tell it to use my network credentials?

Ian Morrish [9:17 a.m.]:

 just take out the %20's as these are not valid for UNC path

Steve  [9:18 a.m.]:

 excellent! that worked perfectly

Ian Morrish [9:19 a.m.]:

 try placing the path in the Run command from the start menu (with quotes around it because of the sapces)

Steve  [9:20 a.m.]:

 File.copy worked with out the %20's

 good catch - I missed that

Ian Morrish [9:20 a.m.]:

 to confirm the web client is running. This is using a function called the webdav redirectory

 redirector

 cool, so you are all set to go

Steve  [9:21 a.m.]:

 just need to get the web folders stuff running from win2k3 too

 is this the right way? http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B888123

 or is there something easier than hunting down a Windows 2000 or xp box (don't have any of those around)

Ian Morrish [9:23 a.m.]:

 I think you can just go to control panel/Services and start the Web Client service

Steve  [9:23 a.m.]:

 ah, ok... it is started, but I'm not seeing anything under \\moss.litwareinc.com\sites (using the standard moss image provided by the product group)

 nevermind

 it's \\moss.litwareinc.com\<sitename>

Ian Morrish [9:25 a.m.]:

 nothing actually exists in the way of folders at /sites because this is a wildcard inclusion. Just the same as if you go to http://moss.litwareinc.com/sites

Steve [9:28 a.m.]:

 seems to be working well... thank you very much for your help

Ian Morrish [9:28 a.m.]:

 thanks...

Categories:

 
Jul
10

I had to create hundreds of folders in an Enterprise Document Library template based site based on a CSV extract from a CRM system.

I did not have server access to had to think of a remote solution. Creating local folders and then using the drag and drop method into the library explorer view did cross my mind but I knew there must be a better way.

A simple WSH script (old habits die hard) calling the document workspace web service (create folder method) was all that was required.

Just run this on a Windows XP machine which includes MSSOAP.SOAPClient (don't think this comes with W2K3 or Vista).

set SOAPClient = createobject("MSSOAP.SOAPClient")
SOAPClient.mssoapinit http://nz/customers/_vti_bin/dws.asmx?WSDL
On Error Resume Next
Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("C:\accounts2.csv", ForReading)

Wscript.Echo vbCrLf & "creating Folders"

Do While objTextFile.AtEndOfStream <> True
strLine = objtextFile.ReadLine
If inStr(strLine, ",") Then
arrCustomer = split(strLine, ",")
Wscript.Echo vbCrLf & "Customer :" & arrCustomer(1)
Set result = SOAPClient.CreateFolder("Documents/" & arrCustomer(1))
i = i + 1
End If
Loop

Categories:

 
Jul
9

(Yes, I have a HAM license) If you want to rollup information from many sites that use one of the application templates, you will find that the CQ web part property UI only exposes the standard lists (although it picks up custom fields added to these lists). The lists in the application templates are not standard ones so you have to go into the CQ and change the ServerTemplate value in the web part properties.

You can do this one of 2 ways:

  1. by exporting the web part from the browser and using Notepad and then importing the .webpart file back into the page
  2. edit the page with SharePoint Designer (only if it is a pure web part page, can't be done with a publishing page)

(2 is my preference)

The real trick is in finding the list template number. Again, you have 2 options.

  1. Look in the 12\Template\Features directory for the application template you are using and find an xml file that relates to lists.
    e.g, the ITTeamListInstances folder contains ListInstances.xml
    Projects List TemplateType=7140

    Project Tasks TemplateType=7142

    Project Issues TemplateType=7141

    Project Milestones TemplateType=7143

  2. Use my supper handy list details web part page. I always add this to my prototyping sites.
    This lets me select any list on this site and view its details, fields, views and content types.

    This page is just a number of Data View web parts that use the _vti_bin/list.asmx web service to extract this information (without any programming ;-)

So now I have a rollup across all my project sites of the tasks.


There is only one warning for you. If you edit the CQ web part properties from the Modify Shared Web Part menu, it will undo the ServerTemplate value.

Categories: