Substitution should be possible.
Try breaking down your flow into some intermediate steps so you can debug some things.
1) Place the JSON payload containing the {{}} substitutions into a DevTest property. In this example, I will name this property "yourJSON".
2) Set the properties you want replaced in the JSON payload. Ensure that the properties contain the appropriate Upper & lower case characters in the property names.
3) Add a JSR-223 step after you perform steps 1 & 2. In this step, add a script to tell DevTest to parse the JSON payload, perform substitutions, and store the JSON in a new property called "someName":
testExec.setStateValue( "someName", testExec.parseInState( testExec.getStateValue( "yourJSON") ) );
Now, execute the above steps in ITR mode.
1) After executing the first step, ensure your property named "yourJSON" contains the JSON string with the {{}} coding.
2) After executing the second step, ensure your substitution properties contain the values to be substituted.
3) After the JSR step executes, look at the properties, and launch extended view on the property called "someName".
What do you see in the JSON for the property "someName"?
Are the values substituted correctly?
If not, check the spelling of your property names.
If values substituted, check the format of the JSON to ensure that it is a) syntactically correct, and b) contains the format expected by the system you are sending it to.