Turbo Apps Suite is a Forms and Flow builder that makes it easy for Business Analysts with little or no programming experience and Developers to design forms and automate backend processes by adding and connecting visual components together. Turbo Flows helps modernize your forms processing with Turbo Flows Builder.
Turbo Flow Builder is a no-code (for certain use cases you can also use low-code) flow builder to process submitted data in all supported backend systems. Flows are powerful, shareable and human readable and can automate any process in a flexible fashion. You can use readymade flows or build your own.
Turbo Flows takes a process-based approach to automation, allowing you to define how your automation works and empowering you to also address dynamic cases such as fetching data from systems like SharePoint, Salesforce, SAP or SQL compliant databases and deciding on next steps based on the dynamic state of the data! You have complete control in designing the flow with our graphical, drag and drop builder and customizing it to your specific needs.
Although designing your own Flow is easy using the Flow Builder, there is also a growing repository of ready-made content that integrates with most enterprise systems and communication channels. Use our readymade flows to send PDF versions of forms to DocuSign for Digital Signatures, Notify users on Teams, Slack etc, send Alerts and Emails at will and much more. These flows can be embedded in other flows to automate complex processes.
The Turbo Apps Suite has a drag and drop Flow Builder. You get a limitless canvas to add as many automation steps as you require and connect them up to fulfil every conceivable flow. Starting from simple use cases like updating SQL compliant database, creating Service Orders in Salesforce, sending documents for eSignature via DocuSign or creating Notifications on SAP, setting up Approvals of forms lke Leave Requests, Purchase Orders etc can all be automated in a simple, lucid fashion.
Flow designers do not need any specific coding skills but only need knowledge of the JSON data format and interpreting result sets from systems. To work with databases you have the choice of using SQL queries or no-code, model drive table updates. REST API integration requires understanding of the end points you are posting to and nothing more. OData services can be consumed in a model driven, guided approach. JSON data transformation can be transformed with a graphical editor without writing a single line of code!
The individual steps / parts of the flow, It consists of the operation, the data definition for the step and the system configuration
3.
Operations
The predefined operations that can be used to define the flow steps. Operations are the technical building blocks to access databases, REST or OData services etc
4.
Systems
Systems are the backend systems that you need to connect to fulfil your processes. For e.g. to create an opportunity in Salesforce you will need to configure the Salesforce systems as part of the flow step
5.
Forms
Each flow has to be associated with a form. A form can have any number of flows associated with it but each flow is associated to one form. The flow has access to the user submitted data of the associated form
6.
Task ID
Every form that has to be filled is treated as a task for a user and identified with a unique TaskID
7.
Submission ID
Every form that is filled and submitted is identified with a unique SubmissionID. Every form filling task has at least one submission id. If a task is for a form set, each form of the form set that is completed will also have a submission id
8.
Run on Save
Flow to run when a form is saved. Note that a form can be saved any number of times until it is completed
9.
Run on Complete
Flow to run when a form is completed. This flow is run only once (unless there is an error) and data is finalized
10.
Run on Create
Flow to run when a form is created or instantiated. The flow can be used to prefill the data of the form
11.
Run for Masterdata
Flow to run when master data is required to be updated in the system or sent directly to the Turbo Forms App for form filling
12.
Run via Smart Data Component (SDC)
The flow is run as part of a Smart Data Component to fetch data from external systems based on user input and update form with results
13.
Test Data
Test data for a form that you can save for testing flows before deploying them
14.
Run
Run a flow in the builder to test it. View detailed results and copy intermediate results
15.
Save
Saving a flow also runs a syntax check and returns a list of errors to fix. The flow step with the error is also highlighted
16.
Deploy
Deploy a flow so that it can be run with the associated action (Save, Complete, Create, SDC, Masterdata)
The flow builder canvas allows you to drag and drop any number of operations and create the different steps of the flow. Chain steps by connecting them so that dependent steps can be created. Add decision steps to decide on how the process has to proceed. Success of the current step will result in the next step chained to the “Success” connector being executed. Signal an error and terminate the flow at will.
Create a Manual Flow if you are building a flow to learn, or try something out or if the requirement is to run the flow adhoc. These flows can only be triggered manually using the Run button in the Turbo Apps Builder.
Title: Enter a title to identify the flow
Description: Enter a detailed description regarding the purpose of the flow
Create a Webhook flow if you need to run a flow due to some activity in an external system or similar. The URL provided can be used to post optional data and run the flow for e.g. when a Ticket is created in Salesforce you may want to run a flow and check if there are contractors available to attend to it in your HRM system.
Title: Enter a title to identify the flow
Description: Enter a detailed description regarding the purpose of the flow
URL: The created webhook is displayed here and you can copy the URL and configure it in the external system. When a POST happens to teh webhook all parameters and the post body is passed to the flow and can be used for further processing. There is no pre-requisite on parameter names etc.
Expiry: Date until when he webhook to be valid. A webhook can be revoked and/or extended as the need may be.
Scheduled flows are triggered as per a configured schedule. Use this to run flows at pre-configured intervals for e.g to create an Inspection form every month on the first day etc. You can also use it to refresh Master Data on a schedule.
Title: Enter a title to identify the flow
Description: Enter a detailed description regarding the purpose of the flow
Schedule: Minute/Hour/Day/Week/Month/Year based schedules
These flows are triggered on certain form actions as below:
- Create: Triggered when a form is created per a schedule. Use this to prefill data in the form on creation
- Save: Triggered when the form is (partially) saved by the user. Use this to process the submitted data and take decisions, enable other sections of form once some sections are filled in etc.
- Complete: Triggered when the form is completed. Use this to submit the form data to SAP, a database, post a notification to Teams to let others know, archive a PDF version of the submitted data in Sharepoint etc.
- Approval: Triggered when a user approves a form as part of the configured approval flow.
Title: Enter a title to identify the flow
Description: Enter a detailed description regarding the purpose of the flow
Action: Choose from Create, Save, Submit and Approval
These are flows that can be included as a step in other flows. Common and repetitive actions like posting a Teams notification can be created as Sub Flows. These can then be called as a step in any other flow thus enabling reuse. Further sub flow execution can be controlled when defining the step in the parent flow:
Run as a part of the parent flow, synchronous execution and the result is available for further processing
Run as a separate parallel flow but in sequence, useful when running sub activities but need to maintain order execution
Run as a separate parallel flow, useful when running sub activities and order execution is not important
Title: Enter a title to identify the flow
Description: Enter a detailed description regarding the purpose of the flow
These flows are triggered by Smart Data Components in forms and can be executed on button click, barcode scanning etc. For e.g. when a work permit is to be assigned to a contractor or technician, check their credentials to make sure they are holding current certifications to attend to the job.
Title: Enter a title to identify the flow
Description: Enter a detailed description regarding the purpose of the flow
Expression builder is used to specify the input to the flow operations (steps). Expressions can be made up of:
Form Fields
Flow Input
Previous flow step results
Calculated values (using different functions)
Data mapper (JSON extraction)
Defined Environment variables
Pre-defined macros
For any input to operations, choose the :material-wrench: icon to access the Expression Builder. The expression Builder has multiple panes to organize the data.
Left Pane: Select form fields, select functions to operate on strings and numbers in calculate nodes
Right Pane: Select from previous node results. If the current node is a Calcualte node, then the variables/expressions already calculate are also available. Any environment variables that are defined for the form can also be used. And a few predefined macros such as the form submitter’s First Name, Last Name etc can also be used.
Turbo Apps supports JSONata expressions to extract and convert JSON formats. JSONata allows to manipulate JSON data without the need to write any code.
The JSONata expression builder has three panes:
Left Pane : The sample data to operate on
Right Top Pane : The JSONata expression. Refer JSONata Docs
Right Bottom Pane : The result of applying the expression on the data. This is a live preview and results are calculaed and displayed as the expression is built
Turbo Apps supports loading metadata from SAP RFC and BAPI. Once the endpoint is configured, you can search for RFC and BAPI functions from the SAP system.
The SAP Expression Builder allows to:
Search and select the custom RFC or BAPI
Select all the required fields for Input to the function and map form fields and other calculated values to the input
Select all the fields that need to be returned from the Output of the function
All the Integration Services in the flow such as REST, OData, Database etc operate on systems. Systems can be configured in the individual operations.
Systems typically define:
URL / Server Address
Port / Protocol
Authentication Mechanism such as OAuth, Basic etc
Optional User ID / Password
And other optional parameters
Systems are defined for each operation type and can be used across flows. For e.g. a flow upload document to SharePoint can define the SharePoint system and in another flow the same system can be used with a differente REST API
System authentication can be configured at a system level (Common user id / password, API token etc) or at an individual level based on UserID/Password or OAuth. The entire authentication process is seamlessly managed by Turbo Apps and flow designers only need to choose the authentication model.
The input form data to calculate from. Will be set by default, override if form data has been updated in flow or as required
system
String
True
The REST system endpoint configuration
contenttype
String
True
application/json
The content type
accept
String
True
application/json
The accept type
httpverb
String
True
get
The HTTP verb (action) to call
postquerystring
Boolean
False
False
Indicates if the post parameters also have to be sent as a query string (True or False)
instanceurl
String
False
With some services like Salesforce, ServiceNow etc, the URL is dynamic and may need to be changed from what is configured in the system properties. This is usually referred to as the instanceUrl and can be set to override the system properties
urlpath
String
False
The (url) path for the call
attachments
String
False
Comma separated list of Attachment IDs of the files to be posted to the end point. The attachment IDs are obtained by uploading the files to the Unvired Platform using the attachmentrequest flow
headerparameters
Key-Value
False
JSON array of header parameters to pass to this call
postparameters
Key-Value
False
JSON array of post parameters to pass to this call
body
String
False
Data to be posted as raw body to the endpoint
failonerror
Boolean
False
False
If this is a non-critical step in the flow, failonerror can be set to false so that the flow will continue
Query a Microsoft Active Directory Service for user and other information
Add or choose an existing MS Active Directory system
Choose the desired action
a. Authenticate: Authenticate the give domain, user and password on the ADS server
b. GetAttributes: Retrieves the given User’s attributes from the ADS
c. SetAttribute: Sets the provided attrubute for the user. Attributes may be added (Add), changed (Replace) or deleted (Delete) as specified in the input
d. ListObjects: Retrieves a list of users matching the listing (input) criteria
e. SearchObjects: Searches for a list of users matching the searc (input) criteria
Add other optional parameters that are necessary. Depending on the Action, additional parameters need to be provided
For all variables make use of the Expression Builder to inject fields and other results that will be substituted with actual values at run time
Execute any OData request on a remote server. The authentication for the endpoint is provided via the SystemProperty file
Add or choose an existing database system
Set the metadata to the OData definition from the service metadata. Use the Odata Expression Builder as required
Choose the operation
a. Create: Create an entity
b. Update: Update an entity
c. Merge: Merge an entity
d. Delete: Delete an entity
e. Select: Search for entities based on filter
f. Read: Read/Get an entity
Set the desired entity name
Add other optional parameters that are necessary
For all variables make use of the Expression Builder to inject fields and other results that will be substituted with actual values at run time
Choose the operation from Get, Put, Delete, CreateDir, List, Rename
mode
String
True
Choose the mode from ASCII, Binary
connectionmode
String
True
Choose the connection mode from Active and Passive
currentdirectory
String
True
The remote directory to operate in
filename
String
False
The file to upload or download. For listing a regex to filter can be passed. For rename operation, the remote source file name with full path. Required for operation Get, Put, Delete and Rename (Optional for List)
attachmentid
String
False
The attachment ID of the file to upload to FTP server from cache. Required for operation Put
newdirectory
String
False
The directory to create within the working directory. Required for operation CreateDir
newfilename
String
False
For rename operation the remote destination file name with full path
Execute any Java function (Process Agent) that is designed and developed using the Unvired Modeller
Choose the library that has the function that needs to be executed
Choose the function that needs to be executed (based on the Library selected above)
Add as many inputs as may be required for the function. You will need to use any documentation provided for the function or check with the developer. Every input is added as a key-value pair and will be posted to the function in the right format
For all variables make use of the Expression Builder to inject fields and other results that will be substituted with actual values at run time
Comma separated list of input parameters that are required as input for the Python script
function
String
True
Choose the function that needs to be executed
Script
Python
True
The skeleton of the script is generated for you. Subsequently when changes are made to the input parameters, the input propagation will be automatically regenerated. Outputs that need to be returned from the function and available for subsequent flow steps are returned as part of a result[] JSON dictionary. Follow the inline comments to ensure proper syntax and structure
Choose all the input parameters that you require for the Pytho script to operate on
function
String
True
Choose the function that needs to be executed
Script
JavaScript
True
The skeleton of the script is generated for you. Subsequently when changes are made to the input parameters, the input propagation will be automatically regenerated. Outputs that need to be returned from the function and available for subsequent flow steps are returned as part of a result[] JSON dictionary. Follow the inline comments to ensure proper syntax and structure
Creates a new form / formset (and the corresponding task) and assigns it to a team or user
Choose the Form from the dropdown. If the technical name of the form has to be picked up from a different form field (for e.g. based on a user’s choice a particular form has to be created), choose form field and select the form field
Enter the comment to inform the user of the need of this form assignment to them
Add any of the optional parameters to provide more input to the creation
For all variables make use of the Expression Builder to inject fields and other results that will be substituted with actual values at run time
User (named user who is part of the company/domain) to whom the form needs to be assigned to.
team
String
False
Team to whom the form needs to be assigned to. Note that either user or team needs to be provided
comment
String
True
Helpful notes to fill the form
formdata
JSON
False
Data to prefill the form if required
relatedtask
String
False
Provide the related task id if this form is a consequence of the other form. It could be for e.g. the form that is currently creating this new form
tasktype
String
False
fill
Choose from fill or review
priority
String
False
low
Choose the priority for filling this form. Acceptable values are low, medium and high
duedate
Date
False
Provide an optional due-date by when the form has to be completed. MM/DD/YYYY format.
extreference
String
False
External reference for the task. For e.g if this form is being created due to a Service Order in Salesforce, the extreference can be set to the Service Order ID of Salesforce for later association
Updates the (current) form and saves it. Use this operation if you want to update the data that has been submitted and make changes to it and save. For e.g. the external system might compute certain values that need to be also saved in the form.
Set the updated form data
Add any of the optional parameters to provide more input to the creation
For all variables make use of the Expression Builder to inject fields and other results that will be substituted with actual values at run time
The input form data to calculate from. Will be set by default, override if form data has been updated in flow or as required
extreference
String
False
External reference for the task. For e.g if this form is being created due to a Service Order in Salesforce, the extreference can be set to the Service Order ID of Salesforce for later association
Reads the form identified by the task id (and submission id if form set) and returns the data. Useful if data from an already filled in form is needed for any other operation later.
Enter the task Id that identifies the submission uniquely.
Enter the submission Id also if it task refers to a form set.
For all variables make use of the Expression Builder to inject fields and other results that will be substituted with actual values at run time
Create a link to share with external users who do not have a login to the forms system
Enter task ID to share, for current you can set it to ${taskid}
Choose the share type. Public will allow anyone with the common URL to submit data and private can be accessed only by the user with the URL (each private share generates a unique share URL)
Enter the days for the share to be valid
Enter the email ids to share with (These users should already be present as external users in the system)
Choose if (in private share only) users can save and return to the form later or they need to complete it in one session
Optionally disable email invite (if the URL is going to be shared otherwise for e.g. maybe via text)
For all variables make use of the Expression Builder to inject fields and other results that will be substituted with actual values at run time
The type of shared link to create. Public share can be accessed by anyone with the link, private share links are for sharing with the specified users email
expirydays
Number
True
The number of days until when the shared link is valid
shareto
String
False
Comma separated list of email ids for sharing, required only if share type is private
draftsave
Boolean
False
False
Allow users to save the form with partly filled data and fill later, required only if share type is private
Manage master data. Use this operation to create flows that download master data from backend systems such as SAP and replace the data in the Turbo Apps database.
Compute the data and set it
For all variables make use of the Expression Builder to inject fields and other results that will be substituted with actual values at run time
Evaluate a condition to decide on what the next step in the flow should be. Conditions are typical If-Then-Else steps. Conditions can be chained in that Then or Else can lead to other condition evaluations.
Use the Query Builder UI to add And / Or condition groups.
For example if And is chosen, all expressions within that will be combined with an AND operator. Similarly if Or is chosen, all expressions within that will be combined with an OR operator.
Add as many condition groups and expressions within to make up the condition.
Select from form fields, calculated expressions and previous step results for the condition expressions.
Evaluate expressions and store results that can be used in following flow steps. Expressions can be made from form fields, previous results and combined with functions as required. Expressions already defined can be used in further computations.
You can add a simple Expression (String/Math) or JSONata expression to operate on JSON data
Once added set the variable name.
Expression:
a. Set the variable type (String, Number, Date)
b. Use the Expression Builder to combine fields and functions
JSONata expression:
a. Set the variable type (String, Number, Date)
b. Choose the field or other results on which the JSONata expression has to be applied
c. Use the JSONata Expression Builder to build and test the expression
Add as many variables as required (maximum 50 in each calculat enode)
Send emails to users as part of the flow. This could be notifications or other messages as required.
Set the subject of the email. You can use form fields and other results as part of the subject text
Set the message of the email. You can use form fields and other results as part of the message text
Add users and/or groups who are part of the Forms application. You can also add external users by typing in their email directly
Add any attachments that you may need. These could be PDF versions of the filled form or files that have been attached to the form. If needed use the Data Mapper to extract the Attachment IDs from the forms which can then also be attached to the email.
Unique ID identifying the attachment to retrieve. Could be the output of a PDF conversion call or attachments that are uploaded as part of the form etc.
format
String
False
base64
Format to return the data in. Default is base64, else pass text for utf-8 text
Manage contacts (external users). For external form sharing with contacts, the external users need to be maintained in the system. Use this operation to Create/Modify/Delete contacts.
Choose the action to perform from Create, Update and Delete
Set the First Name if creating or updating it
Set the Last Name if creating or updating it
Set the Email ID of the external user
Choose if the external user is private to you or to be shared with other members of your organization
Enter the phone number if required
For all variables make use of the Expression Builder to inject fields and other results that will be substituted with actual values at run time