Had an interesting problem today. I want to trigger workflows from an aspx-page by finding the right one by name and for some reason, I got an exception that the workflow had to be flagged to allow manual activation or to be run as a subworkflow. This was very strange since I several times checked the workflow and it was not only published, but both the flags for manual activation and run as sub workflow were checked.
So, I applied my principle of first trying to find where the error was instead of finding what it was.
By tracing and checking some, I found that the webservice actually returned 4 workflows with the exact name I was looking for. I tried to load some of them in the GUI by changing the URL and they did load but they were strange some how since I could not change them. 2 were drafts, 2 were published, 2 were marked as runondemand and 2 were not. The last one proved to be the right one (both published and runondemand).
So, I had to change the code for fetching the GUID for a workflow with a specific name, so that it also checked that the workflow was both published and was allowed to be run on demand. So, if you run into similar problems, you know what to do.
Microsoft Dynamics CRM Chief Architect