Tuesday, September 25, 2007

[SPS2003/WSSv2] Service Pack 3 released

Microsoft has just release Service Pack 3 for SPS2003 and WSSv2.


Microsoft Windows SharePoint Services Service Pack 3 (SP3) contains stability improvements and performance improvements. Some fixes that are included with Windows SharePoint Services SP3 were previously released in separate updates. Windows SharePoint Services SP3 combines the previously released fixes into one update.


Microsoft Office SharePoint Portal Server 2003 Service Pack 3 (SP3) contains significant security improvements. Some fixes that are included in SharePoint Portal Server 2003 SP3 were previously released as separate updates. This service pack combines these updates into one update.

Wednesday, September 12, 2007

List columns in SPS2003/WSSv2 and MOSS2007/WSSv3

In SharePoint 2003/WSSv2 there were some limitations on the number of columns of a certain type:

Lists in Windows SharePoint Services can only contain a certain number of fields or columns. If a list in your site contains too many fields or columns, it are not migrated. You must manually re-create the list. Note that this includes surveys. The maximum numbers for fields and columns are:

  • 64 text fields, including the following field types: Single line of text, Choice, Hyperlink, or Picture.
  • 16 Lookup fields
  • 16 Date and Time fields
  • 16 Yes/No fields
  • 32 Number and Currency fields
  • 32 Multiple lines of text fields
WSSv2 Admin Guide

In MOSS2007/WSSv3 these limitations are gone. The only limitations is the performance of your list: Sharepoint 2007 - Column Limits

[SPS2003] Issue with "Add link to site" option

A colleague of mine ran into an issue with the ‘Add link to site’ option in Site Creation. After clicking the OK button nothing happens. This issue is being discussed in newsgroeps and possibly being caused by hotfix: KB933854

Someone created a solution for this issue, by changing some code in the newform.aspx file. After applying this solution, the issue was solved. More info can be found at: SPS2003 Add Link to Site not working

Changes to newform.aspx:
1. Open this file in a text editor:
C:\Program Files\Common Files\Microsoft Shared\web server
extensions\60\TEMPLATE\[LCID]\SPSSITES\LISTS\SITESLST\NewForm.aspx
(Replace [LCID] with your locale identifier, 1033 for English)
2. Find this code fragment:

<SPSWC:InputFormButtonSection runat="server">
<SPSWC:InputFormButtonAtBottom ID="ButtonOk" runat="server"
TextLocId="Page_OkButton_Text"/>
<SPSWC:InputFormButtonAtBottom ID="ButtonCancel" runat="server"
TextLocId="Page_CancelButton_Text" visible="false" />
</SPSWC:InputFormButtonSection>

3. Replace it with this code fragment:
<SPSWC:InputFormButtonSection runat="server">
<!-- Workaround for WIN2003SP2 issue: http://support.microsoft.com/kb/934229
-->
<input type="button" value=" OK "
onclick="document.forms[0].submit()" />
<!-- <SPSWC:InputFormButtonAtBottom ID="ButtonOk" runat="server"
TextLocId="Page_OkButton_Text"/> -->
<!-- End workaround -->
<SPSWC:InputFormButtonAtBottom ID="ButtonCancel" runat="server"
TextLocId="Page_CancelButton_Text" visible="false" />
</SPSWC:InputFormButtonSection>

4. That's it!!

Wednesday, August 01, 2007

MOSS2007 Installation guide

Over the past few weeks I have been working on an installation guide for MOSS2007. I have updated a document I created earlier with new insights and am glad to announce that it is available for download!!

Available here:Microsoft Office SharePoint Server 2007 Installation Guide

[UPDATE: A new version has been released. More info, see this post]

Wednesday, July 18, 2007

Mail Merge and Microsoft Office SharePoint Server 2007

In Word 2007 you have the possibility to merge a document template with data from a data source, creating for example a mailing very easily. The data source can be various types of documents, like Excel, Word or Access files. But it turns out that Word 2007 cannot handle data source documents on an http location.

When opening a mail merge template document and you try to connect a source document which is located on a SharePoint site (Mailings > Select Recipients > Use Existing Lists > My Network Places > Select document on SharePoint site), Word 2007 gives the error message “This file could not be found”. A workaround is to download the source document to the local computer (for example the desktop) and connect it there. The downside is that you have to download the document each time you want to do a mail merge.

Hopefully this issue will be fixed in the next Office Service Pack.

Monday, July 16, 2007

[MOSS2007] The inner workings of the MySite functionality in MOSS2007

In SharePoint 2007 users have the possibility to create a personal site called MySite. This site can be used to store and share documents and other data (contacts list, calendar, etc). A MySite has two parts, a personal and a public part. On the personal part of the MySite, users can edit their details, add colleagues, upload and share documents, etc. The public part is available for other users. Here the details of the user are shown and the users can access the shared documents.

The personal part of a MySite is a site collection in a web application. When accessing you personal part for the first time, a site collection is created in the web application which you configured during the configuration of the Shared Services Provider (SSP).

During this SSP configuration, the config wizard also creates a MySite Host. This is a site which redirects you to your very own MySite when you try to access it. It also provides the public part of the MySite and other generic MySite pages.

Why am I talking about this MySite Host?? Because that MySite Host determines in which language parts of you MySite are shown. When creating a MySite (with multiple language packs installed) you are asked in which language you want your MySite to be created. But this is only the private part (the site collection).

On an environment I installed recently, I had installed and configured MOSS2007. After I created a SSP (sharedservices.) and MySite WebApp (mysite.), configured the SSP and created a site collection WebApp (portal.). Then I installed the Dutch language pack and created the first site collection based on the dutch Collaboration Portal template.

During testing of the portal I ran into some issues with some parts of the MySite being in Dutch and some parts being in English. After some testing I found out about the MySite Host (root of the mysite. webapp). Because the language pack hadn’t been installed while configuring the SSP, the MySite host had been installed using the English template. To solve this issue I deleted the MySite Host site collection and recreated the site collection, using the Dutch template and voila….all of the MySite is in Dutch!!

So if you are using language packs for MOSS2007 and notice that some parts of the MySite are in English instead of the language of your language pack, just delete the MySite Host site and recreate it using the localized version of the MySite Host template (can be found under the Enterprise tab).

Friday, July 13, 2007

[MOSS2007] Issues with web part toolbars and audiences/Active Directory groups

Over the past few days I ran into some small but very annoying issues with SharePoint 2007:

The first is with a document library web part. After placing a document library web part on a page and configuring it with a “Full Toolbar”, I wanted to change some fields which are shown in the web part. I opened the “Modify This Web part” menu, clicked “Edit current view”, made some changes and clicked Ok. When the web part page was shown, the Full Toolbar had switched back to the Summary Toolbar. Also the “Modify This Web part” sidebar was closed. It meant I had to open the sidebar again and configure the Full Toolbar again. Very annoying behavior!

The second issue is when you are using Active Directory groups in audiences. In SharePoint 2003, using audiences meant creating special audiences which are compiled according to predefined rules. As of SharePoint 2007 it is possible to use AD groups directly as an audience. When a user is a member of that group, the item or web part is shown to the user.
On a page I had several web part configured with AD group audiences. In the AD I moved the groups to a different OU and after a profile import my web parts weren’t shown to anyone any more. Some troubleshooting revealed that the groups were in the profile list twice, one for the old OU and one for the new OU. Because they had exactly the same name, I could not determine which group was the correct one. I added both groups to the web part audience to get it working again.
Looks like SharePoint is looking at the absolute DN when using AD groups in audiences. Now I am hoping the “old” groups will disappear automatically……not really sure.

Tuesday, July 03, 2007

Add SharePoint sites to "My Network Places"

When browsing SharePoint sites, Windows sometimes adds these sites to the "My Network Places" on your XP box. This enables you to easily save documents right from Word for example into SharePoint. Unfortunatelly I have noticed that Windows XP not always adds SharePoint sites to the My Network Places automatically.

On a forum I found a solution for this issue. A guy named DonQ created a vbs script which I used in my logon script. Depending on group memberships, SharePoint sites are automatically created for the users while logging in.

The script I used as a starting point is:
'Create Network Folder
'This is a fix to the original, which I found did not handle URLs
'longer than 44 characters.

Option Explicit

Sub CreateNetworkFolder(siteURL, siteName)

Dim iRes, jRes, MT, TT
Dim SH, newPath
Dim objFso, f, fs, g

Dim bString
Dim ltrIndex
Dim nameLength, urlLength, urlCutoff
Dim aFile

'ForWriting (2) is the attribute to be set when writing to a file.
Const ForWriting = 2

nameLength = Len(siteName)
urlLength = Len(siteURL)
'44 seems to be the length where we have to change a 00 to a 01.
urlCutoff = 44

MT = "OK to create a My Network Places " & vbCr & "folder for " & siteURL &amp;amp;amp;amp;amp;amp;amp; vbCr & "named " & siteName & "?"
TT = "My Network Places"
iRes = MsgBox(MT, vbOKCancel + vbInformation, TT )

Set objFso = CreateObject("Scripting.FileSystemObject")

If iRes = vbCancel Then
WScript.Quit
End If

Set SH = WScript.CreateObject("WScript.Shell")

'Create the folder under NetHood that will hold the target.lnk file
newPath = SH.SpecialFolders("NetHood") & "\" & siteName

If (objFso.FolderExists(newPath)) Then
WScript.Echo "A Network Place with that name already exists."
WScript.Quit
End If

objFso.CreateFolder(newPath)

'We ceate a Desktop.ini file
Set fs = CreateObject("Scripting.FileSystemObject")
aFile = newPath & "\Desktop.ini"

Set f = fs.OpenTextFile( aFile, ForWriting, True )

'Write the data lines that will make this a folder shortcut.
f.WriteLine "[.ShellClassInfo]"
f.WriteLine "CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}"
f.WriteLine "Flags=2"
f.WriteLine "ConfirmFileOp=0"
f.Close

'We make Desktop.ini a system-hidden file by assigning it attribute of 6
Set fs = CreateObject("Scripting.FileSystemObject")
Set g = fs.GetFile(newPath & "\Desktop.ini")
g.Attributes = 6

'We make the folder read-only by assigning it 1.
Set fs = CreateObject("Scripting.FileSystemObject")
Set g = fs.GetFolder(newPath)
g.Attributes = 1

'This is where we construct the target.lnk file byte by byte. Most of the lines are shown in 16 byte chunks,
'mostly because that is the way I saw it in the Debug utility I was using to inspect shortcut files.

'Line 1, 16 bytes
bString = Chr(&amp;amp;amp;amp;amp;amp;amp;H4C) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H01) & Chr(&H14) & Chr(&H02) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&HC0) & Chr(&H00) & Chr(&H00) & Chr(&H00)

'Line 2, 16 bytes
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H00) & Chr(&H00) & Chr(&H00) & Chr(&H46) & Chr(&H81) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00)

'Line 3, 16 bytes
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00)

'Line 4., 16 bytes. 13th byte is significant.
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H01) & Chr(&H00) & Chr(&H00) & Chr(&H00)

'Line 5. 13th byte is significant.
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00)

'When I was analyzing the next byte of shortcuts I created, I found that it is set to various values,
'and I have no idea what they are referring to. In desperation I tried substituting some values.
'00 caused a crash of Explorer. FF seeems to work fine for all.
'If anyone can get back to me on what this byte is or why FF works, please contact me.
bString = bString & Chr(&HFF)

'This byte is 00 if the URL is 44 characters or less, 01 if greater.
If urlLength > urlCutoff Then
bString = bString & Chr(&H01)
Else
bString = bString & Chr(&H00)
End If

bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H14) & Chr(&H00)

'Line 6, 16 bytes
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H1F) & Chr(&H50) & Chr(&HE0) & Chr(&H4F) & Chr(&HD0) & Chr(&H20) & Chr(&HEA) & Chr(&H3A) & Chr(&H69) & Chr(&H10) & Chr(&HA2) & Chr(&HD8) & Chr(&H08) & Chr(&H00) & Chr(&H2B) & Chr(&H30)

'Line 7, 16 bytes
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H30) & Chr(&H9D) & Chr(&H14) & Chr(&H00) & Chr(&H2E) & Chr(&H00) & Chr(&H00) & Chr(&HDF) & Chr(&HEA) & Chr(&HBD) & Chr(&H65) & Chr(&HC2) & Chr(&HD0) & Chr(&H11) & Chr(&HBC) & Chr(&HED)

'Line 8, 16 bytes
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H00) & Chr(&HA0) & Chr(&HC9) & Chr(&H0A) & Chr(&HB5) & Chr(&H0F) & Chr(&HA4)

'This byte is 00 if the URL is 44 characters or less, 01 if greater.
If urlLength > urlCutoff Then
bString = bString & Chr(&H01)
Else
bString = bString & Chr(&H00)
End If

bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H4C) & Chr(&H50) & Chr(&H00) & Chr(&H01) & Chr(&H42) & Chr(&H57) & Chr(&H00) & Chr(&H00)

'Line 9, 16 bytes
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H10) & Chr(&H00)

'Line 10, 2 bytes
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H00) & Chr(&H00)

'The next byte represents the length of the site name.
bString = bString & Chr(nameLength)

'Take the site name, and write each letter, preceeded by a "00" character.

For ltrIndex = 1 to nameLength
bString = bString &amp;amp;amp;amp;amp;amp;amp; Chr(&H00) & Mid(siteName, ltrIndex, 1)
Next

'Middle line, separates the Folder Name from the URL. 3 bytes.
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H00) & Chr(&H00) & Chr(&H00)

'The next byte represents the length of the site URL.
bString = bString & Chr(urlLength)

'Take the site URL, and write each letter, preceeded by a "00" character.
For ltrIndex = 1 to urlLength
bString = bString &amp;amp;amp;amp;amp;amp;amp; Chr(&H00) & Mid(siteURL, ltrIndex, 1)
Next

'Last line, 13 bytes
bString = bString & Chr(&amp;amp;amp;amp;amp;amp;amp;H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00) & Chr(&H00)

'Let's create the target.lnk file.
Set fs = CreateObject("Scripting.FileSystemObject")
aFile = newPath & "\target.lnk"
'aFile = newPath & "\vb.sss"
Set f = fs.OpenTextFile(aFile, ForWriting, True)
f.Write bString
f.Close

MT = siteName & " created."
jRes = MsgBox(MT, vbOK, TT )

End Sub

CreateNetworkFolder "http://ReallyReallyLongURL.com/big_long_subfolder/", "Really, Really Long"

Source:
http://totheescrime.org/FolderShortcut/fs.txt

http://www.codecomments.com/archive300-2005-4-452832.html

Monday, July 02, 2007

Deploying MOSS in an DMZ configuration

When planning to deploy MOSS as an Internet solution, the question "can I place the database server in my internal network, instead of the DMZ" is often asked. During some wondering around the Microsoft site I ran into the following article: Plan security hardening for extranet environments:
"This article details the hardening requirements for an extranet environment in which a Microsoft Office SharePoint Server 2007 server farm is placed inside a perimeter network and content is available from the Internet or from the corporate network"

Very usefull information, but the thing I found extremely usefull was the link to the "Extranet hardening planning tool: back-to-back perimeter" This is a Visio drawing which explains which ports need to be opened when deploying components inside or outside firewalls, etc. Take your advantage of it!!!

Thursday, June 28, 2007

Outlook 2007 and SharePoint integration issues

Just the other day I ran into an issue with the integration between Outlook 2007 and SharePoint 2007. This issue is quite anoying from a user perspective:

When connecting a list to Outlook 2007, Outlook creates a PST file in C:\Documents and Settings\%username%\Local Settings\Application Data\Microsoft\Outlook\ called "SharePoint List.pst" or "SharePoint Folders.pst". When you are using Roaming Profiles, the Local Settings directory is not copied along with the profile. This sounds logical, because the PST can become very large and you don't want this data to be copied to the server.

But, and here is the catch, if a user logs onto another workstation Outlook does know it has connected to a PST file before and tries to open it. Because the file has not been copied with the profile, it does not exist.....presenting the user with an error message.

On the blog of Jose Barreto I found a post which explains how to disable the Outlook integration. By entering a key in the registry, connecting Outlook to SharePoint is not possible anymore. This will definately solve the issue, but will also prevent user from using the Outlook integration. Something I do not like.

After some more Googleing I found the Office 2007 System Adminstrative Templates on the Microsoft site. When importing them into a Group Policy, you have the possibility to configure some settings for Outlook 2007. And then especially the two following settings:
User Configuration > Administrative Templates > Microsoft Office Outlook 2007 > Tools Account Settings SharePoint


  • Do not allow Sharepoint-Outlook integration
  • Do not roam users' SharePoint lists
The first setting will do the same as explained in the blog post mentioned earlier. But the second one will just prevent SharePoint lists from roaming along with the user and solving the issue!!
Links: