Live Forms v5.1 is no longer supported. Click here for information about upgrading to our latest GA Release.

Process Form Data Tutorial

If you are using  Online, the repository is already setup for you.
If you are using  In-house, please read documentation on using your own database.
The submissions view can be sorted or grouped, filtered by date, supports pagination and also displays any submission errors. See the detailed documentation on online submissions.

On this page:

 

View Submissions Online

 comes with a built-in submissions repository. The repository can run on top of most SQL databases. By default, your form data is stored in the repository and can be viewed from the Submissions page. To access submissions for a particular form or flow, navigate to the Forms Home Page or the Flows Home Page and click the Submissions button for that form or flow.

Default Repository View

Configure your form/workflow to save specific data fields if you want to view them in the submissions view as described below.

For maximum efficiency, the repository will, by default, only save an XML document representing your submission data as well as any attachments. For example, let's say we have a form with fields First Name and Last Name and a single field for Attachments. The Submissions table will look as shown below:

Double click a submission to view details. Notice that the first (Data) panel only displays any attachments. The third (Documents) panel displays XML documents.

As you can see, the default view is for efficiency and is typically used if you intend to process your submissions outside frevvo (your database, HTTP service or other back-end system). If you want to view more submission detail online, you can configure the form in two ways.

Save PDF

In the Form Properties panel, check the Save PDF checkbox. A PDF image of each form submission will be generated and saved in the repository.

Fields Detail

You can configure fields that you explicitly wish to save.  provides Key Fields and Saved Fields.
Up to five key fields may be efficiently stored along with the form submission. Key fields do not significantly reduce performance nor do they consume significant additional storage in the repository. It is very efficient to search the submissions repository using these key fields. Key fields are also directly displayed in the Submissions Table so you can easily view them in a tabular view.

You may select saved fields that you want saved separately in addition to the XML and key fields. The fields you select will be displayed in the Submission Detail for each submission. You can also search the submissions repository for these fields using the frevvo API.

Getting back to our example, assume that:

  1. We checked the Save PDF checkbox
  2. In the Key Fields wizard, we selected First Name and Last Name as the first two key fields
  3. In the Saved Fields wizard, we selected All fields.

The form submission will take noticeably longer as frevvo generates PDF images and saves the additional data. The Submissions table will look as shown below. Notice that key fields are now displayed in the table.

Double click a submission to view details. Notice that this time the first (Data) panel shows a tabular view of all Saved fields and links to the saved PDF and attachments. The third (Documents) panel displays XML documents as before.

Download to MS Excel

In order to export data to Excel you must setup your form fields as saved fields as described above.

Click the Excel  icon at the top of the table to view the submission results in Excel. The spreadsheet reflects the submissions that are displayed in the table (filtered by date). Refer to Viewing Submissions in Excel for information about time data exported to an Excel worksheet.

Send Form data by email

Form submission data can be emailed to one or more recipients when the user clicks the submit button. frevvo can send an email formatted according to your requirements. You can use HTML and CSS to create nicely formatted emails. You can specify your own subject for the email and the subject can also depend on data entered in the form. In addition to the body of the email, you can attach a PDF of the form itself and any attachments that were submitted with the form.

For detailed documentation on configuring the content of the email, please refer to Email Integration.

POST to your web server

 can POST form or workflow data to your web server for processing. There are two options available Form Action Post and Doc Action Post. The difference between the two is that the Form Action POST displays the response from the web server to the user whereas the Doc Action POST does not. We'll describe these in more detail using specific scenarios and also describe what is actually sent in the POST below.

POST to your web server and display the response

This is the simplest option. Setup the form using the Form Action Post wizard and enter the URL of your web server. For advanced uses, the URL can be dynamic using templatized strings.  will send the data to your web server and display the response.

POST to your web server and forward users to a confirmation page

Say you want to POST the data to your back-end service but want to redirect the user to a specific confirmation page if successful and an error page if not. To do this, you will enter URLs in the following wizards:

  1. The Doc Action POST wizard for web server.
  2. The Forward to web page form action wizard for your confirmation page.
  3. The Forward to a web page error action wizard for the error page.

When the form is submitted,  will send the data to your web server. If successful, it will display the confirmation page. If not, it will display the error page.

Processing the POST data including attachments (multipart)

The POST data is sent to your web server using the multipart/form-data content type. To access the fields, your web server code must process multipart/form-data. The actual code depends on the language (Java, PHP, C# ...) that your code uses and you can find several examples on the Internet. The snippet below shows an example using the Apache Commons FileUpload package.

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
    * Parse a multipart request into it's parts and return a list of FileItems.
    * @param request
    * @return
    * @throws ServletException
    */
static public final List<FileItem> parseRequest(HttpServletRequest request) throws ServletException {
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        try {
            return upload.parseRequest(request);
        } catch (FileUploadException e) {
            throw new ServletException(e);
        }
}

This will generate a List of FileItems. Each FileItem represents a part in the multipart POST. The code snippet below is a Java Servlet that parses the request using the method above and simply prints each part to the response. This will not print the actual content of any attachments; just the name, content-type and size.

public void doPost (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
        List<FileItem> files = parseRequest(request);
        response.setContentType("text/html; charset=utf-8");
	response.getWriter().println("The following form variables were received on the server:<br/>");
	response.getWriter().println("<ul style=\"font-size:11px\">");
	for (FileItem f : files)
		if (f.isFormField())
			response.getWriter().println("<li>" + f.getFieldName() + ": " + f.getString("utf-8") + "</li>");
	response.getWriter().println("</ul>");
 
// Attachments.
	response.getWriter().println("The following attachments were received on the server:<br/>");
	response.getWriter().println("<ul style=\"font-size:11px\">");
	for (FileItem f2 : files) {
		if (f2.isFormField())
			continue;
		else
			response.getWriter().println("<li>" + f2.getFieldName() + ": " + f2.getName() + ": " + f2.getContentType() +
					": " + f2.getSize() + "</li>"); 
	}
	response.getWriter().println("</ul>");
} 
	

You can try this yourself for any form; simply setup the form using the Form Action POST wizard and enter the URL http://www.frevvo.com/services/testyanf. Select PDF in the Send Snapshot drop down. Using our example form above, after submitting, the browser will POST the form data to frevvo's test service. The service will display the resulting parts as shown below for our example form. We have added a repeating Nick Name field and submitted the form with two nick names.

The following form variables were received on the server:
    FirstName: Clive
    LastName: Cussler
    NickName: Don
    NickName: Jake
    Avatar: _Z2K34XGaEeCyb6YlFcJk2w
    task.perform.url: http://localhost:8080/frevvo/web/tn/ashish.com/user/designer/app/_inGScVb1EeCECYU1QrNy9g/formtype/_y_X5UHGMEeCyb6YlFcJk2w/popupform?_submission=53eb5c01-7d99-4ab5-b5a4-191f52d66b0a
    task.perform.url.embed: http://localhost:8080/frevvo/web/tn/ashish.com/user/designer/app/_inGScVb1EeCECYU1QrNy9g/formtype/_y_X5UHGMEeCyb6YlFcJk2w?embed=true&_method=POST&_submission=53eb5c01-7d99-4ab5-b5a4-191f52d66b0a
    frevvo.submission.id: 53eb5c01-7d99-4ab5-b5a4-191f52d66b0a
    frevvo.form.id: _Xzz-kHGaEeCyb6YlFcJk2w
The following attachments were received on the server:
    form: form: text/xml; charset=utf-8: 210
    Avatar: globe.jpg: image/jpeg;filename="globe.jpg";frevvo-attachment=true; charset=utf-8: 17168
    Example Form.pdf: Example Form.pdf: application/pdf;frevvo-snapshot=true; charset=utf-8: 11107

There are several items of note above:

  1. All attachments will contain 'frevvo-attachment=true' in the content type.
  2. A snapshot (PDF, TIFF ...) will contain 'frevvo-snapshot=true' in the content type.
  3. Any other attachment is an XML document from the form (there could be more than one for advanced forms).
  4. The form variables section contains the actual form data (FirstName, LastName and Avatar in our example) plus some additional fields like the submission ID, form ID and task perform URLs. In most cases, you can ignore these fields. They are intended for advanced uses such as post-processing the submission from the repository using the frevvo API.
  5. Repeating fields simply appear twice.

Processing the POST data no attachments (application/x-www-form-urlencoded)

Note that this is not currently available as a Form Action, which means you will need to separately set a Form Action to control what the user sees.

Instead of multipart/form-data content, frevvo can also be configured to send data using the more traditional application/x-www-form-urlencoded content type. In this mode, attachments cannot be sent since attachments require multiple parts.

To use this, Edit your form and click the Doc Action button in the toolbar at the top. Click the Doc URIs Tab and click the Manually set document URIs button. In the wizard that pops up, you will first see a panel for the Default document. In most cases (unless you are using XML schemas to process multiple documents with a single form), this is the only document available. Enter a URL to your service that will process the form POST and in the Write drop down select the option POST (URL Encoded) as shown below.

To access the fields, your web server code must process application/x-www-form-urlencoded. The actual code depends on the language (Java, PHP, C# ...) that your code uses and you can find several examples on the Internet. The snippet below shows an example using a Java Servlet that will simply echo the form variables to the screen.

response.setStatus(200);
response.setContentType("text/html; charset=utf-8");
response.getWriter().println("The following form variables were received on the server:<br/>");
response.getWriter().println("<ul style=\"font-size:14px\">");
Enumeration<String> paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
	String paramName = (String)paramNames.nextElement();
	String[] paramValues = request.getParameterValues(paramName);
    if (paramValues.length == 1) {
      String paramValue = paramValues[0];
      if (paramValue.length() == 0)
    	  response.getWriter().println("<li>" + paramName + ": No Value</li>");
      else
    	  response.getWriter().println("<li>" + paramName + ": " + paramValue + "</li>");
    } else {
    	StringBuilder sb = new StringBuilder();
    	for(int i=0; i<paramValues.length; i++) {
    		sb.append(paramValues[i]);
    	}
    	response.getWriter().println("<li>" + paramName + ": " + sb.toString() + "</li>");
    }
}
response.getWriter().println("</ul>");

Working with Digitech PaperVision® Enterprise and ImageSilo®

 provides wizards that support easy direct connectivity with Digitech Systems' PaperVision® and ImageSilo® document management products. This Connector allows you to save submissions to the PaperVision® and ImageSilo® document management repository as PDF, TIFF, .JPG and .GIF format. Please refer to the Digitech Integration section of the documentation for detailed instructions.

Working with Google Apps

Please refer to the chapter Connecting to Google.

Processing submission data using the frevvo API

 provides a complete RESTful API for interacting with the system. Using the API, you can query submissions, download submission PDF/XML etc. Using the API is documented in its own Tutorial.