This guide walks you through building a UI module that exports submission data from Unqork in bulk. The module handles the full sequence: starting the export job, checking its status, and generating a download link, all from a single button click.
Download the example module bundle to use as a starting point. After importing, replace every placeholder before using the module:
| Placeholder | Appears in | Replace with. |
|---|---|---|
REPLACE_WITH_DATA_MODEL_ID |
pluginExport |
The resource ID of the Data Model or module containing the records to export. |
Prerequisites
- Creator or Express Administrator access to your workspace.
- The resource ID of the Data Model or module containing the records to export.
- Familiarity with the Plug-In, Decisions, and Button components.
Module Overview
Organize the module into three field groups: one for initialization logic, one for the Creator-facing UI, and one for the backend Plug-In component sequence.
| Name | Key | Component | Purpose |
|---|---|---|---|
| On-Load Initializer | initOnload |
Initializer | Triggers on page load. |
| Export Button | btnExport |
Button | Starts the export sequence. |
| Refresh Button | btnRefresh |
Button | Lets the user check job status manually; enabled when a job is running. |
| Error Initializer | initError |
Initializer | Sets the response field to indicate failure. |
| Generate Export | pluginExport |
Plug-In | Calls the Export endpoint to start the job. |
| Get Job Status | pluginGetJobDetails |
Plug-In | Checks export progress using the job ID. |
| Check Status Rule | ruleCheckStatus |
Decisions | Shows a status message and triggers the download link when complete. |
| Get Download Link | pluginGetDownloadLink |
Plug-In | Calls the Download-Link endpoint to get a signed download URL. |
| File Count | numFilesToGen |
Number | Hidden; controls numberOfFilesToGenerate; default value 1. |
The example Property IDs in this guide use a
pluginprefix (for example,pluginExport) for clarity. The platform default for Plug-In components isplug— see Property ID Naming Conventions.
How to read settings tables
The tables below describe each configurable option as it shows in the platform. Values are formatted as follows:
inline code— a value to type exactly as shown | Bold — a value selected from a drop-down, radio button, tab, or choice chip | ON/OFF — toggle state | ✓ — checkbox checked | ☐ — checkbox unchecked
Set Up the Field Groups
Create three field groups in the module to keep components organized.
| Field Group | Contains |
|---|---|
fgOnLoad |
The on-load Initializer that fires when the page renders. |
fgUI |
The buttons and any visible HTML the user interacts with. |
fgConfig |
All Plug-In components, Decisions logic, Initializers, and hidden fields. |
Create the Supporting Fields
Add the following fields to fgConfig. These fields carry data between components throughout the export and download sequence.
| Property ID | Component | Default | Purpose |
|---|---|---|---|
jobId |
Hidden | — | Stores the export job ID returned by pluginExport. |
status |
Hidden | — | Stores the current job status returned by pluginGetJobDetails. |
exportLocation |
Hidden | — | Stores the file location from the completed export job. |
downloadLink |
Hidden | — | Stores the signed download URL returned by pluginGetDownloadLink. |
response |
Hidden | — | Set to Fail by initError when any Plug-In encounters an error. |
numFilesToGen |
Number | 1 |
Controls numberOfFilesToGenerate; set Hidden to ON and Allow Decimal to OFF. |
Configure initOnload
The initOnload Initializer component fires when the module first loads and serves as the module's entry point. It has no outputs and no connections to other components.
-
Add an Initializer component to
fgOnLoad. -
Configure the following settings:
Setting Value Property ID initOnloadTrigger Type New Submission
Configure btnExport
The btnExport Button component starts the export sequence. When a Creator clicks it, it triggers the pluginExport Plug-In component.
-
Add a Button component to
fgUI. -
Configure the following settings:
Setting Value Property ID btnExportLabel Export RecordsAction Event -
Under Triggers, set the On Click drop-down to
pluginExport.
Configure btnRefresh
The btnRefresh Button component lets the Creator manually re-check job status. It triggers the pluginGetJobDetails Plug-In component on click, and the ruleCheckStatus Decisions component enables it once a job is running. It starts disabled.
-
Add a second Button component to
fgUI. -
Configure the following settings:
Setting Value Property ID btnRefreshLabel RefreshAction Event Initial State Disabled -
Under Triggers, set the On Click drop-down to
pluginGetJobDetails.
Configure initError
The initError Initializer component sets the response field to Fail when something goes wrong. All three Plug-In components reference it as their error handler.
-
Add an Initializer component to
fgConfig. -
Configure the following settings:
Setting Value Property ID initErrorTrigger Type Manual -
Configure the Outputs:
# Property ID Type Value 1 responseValue Fail
Configure pluginExport
The pluginExport Plug-In component starts the bulk export job. It is triggered by the btnExport Button component. On success, it triggers the pluginGetJobDetails Plug-In component to begin polling for job status.
-
Add a Plug-In component to
fgConfig. -
Configure the following settings:
Setting Value Property ID pluginExportTrigger Type Manual Endpoint URL https://{environment}.unqork.io/fbu/uapi/bulkOperations/exportMethod POST -
Configure the Inputs:
# Property ID Value 1 resourceIdThe Data Model ID or module ID containing the records to export 2 nameA descriptive label for the operation 3 fileFormat'CSV'(uppercase)4 exportFullRecord'false'(Unqork recommendsfalseto export only thedataobject)5 numberOfFilesToGeneratenumFilesToGen(reads from the hidden Number field; defaults to1)6 targetRecordType'ALL'(uppercase; or'ACTIVE'or'ARCHIVED') -
Configure the Outputs:
# Property ID Value 1 jobIdid -
Under Triggers, set the Post Trigger drop-down to
pluginGetJobDetailsand the Error Handler drop-down toinitError.
To filter by date range, add
dateFieldToFilterOn,dateFieldStartToFilterOn, anddateFieldEndToFilterOnto the Inputs. See Bulk Data Operations for all available parameters.
Configure pluginGetJobDetails
The pluginGetJobDetails Plug-In component checks the status of the export job. It is triggered by the pluginExport Plug-In component on success, and by the btnRefresh Button component when the Creator clicks it manually. On completion, it triggers the ruleCheckStatus Decisions component.
-
Add a Plug-In component to
fgConfigafterpluginExport. -
Configure the following settings:
Setting Value Property ID pluginGetJobDetailsTrigger Type Manual Endpoint URL https://{environment}.unqork.io/fbu/uapi/bulkOperations/jobs/{{data.jobId}}Method -
Configure the Outputs:
# Property ID Value 1 statusdata.status2 exportLocationdata.steps[0].files[0].destination.location -
Under Triggers, set the Post Trigger drop-down to
ruleCheckStatus.
All BDO endpoints in this module use the
bulkOperationspath (camelCase, no hyphen).
Configure ruleCheckStatus
The ruleCheckStatus Decisions component reads the job status written by the pluginGetJobDetails Plug-In component and triggers a pop-up message to the Creator. It enables the btnRefresh Button component once a job is running and triggers the pluginGetDownloadLink Plug-In component automatically when the job reaches completed.
-
Add a Decisions component to
fgConfigafterpluginGetJobDetails. -
Configure the following settings:
Setting Value Property ID ruleCheckStatusTrigger Type Manual -
Configure the Inputs:
# Property ID Alias Type 1 jobIdAExact 2 statusExact -
Configure the Outputs:
# Property ID Type 1 btnRefreshDisabled 2 fgUIPop Message 3 pluginGetDownloadLinkTrigger -
Add one row per job status in the Decision grid:
Status Refresh Button ( btnRefresh_disabled)Pop Message ( fgUI_popMessage)Download Trigger ( pluginGetDownloadLink_trigger)created=IF(LEN(A)>0,'no','yes')Export started.inProgress=IF(LEN(A)>0,'no','yes')Export in progress.completed=IF(LEN(A)>0,'no','yes')Export complete. Generating download link.GOpartiallyCompleted=IF(LEN(A)>0,'no','yes')Export partially complete.canceled=IF(LEN(A)>0,'no','yes')Export canceled.failed=IF(LEN(A)>0,'no','yes')Export failed.The formula in the disabled column uses
A(thejobIdalias); the button enables when a job ID is present.
Configure pluginGetDownloadLink
The pluginGetDownloadLink Plug-In component generates a signed URL for downloading the exported file. It is triggered by the ruleCheckStatus Decisions component when the job status reaches completed, and writes the result to the downloadLink field.
-
Add a Plug-In component to
fgConfigafterruleCheckStatus. -
Configure the following settings:
Setting Value Property ID pluginGetDownloadLinkTrigger Type Manual Endpoint URL https://{environment}.unqork.io/fbu/uapi/bulkOperations/downloadLinkMethod POST -
Configure the Inputs:
# Property ID Value 1 fileLocationexportLocation -
Configure the Outputs:
# Property ID Value 1 downloadLinkdownloadLink -
Under Triggers, set the Error Handler drop-down to
initError.
Test the Module
-
Open the module in Preview.
-
Click Export Records.
-
Click Refresh until the pop-up message reads
Export complete. Generating download link. -
Open the submission using the platform's submission inspection method. See Debugger for how to access submission data from Express View.
-
Locate the
downloadLinkfield value. It contains a relative path in the format/files/{fileId}. -
Construct the full download URL by prepending
https://{environment}.unqork.io/apito the path (for example,https://qa22.unqork.io/api/files/6abe94956afacf4d485c59a2).The URL must include
/api/between the environment domain and/files/. Navigating to/files/directly returns a bad route. -
Paste the full URL into a browser. The file should begin downloading.
Changelog
| Date | Change. |
|---|---|
| 2026-10-01 | Converted all Inputs/Outputs to UI-matching tables with # column; Decisions grid documented with column header labels. |
| 2026-10-01 | Converted field group list to table; added connection sentences to each Configure section; reformatted configuration steps as numbered lists. |
| 2026-10-01 | Updated Export and Download-Link URLs to bulkOperations (camelCase); added numFilesToGen Number field; added example bundle download link. |
| 2026-09-30 | Initial publication. |