Hi Wim,
thank you for your explanation. That makes more sense to me now.
You're going to need a jobserver on every node where you'd like to execute programs.
Because of the symmetrical setup that will be a pretty easy task, and with a bit of effort you can even automate it.
I don't think you need to copy entire job trees. But you will need at least a folder for each "environment". Somehow you'll have to be able to distinguish them (you want to be able to address them).
On the other side you might want to have different job trees for, let me say, development, integration test and production. I can't really recommend a specific setup as a best practice here.
But let me just assume that you indeed have a different folder for each of your environments.
You can define a parameter, let me call it JOB_ENV_NAME, for each of those folders and give it some value (dev01, uat01, UAT03, ...).
If you have a copy of the entire job tree below that folder, this parameter will be visible to all the jobs within that tree.
If you don't have a copy of the entire job tree, you'll need a batch that has the job tree as a child that defines a parameter JOB_ENV_NAME of type IMPORT.
(just look at job trees as functions in a programming language; the same way a function can be called at different places, a job tree can be child of several batches).
If the batch is submitted, it'll import the value of JOB_ENV_NAME from the folder. And because of the submit hierarchy the value will be visible to all jobs below that batch.
So regardless the exact setup, the value of the parameter JOB_ENV_NAME is visible to each job.
The second step is to define a parameter at each appropriate scope.
Let me just assume you have a scope GLOBAL.DEVELOPMENT and below that scope you have another scope (and/or jobserver) for each of the servers that belong to your development environment.
Within the scope GLOBAL.DEVELOPMENT you again define a parameter, let me call it SCOPE_ENV_NAME and give it the name of the environment as a value (e.g. dev01).
This way the value of this parameter is visible for everything below GLOBAL.DEVELOPMENT.
In the Environments (ours, not yours) you can now add a condition like '$JOB_ENV_NAME == $SCOPE_ENV_NAME'.
Done.
I think this method is the most flexible and at the same time pretty easy to understand.
Does this make sense to you?
Best regards,
Ronald