Monday, February 9, 2015

User Profile Synchronization Service

That old gem of getting the user profile synchronization service running bit me today.  Thanks so much to SharePointBjorn for supplying the powershell script to fix it.

Sunday, February 8, 2015

SharePoint 2013 - Creating a view to show tasks assigned to me and groups that I am a member of

I have a requirement to create a view to show tasks that are:
  • assigned to me, and
  • assigned to groups that I am a member of
Thanks to this blog for the answer:  Filter Sharepoint Task Llist View To Show Tasks Assigned To Groups I am in.

The Where clause for the view needs to be:

 
<Or>
  <Membership Type="CurrentUserGroups">
    <FieldRef Name="AssignedTo"/>
  </Membership>
  <Eq>
    <FieldRef Name="AssignedTo"/>
    <Value Type="Integer">
      <UserID/>
    </Value>
  </Eq>
</Or>


And that is all.

Wednesday, February 4, 2015

SharePoint 2013 - Adding a ListViewWebPart throws error "The specified view is invalid"

Today I encounted an issue where I was programatically adding a ListViewWebPart to a page and getting an exception "The specified view is invalid".

The code throwing the exception was

            var listViewWebPart = new ListViewWebPart 
            {
                ListId = list.ID, 
                ChromeType = PartChromeType.None,
                ViewGuid = list.Views[Constants.ViewNames.DocumentLibraryAllDocumentSets].ID.ToString("B").ToUpper()
            };
            webPartManager.AddWebPart(listViewWebPart, "Top", 1);

The solution was to change ListViewWebPart to XsltListViewWebPart. Once I did that the problem went away.

Tuesday, February 3, 2015

Sharepoint 2013 - create mapped properties with powershell

It has been many years and a couple of versions of SharePoint since I posted and I figured it's time to resurrect SharePoint Wisdom.  What better way to start than a sample powershell function that will add/edit a managed property and map a crawled property to it in SharePoint 2013.

if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) {
    Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}

Function UpdateManagedPropertyMapping([string]$managedPropertyName, [string]$crawledPropertyName, $searchApp)
{
    $managedProperty = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchApp -Identity $managedPropertyName -ErrorAction SilentlyContinue
    Write-Host Adding/Updating managed property $managedPropertyName

    if($managedProperty -eq $null)
    {
        #create a new property
        Write-Host Creating managed property $managedPropertyName
        $managedProperty = New-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchApp -Name $managedPropertyName -Type 1 -Queryable $true -Retrievable $true 
        $managedProperty.Refinable = $true
        $managedProperty.Sortable = $true
        $managedProperty.Update()
        Write-Host Created managed property $managedPropertyName
    }
    else
    {
        Write-Host Managed property $managedPropertyName already exists
    }

    $managedPropertyMapping = Get-SPEnterpriseSearchMetadataMapping -SearchApplication $searchApp -ManagedProperty $managedProperty
    if($managedPropertyMapping)
    {
        #remove mapping
        Write-Host Removing existing mapping
        Remove-SPEnterpriseSearchMetadataMapping -Identity $managedPropertyMapping -Confirm:$false

    }
    Write-Host Mapping property $crawledPropertyName to $managedPropertyName
    $crawledProperty = Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchApp -Name $crawledPropertyName
    $managedPropertyMapping = New-SPEnterpriseSearchMetadataMapping -SearchApplication $searchApp -ManagedProperty $managedProperty -CrawledProperty $crawledProperty

    Write-Host Finished adding/updating managed property $managedPropertyName
}

$searchApp = Get-SPEnterpriseSearchServiceApplication
UpdateManagedPropertyMapping FFBoKAuthor ows_Author0 $searchApp
UpdateManagedPropertyMapping FFBoKPublicationYear ows_CategoryLevel1 $searchApp
UpdateManagedPropertyMapping FFBoKCategory1 ows_CategoryLevel1 $searchApp

I hope this script proves useful to someone.

Tuesday, April 21, 2009

Visual Studio 2008 Office 2007 templates missing

I just tried to create a new SharePoint 2007 Sequential Workflow in Visual Studio 2008, but when I navigated to Office 2007 in the project types no templates appeared.

I scratched my head for about 10 minutes and then noticed that I had selected .NET Framework 3.0 as the .NET version. Changing this to .NET Framework 3.5 fixed the problem.






Tuesday, February 10, 2009

Retrieving the COM class factory for component with CLSID {3D42CCB1-4665-4620-92A3-478F47389230} failed due to the following error: 80070005

I came across this error in SharePoint yesterday. It seemed to spontaneously occur for no reason I could figure out and seemed to be linked to importing user profiles from Active Directory. The import stopped working and this error started to appear.

After searching I found a few articles suggesting to fix permissions on the OSearch component. One of these is http://www.sharepointblogs.com/jasonmedero/archive/2008/02/08/after-applying-moss-2007-sp1-event-log-error-retrieving-the-com-class-factory-for-component-with-clsid-3d42ccb1-4665-4620-92a3-478f47389230-failed-due-to-the-following-error-80070005.aspx

I checked these permissions and found that they were already correct. What I did try then was to stop and start the osearch service.

Restarting the osearch service made the error go away BUT then when I tried to go to the User Profile page in the SSP I got a new error which stated there was a problem connecting to the database or to the search. Upon further investigation I discovered that the SSP web application had lost it's connection to the indexer. Once I added this back in it seemed to work fine again.

Tuesday, July 8, 2008

Wildcard Search in MOSS

Earlier this year I was asked to implement wildcard people search in MOSS. The solution I went with wasn't pretty and I wish I could go back and do it again. If I could do it again I would try to use the method outlined in this article with some customisations to make it work for People Search: Web Part for Wildcard Search in Enterprise Search

The way I had originally gone about it was to create a custom people search box based on this article. It worked really well EXCEPT that if any of my criteria were null for the person but they met other search criteria they would not show up in the results.