Email a Link to the Current List Item from SPD Workflow

If you use the built-in activity of SharePoint Designer workflow “Send email”, you can embed the URL of the current item (“Absolute Encoded URL”). However, this approach makes a URL of this kind

http://server/site/Lists/listname/1_.000

which is wrong.

The workaround is to use the SharePoint DispForm.aspx page and append an ID from the current item:

http://server/site/Lists/listname/DispForm.aspx?ID=[%ListItem:ID%]

(of course, being ListItem your own list name in SharePoint Designer)

Patch for SharePoint Workflow Time-based Activities

Today I’ve been working on a “Early Warning” workflow designed with SharePoint Designer. It is supposed to run on every item change and to suspend itself until few days before item’s expiry date (it’s just a date column). But, it didn’t work as expected.

I remembered reading that there are some glitches in the way Workflow Foundation dehydrates and rehydrates the “sleeping” workflows. There is a patch available at http://www.microsoft.com/downloads/details.aspx?FamilyID=6096ce0f-d21e-47ac-afe2-d4e1c2fce670&displaylang=en.

I downloaded it and it worked like a charm!

Community Kit for SharePoint 2.0 Pre-Release

Exciting news! The CKS 2.0 has been pre-released. It’s just been a few months since the project started and we already have something tangible.

The features included in this pre-release are:

Enhanced Blog Edition Beta 1
Enhanced Wiki Edition Alpha
ChatterBox AJAX Beta
Tag Cloud

Download any of the components above and play with them (not in production environment, though)…and, above all, provide feedback to the team.

Full announcement can be found here.

Community Kit for SharePoint


Few months ago I joined Community Kit for SharePoint team. It’s a collaborative open-source effort to extend and adapt SharePoint for different communities. This project is led by Lawrence Liu, Senior Technical Product Manager and Community Lead at Microsoft (his blog runs on SharePoint). It’s hosted on CodePlex, at http://www.codeplex.com/CKS.

Right now there are different editions in progress:

I’m collaborating in Corporate Intranet and Internet/Extranet edition as a developer. I’ll publish news from this project on a regular basis.

Stay tuned for much more free releases from CKS project very soon. If you would like to contribute, please visit the project page and see where you can help.

How to Optimize SharePoint Designer’s Use of Content Types in a Workflow

I’m annoyed by many little details of the SharePoint Designer Workflow editor, but the main one is that it profligates in the creation of content types. It creates one content type for any custom form that you create when collecting data from a task. Moreover, it doesn’t give you the chance to reuse an existing type….every new task is a new content type in the Tasks list.

However, you CAN reuse existing content type for the Tasks list. You just have to create the first form as usual and then create a second form with a easy-to-find name such as “DUMMY”. Then, a little bit of manual work follows:

  • Open the XOML file of your workflow with right click, choosing “Open With” then “SharePoint Designer (Open As XML)
  • Find the first “CollectDataTask” action, such as this one

    <ns0:CollectDataTask x:Name=”ID15″ ContentTypeId=”0x01080100AC1C1A96057F4B4897ED6C99E92728F500A85399B392A23943B207F10B3F8BB318″ TaskId=”{ActivityBind ROOT,Path=taskAM}” Title=”CAF Approval 1″ InProperties=”{x:Null}” __Context=”{ActivityBind ROOT,Path=__context}” OutProperties=”{x:Null}” AssignedTo=”{ActivityBind ROOT,Path=userAM}” />

  • Copy the line after the x:Name field
  • Find the CollectDataTask with the Title=”DUMMY”
  • Replace the content of the line after the Name field with the first action copied data

That’s it! Now you can safely remove the DUMMY content type from the Task list and Site Content Types list.