I have a workflow validator on the Create transition of one of my workflows that looks like this:
cfValues.get("Module / Subprocess")?.keySet()?.size() == 2
This field is a cascading select field and we want both dropdowns within that field to be required. As far as I know, when you make this field required in the field configuration, only the first dropdown is actually required. We need both filled out, which is the reason for the scripted validator on the Create transition.
This scripted validator works correctly - however, all of our projects use this field except ONE project, even though all projects use the same issue type on which this field applies. We only have one workflow for this issue type so we don't have to manage tons of workflows for every project, so we'd really like to avoid creating a separate workflow just to not have this validator on one project. Our team of JIRA admins isn't very big, so we try to keep everything we need to manage to a minimum as much as possible.
So, for my question - is it possible to create a scripted workflow validator that checks if this field has the current project within one of its contexts? If yes, then it will check the validator written above.
Probably, but I suspect it will be much easier to just check against the one project that doesn't have it, by name.
Alternately, you could check the count of the first half of the cascading field; since it is mandatory, it being zero/null/whatever, should be sufficient to indicate that you don't need to validate the second half.
Yep, check the project key or name... issue.projectObject.key == "ABC" || what you have already
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi, Jeremy and Jamie - thanks for your input. I'd like to go forward with the option to check the project key, but I can't seem to get that working. I've added the statement to what Jamie put and it looks like this now: issue.projectObject.key == "ABC" || cfValues.get("Module / Subprocess")?.keySet()?.size() == 2 We're using the correct project key in place of ABC, but it doesn't work correctly. It prevents the projects that do use this field from creating the issue (i.e. the validator returns as false). If I remove the new statement, the query works for the other projects as it did before. I also tried this variation (apologies - my groovy knowledge isn't great): issue.getProjectObject().getKey() == "ABC" || cfValues.get("Module / Subprocess")?.keySet()?.size() == 2 Anything I might be missing here? Thanks again for your help.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It looks okay, but I've been trying to make it work here with no luck... I can't even get the basic project key check to work. It may be that the issue doesn't have a project object yet, in which case I've read of alternate ways of validating it, but maybe my other idea is simpler. If you make the field mandatory for the projects that have it, then you could use: cfValues.get("Module / Subprocess")?.keySet()?.size() == 2 || cfValues.get("Module / Subprocess")?.keySet()?.size() == 0 If we get past this validation for the 0 case, the field being mandatory will still kick in where relevant. Mind you, I'm assuming we'll get '0' if the field isn't defined, I haven't tested this one either.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
That worked, Jeremy. One slight change - instead of "0" you have to use "null" since there is no value in the field. Thanks for your help!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.