Best Practices

 View Only
  • 1.  Single Form Dispatch - Approval Workflow

    Posted 10-26-2021 10:09

    Are you tired of having to up keep 2 separate forms for your Approval Workflow? Having troubles keeping both forms lined up the same so that the dispatch happens flawlessly? Why not build the approval process into 1 single form so that if something needs to be updated, you just need to update 1 form. Using the following method, you can build your approval workflow into a single form (and do SO MUCH more).

    First things first is you need to think about when the form will need approval, in which scenarios will this form need to be approved or maybe even returned to the original user.

    In my example that I have made for this, I do not have any of the "meat and potatoes" of the form only the Signature fields and Notes. This same method can be built out with any number of pages or sections for each party to fill in. 

    The Setup:

    Form Statuses:

    In my form I am using 3 different statuses to identify what needs to be shown or hidden. I am using Initiate, Approval, and Rejected in a Radio Button Question with the default set to Initiate (since that is the state of the form when it is first opened; we need to set a default because we will use this question to filter our destination)

    • Initiate status indicates that the form was just opened and is in the 1st stage.
    • Approval is when the form has been submitted by the first person and is now ready to be Approved or Rejected
    • Rejected is when the approving person has Rejected the form instead of approve, this will also ensure that the Notes as to why it was rejected will be passed back. 

    Conditional Logic:

    This workflow depends heavily on the use of Conditional Logic, we use it to evaluate which status the form has and determine what needs to be shown at each stage. In my case I am only using 3 different statuses but this can be much more (meaning your conditional logic rule will be longer)

    I have a single rule that is looking at the Status of the form and setting the questions accordingly - will review this later on.

    Form Structure:

    In my example I will have 3 sections, a Status section and 2 sign-off questions. In the Status question, I will also have a place to display the notes if it is rejected and a dropdown list with all users to choose an Approver.

    The Form:

    My first question in the form is my status question, note that this does not need to be the first question, just needs to be before everything that you plan on controlling. This is a radio button question with the 3 options that are mentioned above. Along with a "readonly" text field to display notes if the form is rejected and a Dropdown pointing to a User List data source to pick a user to Approve. 

    The first Sign-off section contains only a Signature Field. The Second Sign-off section contains a Button Group Question for the Approval or Rejection, a place to put in Notes if there is a Rejection, and another signature field if it is Approved. 

    The Conditional Logic:

    In this example, I really only have 2 conditional logic rules, but they do it all. One rule is to "set up" the form. This will contain a "IF" statement evaluating the Status question for each of the different Statuses. The Second rule is just controlling the Sign-off 2 section, if Approved, show the Signature, if Rejected hide the signature and show the notes field. Below is the "Set up" form rule, this can be done many different ways so hopefully this helps as a baseline. 

    The Dispatches:

    For all of this to work - we need to configure our Dispatches to have Filters, and also pass answers forward manually. We have 2 dispatches in this workflow:

    1. Dispatch to go from Initiate to Approval (Or Rejected to Approval)
      Filters on this Dispatch will look to see if Status is equal to Initiate or Rejected
      Target Form is the Source Form
      Target User is %a[Approver] so that we can change the user in the form.
      We will also Manually pass the value "Approval" into the Status question

    2. Dispatch to go from Approval to Rejected
      Filters on this Dispatch will look to see if Status is equal to Approval AND if the form was Rejected
      Target Form is the Source Form
      Target User is %a[Approver] so that we can change the user in the form.
      We will also Manually pass the value "Rejected" into the Status question AND pass the notes into the other Notes question that User 1 could see.

    Thats it! After some testing in the form, making sure the dispatches are doing what they are supposed to, you can then hide the Status Question on the Device as it should never be changed by the user. The initial set up take a little bit longer to go through because we are using Conditional Logic to control the form rather than sending this to a different form. 

    Any questions or comments on this please let me know! If you are currently using a similar method, please do share. One of the great thing about ProntoForms is there is always more than 1 way to do something.

    Ian Chamberlain
    Implementation Specialist

  • 2.  RE: Single Form Dispatch - Approval Workflow

    Posted 04-28-2022 03:47
    Edited by Heath Behrndt 04-28-2022 19:48
    This is a great method! It saves time with error checking between duplicate forms.
    It's a shame we can't make signature fields dynamically read-only, seems we still have to use duplicate forms to do this, like in your Ep. 5 post.

    Heath Behrndt

  • 3.  RE: Single Form Dispatch - Approval Workflow

    Posted 05-03-2022 10:44
    Edited by Natalie Tallon 05-03-2022 10:45

    Hi Heath

    While we can't make signature fields read only with conditional logic, you can still use the single form dispatch method to do this if we think about it a different way.

    My question to you, does the approver need to SEE the signature, or is it enough that they know it was provided? If they don't have to actually see it, we can set the field to be 'Not Visible' using conditional logic when the form is in the 'approval' stage. When a field is set to 'Not Visible', it will still be shown on output documents.

    If the approver just needs to know the signature was provided, it could be implicit (i.e. if the signature is required in step 1, the fact that it got to step 2 means one was provided), or explicit, you could use conditional logic to make sure the signature was answered, then set a different field that state 'Signature was captured' and have that visible & read only instead.

    Natalie Tallon
    Product Manager

  • 4.  RE: Single Form Dispatch - Approval Workflow

    Posted 05-05-2022 23:12

    I have done this method you suggest, it wasn't as complex as setting up another duplicated read-only form 😊
    This will help greatly going forward (maybe not all cases, but majority)

    But another part to a simplifed process is, I'm trying to setup the approver to automatically be input/selected as related to the user who submits the form, tried this many different ways.
    The method I've used is reliant on the submitter selecting a single filtered option to activate the population of other fields.
    Maybe I'm missing a simpler method?

    Here is what the submitter see's it isn't hard for them to select their name, but it would be nicer to have to display that radio button and just their static text (for visual confirmation before signature).

    This is the process I have used, seems like a big workaround which still requires a selection for a simple problem.
    The ATONameTest radio is a data source filtered by the 'mobile users username', when that radio button is checked it populates the ATOEmail field which has a 'Related manager data source' which then automatically populates the DispatchATA field with the related managers email for dispatch flow.

    I had posted a similar feature request quite some time ago with no response, this was about allowing other user data to be allowed as default values (e.g. Manager email).
    But I have now just submitted another request which relates to my current method


  • 5.  RE: Single Form Dispatch - Approval Workflow

    Posted 05-10-2022 14:40

    Hello Heath, 

    Just to make sure that I understand before I dive into this one. 

    You have a datasource that has all your users usernames and names listed out with their Managers Email in a different column. Once the user hits their name in ATONameTest then their email address gets pushed into the ATOEmail dropdown which then pushes the Manager Email into the DispatchATA question? 

    The way that I would automate that a little more is by building out the string that will match the options in the dropdown for ATONameTest and then use conditional logic to set that question automatically. I wrote a little bit about that in this article here and I use this same method very regularly to do exactly what you are describing. 

    We can pull the users email out of the ProntoForms User Group data source then use that for your ATOEmail to get the Related Managers Email. It will require a couple extras in your form, but this way your users won't need to tab on their own name to make it all work. 

    Hope this helps! 

    Ian Chamberlain
    Implementation Specialist

  • 6.  RE: Single Form Dispatch - Approval Workflow

    Posted 05-11-2022 02:06
    Another great method, thanks Ian, it defienately helps having a forum to discuss these things!
    I will comment my findings (hiccups) on that post.


Reminder: Content posted to our Community is public content.  Please be careful not to post Intellectual Property that you do not have permission sharing.  For more information please refer to our Terms Of Use