I started the other day to create a simple workflow which should create an item in a tasks list and assign the task to a sharepoint group containing local accounts.
The set-up was (so I thought) the simplest possible: One standalone server on a single server, no domain, no nothing.
Sharepoint Approvers group contained 2 local users (COMPUTERNAME\User1,COMPUTERNAME\User2).Each user had the e-mail address manually set.
Now for the fun part: try to run the workflow, by creating a new document in th elist where the workflow was attached.
Workflow ended in error : "Could not update a list item"
I thought my startup account was to blame ( being Sharepoint\System - see A declarative workflow does not start automatically after you install Windows SharePoint Services 3.0 Service Pack 1 ) so I tried logging on with a different account but the workflow failed repeatedly, regardless of the user account I was attempting to run it with.I tried to start the workflow manually but the error message repeated "Could not update a list item"
I was about to re-create my whole environment to re-try this simple task when I was struck by the light:
I should check the ULS Logs first !
(usually located under %SYSTEMDRIVE%\Program Files\Common Files\Microsoft Shared\Web server extensions\12\Logs)
There it was:
Error in resolving user 'USER1' : System.ComponentModel.Win32Exception: Unable to contact the global catalog server at Microsoft.SharePoint.Utilities.SPActiveDirectoryDomain.GetDirectorySearcher() at Microsoft.SharePoint.WebControls.PeopleEditor.SearchFromGC(SPActiveDirectoryDomain domain, String strFilter, String rgstrProp, Int32 nTimeout, Int32 nSizeLimit, SPUserCollection spUsers, ArrayList& rgResults) at Microsoft.SharePoint.Utilities.SPUserUtility.ResolveAgainstAD(String input, Boolean inputIsEmailOnly, SPActiveDirectoryDomain globalCatalog, SPPrincipalType scopes, SPUserCollection usersContainer, TimeSpan searchTimeout) at Microsoft.SharePoint.Utilities.SPActiveDirectoryPrincipalResolver.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).Doing a bit of soulsearching (and some logical thinking) I understood what the error meant :
MY SERVER WAS NOT PART OF A DOMAIN.
In the attempt to validate the user accounts (and their e-mail addresses) required to take over the tasks, my workflow was allways attempting the check the Domain controller for my WORKGROUP domain , DC that could not be found, hence the error.
Ended up by reinstalling the server on a test domain and without any big surprise the workflow started and ended successfully.