I would just like to make you aware of the following fact:
- Workflows run manually, are run as the current user.
- Workflows triggered by "Create", are run as the user who created the workflow.
This is true for the normal workflow methods and mostly concerns "Modified by". Ex. Modified by will be wrong if a Workflow updates an entitity after it has been created. (unless the same person created the workflow and the entity).
I havn't checked if this is true when using impersonation in custom workflow assemblies aswell, but I would imagine it is. The way to handle it is to set the service.CalledIdValue to the user you want to be the modifier.
CRM and SharePoint Consultant