Archive for March, 2010

OfficeTalk

March 24, 2010

Office labs started a new project: OfficeTalk.

“Ever wish you could share information broadly within your organization without emailing everyone? Ever wish you could keep the pulse of what people in your organization think is interesting? Microblogging has that potential. OfficeTalk is a concept test to explore the value of microblogging in the enterprise.”

Which kind of means, twitter ( or yammer ) for the enterprise.

http://www.officelabs.com/Lists/Posts/Post.aspx?ID=92

Project page for OfficeTalk:

http://www.officelabs.com/officetalk

SP2010 and LinkedIn working together

March 22, 2010

Based on an oauth example over at http://developer.linkedin.com I created a webpart for the MySite Host homepage and activity page. Here a SP2010 user can authorize SP2010 to use the LinkedIn Api on his or hers behalf.

In the background I store the oauth tokens in a secured SharePoint list.

The webpart will then connect to LinkedIn and get your relevant network updates:

Now I was on a roll, and I also created a Shared Connections webpart that will compare the network connections of the logged in user and the profile the logged in user is viewing:

But there is also a LinkedIn Search Api. And we created a Federated Search service too! Now the people search also searches within your own LinkedIn network (see the right pane containing linkedin results):

How cool is that !

Sourcecode

MOSS 2007 and WSS v3 February 2010 CU

March 18, 2010

Although every SharePoint Geek out there is waiting for the final SP2010 bits, the Team is still cranking out updates for MOSS 2007 and WSS v3 like clockwork!

Windows SharePoint Services V3 and Microsoft Office SharePoint Server 2007 are now be able to get updated to the latest available bits with February CU.

WSS: 978396 The full server package for WSS
http://support.microsoft.com/default.aspx?scid=kb;EN-US;978396

MOSS: 978395 The full server package for MOSS
http://support.microsoft.com/default.aspx?scid=kb;EN-US;978395

(via: http://blogs.msdn.com/joerg_sinemus/archive/2010/02/24/wss-and-moss-february-2010-cu.aspx )

Tool: Import Pictures for all you Profiles

March 11, 2010

Here at Tam Tam we are currently working on implementing SP2010 as our Portal and Customer Portal Platform.

We wanted to have all our Employee profiles to include pictures:

SP2010 stores Profile Pictures in the MySite Host. There is a Picture Library there called “User Photos”. Inside there is a Folder named Profile Pictures. If it is not, it just means no one has uploaded a Profile Picture yet.

Each profile picture comes in three flavours: _LThumb, _MThumb and _SThumb. SP2010 does this for you, through the Profile Property Editor for Profile Pictures.

So, with the help of Reflector, I wrote a small tool that would import all our profile pictures and update the user profiles. I created a small Forms application that would import the profile pictures, based on username.jpg pictures.

The magic hapens here, this code is by Microsoft actually, not me:

using (Bitmap bitmap = new Bitmap(num3, num4, PixelFormat.Format32bppArgb))
            {
                using (Graphics graphics = Graphics.FromImage(bitmap))
                {
                    graphics.CompositingMode = CompositingMode.SourceCopy;
                    graphics.CompositingQuality = CompositingQuality.HighQuality;
                    graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    graphics.DrawImage(original, 0, 0, num3, num4);
                    using (MemoryStream stream2 = new MemoryStream())
                    {
                        bitmap.Save(stream2, ImageFormat.Jpeg);
                        stream2.Position = 0L;
                        return folder.Files.Add(fileName, stream2, true);
                    }
                }
            }

If you want you can use the tool and the code by going here. It is a research project, not a product!

And now we have profile pictures for Tweets:

Organisational browser:

 

Do not import Disabled User Accounts with SP2010

March 9, 2010

If you have got the Profile Import working in SP2010, then you probably will wan’t to EXCLUDE disabled user accounts from the import.

Here is how:

Go to the “Synchronization Connections” page of the User Profile Service Application.

Click on your connection, and select “Edit Connection Filters”

You can add USER filters and GROUP filters, we want to add a User filter here.

Choose the attribute “userAccountControl”

Choose the operator “Bit on equals”

Choose as filter (value) 2

Click on Add

And Press on OK

Your next import will now exclude Disabled User Accounts.

Via: http://blogs.msdn.com/brporter/archive/2010/02/20/excluding-disabled-user-accounts-in-sharepoint-2010.aspx

FAST Query tool on Codeplex.com

March 8, 2010

Just made available on codeplex.com:

“Tool to query FAST for Sharepoint and Sharepoint 2010 Enterprise Search. It utilizes the search web services to run your queries so you can test your queries remotely from your local machine. It shows your results, allows you to refine your query (FAST), and page your results.

The FAST for Sharepoint MOSS 2010 Query Tool is a WPF client that allows a developer to explore the scopes and managed properties of a given SharePoint Search SSP, build queries in FQL, Keyword, or SQL Syntax, submit those queries and examine the raw web service results. This tool can be useful in building and troubleshooting your FAST and Sharepoint search queries.”

http://fastforsharepoint.codeplex.com/

MOSS 2007 and user Site delete nightmares

March 7, 2010

MOSS 2007 is not dead yet. If you have a MOSS installation where users can delete sites, you may want this.

http://governance.codeplex.com/releases/view/14351

This has been around for some time now, but still worth mentioning. Use the L.E. version, the other one seems to be giving other users some trouble.

They have other cool stuff also:
http://governance.codeplex.com/

Office 2010 and SharePoint 2010 on May 12th ?

March 5, 2010

Microsoft announced, via their blog, that may 12th will be the day the Office 2010 ( and SharePoint 2010 ) wave will hit us all.
Read on here:http://blogs.msdn.com/sharepoint/archive/2010/03/05/sharepoint-2010-office-2010-launch.aspx

SharePoint 2010 Profile Sync

March 5, 2010

During the rebuild of my Dev Environment with SP2010 (the RC version) I was unable to get the Profile Sync service to work with the local domain. “Starting” was all it did until if finally un-provisioned itself to Stopped.

After lots if fiddling and rebuilding I tried something different. The SP2010 RC prerequisite installation installs the infamous WCF hotfix, but now I installed the “Windows6.1-KB976462-x64.msu” before hand, and now the Profile Import Service will start!

It could also very well be that I now did a REBOOT between the prerequisites and the SP2010 installation.

image

image

View KB976462

Power of PowerShell and the SharePoint Snap-in

March 2, 2010

Recently I started to look into some more detail at PowerShell and the SharePoint 2010 Snap-in. As a small exercise I wanted to create something (somewhat) usefull.

I came up with a small site structure install script for SP2010.

First the source configuration, an xml, with the sites and subsites I wanted to created:

<?xml version="1.0" ?>
<site title="Test Portal" template="STS#0" lcid="1033" owner="sp2010\administrator">
    <features>
        <feature id="{22a9ef51-737b-4ff2-9346-694633fe4416}"/>
        <feature id="{f6924d36-2fa8-4f0b-b16d-06b7250180fa}"/>
        <feature id="{94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb}"/>
    </features>
    <webs>
        <web url="Subsite1" title="Subsite 1" template="STS#0" lcid="1033" />
        <web url="Subsite2" title="Subsite 2" template="STS#0" lcid="1033">
             <webs>
                <web url="SubSubsite1" title="SubSubsite 1" template="STS#0" lcid="1033" />
                <web url="SubSubsite2" title="SubSubsite 2" template="STS#0" lcid="1033" />
            </webs>
        </web>
        <web url="Subsite3" title="Subsite 3" template="STS#0" lcid="1033">
            <webs>
                <web url="SubSubsite1" title="SubSubsite 1" template="STS#0" lcid="1033" />
                <web url="SubSubsite2" title="SubSubsite 2" template="STS#0" lcid="1033" />
            </webs>
        </web>
     </webs>
</site>

Next I wrote two helper function inside my PowerShell script:

function ActivateFeatures([System.Xml.XmlNode]$node){
    #features for current web
    $features = $node.selectnodes("./features/feature") # XPath is case sensitive
    foreach ($feature in $features) {
        $fid= $feature.getAttribute("id")
        write-host -f blue "Activating Feature $fid at $baseurl"
        Enable-SPFeature -Identity "$fid" -Url $baseurl -Force
    }
}

function ParseNode([System.Xml.XmlNode]$node){
    $url = $node.getAttribute("url")
    $title = $node.getAttribute("title")
    $lcid = $node.getAttribute("lcid")
    $template = $node.getAttribute("template")
    $baseurl = "$baseurl$url"

    write-host -f red "Going to create site at: $baseurl with Title: $title"
    New-SPWeb -Url "$baseurl" -Name $title -Template $template -Language $lcid

    ActivateFeatures($node);

    # add a trailing slash to create urls
    $baseurl = "$baseurl/"

    # sub webs
    $subnodes = $node.selectnodes("./webs/web") # XPath is case sensitive
    foreach ($subnode in $subnodes) {
        ParseNode($subnode)
    }
}

First remove the existing site collection:

$baseurl ="http://portal.sp2010.com"
Write-Host -f Red "Removing Site Collection at $baseurl"
Remove-SPSite $baseurl

And then start reading the xml file and start creating a site collection

write-host -f green "Opening sites.xml"

[System.Xml.XmlDocument] $xd = new-object System.Xml.XmlDocument
$file = resolve-path("./sites.xml")

$xd.Load($file)

#site collection
$sitenode = $xd.selectsinglenode("/site") # XPath is case sensitive
$title = $sitenode.getAttribute("title")
$lcid = $sitenode.getAttribute("lcid")
$template = $sitenode.getAttribute("template")
$owner = $sitenode.getAttribute("owner")

write-host -f red "Creating Site Collection at $baseurl"
New-SPSite -Url "$baseurl" -Name $title -Template $template -Language $lcid -OwnerAlias $owner
ActivateFeatures($sitenode);

# add a trailing slash to create urls
$baseurl = "$baseurl/"

# subwebs
$nodelist = $xd.selectnodes("/site/webs/web") # XPath is case sensitive
foreach ($node in $nodelist) {
    ParseNode($node)
}

write-host "End of sites.xml"

And add this to the top of your SP2010 PowerShell Script to always load the Snap-in.

$snapin="Microsoft.SharePoint.PowerShell"
if (get-pssnapin $snapin -ea "silentlycontinue") {
    write-host -f Green "PSsnapin $snapin is loaded"
}
elseif (get-pssnapin $snapin -registered -ea "silentlycontinue") {
    write-host -f Green "PSsnapin $snapin is registered"
    Add-PSSnapin $snapin
    write-host -f Green "PSsnapin $snapin is loaded"
}
else {
    write-host -f orange "PSSnapin $snapin not found" -foregroundcolor Red
}

You can download both files here: codeplex.com