There are many paths to Rome.... frevvo suggests the following best practices for managing your tenants, projects, forms and workflows.
Multiple frevvo server installations are the most flexible and best practice for maintaining a production environment. In this scenario, you may have a development server, a test/staging server and a production server. Or you may have only a development server also used for testing and a production server for deployed forms/workflows.
Create roles and users in your development environment. If you are using the default security manager, simply create the users and roles in the tenant, otherwise refer to customers using the LDAP/SAML/Azure Security Manager.
The role names in your development environment should be the same as the role names in your production environment. If they are different, modifications to your workflows will have to be made to users and workflows to reflect the production roles when they are moved to the production. |
Create a generic production user account (ex: “production@<your tenant>”) in your production environment and give this user the frevvo.Designer role. All your production forms/workflows will be in this user account.
If you are using a non-default security manager, this step and the next step would be done via your IDP software. |
When a designer is ready to deploy a form/workflow to production or update one already in production, a frevvo.Publisher will check-out the new project from source code (a repository outside of a frevvo server) and upload/replace the project into the generic production user account in your production environment.
The tenants in your development and production environments may have the same name although this is not required. |
We recommend that all On Premise customers with a single server have two tenants: a development/test tenant and a production tenant. A separate development/test tenants is recommended for the following reasons:
Follow the setup steps above for On Premise Test/Staging Server Installations. The only difference is that in your case your "test environment" is simply a dev/test tenant on the same server as your "production environment" and not a separate frevvo server.
Cloud customers have a single tenant. In this scenario, best practices are to create a set of test roles and test users. Your form/workflow designers will use test roles/users during the dev/test phase.
Cloud customers may optionally purchase a 2nd tenant for development and testing.
We recommend that the forms/workflows be created & tested by one/multiple designers in their own accounts. After the forms are designed/tested, they can be downloaded from the individual designer user accounts and uploaded to a generic production user account (ex: “production@<your tenant>" where the forms can be published and used by your end users.
We recommend using a generic production user account to publish projects/forms/workflows into production for the following reasons:
Follow these best practices:
Create a generic production user (ex: “production@<your tenant>”) and give this user the frevvo.Designer role. All your production forms/workflows will be in this user account.
If you are using a non-default security manager, this step and the next step would be done via your IDP software. |
To deploy a form/workflow for the first time, you must then log in as the Production User, select the form/workflow, and click Deploy.
To update a form/workflow that is already in production, check "replace" on the upload screen. The deployment state of the form/workflow being replaced will be maintained for the updated version.
If you need to update a form/workflow that has been deployed to production, there are specific steps to follow to avoid issues with submissions. Submissions are tied to a specific form/workflow. It is very important that you make your changes to the form/workflow that has the same typeId as the production version. This ensures that the production version of your form/workflow will be replaced by the updated version when you upload it to your production account and check the Replace checkbox on the Upload screen.
Let's say you have a form/workflow in production that requires some changes. Follow these steps:
Download the form from your production account.
frevvo recommends that customers maintain backup .zip files of production forms and workflows their own version repository. Each time you download a workflow from production, provide it with a unique filename (i.e. MyWorkflow_flow prod YYMMDD.zip) and maintain it in your directory as a backup. In case a later development version has incompatible changes, you will be able to revert to your latest backup version. |
The typeId of a form/workflow can be seen in the URL when you edit it in the form/workflow designer.
When a production workflow that has pending tasks associated with it is edited and replaced with an updated version, pending tasks will contain the changes the next time they are "performed" from the task list. For example, let's say you
When you edit a workflow and change business rule or add/remove fields, all the pending tasks pick up the latest version of the workflow. Pending tasks for a form/workflow that integrates with a Google sheet reflects any changes made to the Google sheet while the tasks are in-flight. When uploading a form/workflow with the same ID as an existing form/workflow, without checking Replace, a copy will be created and the designer will see an error message: "The form/workflow that was uploaded matches the id of one that already existed so a copy was made. If you intended to replace the existing form/workflow, delete the form/workflow you just uploaded and upload it again but check off the ‘Replace’ option." When uploading a form/workflow with Replace checked that is currently being edited by another user, the designer will see this error message: "This form/workflow is currently being edited by <user@tenant>. Please try again later." |
Some changes have little to no impact on your in-flight forms and tasks, but other changes can significantly affect, or even break, workflows that are in progress.
Usually it is safe to:
These changes can impact the forms schema and routing, and thereby may impact forms and workflows that are in-progress.
Update the database (or google sheet, or 3rd party system) supplying data for dynamic select control options on form.[load,activate]. Any task performed from the task list that had an option set that was deleted or changed (for example, to fix a typo) from the database displays the control as blank again and required if that was the default. If you're on a workflow step where these fields are now disabled, such as an approval step, you need to reject back to the user of that prior task to re-enter the data.
This same behavior occurs if you change selection control option values.
Let's say you have a Purchase Order workflow in production that is used frequently by your sales team. You have been working on some major updates to the workflow in a development project, and you are ready to update the production workflow. However, you know there are some "breaking" changes that will cause in flight tasks to render in error. For example, you've changed a control in a required signed section, and there is a Client Approval task assigned to a client's email (anonymous user) waiting to be signed. If you update the production workflow, that user may click on their task notification email and see an error message.
Follow these steps to identify and modify tasks that may be impacted before you update the production workflow.
The Modify Tasks option may sound daunting if you have hundreds or even dozens of pending tasks. Another option some customers choose is to update the form in stages. Let's say you're updating a Leave Request workflow, and you will be removing some controls, removing a dropdown option, and adding some required controls.
Stage 1
Make these interim changes on a development Version 2 of your Leave Request workflow, then upload/replace the existing production versions (Version 1) with Version 2.
Stage 2
After enough time has passed that all of your existing tasks from Version 1 of the Leave Request have been completed, you can upload/replace it with a development version (Version 3) that has the controls deleted, the dropdown option removed, and the required controls always required. Since in Version 2, the deleted control was disabled, the deleted option not allowed, and the required control required, workflow interviews started on Version 2, but still pending, will be compatible with Version 3.
In some cases when you need to make major, or potentially breaking, changes to a form/workflow, you might choose to simply duplicate the form/workflow, start using the copy with the changes implemented and stop using the original/old form. When you do this, the old and new forms/workflows are completely separate - they will have separate submissions repositories, and you will need to update embedding, share links and/or portals where users access the form/workflow. However, you will not have to use either of the above methods so the development-to-production process is far simpler. This is a good option if you already save all submissions to a google sheet, google drive, database or filesystem instead of using the frevvo submissions repository, or if you don't mind looking in different submissions repositories before/after your new production date (perhaps for a form that changes year-to-year).
One example is a customer who had a production workflow but wanted to update it to use the frevvo Database Connector. Instead of updating the production workflow, they duplicated it and made the changes on the copy. Then, on the original workflow they restricted the Who Can Start the Workflow to designer/owner only, and updated their portal links with the new workflow. Those users who were still in progress on the old flow were still able to perform their tasks and never knew there was a difference, while any new users started on the new workflow.
Workflows built in v7.4 or earlier that have a step performed by an external/anonymous user were configured with an anonymous email step. Starting in v8, the email step is deprecated and you may now assign a step directly to an email address, similar to how you assign it to a User or Role. The anonymous email step has backward compatibility and continues to work, but will be retired in a future release. Additionally, there are many benefits to the Email Assignment such as the ability to reject back to the step assigned to email. Please follow these steps and review the cautions below to migrate your v7.4 and earlier email steps to v8+ email assignments.
IMPORTANT: IN PRODUCTION Move any tasks that are currently on the email step by either resetting them to a prior, non-email step or sending them forward. Do this BEFORE step 8!
Workflow instances that have a pending task on the anonymous email step when the workflow is updated to use email assignment will be hung in the WAITING state and cannot be reset to another step. If a user has clicked the link to perform the step but has not yet submitted it at the time the workflow is updated, they may still submit the step. Prior steps already performed by anonymous users are not affected by the workflow update. |
You may edit submissions that were submitted with the old anonymous email step after updating the workflow to use the new email assignment step.
The Access Control feature in frevvo allows the designer to assign other users permission to make changes to forms and workflows.
The ability to edit a form/workflow should not be given to other users if the form/workflow is in production. Giving this permission would enable those users to edit your production forms directly thereby subverting the best practices described in this guide. |
It is best to have the roles in your test tenant match the roles in your production tenant. This enables testing of forms/workflow in development for ACL and navigation without having to edit your form/workflow before deploying the updated form/workflow to production.
Create test users in your development tenant. If you are using the default security manager, simply create the test users in the tenant. Refer to Customers using the LDAP/SAML/Azure Security Manager if you are not using the default security manager.
The role names in your development tenant should be the same as the role names in your production tenant. If they are different, modifications to your workflows will have to be made to users and workflows to reflect the production roles. |
When further updates/modifications are required, the forms/workflows should again be edited in the designer user accounts and then upload/replaced in the generic production user account.
If you are testing in a multiple tenant scenario, we recommend that both your dev/test and production tenants are configured with the same security manger. This is recommended for the following reasons: