I love Nintex UDA - it lets me push commonly used logic into a reusable User Defined Action. Then lets me reuse it in multiple workflows. What's even better, is when I update the UDA, I can choose to republish all the workflows that currently use this UDA, which updates them all too.
There are however two problems with the UDA:
- They are scoped at Site, Site Collection or Farm levels, and they are stored with a unique UDA-ID in the Nintex workflow database.
To share the UDA in two different Site Collections, you have to promote the UDA to the high level Farm scope.
- Once you have promoted them to Farm level, you can no longer modify them. Because they are managed via the Central Administration website, and WorkflowDesigner.aspx doesn't work there.
The solution I've gone with, which I hated. Was this:
- in our development environment, we keep the UDA in the site collection level.
- in our production environment, we keep the UDA in the farm level.
- we modify in development environment via WorkflowDesigner and then we export the UDA and import them in production to override the old version.
- Dev and Prod aren't the same configuration.
- You always have to export and import. You can't change a single setting in production.
I've actually done this for the last 3 years. At one point, I was so unhappy with this I send meme pictures to the Nintex Workflow team.
A better solution
My colleagues Justin Nash and Bart Bouwhuis told me that actually, I can just hack the WorkflowDesigner.aspx URL and modify a farm level UDA.
For example, here is a Site Collection UDA:
I can modify the farm UDA if I know the WorkflowId and the UdaId. Well, the UdaId is simple.
Here's a farm level UDA:
You can find the WorkflowId if you export the UDA from Farm, and open it up in a text editor.
You'd see: <Id>3c2d163c-41da-4966-90ca-a2727d94ead8</Id>
So combined the two together,
Opens the Farm UDA and lets me modify and publish it.
There is an extra note.
When Publishing the UDA, don't click the republish checkbox. Since that is filtered to workflows only in the current Site Collection.
Instead, after you published your UDA. Go back to Central Administration.
Click the Analyze UDA Ribbon and Republish from Central Admin.
A quick SQL view
If you can't be bothered digging around for the WorkflowId - you can dump this from Nintex Workflow Database:
'/_layouts/NintexWorkflow/WorkflowDesigner.aspx?Category=UserDefinedAction&WorkflowId=' + ltrim(StaticId) + '&UdaId=' + ltrim(Id)
SiteId is null
WebId is null