DNN Forums

Ask questions about your website to get help learning DNN and help resolve issues.

BCC Forms - Need a few beta testers

 0 Replies
 1 Subscribed to this topic
 30 Subscribed to this forum
Sort:
Author
Messages
New Around Here
Posts: 10
New Around Here
New Member
New Member
You are a new member!
New Poster
New Poster
Congrats on posting!
Engaged Reader
Engaged Reader
You are an engaged reader!

I reworked the form and list module to hopefully fix several issues and add some enhancements. This module is based on the original DNN Form and List module, so after it's fully tested, I will offer it for free.  

To get it production-ready, I need a few volunteer testers. If interested in taking a look, send me your email, and I'll send you the user guide and install ZIP.  You must be on 10.3.3.

Here is the User Guide

BCC Forms User Guide

Nov 1, 2026 · @George

Overview

BCC Forms lets you build a data-entry form and a list of the submitted records on any DNN page, without writing code. It is a standalone module for DNN Platform 10, derived from the open-source DNN Form and List module, and this guide covers version 01.02.00.

One module instance holds one set of fields (columns) and the records entered against them. Visitors fill in the form; the same records can be shown as a sortable table, cards, your own HTML template, or an XSL stylesheet.

Requirements

Item

Requirement

DNN Platform

10.3.3 or later (10.4 or later recommended, see Troubleshooting)

.NET Framework

4.8

Database

SQL Server 2017 or later (as required by DNN 10)

Permissions to install

Host (superuser) account

Install or upgrade

  1. Sign in as a host account and open Persona Bar → Settings → Extensions.
  2. Click Install Extension, choose and follow the wizard.
  3. To upgrade, install the newer zip over the existing one. The upgrade scripts run automatically and existing modules keep their fields, records and settings.

BCC Forms installs side by side with DNN's own Form and List module; it uses its own folder (DesktopModules/BCCForms) and its own database tables (BCCForms_*).

Getting started

A working form takes three steps: add the module, define its fields, and pick form or list mode.

  1. Add the module. In edit mode, drag BCC Forms from the module list onto the page.
  2. Open the configuration. From the module's menu, choose Configuration (it opens on its own page). Every setting in this guide lives there unless it says otherwise.
  3. Define the fields. Under Data Table Setup, click Add New Column for each field, give it a title and a type, and save. Drag rows to reorder them; the order is the order on the form and in the list.
  4. Choose the mode under Form Settings: list and form, form only, or list only (see Form settings).
  5. Click Save Configuration and Return.

Field options

The field list shows each field's main options as ticks (a tick means yes, an empty box no).

Option

What it does

Required

The form cannot be submitted without a value. Required fields show a red asterisk.

Display on List

Shows the field as a column (or card line) in the list. It does not affect the form.

Restricted Form Field

Only users with the module's "Edit also restricted columns" permission see and edit it.

Searchable

Includes the field in the list's search box.

Help text

Shown in a tooltip from the ⓘ icon next to the label.

Validation rule and message

A regular expression the value must match, and the message shown when it does not.

Show on edit (system fields)

Lets you show fields such as Created at on the form.

Field types

Type

Use it for

On the form

Text

Names, short answers, pick-lists

Text box, or a drop-down/radio / check list when you give it a list of values

Rich Text (HTML)

Formatted descriptions

HTML editor or a plain multi-line box

Integer, Decimal, Currency

Quantities and amounts

Number box; the list formats numbers (currency uses the site's currency)

Date, Date and Time, Time

Dates and times

Date picker and time box

True/False

Yes/no answers

Check box

Email

Email addresses

Text box with address validation; shown as a mail link

URL

Links to pages, files, or web addresses

DNN link picker

Image

Pictures from the site's file system

DNN file picker; shown as an image or thumbnail

Download

Files for visitors to download

DNN file picker; shown as a download link

Link to User's Profile

Pointing a record at a site user

User picker; shown as the user's name

Look-Up

Values from another BCC Forms list

Drop-down of that list's values

Calculated Column

A value worked out from other fields

Not editable; computed for the list

Separator

A heading that groups the fields below it

Section heading (optionally collapsible)

Created by/at, Changed by/at

Who saved the record and when

Filled automatically

Form settings

The form lays its fields out in DNN's standard two-column rows by default; a form template lets you arrange them yourself.

Appearance

Current View Options → Appearance sets what this page shows. It applies to the current page only, so the same module can show the form on one page and the list on another.

Appearance

Shows

List

The list, with an Add link for users allowed to add records

Form

Only the form (a typical contact or sign-up form)

Form above List

The form, with the list under it

Form below List

The list, with the form under it

Visitors also need permission to add records: in Module Settings → Permissions, grant Create Record / Submit Form to the roles that may submit (for a public form, All Users or Unauthenticated Users). Actions as Buttons shows Add / Show Records as buttons instead of menu items.

After a submission

Action upon submit

What the visitor sees

Show Form and Text

Your thank-you text above a fresh, empty form

Show Text only

Only your thank-you text

Redirect to another page

The page you pick

The thank-you text is entered in the HTML editor under Displayed text after form post.

Form templates

Turn on Enable Form Template to control the form's HTML. Use [label-for:Field Title] for a field's label and [editor-for:Field Title] for its input; any other HTML is written as is.

Click Generate Template for a starting point. It writes one DNN form row per field the form shows, marks required fields, and turns separators into section headings:


   

        [label-for:Name]
        [editor-for:Name]
   

Notes:

  • Fields you leave out of the template are not shown on the form.
  • Restricted fields stay hidden from users who may not edit them, wherever you place them.
  • When the DNN image CAPTCHA is on, and the template has no, the CAPTCHA is added after your fields automatically.
  • reCAPTCHA and Turnstile always appear below the form; they need no token.
  • To use your theme's grid instead, place the tokens inside its classes (Bootstrap 5, for example, needs a row around the columns). Labels line up in either case.

List settings

The list can be shown four ways, and paging, sorting, the filter, and search work the same in all of them.

List layout

Choose under List Settings → List Layout.

Layout

Looks like

Best for

Table

A sortable table; click a column heading to sort. On phones, each record stacks as "title value" lines.

Data people scan and sort

Cards

Each record as a card in a grid that adjusts to the screen width, with an edit icon on records the user may edit

Directories, listings, galleries

HTML template

Your own header, item and footer HTML (below)

A custom design without XSL

XSL stylesheet

A stylesheet made with the XSL generator or by hand

Existing Form and List designs

Only fields with Display on List appear in the table and cards. Administrators also see hidden and system fields unless that is switched off in Module Settings.

HTML template

Select an HTML template, then fill in the three boxes or click Generate starter template for a card design built from your visible fields.

Box

Written

Tokens

Header HTML

Once, before the records

[UDT:TotalRecords]records in the list, [UDT:PageRecords] records on this page

Item HTML

Once per record

See below

Footer HTML

Once, after the records

Same as the header

 

Item token

Inserts

[Field Title]

The value as the table shows it: links, formatted dates and numbers, user names

[Field Title:Text]

The stored value as plain text, safe to place inside attributes

[UDT:EditLink]

The edit icon, only when the user may edit the record

[UDT:EditUrl]

The edit page address on its own

[UDT:RowId]

The record's ID

[UDT:Index]

The record's position on the page (1, 2, 3 …)

Field titles are matched without regard to case. A token that matches nothing is left in the output, which makes typos easy to spot.


   
[UDT:EditLink]

   

[Name]


   

[Email] · [Phone]


XSL stylesheets

Pick an XSL stylesheet, then choose a file or click Generate New to open the XSL generator and build one from an HTML template with tokens. Stylesheets written for DNN Form and List keep working; the data uses the same names.

Sorting, paging and limits

Setting

Effect

Sort Column / Sort Direction

The default order. In the table, clicking a heading overrides it for that visitor.

Paging

Records per page (1–50), or none for one long list.

Records Returned

Show only the first N records (1–1000), after sorting.

With paging on and no filter or search active, the list reads only the page being viewed from the database, so large lists stay fast. Sorting by text, number, date, or yes/no fields happens in the database too. Filters, search, calculated fields, and sorting by link or user columns use the slower path that loads all records; the results are the same.

Filter and search

  • Filter statement limits the list to records matching an expression, for example, or put titles with spaces in square brackets. DNN tokens such as are replaced before filtering, so it shows each user their own records.
  • Show Search Box adds a search box over the Searchable fields. Simple Search hides the field and match-type pickers.
  • Show no records until Search keeps the list empty until the visitor searches.
  • Search URL Paths searches link addresses instead of their captions.

Spam protection and security

Anonymous submissions can be checked by a CAPTCHA and a hidden honeypot field, and everything users type is cleaned before it is stored and shown.

Spam protection

In Module Settings → BCC Forms Settings, choose Spam protection for anonymous users. Signed-in users are never challenged.

Option

Visitor sees

Keys needed

None

Nothing

No

DNN image CAPTCHA

An image with characters to retype

No

Google reCAPTCHA v2 (checkbox)

The "I'm not a robot" box

Yes, from google.com/recaptcha/admin

Google reCAPTCHA v3 (invisible, scored)

Nothing (a small Google badge); each submission is scored

Yes, v3 keys

Cloudflare Turnstile

A small check that usually passes on its own

Yes, from the Cloudflare dashboard

  • Site Key / Secret Key hold the keys of the provider you picked. reCAPTCHA v2, v3, and Turnstile each need their own pair, so enter new keys when you switch.
  • Minimum reCAPTCHA v3 Score (0.0–1.0, default 0.5): submissions scoring lower are rejected. Raise it if spam gets through; lower it if real visitors are blocked.
  • The Submit button stays blocked until the check passes, and every token is verified on the server. If the provider cannot be reached, the submission is rejected rather than let through.
  • Honeypot Field (on by default) adds a field people never see, but many bots fill in. It works on its own or with any option above.

What users can enter

  • Rich text is cleaned with an allowlist: formatting, lists, tables, links, and images stay; scripts, event handlers, embedded frames, and form controls are removed.
  • Filter entry for markup code or script input applies the same cleaning to plain text fields for everyone; it is always on for anonymous users.
  • When records are shown, any stored markup is cleaned again, which also covers imported and older data. The stored value itself is not changed.
  • URL fields never become links, and captions are encoded.

Who can do what

Grant these in Module Settings → Permissions.

Permission

Allows

Create Record/ Submit Form

Submitting the form (adding records)

Edit Record

Editing records

Delete Record

Deleting records

Display All Columns

Seeing fields hidden from the list

Edit Also Restricted Columns

Seeing and editing Restricted Form Fields

In form mode, permit list as well

Opening the list from a form-only page

In BCC Forms Settings:

  • Users are only allowed to manipulate their own items; limit Edit and Delete to records the user created.
  • Max. Records per User caps how many records each user may add (blank = no limit).
  • Two options take the Display All Columns and Edit Also Restricted Columns rights away from administrators, and Hide System Fields hides Created by/at and Changed by/at from them.

Notifications, import, export and templates

Email notifications

Under Configuration → Email Settings, the module can send an email whenever a record is added, changed, or deleted.

Setting

Use

Trigger

Tick On New, On Update and/or On Delete

To

Addresses separated by ;. A field title in brackets sends to the address in that record, for example [email protected];[Email];[Created by] (works with Email, Created by, Changed by and User link fields)

Subject

Plain text with tokens, e.g. New request from [field:Name]

Email Message

The opening text of the email

On New/On Update/On Delete Text

Extra text added for each kind of change

Email Body Creation

Auto lists the record's fields under your text; XSL Script uses a stylesheet you edit or generate with the buttons next to it

From, Reply-To, CC, and BCC take addresses the same way as To. When From is empty, the email is sent from the site's email address (Site Settings in DNN).

Export to CSV

Module menu → Export to CSV File. Pick a folder, file name, and delimiter (comma or semicolon). Optionally include the system fields and limit the export to records created between two dates. Values are exported as stored, without links or formatting.

Import from CSV

Module menu → Import CSV File. Choose the file and delimiter.

Importing replaces the module's fields and records: every existing record and field definition is deleted, a Text field is created for each column of the file's first row, and each following row becomes a record. Afterwards, the module is switched to list view. Export first if you may need the old data.

After importing, open Configuration to change field types (for example to Date or Integer) as needed.

Module templates

A template copies a module's fields, configuration, and, optionally, some records to new modules.

  • Save: module menu → Save as Template. Give it a name and description, and set Max Records (usually 0 or 1).
  • Use: a newly added BCC Forms module offers the saved templates. Choose one and click Apply, or start a new configuration.
  • Templates and page exports made with earlier BCC Forms versions still import; settings saved under the old Form and List names are converted automatically.

Other module menu items: Show All Data as XML (the data the XSL stylesheets see), Delete All Records, Save Configuration as default, and Reset to default Configuration.

Troubleshooting and FAQ

Most problems come from permissions, CAPTCHA keys, or a template; when the module shows an error, the details are in Persona Bar → Manage → Admin Logs.

Symptom

Likely cause

What to do

Visitors don't see the form

No Create Record/ Submit Form permission for them

Grant it to All Users or Unauthenticated Users in Module Settings → Permissions

"We couldn't confirm you're not a robot" on every submit

Wrong or missing CAPTCHA keys, or keys for a different provider or domain

Re-enter the site and secret key for the selected provider; check the site's domain is registered with it

reCAPTCHA v3 rejects real visitors

Score threshold too high

Lower Minimum reCAPTCHA v3 Score (try 0.3) or switch to Turnstile

A field is missing from a template form

The template has no token for it

Add and/or click Generate Template again

Labels and fields don't line up in a template

The template uses a grid the theme doesn't have

Regenerate the template, or use your theme's own grid classes

A field is missing from the list

Display on List is off

Tick it in Data Table Setup

An HTML template shows [Something]

The token matches no field title

Check the spelling against the field titles

The list shows the table instead of my XSL

The stylesheet file is missing or has an error

Pick the file again; an XSL error message names the line

Rich text loses some formatting

It was cleaned for security

Allowed: formatting, lists, tables, links, images; scripts, frames, and forms are removed

An error in the module; the rest of the page works

An error while building the form or list

Look up the newest entry in Admin Logs and pass it to your developer

Does it need DNN 10.4? No, 10.3.3 works. On 10.3.x, the advanced HTML cleaner may not load because DNN 10.3 lacks one of its files; BCC Forms then falls back to DNN's older filter and logs this once. DNN 10.4 and later include the file.

Can it replace DNN Form and List? Yes, but it is a separate module: create BCC Forms modules and move data with CSV export and import. Existing XSL stylesheets keep working.

Does paging make large lists fast? Yes, when paging is on, and no filter or search is active; only the page shown is read from the database.

Where is the data stored? In the site database, in the BCCForms_Rows, BCCForms_Data and tables. Deleting a module from the recycle bin deletes its records.

 

 

These Forums are for the discussion of the open source CMS DNN platform and ecosystem.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. If you have (suspected) security issues, please DO NOT post them in the forums but instead follow the official DNN security policy. 
  2. No Advertising. This includes the promotion of commercial and non-commercial products or services which are not directly related to DNN.
  3. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  4. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  5. No Flaming or Trolling.
  6. No Profanity, Racism, or Prejudice.
  7. Site Moderators have the final word on approving / removing a thread or post or comment.
  8. English language posting only, please.

Would you like to help us?

Awesome! Simply post in the forums using the link below and we'll get you started.

Get Involved