Source:
<code>private void setRuntimeProperties(ExecutionParameters executionParameters, ExecutionOptions executionOptions) { if (executionParameters.getProperties().size() == 0) { return; } if(executionParameters.getProperties().size() > 1 || !executionParameters.getProperties().containsKey("root")) { logger.error("Attempt to overwrite properties of nodes other than the root flow detected: " + executionParameters.getProperties()); throw new CloudFlowException("Overwriting properties of jobs or nested flows is not " + "yet supported."); } Map<String, String> runtimeProps = executionParameters.getProperties().get("root"); if(runtimeProps.containsKey(CommonJobProperties.FAILURE_EMAILS)) { String rawEmails = runtimeProps.get(CommonJobProperties.FAILURE_EMAILS); if (!rawEmails.isEmpty()) { <START> String[] emails = rawEmails.split("\\s*,\\s*|\\s*;\\s*|\\s+"); <END> executionOptions.setFailureEmails(Arrays.asList(emails)); executionOptions.setFailureEmailsOverridden(true); } runtimeProps.remove(CommonJobProperties.FAILURE_EMAILS); } if(runtimeProps.containsKey(CommonJobProperties.SUCCESS_EMAILS)) { String rawEmails = runtimeProps.get(CommonJobProperties.SUCCESS_EMAILS); if (!rawEmails.isEmpty()) { String[] emails = rawEmails.split("\\s*,\\s*|\\s*;\\s*|\\s+"); executionOptions.setSuccessEmails((Arrays.asList(emails))); executionOptions.setSuccessEmailsOverridden(true); } runtimeProps.remove(CommonJobProperties.SUCCESS_EMAILS); } executionOptions.addAllFlowParameters(runtimeProps); }</code><technical_language>emails array of strings in json do a regex manipulation ? ( AFAIR similar caused bugs in past)</technical_language>

Target:
private void setRuntimeProperties(ExecutionParameters executionParameters, ExecutionOptions executionOptions) { if (executionParameters.getProperties().size() == 0) { return; } if(executionParameters.getProperties().size() > 1 || !executionParameters.getProperties().containsKey(RUNTIME_PROPERTIES_ROOT_FLOW_KEYWORD)) { logger.error("Attempt to overwrite properties of nodes other than the root flow detected: " + executionParameters.getProperties()); throw new CloudFlowNotImplementedException("Overwriting properties of jobs or nested flows is not " + "yet supported."); } Map<String, Object> runtimeProps = executionParameters.getProperties() .get(RUNTIME_PROPERTIES_ROOT_FLOW_KEYWORD); if(runtimeProps.containsKey(CommonJobProperties.FAILURE_EMAILS)) { Object propValue = runtimeProps.get(CommonJobProperties.FAILURE_EMAILS); List<String> emails = getNotificationEmails(propValue); executionOptions.setFailureEmails(emails); executionOptions.setFailureEmailsOverridden(true); runtimeProps.remove(CommonJobProperties.FAILURE_EMAILS); } if(runtimeProps.containsKey(CommonJobProperties.SUCCESS_EMAILS)) { Object propValue = runtimeProps.get(CommonJobProperties.SUCCESS_EMAILS); List<String> emails = getNotificationEmails(propValue); executionOptions.setSuccessEmails(emails); executionOptions.setSuccessEmailsOverridden(true); runtimeProps.remove(CommonJobProperties.SUCCESS_EMAILS); } Map<String,String> azRuntimeProps = runtimeProps.entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().toString())); executionOptions.addAllFlowParameters(azRuntimeProps); }