Security is an important aspect when creating applications. You must ensure that data is protected from being accessed or updated. Security is especially crucial when making an application for anonymous users. This how-to guide describes using a Proxy Layer Structure for anonymous users.
What Is the Proxy Layer Structure?
The Proxy Layer Structure takes an application and switches it to the server side. After that, actions performed by your application will not display in the underlying code.
Let’s say you have a module that collects an end-user's name, address, phone number, and email address. Then, you want to validate the data and create a submission for storage. A Proxy Layer Structure does this outside of your application's code.
The Proxy Layer Structure contains at least four modules. You might add more depending on what actions you'd like to perform. For this guide, you'll create six modules:
Module | Description |
|---|---|
Browser | This is the front-end of your application. The end-user interacts with this module to complete an application or upload files. |
Proxy | This module switches your application from the front-end application to the server-side.
|
Master | This module orchestrates actions, like validating data, creating submissions, or sending emails. The Master Module connects to each action and transmits data. |
Validate | In this example, this module validates your end-user's data from the Browser module. |
Create | In this example, this module is where your end-user’s data becomes a submission. |
Schema | This is the endpoint of your application where the submission stores after validation. |
To begin configuring, click on the tab that matches your Unqork version:
Setting Up the Browser Module
This Front-End module is the only module your end-user can access and input data. But if their entries do not match your requirements, they cannot submit the application. Instead, they'll see an error message asking them to update their entries before submitting.
These instructions assume you have a new Front-End module open, saved, and with a title.
Configure the Panel Component
Begin by adding a Panel component to act as a container for the components that follow.
In the Module Builder, drag and drop a Panel component onto your canvas.
In the Property ID field, enter
panelPersonalInfo.Click Save Component.
Configure the Columns Component
This Columns component keeps your Browser module organized for your end-user. You’ll place fields for your end-user’s first, middle, and last name.
Drag and drop a Columns component onto your canvas, placing it in the
panelPersonalInfoPanel component.In the Property ID field, enter
colPersonalInfo.In the Default State Options, select the icon displaying three evenly spaced columns.
Click Save Component.
Configure the Text Field Components
To collect your end-user’s name, configure three Text Field components.
Drag and drop three Text Field components onto your canvas, placing one in each of your three columns.
In the Property ID and Label Text fields, enter the following:
#
Property ID
Label Text
1
firstName
First Name
2
middleName
Middle Name
3
lastName
Last Name
In the
firstNameandlastNameText Field components, set Required to
(ON).Click Save Component for each component as you add it.
Configure the Address Component
To collect your user’s address, configure an Address component to call the Google Maps API for autoformatting.
Drag and drop an Address component inside the
panelPersonalInfoPanel component, below yourcolPersonalInfoColumns component.In the Property ID field, enter
address.In the Label Text field, enter
Address.Click Save Component.
Configure the Phone Number Component
To collect your end-user’s phone number, configure a Phone Number component.
Drag and drop a Phone Number component inside the
panelPersonalInfoPanel component, below youraddressAddress component.In the Property ID field, enter
phoneNumber.In the Label Text field, enter
Phone Number.In the Regular Expression Pattern field, enter
^(\+\d{1,2}\s)?\(?\d{3}\)?[()\s.-]?\d{3}[\s.-]?\d{4}$.A Regular Expression Pattern enforces phone number formatting. This expression returns an error if your end-user enters letters or special characters.
.jpg)
Click Save Component.
Configure the Email Component
To collect your end-user’s email address, configure an Email component.
Drag and drop an Email component inside the
panelPersonalInfoPanel component, below yourphoneNumberPhone Number component.In the Property ID and Label Text fields, enter
Email.In the Validation field, set Required to
(ON).In the Regular Expression Pattern field, enter
^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$.The Regular Expression Pattern enforces email formatting. This expression returns an error if your end-user enters an invalid email address.

Click Save Component.
Configure the Button Component
When your end-user completes their entry, they’ll need to submit it. So, add a Button component to your module.
Drag and drop a Button component inside the
panelPersonalInfoPanel component, below youremailEmail component.In the Property ID field, enter
btnValidate.In the Label Text field, enter
Submit.From the Action Type drop-down, select Event.
From the On Click drop-down, enter
pluginCreatePersonalInfoProxy.The On Click setting connects the Button component to a Plug-In component you'll add in the next step. When an end-user clicks the button, the Plug-In component triggers.

Click Save Component.
Configure the Plug-In Component
To pass the data collected by your Browser module to the Proxy module, you’ll use a Plug-In component. This Plug-In component also receives a response at the end of the data flow. Depending on this result, either a Success or an Error message is displayed to the end-user.
Drag and drop a Plug-In component inside the
panelPersonalInfoPanel component, below yoursubmitButton component.In the Property ID and Canvas Label Text fields, enter
pluginCreatePersonalInfoProxy.From the Internal Services drop-down, select Execute Module. The Request Type and Data Source URL autopopulate.
You'll see
/fbu/uapi/modules/{moduleId}/executeas your Data Source URL. You'll return to this Plug-In component once you have created your Proxy module and replace the{moduleId}placeholder with the module ID of your Proxy module.In the Inputs table, enter the following:
#
Property ID
Mapping
1
firstName
data.firstName
2
middleName
data.middleName
3
lastName
data.lastName
4
address
data.address
5
phoneNumber
data.phoneNumber
6
email
data.email
In the Outputs table, enter the following:
#
Property ID
Mapping
1
resolution
data.resolved.resolution
2
referenceNumber
data.resolved.referenceNumber
The Outputs table sends the data to two Hidden components you'll add in the next step.

Click Save Component.
Configure the Hidden Components
When completed, the data flow returns a result to the Browser module and stores it in two Hidden components. The resolution Hidden component manages the response from any module further along in the data flow. The referenceNumber Hidden component retains the end-user's reference number once their submission has been saved.
Drag and drop two Hidden components inside the
panelPersonalInfoPanel component, below yourpluginCreatePersonalInfoProxyPlug-In component.In Property ID and Label Text fields, enter the following for each component:
#
Property ID
Label Text
1
resolution
resolution
2
referenceNumber
referenceNumber
Set Store Data in Database to
(ON).Click Save Component for each component as you add it.
Configure the Decisions Component
Next, you’ll configure a Decisions component at the end of the data flow to display either a Success or an Error message to your end-user.
Drag and drop a Decisions component inside the
panelPersonalInfoPanel component, below your Hidden components.In the Property ID and Canvas Label Text fields, enter
ruleShowMessage.From the Trigger Type drop-down, select Watch.
In the Inputs table, enter the following:
#
Source
Type
Required
1
resolution
exact
(checked)In the Outputs table, enter the following:
#
Source
Type
1
successMessage
visible
2
errorMessage
visible
These Property IDs refer to the HTML Element components you'll add in the next few steps.
In the Conditionals table, enter the following:
#
resolution
successMessage_visible
errorMessage_visible
1
Success
yes
no
2
Error
no
yes

Click Save Component.
Configure the Success HTML Element Component
This HTML Element component acts as your Success message. This component remains hidden until the data flow returns a response.
Drag and drop an HTML Element component inside the
panelPersonalInfoPanel component, below yourruleShowMessageDecisions component.In the Property ID field, enter
successMessage.In the Content field, enter
Your submission is complete!.Set Hide Field to
(ON).In the Tag field, enter
h4.In the Custom CSS Class for Container field, enter
successMessage.
Click Save Component.
Configure the Error HTML Element Component
This HTML Element component acts as your Error message. This component remains hidden until the data flow returns a response.
Drag and drop a second HTML Element component inside the
panelPersonalInfoPanel component, below yoursuccessMessageHTML Element component.In the Property ID field, enter
errorMessage.In the Content field, enter
We're experiencing some issues with the submission. Please review the information you provided..Set Hide Field to
(ON).In the Tag field, enter
h4.In the Custom CSS Class for Container field, enter
errorMessage.
Click Save Component.
Save your module.
Here's how your Browser module looks in the Module Builder:

And here's how your Browser module looks in Express View:
You now have a user-facing Browser module to collect the end-user’s personal information. Your Browser module initiates the data flow when your end-user clicks the Submit button.
Setting Up the Proxy Module
After a successful submission in the Browser module, the end-user's data passes to the Proxy module. Your Proxy module works on the server-side only, so your end-user's don’t see it in Express View.
These instructions assume you have a new API module open, saved, and with a title.
In the Module Builder, click the
(ellipsis) button.Select Module Settings.
To the left of the modal, click Module Settings.
Set Act as Super-user when Server Side Executing to
(ON).This setting does not grant Super-user access to the end-user, only server-side module access. To enhance security, you can set the Proxy module permissions to
Writefor the roles that need to initiate remote execution from the Express module.
Click Save & Close.
Configure the Panel Components
These Panel components act as containers for the components that follow. The panelRequest Panel component manages the end-user’s data. The panelConfig Panel component manages the data validation and progresses the data flow. The panelResponse Panel component manages the result of the data flow. Lastly, the panelInfo Panel component is not used further in the configuration, so you can remove it.
In the Module Builder, hover over the existing components within the panelConfig and delete them, as they are no longer required in the configuration.
Click Save Component.
Configure the API Hidden Component
This Hidden component acts as simple API documentation for others working on the application.
Drag and drop a Hidden component onto your canvas, placing it above the
panelRequestPanel component.In the Property ID and Label Text fields, enter
method.In the Default Value field, enter
PUT.This indicates the HTTP request your module simulates.
Click Save Component.
Configure the Data Hidden Components
These Hidden components store data passed from the Browser module.
Drag and drop six Hidden components inside the
panelRequestPanel component.In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Canvas Label Text
1
firstName
firstName
2
middleName
middleName
3
lastName
lastName
4
address
address
5
phoneNumber
phoneNumber
6
email
email
These Property IDs are the same as the Property IDs used in your Browser module. They must match for data mapping purposes.
Click Save Component for each component as you add it.
Configure the Response Hidden Components
These Hidden components handle the data flow response.
Drag and drop two Hidden components inside the
panelResponsePanel component.In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Canvas Label Text
1
resolution
resolution
2
referenceNumber
referenceNumber
These Property IDs are the same as the Property IDs used in your Browser module. They must match for data mapping purposes.
Click Save Component for each component as you add it.
Configure the Initializer Components
These Initializer components trigger the data flow. Your initExecute Initializer component progresses the data flow forward. If an error occurs, the initError Initializer component sends the response back to the Browser module.
Drag and drop an Initializer component inside the
panelConfigPanel component.In the Property ID and Canvas Label Text fields, enter
initExecute.In the Outputs table, enter the following:
#
Source
Type
Value
1
pluginValidatePersonalInfo
trigger
GO
This Property ID must match the Property ID of the Plug-In component you'll add later.

Click Save Component.
Drag and drop another Initializer component inside the
panelConfigPanel component, below yourinitExecuteInitializer component.In the Property ID and Canvas Label Text fields, enter
initError.In the Outputs table, enter the following:
#
Source
Type
Value
1
resolution
value
Error

Click Save Component.
Configure the Plug-In Component
To pass the data from your Proxy module to the Master module, you’ll use a Plug-In component. This Plug-In component also receives a response from the rest of the data flow.
Drag and drop a Plug-In component inside the
panelConfigPanel component, between the Initializer components.In the Property ID and Canvas Label Text fields, enter
pluginValidatePersonalInfo.From the Internal Services drop-down, select Execute Module.
In the Inputs table, enter the following:
#
Property Id
Mapping
1
firstName
data.firstName
2
middleName
data.middleName
3
lastName
data.lastName
4
address
data.address
5
phoneNumber
data.phoneNumber
6
email
data.email
In the Outputs table, enter the following:
#
Property Id
Mapping
1
resolution
data.resolved.resolution
2
referenceNumber
data.resolved.referenceNumber

From the Error Trigger drop-down, select initError.
Set Assign Values If They Are Null or Empty String to
(OFF).
Click Save Component.
Save your module.
Here's how your Proxy Module looks in the Module Builder:
.jpg)
Connect the Proxy and Browser Modules
Next, you'll connect your Proxy module to the Browser module.
In your Browser module, hover over the
pluginCreatePersonalInfoProxyPlug-In component. A 5-button toolbar displays above the component on hover-over.Using the toolbar, click the
(Settings) button.In the Data Source URL, replace
{moduleId}with the module ID of your Proxy module.To locate the module ID, look in the module URL. You can see the module ID for our sample Proxy module bolded here: https://training.unqork.io/#/form/5ebc0fa57b2213020fc9ee03/edit.

Click Save Component.
Save your module.
You now have a Server-Side Execute Only Proxy module to pass data from the Browser module.
Setting Up the Master Module
The Master module communicates with subsequent modules to orchestrate data validation and the creation of end-user submissions.
These instruction assume you have a new API module open, saved, and with a title.
Configure the Panel Components
The Panel component acts as a container for the components that follow. The panelRequest Panel component manages your end-user’s data. The panelValidate Panel component manages the data validation. Your panelCreateSubmission Panel component manages the creation of the end-user’s submission. And your panelResponse Panel component manages error and success messages.
Hover over the panelInfo and panelConfig Panel components and delete them because they are no longer required in the configuration.
In the Module Builder, drag and drop two Panel components onto your canvas, placing them between the
panelRequestandpanelResponsePanel components.In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Canvas Label Text
1
panelValidate
panelValidate
2
panelCreateSubmission
panelCreateSubmission
Click Save Component for each component as you add it.
Configure the API Hidden Component
This Hidden component acts as simple API documentation for others working on the application.
Drag and drop a Hidden component onto your canvas, placing it above the
panelRequestPanel component.In the Property ID and Label Text fields, enter
method.In the Default Value field, enter
PUT.This setting indicates the HTTP request your module simulates.
Click Save Component.
Configure the Data Hidden Components
These Hidden components store data passed from the Browser module.
Drag and drop six Hidden components inside the
panelRequestPanel component.In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Canvas Label Text
1
firstName
firstName
2
middleName
middleName
3
lastName
lastName
4
address
address
5
phoneNumber
phoneNumber
6
email
email
These Property IDs are the same as the Property IDs used in the Proxy module. They must match for data mapping purposes.
Click Save Component for each component as you add it.
Configure the Response Hidden Components
These Hidden components handle the data flow response.
Drag and drop two Hidden components inside the
panelResponsePanel component.In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Canvas Label Text
1
resolution
resolution
2
referenceNumber
referenceNumber
These Property IDs are the same as the Property IDs used in the Proxy module. They must match for data mapping purposes.
Click Save Component for each component as you add it.
Configure the Validation Initializer Component
This Initializer component progresses the data validation flow.
Drag and drop an Initializer component inside the
panelValidatePanel component.In the Property ID and Canvas Label Text fields, enter
initValidate.In the Trigger Type drop-down, select New Submission.
In the Outputs table, enter the following:
#
Source
Type
Value
1
pluginValidate
trigger
GO

Click Save Component.
Configure the Create Submission Initializer Component
This Initializer component creates the submission once your end-user’s data validates.
Drag and drop an Initializer component inside the
panelCreateSubmissionPanel component.In the Property ID and Canvas Label Text fields, enter
initCreate.In the Outputs table, enter the following:
#
Source
Type
Value
1
pluginSaveSubmission
trigger
GO

Click Save Component.
Configure the Response Handling Initializer Components
These Initializer components relay Success or Error messages back up the data flow to the Browser module.
Drag and drop an Initializer component inside the
panelCreateSubmissionPanel component, below theinitCreateInitializer component.In the Property ID and Canvas Label Text fields, enter
initSuccess.Set the Trigger Type as Watch.
In the Outputs table, enter the following:
#
Source
Type
Value
1
resolution
value
Success

Click Save Component.
Drag and drop another Initializer component inside the
panelCreateSubmissionPanel component below theinitSuccessInitializer component.In the Property ID and Canvas Label Text fields, enter
initError.Set the Trigger Type as Watch.
In the Outputs table, enter the following:
#
Source
Type
Value
1
resolution
value
Error

Click Save Component.
Configure the Validation Plug-In Component
This Plug-In component progresses the data validation flow.
Drag and drop a Plug-In component inside the
panelValidatePanel component, below theinitValidateInitializer component.In the Property ID and Canvas Label Text fields, enter
pluginValidate.From the Internal Services drop-down, select Execute Module.
The Request Type and Data Source URL autopopulate. You'll see
/fbu/uapi/modules/{moduleId}/executeas your Data Source URL. You'll return to this Plug-In component once you have created your Validation module. Then you'll replace{moduleId}with the module ID for your Validation module.In the Inputs table, enter the following:
#
Property ID
Mapping
1
firstName
data.firstName
2
middleName
data.middleName
3
lastName
data.lastName
4
address
data.address
5
phoneNumber
data.phoneNumber
6
email
data.email
Set the Trigger Type as Watch.
From the Post Trigger drop-down, select initCreate.
From the Error Trigger drop-down, select initError.

Click Save Component.
Configure the Save Submission Plug-In Component
This Plug-In component sends data to the Creation module.
Drag and drop a Plug-In component inside the
panelCreateSubmissionPanel component between theinitCreateandinitSuccessInitializer components.In the Property ID and Canvas Label Text fields, enter
pluginSaveSubmission.From the Internal Services drop-down, select Execute Module.
The Request Type and Data Source URL autopopulate. You'll see
/fbu/uapi/modules/{moduleId}/executeas your Data Source URL. You'll return to this Plug-In component once you have created your Validation module. Then you'll replace{moduleId}with the module ID for your Validation module.In the Inputs table, enter the following:
#
Property ID
Mapping
1
firstName
data.firstName
2
middleName
data.middleName
3
lastName
data.lastName
4
address
data.address
5
phoneNumber
data.phoneNumber
6
email
data.email
In the Outputs table, enter the following:
#
Property ID
Mapping
1
referenceNumber
id
From the Post Trigger drop-down, select initSuccess.
From the Error Trigger drop-down, select initError.

Click Save Component.
Save your module.
Here's how your Master module looks in the Module Builder:

Connect the Master and Proxy Modules
Next, you'll connect your Master module to the Proxy module.
In your Proxy module, hover over the
pluginValidatePersonalInfoPlug-In component.A 5-button toolbar appears above the component on hover-over.
Using the toolbar, click the
(Settings) button.In the Data Source URL, replace
{moduleId}with the module ID of your Master module.To find the module ID, look in the module URL. You can see the module ID for our sample Master module bolded here: https://training.unqork.io/#/form/5ebc196fb47819020ecd171a/edit.
Click Save Component.
Save your module.
You now have a Server-Side Execute Only module that passes data where needed to perform your desired actions. Your Master module continues the data flow from the Proxy module.
Setting Up the Validation Module
The first action the Master module calls is data validation. This is the second time your end-users data validates. But unlike the first time, this validation occurs on the server side. This ensures the data still matches the requirements you set in the Browser module. If validation fails, an error message triggers and sends it back to the data flow.
These instructions assume you have a new API module open, saved, and with a title.
Update the Panel Component
Your Panel component acts as a container for the components that follow. Your panelRequest Panel manages the data passed from the Browser module. Hover over the requestParameter Hidden component and delete it.
Then, hover over the panelInfo, panelConfig, and panelResponse Panel components and delete them because they are no longer required in the configuration.
Configure the Columns Component
Columns help keep your Validation module organized. You’ll place the first, middle, and last name fields here as you did in the Browser module.
Drag and drop a Columns component inside the
panelRequestPanel component.In the Property ID field, enter
colPersonalInfo.In the Display field, select the icon for three evenly spaced columns.
Click Save Component.
Configure the Text Field Components
Drag and drop three Text Field components onto your canvas, placing them inside each of your three columns.
In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Label Text
1
firstName
First Name
2
middleName
Middle Name
3
lastName
Last Name
Set Required to
(ON) in your firstNameandlastNameText Field components.Click Save Component for each component as you add it.
Configure the Address Component
Drag and drop an Address component onto your canvas, placing it below the
colPersonalInfoColumns component.In the Property ID field, enter
address.In the Label Text field, enter
Address.Click Save Component.
Configure the Phone Number Component
Drag and drop a Phone Number component onto your canvas, placing it below your
addressAddress component.In the Property ID field, enter
phoneNumber.In the Label Text field, enter
Phone Number.In the Regular Expression Pattern field, enter
^(\+\d{1,2}\s)?\(?\d{3}\)?[()\s.-]?\d{3}[\s.-]?\d{4}$.This Regular Expression Pattern validates the data against the same requirement set in the Browser module.
Click Save Component.
Configure the Email Component
Drag and drop an Email component onto your canvas, placing it below the
phoneNumberPhone Number component.In the Property ID field, enter
email.In the Label Text field, enter
Email.Set Required to
(ON).In the Regular Expression Pattern field, enter
^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$.This validates the data against the same requirement set in the Browser Module.
Click Save Component.
Configure the Hidden Component
This Hidden component acts as simple API documentation for others working on the application.
Drag and drop a Hidden component above the
panelRequestPanel component.In the Property ID and Label Text fields, enter
method.In the Default Value field, enter
PUT.This setting indicates the HTTP request your module simulates.
Click Save Component.
Save your module.
Here's how your Validation module looks in the Module Builder:

Connect the Validation and Master Modules
Next, you'll connect your Validation module back to the Master module.
In your Master module, hover over the
pluginValidatePlug-In component.A 5-button toolbar appears above the component on hover-over.
Using the toolbar, click the
(Settings) button.In the Data Source URL, replace
{moduleId}with the module ID of your Validation module.You can see the module ID for our sample Validation module bolded here: https://training.unqork.io/#/form/5ebc28147b2213020fc9ef10/edit.
Click Save Component.
Save your module.
You now have a Server-Side Execute Only module that validates end-user data passed from the Master module. Your Validation module is the end of the validation portion of this Proxy Structure.
Setting Up the Creation Module
Once data clears the Validation module, the Master module passes it to the next step. The Creation module handles it by creating the submission. Submissions then pass to the Schema module for storage, which you'll create in the next step. If the Creation module fails, an error message sends it back in the flow.
These instructions assume you have a new API module open, saved, and with a title.
Configure the Panel Component
Your Panel components act as containers for the components that follow. Your panelRequest Panel component manages the data passed from the Browser module. Your panelCreateSubmission Panel component manages the submission for storage in the Schema module. And your panelResponse Panel component manages the error handling.
Hover over the panelInfo and panelConfig Panel components and delete them because they are no longer required in the configuration.
In the Module Builder, drag and drop a Panel component onto your canvas.
In the Property ID and Canvas Label Text fields, enter
panelCreateSubmission.Click Save Component.
Configure the API Hidden Component
Drag and drop a Hidden component onto your canvas, placing it above the
panelRequestPanel component.In the Property ID and Label Text fields, enter
method.In the Default Value field, enter
PUT.This setting indicates the HTTP request your module simulates.
Click Save Component.
Configure the Data Hidden Components
These Hidden components store the data passed from the Browser module. Hover over the existing Hidden component and delete it because it’s not required in the configuration.
Drag and drop six Hidden components inside the
panelRequestPanel component.In Property ID and Label Text fields, enter the following for each component:
#
Property ID
Label Text
1
firstName
firstName
2
middleName
middleName
3
lastName
lastName
4
email
email
5
address
address
6
phoneNumber
phoneNumber
These Property IDs are the same as the Property IDs used in the Master module. They must match to ensure proper data mapping.
Click Save Component for each component as you add it.
Configure the Response Hidden Component
This Hidden component handles the data flow response. Hover over the existing Hidden component and delete it because it’s not required in the configuration.
Drag and drop another Hidden component inside the
panelResponsePanel component.In the Property ID and Label Text fields, enter
referenceNumber.This Property ID is the same as the Property ID used in the Master module. They must match to ensure proper data mapping.
Click Save Component.
Configure the Plug-In Component
Drag and drop a Plug-In component inside the
panelCreateSubmissionPanel component.In the Property ID and Canvas Label Text fields, enter
pluginSaveSubmission.From the Internal Services drop-down, select Create Module Submissions(s).
You'll return to this Plug-In component once you have created your Schema module. Then you'll replace
{moduleId}with the module ID for your Schema module.In the Inputs table, enter the following:
#
Property ID
Mapping
1
firstName
data.firstName
2
middleName
data.middleName
3
lastName
data.lastName
4
address
data.address
5
phoneNumber
data.phoneNumber
6
email
data.email
In the Outputs table, enter the following:
#
Property ID
Mapping
1
referenceNumber
id
Set Assign Values If They Are Null or Empty String to
(OFF).
Click Save Component.
Configure the Initializer Component
Drag and drop an Initializer component onto your canvas, placing it below your
pluginSaveSubmissionPlug-In component.In the Property ID and Canvas Label Text fields, enter
initSave.From the Trigger Type drop-down, select New Submission.
In the Outputs table, enter the following:
#
Source
Type
Value
1
pluginSaveSubmission
trigger
GO

Click Save Component.
Save your module.
Here's how your Creation module looks in the Module Builder:

Connect the Creation and Master Modules
Next, you'll connect your Creation module to the Master module.
In your Master module, hover over the
pluginSaveSubmissionPlug-In component.A 5-button toolbar displays above the component on hover-over.
Using the toolbar, click the
(Settings) button.In the Data Source URL, replace
{moduleId}with the module ID of your Creation Module.You can see the module ID for our sample Creation module bolded here: https://training.unqork.io/#/form/5ebc3204b47819020ecd1d55/edit.
Click Save Component.
Save your module.
You now have a Server-Side Execute Only Creation module that creates a submission based on end-user data. Your Creation module passes that submission to the Schema module for storage.
Setting Up the Schema Module
From the Creation module, your end-user submissions are stored in your Schema module. The Schema module only serves as storage and doesn't take any actions.
The Schema module components mirror the data-entry fields from your Browser module. You’ll apply the same requirements in the Schema module as you did in the Browser module.
These instructions assume you have a new API module open, saved, and with a title.
Configure the Hidden Components
To set up the Schema module, you’ll add six Hidden components. Your Hidden components correspond to the data fields in your Browser module.
In the Module Builder, drag and drop six Hidden components onto your canvas.
In Property ID and Label Text fields, enter the following for each component:
#
Property ID
Label Text
1
firstName
First Name
2
middleName
Middle Name
3
lastName
Last Name
4
address
Address
5
phoneNumber
Phone Number
6
email
Email
Click Save Component for each component as you add it.
Save your module.
Here's how your Schema module looks in the Module Builder:

Connect the Schema and Creation Modules
Next, you'll connect your Schema module back to the Creation module.
In your Creation module, hover over the
pluginSaveSubmissionPlug-In component.A 5-button toolbar displays above the component on hover-over.
Using the toolbar, click the
(Settings) button.In the Data Source URL field, replace
{moduleId}with the module ID of your Schema module.You can see the module ID for our sample Schema module bolded here: https://training.unqork.io/#/form/5ebd7fb0ce23f0020fbf91d5/edit.
Click Save Component.
Save your module.
You now have a Schema module that stores end-user submissions. You can use this Schema module to populate a dashboard to view end-user submissions.
You now have a series of six modules that form a Proxy Layer Structure. The structure begins with the Browser module, where your end-user submits their information. Then, the data passes through the rest of the data flow, hiding it from any code. All the end-user sees after clicking Submit is a Success or an Error message.Lab
Setting Up the Browser Module
This Front-End module is the only module your end-user can access and input data. But if their entries do not match your requirements, they cannot submit the application. Instead, they'll see an error message asking them to update their entries before submitting.
These instructions assume you have a new Front-End module open, saved, and with a title.
Configure the Panel Component
Begin by adding a Panel component to act as a container for the components that follow.
In the Module Builder, drag and drop a Panel component onto your canvas.
In the Property ID field, enter
panelPersonalInfo.Click Save & Close.
Configure the Columns Component
This Columns component keeps your Browser module organized for your end-user. You’ll place fields for your end-user’s first, middle, and last name.
Drag and drop a Columns component onto your canvas, placing it in the
panelPersonalInfoPanel component.In the Property ID field, enter
colPersonalInfo.In the Default State Options, select the icon displaying three evenly spaced columns.
Click Save & Close.
Configure the Text Field Components
To collect your end-user’s name, configure three Text Field components.
Drag and drop three Text Field components onto your canvas, placing one in each of your three columns.
In the Property ID and Label Text fields, enter the following:
#
Property ID
Label Text
1
firstName
First Name
2
middleName
Middle Name
3
lastName
Last Name
In the
firstNameandlastNameText Field components, set Required to
(ON).Click Save & Close for each component as you add it.
Configure the Address Component
To collect your user’s address, configure an Address component to call the Google Maps API for autoformatting.
Drag and drop an Address component inside the
panelPersonalInfoPanel component, below yourcolPersonalInfoColumns component.In the Property ID field, enter
address.In the Label Text field, enter
Address.Click Save.
Configure the Phone Number Component
To collect your end-user’s phone number, configure a Phone Number component.
Drag and drop a Phone Number component inside the
panelPersonalInfoPanel component, below youraddressAddress component.In the Property ID field, enter
phoneNumber.In the Label Text field, enter
Phone Number.In the REGULAR EXPRESSION PATTERN field of the Validation section, enter
^(\+\d{1,2}\s)?\(?\d{3}\)?[()\s.-]?\d{3}[\s.-]?\d{4}$.A Regular Expression Pattern enforces phone number formatting. This expression returns an error if your end-user enters letters or special characters.

Click Save.
Configure the Email Component
To collect your end-user’s email address, configure an Email component.
Drag and drop an Email component inside the
panelPersonalInfoPanel component, below yourphoneNumberPhone Number component.In the Property ID and Label Text fields, enter
Email.In the Validation field, set Required to
(ON).In the Regular Expression Pattern field, enter
^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$.The Regular Expression Pattern enforces email formatting. This expression returns an error if your end-user enters an invalid email address.

Click Save.
Configure the Button Component
When your end-user completes their entry, they’ll need to submit it. So, add a Button component to your module.
Drag and drop a Button component inside the
panelPersonalInfoPanel component, below youremailEmail component.In the Property ID field, enter
btnValidate.In the Label Text field, enter
Submit.Set the Action Type as Event.
From the On Click drop-down, enter
pluginCreatePersonalInfoProxy.The On Click setting connects the Button component to a Plug-In component you'll add in the next step. When an end-user clicks the button, the Plug-In component triggers.

Click Save & Close.
Configure the Plug-In Component
To pass the data collected by your Browser module to the Proxy module, you’ll use a Plug-In component. This Plug-In component also receives a response at the end of the data flow. Depending on this result, either a Success or an Error message is displayed to the end-user.
Drag and drop a Plug-In component inside the
panelPersonalInfoPanel component, below yoursubmitButton component.In the Property ID and Canvas Label Text fields, enter
pluginCreatePersonalInfoProxy.From the Internal Services drop-down, select Execute Module. The Request Type and Data Source URL autopopulate.
You'll see
/fbu/uapi/modules/{moduleId}/executeas your Data Source URL. You'll return to this Plug-In component once you have created your Proxy module and replace the{moduleId}placeholder with the module ID of your Proxy module.In the Inputs table, enter the following:
#
Property ID
Mapping
1
firstName
data.firstName
2
middleName
data.middleName
3
lastName
data.lastName
4
address
data.address
5
phoneNumber
data.phoneNumber
6
email
data.email
In the Outputs table, enter the following:
#
Property ID
Mapping
1
resolution
data.resolved.resolution
2
referenceNumber
data.resolved.referenceNumber
The Outputs table sends the data to two Hidden components you'll add in the next step.

Click Save.
Configure the Hidden Components
When completed, the data flow returns a result to the Browser module and stores it in two Hidden components. The resolution Hidden component manages the response from any module further along in the data flow. The referenceNumber Hidden component retains the end-user's reference number once their submission has been saved.
Drag and drop two Hidden components inside the
panelPersonalInfoPanel component, below yourpluginCreatePersonalInfoProxyPlug-In component.In Property ID and Label Text fields, enter the following for each component:
#
Property ID
Label Text
1
resolution
resolution
2
referenceNumber
referenceNumber
Set Store Data in Database to
(ON).Click Save & Close for each component as you add it.
Configure the Decisions Component
Next, you’ll configure a Decisions component at the end of the data flow to display either a Success or an Error message to your end-user.
Drag and drop a Decisions component inside the
panelPersonalInfoPanel component, below your Hidden components.In the Property ID and Canvas Label Text fields, enter
ruleShowMessage.Set the Trigger Type as Watch.
In the Inputs table, enter the following:
#
Source
Type
Required
1
resolution
exact
(checked)In the Outputs table, enter the following:
#
Source
Type
1
successMessage
visible
2
errorMessage
visible
These Property IDs refer to the HTML Element components you'll add in the next few steps.
In the Micro Decisions table, enter the following:
#
resolution
successMessage_visible
errorMessage_visible
1
Success
yes
no
2
Error
no
yes

Click Save.
Configure the Success HTML Element Component
This HTML Element component acts as your Success message. This component remains hidden until the data flow returns a response.
Drag and drop an HTML Element component inside the
panelPersonalInfoPanel component, below yourruleShowMessageDecisions component.In the Property ID field, enter
successMessage.In the Content field, enter
Your submission is complete!.Set Hide Field to
(ON).In the Tag field, enter
h4.In the Custom CSS Class for Container field, enter
successMessage.
Click Save.
Configure the Error HTML Element Component
This HTML Element component acts as your Error message. This component remains hidden until the data flow returns a response.
Drag and drop a second HTML Element component inside the
panelPersonalInfoPanel component, below yoursuccessMessageHTML Element component.In the Property ID field, enter
errorMessage.In the Content field, enter
We're experiencing some issues with the submission. Please review the information you provided..Set Hide Field to
(ON).In the Tag field, enter
h4.In the Custom CSS Class for Container field, enter
errorMessage.
Click Save.
Save your module.
Here's how your Browser module looks in the Module Builder:

And here's how your Browser module looks in Express View:

You now have a user-facing Browser module to collect the end-user's personal information. Your Browser module begins the data flow when your end-user clicks the Submit button.
Setting Up the Proxy Module
After a successful submission in the Browser module, the end-user's data passes to the Proxy module. Your Proxy module works on the server-side only, so your end-user's don’t see it in Express View.
These instructions assume you have a new API module open, saved, and with a title.
In the Module Builder, click the
(ellipsis) button.Select Module Settings.
To the left of the modal, click Module Settings.
Set Act as Super-user when Server Side Executing to
(ON).This setting does not grant Super-user access to the end-user, only server-side module access. To enhance security, you can set the Proxy module permissions to
Writefor the roles that need to initiate remote execution from the Express module.Click Save & Close.
Configure the Panel Components
These Panel components act as containers for the components that follow. The panelRequest Panel component manages the end-user’s data. The panelConfig Panel component manages the data validation and progresses the data flow. The panelResponse Panel component manages the result of the data flow. Lastly, the panelInfo Panel component is not used further in the configuration, so you can remove it.
In the Module Builder, hover over the existing components within the panelConfig and delete them, as they are no longer required in the configuration.
Click Save & Close.
Configure the API Hidden Component
This Hidden component acts as simple API documentation for others working on the application.
Drag and drop a Hidden component onto your canvas, placing it above the
panelRequestPanel component.In the Property ID and Label Text fields, enter
method.In the Default Value field, enter
PUT.This indicates the HTTP request your module simulates.
Click Save & Close.
Configure the Data Hidden Components
These Hidden components store data passed from the Browser module.
Drag and drop six Hidden components inside the
panelRequestPanel component.In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Canvas Label Text
1
firstName
firstName
2
middleName
middleName
3
lastName
lastName
4
address
address
5
phoneNumber
phoneNumber
6
email
email
These Property IDs are the same as the Property IDs used in your Browser module. They must match for data mapping purposes.
Click Save & Close for each component as you add it.
Configure the Response Hidden Components
These Hidden components handle the data flow response.
Drag and drop two Hidden components inside the
panelResponsePanel component.In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Canvas Label Text
1
resolution
resolution
2
referenceNumber
referenceNumber
These Property IDs are the same as the Property IDs used in your Browser module. They must match for data mapping purposes.
Click Save & Close for each component as you add it.
Configure the Initializer Components
These Initializer components trigger the data flow. Your initExecute Initializer component progresses the data flow forward. If an error occurs, the initError Initializer component sends the response back to the Browser module.
Drag and drop an Initializer component inside the
panelConfigPanel component.In the Property ID and Canvas Label Text fields, enter
initExecute.Set the Trigger Type to New Submission.
In the Outputs table, enter the following:
#
Source
Type
Value
1
pluginValidatePersonalInfo
trigger
GO
This Property ID must match the Property ID of the Plug-In component you'll add later.

Click Save & Close.
Drag and drop second Initializer component onto your canvas, placing it below your
initExecuteInitializer component.In the Property ID and Canvas Label Text fields, enter
initError.In the Outputs table, enter the following:
Property ID
Type
Value
resolution
value
Error

Click Save & Close.
Configure the Plug-In Component
To pass the data from your Proxy module to the Master module, you’ll use a Plug-In component. This Plug-In component also receives a response from the rest of the data flow.
Drag and drop a Plug-In component inside the
panelConfigPanel component, between the Initializer components.In the Property ID and Canvas Label Text fields, enter
pluginValidatePersonalInfo.From the Internal Services drop-down, select Execute Module.
In the Inputs table, enter the following:
Property ID
Mapping
firstName
data.firstName
middleName
data.middleName
lastName
data.lastName
address
data.address
phoneNumber
data.phoneNumber
email
data.email
In the Outputs table, enter the following:
Property ID
Mapping
resolution
data.resolved.resolution
referenceNumber
data.resolved.referenceNumber
From the Error Trigger drop-down, select initError.
Set Assign Values If They Are Null or Empty String to
(OFF)..jpg)
Click Save.
Save your module.
Here's how your Proxy module looks in the Module Builder:

Connect the Proxy and Browser Modules
Next, you'll connect your Proxy module to the Browser module.
In your Browser module, hover over the
pluginCreatePersonalInfoProxyPlug-In component. A 5-button toolbar displays above the component on hover-over.Using the toolbar, click the
(Settings) button.In the Data Source URL, replace
{moduleId}with the module ID of your Proxy module.To locate the module ID, look in the module URL. You can see the module ID for our sample Proxy module bolded here: https://training.unqork.io/#/form/5ebc0fa57b2213020fc9ee03/edit.

Click Save.
Save your module.
You now have a Server-Side Execute Only Proxy module to pass data from the Browser module.
Setting Up the Master Module
The Master module communicates with subsequent modules to orchestrate data validation and the creation of end-user submissions.
These instruction assume you have a new API module open, saved, and with a title.
Configure the Panel Components
The Panel component acts as a container for the components that follow. The panelRequest Panel component manages your end-user’s data. The panelValidate Panel component manages the data validation. Your panelCreateSubmission Panel component manages the creation of the end-user’s submission. And your panelResponse Panel component manages error and success messages.
Hover over the panelInfo and panelConfig Panel components and delete them because they are no longer required in the configuration.
In the Module Builder, drag and drop two Panel components onto your canvas, placing them between the
panelRequestandpanelResponsePanel components.In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Canvas Label Text
1
panelValidate
panelValidate
2
panelCreateSubmission
panelCreateSubmission
Click Save & Close for each component as you add it.
Configure the API Hidden Component
This Hidden component acts as simple API documentation for others working on the application.
Drag and drop a Hidden component onto your canvas, placing it above the
panelRequestPanel component.In the Property ID and Label Text fields, enter
method.In the Default Value field, enter
PUT.This setting indicates the HTTP request your module simulates.
Click Save & Close.
Configure the Data Hidden Components
These Hidden components store data passed from the Browser module.
Drag and drop six Hidden components inside the
panelRequestPanel component.In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Canvas Label Text
1
firstName
firstName
2
middleName
middleName
3
lastName
lastName
4
address
address
5
phoneNumber
phoneNumber
6
email
email
These Property IDs are the same as the Property IDs used in the Proxy module. They must match for data mapping purposes.
Click Save & Close for each component as you add it.
Configure the Response Hidden Components
These Hidden components handle the data flow response.
Drag and drop two Hidden components inside the
panelResponsePanel component.In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Canvas Label Text
1
resolution
resolution
2
referenceNumber
referenceNumber
These Property IDs are the same as the Property IDs used in the Proxy module. They must match for data mapping purposes.
Click Save & Close for each component as you add it.
Configure the Validation Initializer Component
This Initializer component progresses the data validation flow.
Drag and drop an Initializer component inside the
panelValidatePanel component.In the Property ID and Canvas Label Text fields, enter
initValidate.In the Trigger Type drop-down, select New Submission.
In the Outputs table, enter the following:
#
Source
Type
Value
1
pluginValidate
trigger
GO

Click Save & Close.
Configure the Create Submission Initializer Component
This Initializer component creates the submission once your end-user’s data validates.
Drag and drop an Initializer component inside the
panelCreateSubmissionPanel component.In the Property ID and Canvas Label Text fields, enter
initCreate.In the Outputs table, enter the following:
#
Source
Type
Value
1
pluginSaveSubmission
trigger
GO

Click Save & Close.
Configure the Response Handling Initializer Components
These Initializer components relay Success or Error messages back up the data flow to the Browser module.
Drag and drop an Initializer component inside the
panelCreateSubmissionPanel component, below theinitCreateInitializer component.In the Property ID and Canvas Label Text fields, enter
initSuccess.Set the Trigger Type as Watch.
In the Outputs table, enter the following:
#
Source
Type
Value
1
resolution
value
Success

Click Save & Close.
Now, drag and drop another Initializer component inside the
panelCreateSubmissionPanel component, below theinitSuccessInitializer component.In the Property ID and Canvas Label Text fields, enter
initError.Set the Trigger Type as Watch.
In the Outputs table, enter the following:
#
Source
Type
Value
1
resolution
value
Error

Click Save & Close.
Configure the Validation Plug-In Component
This Plug-In component progresses the data validation flow.
Drag and drop a Plug-In component inside the
panelValidatePanel component, below theinitValidateInitializer component.In the Property ID and Canvas Label Text fields, enter
pluginValidate.From the Internal Services drop-down, select Execute Module.
The Request Type and Data Source URL autopopulate. You'll see
/fbu/uapi/modules/{moduleId}/executeas your Data Source URL. You'll return to this Plug-In component once you have created your Validation module. Then you'll replace{moduleId}with the module ID for your Validation module.In the Inputs table, enter the following:
#
Property ID
Mapping
1
firstName
data.firstName
2
middleName
data.middleName
3
lastName
data.lastName
4
address
data.address
5
phoneNumber
data.phoneNumber
6
email
data.email
Set the Trigger Type as Watch.
From the Post Trigger drop-down, select initCreate.
From the Error Trigger drop-down, select initError.
.jpg)
Click Save.
Configure the Save Submission Plug-In Component
This Plug-In component sends data to the Creation module.
Drag and drop a Plug-In component inside the
panelCreateSubmissionPanel component between theinitCreateandinitSuccessInitializer components.In the Property ID and Canvas Label Text fields, enter
pluginSaveSubmission.From the Internal Services drop-down, select Execute Module.
The Request Type and Data Source URL autopopulate. You'll see
/fbu/uapi/modules/{moduleId}/executeas your Data Source URL. You'll return to this Plug-In component once you have created your Validation module. Then you'll replace{moduleId}with the module ID for your Validation module.In the Inputs table, enter the following:
#
Property ID
Mapping
1
firstName
data.firstName
2
middleName
data.middleName
3
lastName
data.lastName
4
address
data.address
5
phoneNumber
data.phoneNumber
6
email
data.email
In the Outputs table, enter the following:
#
Property ID
Mapping
1
referenceNumber
id
From the Post Trigger drop-down, select initSuccess.
From the Error Trigger drop-down, select initError.

Click Save.
Save your module.
Here's how your Master module looks in the Module Builder:

Connect the Master and Proxy Modules
Next, you'll connect your Master module to the Proxy module.
In your Proxy module, hover over the
pluginValidatePersonalInfoPlug-In component.A 5-button toolbar appears above the component on hover-over.
Using the toolbar, click the
(Settings) button.In the Data Source URL, replace
{moduleId}with the module ID of your Master module.To find the module ID, look in the module URL. You can see the module ID for our sample Master module bolded here: https://training.unqork.io/#/form/5ebc196fb47819020ecd171a/edit.
Click Save Component.
Save your module.
You now have a Server-Side Execute Only module that passes data where needed to perform your desired actions. Your Master module continues the data flow from the Proxy module.
Setting Up the Validation Module
The first action the Master module calls is data validation. This is the second time your end-users data validates. But unlike the first time, this validation occurs on the server side. This ensures the data still matches the requirements you set in the Browser module. If validation fails, an error message triggers and sends it back to the data flow.
These instructions assume you have a new API module open, saved, and with a title.
Update the Panel Component
Your Panel component acts as a container for the components that follow. Your panelRequest Panel manages the data passed from the Browser module. Hover over the requestParameter Hidden component and delete it.
Then, hover over the panelInfo, panelConfig, and panelResponse Panel components and delete them because they are no longer required in the configuration.
Configure the Columns Component
Columns help keep your Validation module organized. You’ll place the first, middle, and last name fields here as you did in the Browser module.
Drag and drop a Columns component inside the
panelRequestPanel component.In the Property ID field, enter
colPersonalInfo.In the Display field, select the icon for three evenly spaced columns.
Click Save & Close.
Configure the Text Field Components
Drag and drop three Text Field components onto your canvas, placing them inside each of your three columns.
In the Property ID and Canvas Label Text fields, enter the following for each component:
#
Property ID
Label Text
1
firstName
First Name
2
middleName
Middle Name
3
lastName
Last Name
Set Required to
(ON) in your firstNameandlastNameText Field components.Click Save & Close for each component as you add it.
Configure the Address Component
Drag and drop an Address component onto your canvas, placing it below the
colPersonalInfoColumns component.In the Property ID field, enter
address.In the Label Text field, enter
Address.Click Save.
Configure the Phone Number Component
Drag and drop a Phone Number component onto your canvas, placing it below your
addressAddress component.In the Property ID field, enter
phoneNumber.In the Label Text field, enter
Phone Number.In the Regular Expression Pattern field, enter
^(\+\d{1,2}\s)?\(?\d{3}\)?[()\s.-]?\d{3}[\s.-]?\d{4}$.This Regular Expression Pattern validates the data against the same requirement set in the Browser module.
Click Save & Close.
Configure the Email Component
Drag and drop an Email component onto your canvas, placing it below the
phoneNumberPhone Number component.In the Property ID field, enter
email.In the Label Text field, enter
Email.Set Required to
(ON).In the Regular Expression Pattern field, enter
^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$.This validates the data against the same requirement set in the Browser Module.
Click Save & Close.
Configure the Hidden Component
This Hidden component acts as simple API documentation for others working on the application.
Drag and drop a Hidden component above the
panelRequestPanel component.In the Property ID and Label Text fields, enter
method.In the Default Value field, enter
PUT.This setting indicates the HTTP request your module simulates.
Click Save & Close.
Save your module.
Here's how your Validation module looks in the Module Builder:

Connect the Validation and Master Modules
Next, you'll connect your Validation module back to the Master module.
In your Master module, hover over the
pluginValidatePlug-In component.A 5-button toolbar appears above the component on hover-over.
Using the toolbar, click the
(Settings) button.In the Data Source URL, replace
{moduleId}with the module ID of your Validation module.You can see the module ID for our sample Validation module bolded here: https://training.unqork.io/#/form/5ebc28147b2213020fc9ef10/edit.
Click Save Component.
Save your module.
You now have a Server-Side Execute Only module that validates end-user data passed from the Master module. Your Validation module is the end of the validation portion of this Proxy Structure.
Setting Up the Creation Module
Once data clears the Validation module, the Master module passes it to the next step. The Creation module handles it by creating the submission. Submissions then pass to the Schema module for storage, which you'll create in the next step. If the Creation module fails, an error message sends it back in the flow.
These instructions assume you have a new API module open, saved, and with a title.
Configure the Panel Component
Your Panel components act as containers for the components that follow. Your panelRequest Panel component manages the data passed from the Browser module. Your panelCreateSubmission Panel component manages the submission for storage in the Schema module. And your panelResponse Panel component manages the error handling.
Hover over the panelInfo and panelConfig Panel components and delete them because they are no longer required in the configuration.
In the Module Builder, drag and drop a Panel component onto your canvas.
In the Property ID and Canvas Label Text fields, enter
panelCreateSubmission.Click Save Component.
Configure the API Hidden Component
Drag and drop a Hidden component onto your canvas, placing it above the
panelRequestPanel component.In the Property ID and Label Text fields, enter
method.In the Default Value field, enter
PUT.This setting indicates the HTTP request your module simulates.
Click Save & Close.
Configure the Data Hidden Components
These Hidden components store the data passed from the Browser module. Hover over the existing Hidden component and delete it because it’s not required in the configuration.
Drag and drop six Hidden components inside the
panelRequestPanel component.In Property ID and Label Text fields, enter the following for each component:
#
Property ID
Label Text
1
firstName
firstName
2
middleName
middleName
3
lastName
lastName
4
email
email
5
address
address
6
phoneNumber
phoneNumber
These Property IDs are the same as the Property IDs used in the Master module. They must match to ensure proper data mapping.
Click Save & Close for each component as you add it.
Configure the Response Hidden Component
This Hidden component handles the data flow response. Hover over the existing Hidden component and delete it because it’s not required in the configuration.
Drag and drop another Hidden component inside the
panelResponsePanel component.In the Property ID and Label Text fields, enter
referenceNumber.This Property ID is the same as the Property ID used in the Master module. They must match to ensure proper data mapping.
Click Save & Close.
Configure the Plug-In Component
Drag and drop a Plug-In component inside the
panelCreateSubmissionPanel component.In the Property ID and Canvas Label Text fields, enter
pluginSaveSubmission.From the Internal Services drop-down, select Create Module Submissions(s).
You'll return to this Plug-In component once you have created your Schema module. Then you'll replace
{moduleId}with the module ID for your Schema module.In the Inputs table, enter the following:
#
Property ID
Mapping
1
firstName
data.firstName
2
middleName
data.middleName
3
lastName
data.lastName
4
address
data.address
5
phoneNumber
data.phoneNumber
6
email
data.email
In the Outputs table, enter the following:
#
Property ID
Mapping
1
referenceNumber
id
Set Assign Values If They Are Null or Empty String to
(OFF).
Click Save.
Configure the Initializer Component
Drag and drop an Initializer component onto your canvas, placing it below your
pluginSaveSubmissionPlug-In component.In the Property ID and Canvas Label Text fields, enter
initSave.From the Trigger Type drop-down, select New Submission.
In the Outputs table, enter the following:
#
Property ID
Type
Value
1
pluginSaveSubmission
trigger
GO

Click Save & Close.
Save your module.
Here's how your Creation module looks in the Module Builder:

Connect the Creation and Master Modules
Next, you'll connect your Creation module to the Master module.
In your Master module, hover over the
pluginSaveSubmissionPlug-In component.A 5-button toolbar displays above the component on hover-over.
Using the toolbar, click the
(Settings) button.In the Data Source URL, replace
{moduleId}with the module ID of your Creation Module.You can see the module ID for our sample Creation module bolded here: https://training.unqork.io/#/form/5ebc3204b47819020ecd1d55/edit.
Click Save Component.
Save your module.
You now have a Server-Side Execute Only Creation module that creates a submission based on end-user data. Your Creation module passes that submission to the Schema module for storage.
Setting Up the Schema Module
From the Creation module, your end-user submissions are stored in your Schema module. The Schema module only serves as storage and doesn't take any actions.
The Schema module components mirror the data-entry fields from your Browser module. You’ll apply the same requirements in the Schema module as you did in the Browser module.
These instructions assume you have a new API module open, saved, and with a title.
Configure the Hidden Components
To set up the Schema module, you’ll add six Hidden components. Your Hidden components correspond to the data fields in your Browser module.
In the Module Builder, drag and drop six Hidden components onto your canvas.
In Property ID and Label Text fields, enter the following for each component:
#
Property ID
Label Text
1
firstName
First Name
2
middleName
Middle Name
3
lastName
Last Name
4
address
Address
5
phoneNumber
Phone Number
6
email
Email
Click Save Component for each component as you add it.
Save your module.
Here's how your Schema module looks in the Module Builder:

Connect the Schema and Creation Modules
Next, you'll connect your Schema module back to the Creation module.
In your Creation module, hover over the
pluginSaveSubmissionPlug-In component.A 5-button toolbar displays above the component on hover-over.
Using the toolbar, click the
(Settings) button.In the Data Source URL field, replace
{moduleId}with the module ID of your Schema module.You can see the module ID for our sample Schema module bolded here: https://training.unqork.io/#/form/5ebd7fb0ce23f0020fbf91d5/edit.
Click Save Component.
Save your module.
You now have a Schema module that stores end-user submissions. You can use this Schema module to populate a dashboard to view end-user submissions.
You now have a series of six modules that form a Proxy Layer Structure. The structure begins with the Browser module, where your end-user submits their information. Then, the data passes through the rest of the data flow, hiding it from any code. All the end-user sees after clicking Submit is a Success or an Error message.