In this article, I'll demonstrate how to design a publicly facing web form for collecting data from users outside your organization and saving it directly to Dataverse.
Dataverse is a robust platform for collecting and managing data within the Microsoft Power Platform ecosystem. With its scalable data storage, it's ideal for handling increasing data volumes as your business grows. And whether you're looking to generate new business leads or collect feedback from customers, you'll need an online form to capture their information and a way to save that data from public sources into Dataverse.
Imagine this: every company, big or small, needs talented employees. Let's create a job application form and a Dataverse table to manage it all.
Let's start by creating a new table in Microsoft Dataverse to store the responses from a public form. This table should include columns that match the fields in the form.
You can create a table from scratch, import data from an Excel/CSV file, or use Copilot.
Tip: Creating a list from a SharePoint list is a preview feature that uses AI to create a table. Be the first to test it! Learn more.
To effectively manage and analyze applicant data, I'll create two custom tables:
Job Applications: This table will store information about applicants, including their contact details and resume.
Employment History: This table will store information about the applicants' previous job positions.
I'll start with a blank table and create the following columns for the Job Applications table:
Applicant Name: Single line of text (primary column)
Birth Date: Date and Time
Position: Choice column with predefined options
Address: Text area
Phone: Single line of text (formatted as Phone Number)
Email: Single line of text (formatted as Email)
Cover Letter: Rich Text
Consent: Yes/no
Signature: Image
Resume: File
The Employment History table include these columns:
Applicant Name: Single line of text (primary column)
Create a public form to fill in data into Dataverse
I'll use Plumsail Forms to create a public web form that applicants can complete online. To save time, I'll start with a ready-made Job Application Form template.
Accessibility: Easily accessible via a direct link or embedded on any website.
Responsiveness: Fully compatible with tablets and mobile phones.
Navigation: User-friendly page layout for easy completion.
Data Validation: Ensures accurate email and phone information.
Rich Text: Allows for formatted text input
Table control: Simplifies adding and organizing work experience with a repeating table.
Attachments: Enables file uploads from users outside your organization.
Signature: Provides consent to data processing and storage.
For this specific example, this form is sufficient. However, if necessary, you can add more fields and controls to gather extensive data.
Tip: Add a Captcha control to prevent spam, bots, and other malicious activities.
Set up Power Automate Flow to save form submissions to Dataverse
Let's create a Power Automate flow to save public form data to Dataverse.
Open Microsoft Power Automate and create an automated cloud flow. This flow will run automatically when the form is submitted.
Find the Plumsail Forms - Form is submitted trigger, name the flow, and click Create:
Setup of the automated flow
Log in to your Plumsail Account to create a connection with Plumsail. After that, you'll see a list of your forms in the dropdown. Select the form you want to process in the flow:
Plumsail Forms trigger
Then, add the Microsoft Dataverse - Add a new row action. It will create a new record in Dynamics 365.
Select the table name from the dropdown. Once you select the table, you'll see the column names from your Dataverse table. Map your form fields with the corresponding Dataverse columns:
Setup of the Add a new row action
That could be it, but Dataverse table have choice and file columns, and the connection to the Employment History table. Saving data to these columns and creating rows in the related table can be a bit tricky. I'll give you some tips and instructions for each case.
Set Dataverse Choice field
Options in a choice column are pairs of integer values and labels:
Choice column settings
Tip: You can define different labels for the different languages supported in your environment. This allows you to create Dataverse table forms that are tailored to specific regions or cultures. Learn more.
The actual Dataverse Choice column value is an integer. On a public form the choice field value is a string. The challenge here is to match the value selected on the public form to the corresponding option in a Dataverse table.
That's easier than you can think!
Add a Variable - Initialize variable action above the Add a new row action:
Initialize variable action
Name the variable, e.g. Positions_id, set its type to Object and add this object with key-value pairs to the Value box:
In the Add a new row action, for the Position choice column select Enter custom value.
Add an expression to retrieve the integer value corresponding to the selected string option from the public form. Go to the Function tab and type: ?[ ]
Function tab
Go to the Dynamic content tab and add the variable with key-value pairs before the question mark. Inside the square brackets, add the value from the public form.
Tip: You might need to switch to the classic designer view to see the data in Dynamic content tab.
Tip: If you're working with a large number of choice options, connecting the Plumsail Dropdown field to an Excel file can simplify the process. In the Excel file, you can list the labels and corresponding integer values for the Dataverse choice column, eliminating the need for manual configuration.
Save signature to Dataverse Image column
In Plumsail Forms, you can collect signatures from users, such as notes, drawings, or anything else. In this case, with a signature we obtain consent for processing and storing personal data.
The signature, stored in Base64 format, can be easily converted to PNG and saved to the Image column in Dataverse table.
Add an Upload a file or an image action after the Add a new row action.
Upload a file or an image action
Select the table and column where you want to save the signature. In the Row ID box, you need to select the ID of the row created in the Add a new row action.
Type id in the Dynamic Content tab, and select the Unique identifier for the entity instances. The title of the output usually matches the name of the table:
Set up of the Row ID
In the Content name box, enter a name for the signature file. It could be a static or dynamic data.
It's important to enter the correct file extension. In this case, it's PNG:
Content name
In the Content box, add this expression to the Function tab:
dataUriToBinary()
Then open the Dynamic content tab and add the content of the Signature control from the public form. The final expression should look like this:
Expression for converting Base64 to PNG
Upload file to Dataverse table row
Just like we saved signatures in Dynamics 365, we can also save files attached to a public form.
Add a Plumsail Forms - Download attachment action to get the content of the file attached to the form submission.
In the File URL box, add url from the Dynamic content tab:
Setup of the Download attachment action
Once you do that, the action will be wrapped inside the Apply to each loop to iterate through each file.
Note: Only one file can be linked using the File column in a Dataverse table. To attach multiple files, create a new table to store attachments. You'll need to create a new row for each attachment and link these rows to the parent row. Keep reading to learn how to create records in the related table.
Add a Dataverse - Upload a file or an image action. Select the table and column where you want to save the file.
In the Content name box, add file—the output of the Plumsail trigger action:
File name
In the Row ID box, select the ID of the row created in the Add a new row action.
Type id in the Dynamic Content tab, and select the Unique identifier for the entity instances. The title of the output usually matches the name of the table:
Setup of the Row ID
In the Content box, add Result file—the output of the Download attachment action:
File content
That simple!
Create rows in related table
Now we need to save data from the repeating section of the public form to the Employment History table in Microsoft CRM.
Add one more Microsoft Dataverse - Add a new row action and select the Dataverse table where you want to save the data.
Map the columns from the form table to the corresponding columns in the Dataverse table. Once you do that, the action will be wrapped inside the Apply to each loop to iterate through each record in the repeating section and create a new row for each line:
Apply to each action
The last is to set the ParentRowId lookup column value, so that new rows will be connected to the row in the primary table.
To set the lookup column value we need to know the plural name of the Job Applications table.
Open the table in PowerApps, click Tools and Copy set name.
Get the plural name of the table
Go back to the MS Flow and paste the set name into the lookup column.
Add brackets after the set name and then, add the id of the parent row inside the brackets from the Dynamic content tab.
Type id in the Dynamic Content tab, and select the Unique identifier for the entity instances. The title of the output usually matches the name of the table.
Set the value of the Lookup column
That's all!
You can follow the same instructions to upload multiple attachments to the Dataverse table row.
Save public form submission to Dataverse table
We've created a Power Automate flow, figured out all the tricks for saving data to Dynamics 365, and it's time to test the flow.
Final flow
I filled out the form with some data and submitted it:
Completed form - Personal Details
Completed form - Experience
The flow ran successfully, and here is the result in Dynamics 365:
Data in Dataverse table form - Primary table
Data in Dataverse table form - Related table
Frequently Asked Questions
How do I save submissions from Microsoft Forms to Dataverse?
To save Microsoft Forms responses to Dataverse, you can create a Power Automate flow following the same instructions for Plumsail forms described in this article. You can also find other posts about saving form data using Power Automate. For instance:
How to set Dataverse Lookup column value in Power Automate?
To update a row in Dataverse table and link to a related table, you need to know the plural name of the parent table. Open the table in PowerApps, click Tools and Copy set name. Use the set name in Power Automate to set the lookup column, like so:
cr19f_setname({Row_ID})
How to attach multiple files to a row in Dataverse?
File and image column allow only one file attached to the row. To connect multiple files, create a table with many-to-one relation and create a row for each file.
How to save signature to Dataverse?
Design a web form in Plumsail and add Signature control to the form. The signature is stored in Based64 and can be converted to PNG using the expression:
dataUriToBinary()
And then, saved to File or Image column in Dynamics 365.
How to set the Dataverse choice column value in Power Automate?
You need to know the option values, which are integers, to set the choice column. If the incoming data is a string, you need to match the string to the corresponding integer value of the choice column.
Use Plumsail Forms to save data to Dataverse
Whether you need to collect data from outside your organization and save it to Dataverse, you won't find a better tool than Plumsail Forms. Its easy-to-use interface, enhanced fields and controls, ability to upload files, and adaptability to any screen size make it a perfect tool for creating publicly facing forms.
And by following these instructions, you can now create a PowerAutomate flow that will save data from form responses to Dynamics 365. And if you have any questions about flow setup, contact our support team or post in the Plumsail community.
Connect Microsoft Forms to SharePoint using Power Automate
Learn how to seamlessly connect Microsoft Forms with or without attachments to a SharePoint List or Library using Power Automate. This comprehensive guide will help you automate data collection and streamline workflows efficiently.
Nikita Kurguzov
Customer Support Engineer
Forms
Jun 18
How to create a Microsoft Forms approval workflow
Learn how to create an efficient Microsoft Forms approval workflow using Power Automate and SharePoint. Step-by-step guide with use cases and best practices.
Ilia Lazarevskii
Customer Support Engineer
Forms
Jun 25
How to add a signature in Microsoft Forms
Learn how to add a signature in Microsoft Forms with our comprehensive guide. Discover workarounds and best practices to collect signatures easily and effectively.