Category Archives: SharePoint

Extract all solutions from SharePoint 2010 using Powershell

Using the following Powershell command, you can extract & save all solutions in SharePoint to your local drive:

(Get-SPFarm).Solutions | ForEach-Object{$var = (Get-Location).Path + “\” + $_.Name; $_.SolutionFile.SaveAs($var)}

This will extract all solutions to the current folder.

Update: If needed, you can use this script to add all the solutions to SharePoint (run it from the directory where the solutions are located)

Get-ChildItem | ForEach-Object{Add-SPSolution -LiteralPath $_.Fullname}

ULSViewer tool not working on real-time logs

I use ULSViewer  a lot when debugging SharePoint issues. One of the nicest features of the tool is to view the SharePoint log in real-time (and the fact that is works for both SP2007 and SP2010).

Last time I wanted to use the tool, I found that it was not parsing the SharePoint log in real-time. I was however able to open individual log files.
As it turns out, ULSViewer is using *-????????-?????.log as a filter to parse the logs in real-time. I had some ‘older’ log files in the LOGS folder that were not formatted in the ULS format (from running powershell commands).
Removing these files from the SharePoint Logs folder got ULSViewer real-time parsing working again.

Requirements for SharePoint Groups when sending emails to them

I had a SharePoint designer workflow that send an email to a SharePoint group. In the History Log of the workflow, the follow message was logged:

The e-mail message cannot be sent. Make sure the outgoing e-mail settings for the server are configured correctly.

The outgoing email settings however were configure correctly (alerts and emails from other workflows were being send out).
There were actually two reasons why the emails weren’t being sent:
The settings ‘Who can view the membership of the group?’ on the group was configured as ‘Group Members’
The workflow is executed in the context of the current user. If the user has no access to view group membership, the workflow won’t be able to expand the group.
You should configure this settings as ‘Everyone’
image
The group had no permissions
The group should have at least ‘Read’ permission to the site. If the group has no permissions configured, you will receive the error as described above.
image

Configure hMailServer for SharePoint

Nice article from Wesley Bakker on how to use hMailServer for SharePoint: http://weblogs.asp.net/wesleybakker/archive/2010/08/09/configure-hmailserver-for-sharepoint.aspx

In Short:
Authentication
SharePoint cannot authenticate to an SMTP server, so you need to disable authenctiaction on the hMailServer (at least for the local computer)

  • In Settings / advanced / IP Ranges add an IP range (either the ip of the server or simply 0.0.0.0 – 255.255.255.255) and disable ‘Require SMTP authentication’.

Drop folder
If you’re not using the build-in SMTP service, you need to configure SharePoint incoming mail to use a dropfolder. Also, SharePoint relies on the x-sender and x-receiver headers to process the mail. hMailServer does not add these messages, so these need to be added

  • Create a [dropfolder] and make sure the SharePoint Timer Service has read/write/modify access to it.
  • Configure hMailServer’s scripts (Settings / Advanced / Scripts) to handle the OnDeliverMessage event.
  • Use the following script
  • Sub OnDeliverMessage(oMessage)
        Dim path, filename, fso, original, copy
        path = Split(oMessage.Filename, “\”, -1, 1)
        filename = “[dropfolder]” & path(UBound(path))
        Set fso = CreateObject(“Scripting.FileSystemObject”)
        Set copy = fso.CreateTextFile(filename, True)
        copy.WriteLine(“x-sender: ” & oMessage.FromAddress)
        copy.WriteLine(“x-receiver: ” & oMessage.To)
        Set original = fso.OpenTextFile(oMessage.Filename, 1)
        copy.WriteLine(original.ReadAll)
        copy.Close
        original.Close
    End Sub

  • Configure SharePoint incoming mails to point to the [dropfolder]
  • Optionally configure hMailServer with a catch-all address (Domains / / Advanced tab) so you don’t have to create an account for each Email Enabled library you use in SharePoint.

The script will copy ALL emails to the dropfolder. Emails that are not intended for SharePoint will simple be ignored by SharePoint.

    SharePoint 2007 workflow activities disabled in Visual Studio 2010 toolbox

    Just noticed that when I tried to create a SharePoint 2007 workflow in Visual Studio 2010, the ‘SharePoint Workflow’ toolbox tab was missing. Selecting ‘Show all’ learned me that is was loaded, but they were all disabled.
    As it turned out (after comparing the project file with another one where the toolbox was available) I was mssing a ProjectTypeGuid ({F8810EC1-6754-47FC-A15F-DFABD2E3FA90}) in my .csproj file
    image

    EDIT: a list of know ProjectTypeGuids can be found here: http://www.mztools.com/articles/2008/MZ2008017.aspx