A: I recently had a custom workflow that I triggered based on the Notes attribute of a change request. Basically, my before criteria was that Notes didn't contain a text string, and the after criteria was that Notes contained a text string. However, the workflow never fired.
The problem was that the Notes value was initially empty, and the SQL query SCSM uses changes the "contain" workflow queries to a SQL LIKE command, which doesn't work against a null value. So the trigger fails.
The solution was to change the initial check (the before) to be if the Notes value was empty and the after check to be if Notes contained my text string. The workflow then triggered just fine. You might need to be careful about your logic, but the key point is that if your "before" value could be empty, don't try and use any of the contains logic.