Сегодня долго ломал голову над тем, как задать сложные условия (например, <WHEN значение одного поля AND значение другого поля><REQUIRED/></WHEN>). Process Template Editor обманчиво позволяет создавать вложенные <WHEN>, но при записи work item type definition на диск такая конструкция не проходит проверку на соответствие XSD-схеме (и правильно, потому что схемой такое ухищрение не предусмотрено
).
После вдумчивого курения документации стало похоже, что для произвольных полей сложное условие задать нельзя в принципе. Но поскольку мне нужно было проверять значения вполне конкретных полей State и Reason, то выяснилось, что как раз эта задача - решаемая, только немножечко другим способом, через правильную настройку work item workflow. Ограничения а-ля <REQUIRED> можно задавать непосредственно для конкретного перехода work item'а из одного состояния в другое с определенным Reason'ом. Подробнее об этом - целая статья в MSDN.
P.S. А кстати, через workflow даже изящнее получается, не нужно лепить уродских нечитабельных конструкций из вложенных условий.