I have a flow where in I need to get the email address as a user input and publish it across different flows within the same application.
Even flow inside will have a success/failure point and when the flow reaches the end, an email would be triggered to the requested user.
I define a Application level Parameter called Email_To and set is as User input. Something like below
Application -1 (Email_To parameter is set at Release Parameter at Application Level )
Component - 1
Flow - 1 (On Failure - Send email using Email_To Application Parameter)
Component - 2
Flow - 2 (On Failure - Send email using Email_To Application Parameter)
Component - 3
Flow - 3 (On Failure - Send email using Email_To Application Parameter)
Process - 1 , Contains Flow - 1 , Flow - 2 & Flow - 3
However when the flows runs from ROC, I am being asked to enter the Email_To address three times for each of the flow.
My understanding is that, when I enter an application level parameter once it would be understood by the whole process/flows. Are there any suggestions on this ?
Application parameter should use the value on any action that use the parameter - you don't need to enter the value more than once.
Do you mange entering value for the parameter 3 times? - in this case your process suppose to failed on the second attempt when using application parameter so maybe you are not using application parameter.
Few more questions
Is there any dependencies between the flows? Does all components map to same server type or different server types?
If you still have the problem please export the application and post the dat file
I've tested this with many different combinations. The only scenario I've seen where it will prompt you multiple times for a user input value is when the user input value is used in multiple ROC Deployment Steps. In this case, I think it is advised to use template properties which can used across steps (set once with ROC - Update Deployment Property Value action and then get it in subsequent steps/processes). If everything is used in one process and its used in only one step then my experiences have been that it will retain the value first set by the flow/component where it is first used.
The only thing that I can think of is that the processes had manual updates that point the flow actions to point to a different user input parameter (or location of the user input parameter that it is using). Actions and flows can be customized/overwritten at the process level and parameters can also be defined at the process level. Maybe its configured differently then you think at this level?
If this isn't the case then feel free to share the app export here (and version you are using) or open an issue with technical support to share it offline if you prefer.
Thanks a lot for taking out time and replying to this.
I am being asked to enter the Email address thrice when the flow deployment happens. My first component would be 1) Load Manifest flow 2) DB Deployment (Enter Email) 3)MQ Deployment (Enter Email) 4) Again a DB Deployment (Enter Email) 5) Archive Deployment flow
However there is only one application level parameter called , Email_To.
To answer your questions:
Is there any dependencies between the flows?
Yes, they are linked such that the execution happens one after the other
Does all components map to same server type or different server types?
They belong to different server type but all are grouped together
Thanks a lot for your response.
You have put it very correctly. I have an Application level user input parameter and have used it across different flows which are published as different steps. I am not getting the problem when used only in one place/process.
However I have a question around the template properties. I am trying to get an input value for Email action which unfortunately can only accept only arrays. Is it possible to get Arrays from Template properties and assign it across multiple places within the flow? Are there any other recommendation as to how to get an Array input and reuse it across different steps.
It doesn't look like there is a way to make template properties an array. I say this because I just tried looking at the the "Update Deployment Property Value" and see that it takes a string. Also, the "Get Deployment Property Value" action only has an output parameter of string.
Based on this limitation I successfully tested an alternative solution using an array with the scope set to "environment" (this scope is new to 5.x - not sure what version you are running). I setup to processes:
process name 1: update envarr. This has one action "ROC - Update Array Environment Parameter" with the input actions set as follows:
process name 2: use envarr: This has one flow with one action "Run Command Line". The flow is setup to loop foreach on EmailRecipients and output its value to a file.
The deployment plan within the roc was setup to use "update envarr" as a pre-deployment step. This is necessary in order to update environment parameters used by this deployment.
Then within the deployment steps I define one step using the "use envarr" process. When running this it prompts me for the array values. I entered four values and confirmed that only those four values were added to the file. I underlined only because the environment parameter (within the ROC -> Administration -> Environment Configuration) must be given a value before you can run any deployments using that parameter. So, before running a deployment I gave it default values of val1 and val2 which were not in my output.
I hope this helps.
Can you please tell me if the process finished successfully after you provide input for the 3 requests?
It will be very useful if you can attach export of the application