Tuesday, June 29, 2010

Multilingual Search in SharePoint Server 2010 and FAST Search Server 2010 - Jie Li's GeekWorld - Site Home - MSDN Blogs

This is good news that Microsoft have fixed this in SharePoint 2010. I seem to recall that this was a problem for a prior deployment with Spanish and English variations.

I was pinged many times for multilingual search in SharePoint in the past. One of the issues is word breaking – in SharePoint 2007 if you set browser language to some other language than you are searching in, you may trigger the wrong wordbreaker and have a bad result. SharePoint 2010 improved on this topic and now it is more multilingual friendly, for example it has Results Query language setting in the webpart. But what is the order of this process? If user set a browser language will it override the setting in the webpart? And do I have to install OS/SharePoint language packs to get my search working?

Multilingual Search in SharePoint Server 2010 and FAST Search Server 2010 - Jie Li's GeekWorld - Site Home - MSDN Blogs

Introducing Enterprise Metadata Management - Microsoft Enterprise Content Management (ECM) Team Blog - Site Home - MSDN Blogs

I like this article on MMS. It contains a nice glossary of the terminology for MMS.

This is the first of many blog posts on the Enterprise Metadata Management (EMM) system in the 2010 release.  This will be the overview of the system, and future posts will drill into specific areas like event receivers, field editing and search refinements.

Introducing Enterprise Metadata Management - Microsoft Enterprise Content Management (ECM) Team Blog - Site Home - MSDN Blogs

Friday, June 25, 2010

Starting a workflow when content organizer is enabled

I have been looking at using the new Content Organizer feature in SharePoint 2010. The idea being that when people upload or ‘Send To’ a document center, the document is routed to the correct location.

When I enable the Content Organizer feature on my site, the ‘Drop Off’ library is created.

image 

I then create a rule to route the document to the ‘Documents’ library. I don’t want the document to be published and visible to all users until it has been approved. So I create a simple Workflow to do approval which should start when the document is created.

image

Unfortunately, the workflow never starts automatically once Content Organizer has been enabled.

I had a look at the Content Organizer code with Reflector, and it seems to be executing a SystemUpdate after it has moved the document to the correct location. I assume it is running this as one of the service accounts. (I have not checked which one).

When I look at the ULS logs in more detail, I see the following exception is occurring when I upload a document.

“Declarative workflows cannot automatically start if the triggering action was performed by System Account. Canceling workflow auto-start.”

I tried submitting the document as a user other than System Account, but the error persisted.

So I decided to look at starting the workflow programmatically. I created an Event Receiver is Visual Studio 2010.

I found this post from Tobias Zimmergren with some sample code to programmatically start a workflow.

http://www.zimmergren.net/archive/2009/01/25/starting-a-sharepoint-workflow-from-code-event-receiver.aspx

I overrode the ItemAdded event as follows:

public override void ItemAdded(SPItemEventProperties properties)
      {
          base.ItemAdded(properties);
          //SPListItem item = properties.ListItem;
          //item["Title"] = " " + item["Title"] + " - added " + DateTime.Now;
          //item.Update();
        
         
if (properties.ListItem.ParentList.TemplateFeatureId==new Guid("00bfea71-e717-4e80-aa17-d0c71b360101"))
          {
              SPWorkflowManager wfManager = properties.ListItem.ParentList.ParentWeb.Site.WorkflowManager;
              SPWorkflowAssociationCollection wfassociationCollection = properties.ListItem.ParentList.WorkflowAssociations;
              foreach (SPWorkflowAssociation wfAssociation in wfassociationCollection)
              {

                  if (wfAssociation.BaseId == new Guid("8ad4d8f0-93a7-4941-9657-cf3706f00409"))
                  {
                      wfManager.StartWorkflow(properties.ListItem, wfAssociation, wfAssociation.AssociationData, true);
                      break;
                  }

              }
          }
      }

 

I got the baseid for the WorkflowAssociation using SharePoint Manager:

image

I run the event receiver by pressing F5 in Visual Studio and watch the behaviour.

When I upload the document, the content organizer routes the document to the folder in the library and the workflow starts.

I expect to spend some more time refining the code for the eventreceiver to make sure it only executes under the right circumstances, but thought I would share in case anyone else is experiencing the same issue.

PowerGUI and SharePoint 2010

I decided to reconfigure my development VM with PowerGUI to give me intellisense with PowerShell for SharePoint 2010.

I downloaded and installed PowerGui from http://www.powergui.org

Start PowerGUI and choose File – PowerShell Libraries

image

Add the SharePoint modules to PowerGUI. (C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI)

image

It should look like this:

image

Now you should see intellisense for the SharePoint cmdlets:

image

Inside Microsoft SharePoint 2010

I really like the preview chapter in this book. Very concise and clear and easy to read. The PowerShell tutorial is very nice too.

Summary: Read preview book excerpts from the book Inside Microsoft SharePoint 2010. Learn what's new with the SharePoint developer platform from leading experts on Microsoft SharePoint Foundation 2010 and Microsoft SharePoint Server 2010.

Inside Microsoft SharePoint 2010

Inside Microsoft SharePoint 2010

Saturday, June 5, 2010

SharePoint: Build your Taxonomy in MindManger and Import it to the Term Store | EndUserSharePoint 2010

This looks fantastic. I love Mind Manager and the ability to do taxonomy for SharePoint 2010 look great!

Author: Ruven Gotz

Fabian Williams has done a fabulous job explaining how to work with managed metadata in SharePoint 2010. Like Fabian, I too was intrigued with Wictor WilĂ©n’s Excel script for generating the required CSV more easily. But then my mind started to turn over:  I love building my metadata taxonomies in MindManger. I wondered if I could somehow create a taxonomy map that would allow a user to really see and work with their taxonomy, but that would then generate the required CSV file?

I have not really programmed seriously for over ten years. They say it’s like riding a bike? Well I have some seriously skinned knees to show for my efforts. I’d be happy to see the results of code clean-up and simplification after a professional programmer gets her hands on it. At this point, for me, just working is good enough

SharePoint: Build your Taxonomy in MindManger and Import it to the Term Store | EndUserSharePoint 2010

Friday, June 4, 2010

Finding incorrectly disposed objects

Reading through the SharePoint 2010 Foundation SDK, I came across an interesting registry setting that I hadn’t noticed before.

“To identify the code that causes the problem, you can search in the logs for entries that contain the allocation identifiers, or follow the instructions in the warnings and add the following subkey setting to the registry:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\HeapSettings SPRequestStackTrace = 1

This subkey setting ensures that the stack trace of the original SPRequest allocation (which occurs whenever an SPSite or SPWeb object is created) is added to the logs when these warnings occur.”

Download details: Silverlight 4 Training

 

The Silverlight 4 Training Course includes a whitepaper explaining all of the new Silverlight 4 features, several hands-on-labs that explain the features, and a 8 unit course for building business applications with Silverlight 4. The business applications course includes 8 modules with extensive hands on labs as well as 25 accompanying videos that walk you through key aspects of building a business application with Silverlight. Key aspects in this course are working with numerous sandboxed and elevated out of browser features, the new RichTextBox control, implicit styling, webcam, drag and drop, multi touch, validation, authentication, MEF, WCF RIA Services, right mouse click, and much more!

Download details: Silverlight 4 Training

Error trying to move the Choice Lists to Managed Meta data

I was trying to convert my Choice List user profile properties from my upgraded SSP database in SharePoint 2010.

I was following the instructions in Perform post-upgrade steps for an in-place upgrade (SharePoint Server 2010)

When I ran the Move-SPProfileManagedMetadataProperty –ProfileServiceApplicationProxy <SPServiceApplicationProxyPipeBind> -Identity <Identity> [-AvailableForTagging Yes] [-TermSetName] command, I was getting the following exception:

Move-SPProfileManagedMetadataProperty : No User Profile Application available to service the request. Contact your farm administrator. At line:1 char:38

+ Move-SPProfileManagedMetadataProperty <<<<  -ProfileServiceApplicationProxy e4f3ce39-864d-4735-87ee-82cd8545236f -Identity <id> -AvailableForTagging -TermSetName Practice   + CategoryInfo          : InvalidData: (Microsoft.Offic...ProfileProperty: SPCmdletMigrate...ProfileProperty) [Move-SPProfileManagedMetadataProperty] , UserProfileAppl...ilableException    + FullyQualifiedErrorId : Microsoft.Office.Server.UserProfiles.PowerShell.SPCmdletMigrateDataForOneTaxonomicProfileProperty

I checked the ULS log and found I was actually getting

Exception occured while connecting to WCF endpoint: System.ServiceModel.Security.SecurityAccessDeniedException

Turns out the reason for that was that I needed to provide the right permissions for the User Profile service to the user executing the command.

clip_image002

Tuesday, June 1, 2010

SPTraceView

My Colleague David Marsh pointed this out to me….looks nice!

SPTraceView analyses in real time the ULS trace messages coming from all MOSS components and can notify you using a balloon-style tray bar messages when something of interest happens. This functionality is targeted mainly for people that develop and/or test custom SharePoint applications. It could be also useful to administrators to diagnose and troubleshoot their MOSS farm.

SPTraceView