Symptoms:

Workflows will fail to update a Person or Group column after applying the October CU for WSS 3.0. The December Uber update causes this issue, as well.

Workflow status error: "Error Occurred" and "Error updating a list item"

===== ULS LOG (partial) =====

w3wp.exe (0x0C1C) 0x0900 Windows SharePoint Services General 75yj Medium Error in resolving user 'domain\user' : System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.SharePoint.Utilities.SPActiveDirectoryPrincipalBySIDResolver.ResolvePrincipal(String input, Boolean inputIsEmailOnly, SPPrincipalType scopes, SPPrincipalSource sources, SPUserCollection usersContainer) at Microsoft.SharePoint.Utilities.SPUtility.ResolveWindowsPrincipal(SPWebApplication webApp, String input, SPPrincipalType scopes, Boolean inputIsEmailOnly).

w3wp.exe (0x0E00) 0x0B00 Windows SharePoint Services Workflow Infrastructure 72er Medium Microsoft.SharePoint.SPException: Invalid data has been used to update the list item. The field you are trying to update may be read only. ---> System.Runtime.InteropServices.COMException (0x80020005): Invalid data has been used to update the list item. The field you are trying to update may be read only. at Microsoft.SharePoint.Library.SPRequestInternalClass.AddOrUpdateItem(String bstrUrl, String bstrListName, Boolean bAdd, Boolean bSystemUpdate, Boolean bPreserveItemVersion, Boolean bUpdateNoVersion, Int32& plID, String& pbstrGuid, Guid pbstrNewDocId, Boolean bHasNewDocId, String bstrVersion, Object& pvarAttachmentNames, Object& pvarAttachmentContents, Object& pvarProperties, Boolean bCheckOut, Boolean bCheckin, Boolean bMigration, Boolean bPublish) at Microsoft.SharePoint.Librar..

===== ULS LOG (partial) =====

Cause:

Regression introduced by the October CU for WSS 3.0.

Resolution:

1. Install Windows SharePoint Services February Cumulative Update: http://support.microsoft.com/kb/961750.

Workaround:

If you are unable to install the SharePoint February CU, then here is a workaround:

  1. Create a string variable in the workflow, and call it UserID.
  2. Add the workflow action "Set Workflow Variable". Set the UserID variable to whatever user type column you are interested in (example: "Created By").
  3. Add the workflow action "Build Dynamic String". In the dynamic string dialog, type "-1;#" (without quotes). Then, click "Add Lookup" to the workflow variable UserID. Click OK.
  4. Still on the build a dynamic string action, set the variable to store in as UserID.
  5. Change the workflow action to use the variable UserID when updating or setting the Person or Group type field.

NOTE: the same workaround works for FBA (forms based authentication) providers, as well.