What does the checking, is 'Check for User' model. Specifically:
- 'SearchUser (8.52)' component find users that have PrimaryEmail matching the string in the field and creates an array of such users
- For Each loop after it loops through the array elements and verifies if the contents of that field match user's primary e-mail address - if it does, this one is going to get used, it goes out of the loop and the flow will continue.
With Workflow, there is always a way around. In this case, it depends on what exactly do you need the end result to be.
Most ServiceDesk users are using AD users, so the only other parameter of user I would use for the same purpose is AD login name. Steps to implement that idea are below. I did a little test and it seems to work just fine, except the first search was slightly longer in my test box. As always - don't implement that to your production ServiceDesk before thorough testing in test environment. This also falls clearly under the customization/not supported category :)
Steps are based on 7.1 SP1 version of the webform, I don't expect the flow to be much different in earlier versions but I don't have test boxes for earlier versions right now to verify that.
SD.Feeder.TechnicianIncidentForms > Check For User model:
1. Add 'LoadByADLoginName' component on the 'exists' path of 'Is there a primary contact? (8.43)' component:
Inputs: AdLoginName: Dynamic Value: YOURADNAME\[PrimaryContactDisplayName] (replace YOURADNAME with your domain name)
Outputs: ADUserEmail
2. Copy the 'SearchUser (8.52)' component and connect its outputs in the same place. Connect the 'LoadByADLoginName' output to the copied 'SearchUser' component
3. Modify the copied 'SearchUser' component:
Inputs: Email: Process Variable: ADUserEmail.PrimaryEmail
4. Add 'Exception Trigger By Component' component:
Trigger: Component: LoadByADLoginName
5. Connect the 'Exception Trigger By Component' output to the original 'SearchUser (8.52)' component
6. Copy the 'Text Equals Rule (8.56)' component and place the copy on the 'not equals' path of the original 'Text Equals Rule (8.56)' (a little up and a bit to the right from the changes made so far) and connect the outputs to the same place
7. Modify the copied 'Text Equals Rule' component:
Compare Variable: Process Variable: ADUserEmail.EmailAddress
What I was trying to achieve with this, is to disrupt the original flow as little as possible. If finding user using AD login name fails, it'll fall back to the default flow with no ill effects (besides being a bit slower).