~ Brian McDermott
One of the beautiful things about getting the whole System Center 2012 suite rather than an individual product is how you can integrate them together to make them much more than the sum of their parts. So you may have gone and set up Service Manager to integrate it with Orchestrator, and you created your runbook to automate your otherwise dull and mundane repetitive tasks. You may have created your Runbook Automation Template, your Service Request Template Offering, your Request Offering and Template, and you finally published your Request Offering to free up all that future time. You can now sit back, admire your work and relax with a cup of tea as all those manual tasks, now automated, are whizzing by and you’ve now freed up your day.
By the way, if you haven’t automated all those mundane day-to-day tasks and you would like to, take a look at these demo links to get an idea of how it is done:
But then you start to get calls stating that these automated tasks are not completing anymore. You take a look in Orchestrator and you can see that the runbooks are queued up and not starting.
When you look in the RunbookService trace log (located at %ProgramData%\Microsoft System Center 2012\Orchestrator\RunbookService.exe\Logs) you see an entry similar to the following:
2014-06-17 16:41:55  1 Exception caught in long __stdcall WorkflowContextComAdapter::OnPolicyInstanceCreated(unsigned long,wchar_t *)
The clues are in yellow.
When you set up your Web form for your customers/users/clients to enter the details of their service requests, they can go and type in just about anything by default. In the example above, the customer, not unreasonably, entered & instead of typing out the word and.
The problem here is that when the request is then sent through to Orchestrator as an XML packet, when Orchestrator attempts to parse it, the existence of a reserved XML character (the &) in the middle of the XML packet renders the data invalid (see http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML).
Preventing this from happening
To prevent this from happening again, we need to prevent the customers/users/clients from entering any XML character in these forms. Educating all potential users of the portal about the need to avoid these characters would be impractical so we need to police the input and stop them from being entered at the source.
Luckily for us it is possible to do this within the Request Offering Template. To do this, open your Request Offering and select Configure Prompts and then Configure for each request offering that allows the user to enter a string.
Then enter the following Regular Expression to ensure that the XML reserved characters are not allowed,
At this point, when a customer attempts to enter an invalid character they will not be allowed to do so and the Custom ToolTip you entered above will be displayed as shown below.
Once done you can get back to your cup of tea and relax once more.
And special thanks to my colleague Henry Zhu and his work on KB 2993719 which this is based upon:
2993719 – An Orchestrator runbook is not created when users submit a Service Manager service request form (http://support.microsoft.com/kb/2993719)
Brian McDermott | Escalation Engineer | Microsoft GBS Management and Security Division
System Center All Up: http://blogs.technet.com/b/systemcenter/
System Center – Configuration Manager Support Team blog: http://blogs.technet.com/configurationmgr/
System Center – Data Protection Manager Team blog: http://blogs.technet.com/dpm/
System Center – Orchestrator Support Team blog: http://blogs.technet.com/b/orchestrator/
System Center – Operations Manager Team blog: http://blogs.technet.com/momteam/
System Center – Service Manager Team blog: http://blogs.technet.com/b/servicemanager
System Center – Virtual Machine Manager Team blog: http://blogs.technet.com/scvmm
The Forefront Endpoint Protection blog : http://blogs.technet.com/b/clientsecurity/
The Forefront Identity Manager blog : http://blogs.msdn.com/b/ms-identity-support/
The Forefront TMG blog: http://blogs.technet.com/b/isablog/
The Forefront UAG blog: http://blogs.technet.com/b/edgeaccessblog/