Archive for the ‘SharePoint Tools’ Category
SharePoint Diagnostic Studio
Talking of tools (see Favorite SharePoint Development Tools), the SharePoint Diagnostic Studio from Microsoft provides SharePoint performance monitoring functionality. This tool is particularly useful for consolidating the ULS records across servers in a SharePoint server farm. It’s part of the Microsoft SharePoint 2010 Administration Toolkit v2.0.
While useful, the user interface is not particularly polished or easy to use. In particular, the SharePoint Diagnostic Studio must be run with the language set to “US-English”, otherwise date formats will be presented incorrectly and date/time filtering will not work.
Overall Description: http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?pID=971
Download from: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=718447d8-0814-427a-81c3-c9c3d84c456e&displaylang=en
Documentation: http://technet.microsoft.com/en-us/library/hh144782.aspx
Favorite SharePoint Development Tools?
Here’s a four free development tools you shouldn’t start a SharePoint development project without:
- CAML Builder from U2U (http://www.u2u.be/Res/Tools/CamlQueryBuilder.aspx): Build and test your CAML queries and paste into your code.
- CKS (Community Kit for SharePoint, Tools Edition) (http://cksdev.codeplex.com/ ): Makes the SharePoint development cycle tolerable (almost). Version 2 was released May 2011.
- ULS Viewer (http://archive.msdn.microsoft.com/ULSViewer ) In my opinion, the best.
- SharePoint Manager (http://spm.codeplex.com/). Invaluable for browsing a SharePoint farm, viewing and changing parameters and option.
For uploading single or groups of files from the desktop or mail messages from Outlook I use, of course, our “SPDrag&Drop” tool. Take a trial by downloading from here: http://www.nickgrattan.net/SPDragDrop/ProductInfo.aspx
Creating While Loops in SharePoint Designer Workflows using Stateful Workflows – Part 2
Here’s some additional information to this post about this subject.
An alternative to our solution for while loops in SharePoint Designer workflows have been previously proposed based on setting a workflow to start when an item is changed. This gets over the problem of how to get a workflow to restart itself (which we do with the “Restart This Workflow” action). You can find a description of how to do this here: http://sharepointmagazine.net/technical/development/the-dog-ate-my-task-use-sharepoint-designer-to-email-daily-task-reminders
However, the technique of a workflow restarting itself when an item changes will not work with SP2. Take a look at this Microsoft post:
In SP2 a workflow cannot restart itself recursively, and so this will break stateful workflows written in this way. Seems strange that Microsoft would introduce a breaking change when using these techniques have been well documented.
Creating While Loops in SharePoint Designer Workflows using Stateful Workflows
For an update on this topic please see this blog entry: http://nickgrattan.wordpress.com/2010/12/14/while-loops-in-sharepoint-designer-workflows/
Amongst several significant limitations with SharePoint Designer workflows, perhaps the most important is the lack of looping. Therefore, expressing processes like “while not approved, rework” becomes difficult.
We have published a paper that describes how to implement while loops by emulating stateful workflows in Microsoft SharePoint Designer. You can download the paper here (PDF, Oct 2009). The technique uses our “Restart this workflow” custom action, which is part of our “Custom Activity Pack” which can be downloaded here for free.
Custom Workflow Action: Send to Records Center
Our Custom Activity Pack contains actions that can be installed for use in Microsoft SharePoint Designer workflows. The latest version includes an action for sending documents and items to a Records Center site collection directly from your workflows.
The Custom Activity Pack is free and can be downloaded from our web site at http://www.nickgrattan.net/Downloads.aspx.
Other custom actions in this pack include:
- Start Workflow – Start another workflow for the item or document and return.
- Call Workflow – Start another workflow and wait until that workflow has completed.
- Halt Workflow – Halt another workflow executing against the item or document.
- Restart This Workflow – great for implementing stateful workflows in SharePoint Designer
- Is Workflow Running – check if another workflow is running against the item or document.
Here is the entire list of actions:

BDC Catalog Designer from Microsoft!
Microsoft have released a tool for developing BDC XML catalogs (applications) and it’s part of the Microsoft Office SharePoint Server August SDK.
Find out more here: http://blogs.msdn.com/sharepoint/archive/2007/08/22/announcing-the-microsoft-business-data-catalog-definition-editor-for-microsoft-office-sharepoint-server-2007.aspx
Update: 28 November 2008 – Warning; this tool cannot do SQL Server 2005/2008 schemas. This means you cannot use it against AdventureWorks, but you can use it against AdventureWorksDW. This is an astounding limitation given Microsoft’s push towards using schemas. If you try, you’ll get the error “Could not process Table ‘….’. Make sure you have SELECT Rights on the Table/VIEW”. This needs to be fixed.
Setting Regional Settings with PowerShell
This blog entry describes how to use Microsoft PowerShell with the SharePoint and MOSS 2007 object model. Here is an example script that allows the regional settings for a site to be changed and follows the C# example presented here.
$spsite=[Microsoft.SharePoint.SPSite](“http://localhost:9000“)
$rootWebSite=$spsite.RootWeb
$website=$spsite.OpenWeb($rootWebSite.ID)
$culture=[System.Globalization.CultureInfo]::CreateSpecificCulture(“en-GB”)
$website.Locale=$culture
$website.Update()
$website.Dispose()
$rootWebSite.Dispose()
$spsite.Dispose()
Save the file with a “ps1” extension, e.g. “locale.ps1”. The script can be executed in PowerShell by typing:
./Locale.ps1
Note that even if the script file is in the current folder you still need to use the “./” notation to qualify the filename.
Preparing PowerShell for SharePoint and MOSS 2007
Microsoft PowerShell allows you to write scripts that can use .NET classes, objects, properties and methods. It therefore provides an ideal way of creating script files by calling into the SharePoint and MOSS object model.
First, download Microsoft PowerShell from here and install. PowerShell can then be lanched from the “Start” menu.
The PowerShell execution policy determines if script files can be run – by default they are prohibited for security reasons. Enter the following command to find out about execution policy and signing script files:
get-help about_signing
You can either elect to only run signed scripts (in which case scripts must be signed with a certificate), or to run unsigned scripts from the local file system or to run any unsigned script. For most users, allowing unsigned scripts to run from the local file system is acceptable, so to allow this enter the following commands to set and then retrieve the execution policy (you need to be logged on as administrator):
set-executionpolicy RemoteSigned
get-executionpolicy
Before programming against the SharePoint and/or MOSS 2007 object model the appropriate assemblies must be loaded. The following commands do this:
[System.Reflection.Assembly]::Load(“Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”)
[System.Reflection.Assembly]::Load(“Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”)
You can place these commands the file called Microsoft.PowerShell_profile.ps1 in a folder called My Documents\WindowsPowerShell to run commands automatically when you run PowerShell (the folder and the file may not exist and may need to be created).
You can now test calling into the SharePoint object model. The following command gets a reference to a site collection at the given URL:
$spsite=[Microsoft.SharePoint.SPSite](“http://localhost/sites/intranet“)
You can review all the property values for the SPSite object by typing the name of the object variable:
$spsite
You can find an example of creating a script file for chaning a site’s regional settings here.