This chapter describes in detail the XML structure of the configuration file format.
This is the root element for the submission form configuration file.
This element contains the list of different type declarations.
This element represents a single record type declaration.
This element represents a single list type declaration.
This element represents a list of content security policies to include in the "Content-Security-Policy" HTTP header.
This element represents a single content security policy.
CSP directive such as "default-src" or "media-src".
This element represents a list of external scripts to be included in the submission form.
A script. Can refere to the following items:
This element represents a list of external styles to be included in the submission form.
A style. Can refere to the following items:
This element represents a list of resources to be referenced in the submission form.
This element represents a file to read and make available as a named resource.
Resource data type.
File location (file name). The file must be located in the "resources" folder.
This element represents file format specific configurations.
This element specifies configuration properties for reading CSV files.
This type of element represents a list of properties to store user input in - either globally or by record.
This element represents a single property declaration.
Type of property.
bool int double decimal date string text email phonenumber document set <enum-type-name> <set-type-num> <list-type-name> Default value expression. Use "true" or "false" for booleans, numbers for integers and floating point values and strings for all other types. For enumerations use the string representation of the enumeration "Value". For sets use a string of comma-separated enumeration values.
The default value expression must be a constant value which means it cannot depend on other properties or variables. It may although depend on some of the built-in predefined properties like Identity_Identity and Identity_Claims , or built-in methods like DateTime.New() .
Examples (notice the single quotes used to denote string values):
DefaultValue="true" DefaultValue="99" DefaultValue="47.34" DefaultValue="3.14m" DefaultValue="'Hello'" DefaultValue="DateTime.New(2015,09,16)" DefaultValue="'Red'" DefaultValue="'Red, Blue, Yellow'" DefaultValue="Identity_Claims.Fold('', (result, c) => c.Key = 'name' ? c.Value : result)" This element represents minimum and maximum length for a string.
This element represents minimum and maximum values for a range.
For integers, decimals and doubles, the values must be constant numbers.
For dates, the values are expressions of type date.
This element represents a regular expression validation rule for strings. The pattern must be a valid regular expression pattern as specified by the .NET Regular Expressions framework: https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expressions .
This element represents file extension validation for a document property. The selected file extensions also set the file filter in the system file selection dialog opened when the input button is clicked (if the browser supports the accept html attribute). Without a FileExtensions element, a document property defaults to the ValidFileExtensions attribute in web.config.
This element represents an expression for calculating visibility of a property.
This element represents a set of expressions for calculating visibility of enumeration item groups.
This element represents an expression for calculating visibility of an enumeration item group.
This element represents an expression for the default visibility expression of item in an enumeration.
This element represents a lambda expression for calculating the visibility of all items in an enumeration.
This element represents the configuration of multiple files for a document property. If left out, it will only be possible to upload a single document for the containing property.
This element represents the configuration of the maximum document size for a document property. If left out, documents are only limited by the general
This element represents an expression for calculating the initial value of the containing property.
This element represents the layout of the submission form. The layout consists of an optional page navigation panel and then a list of pages.
This element represents the layout of the thanks page.
If this element is not defined then one of two thing will happen.
If a view file named 'Thanks_<Name>' exists, where <Name> is the name of the self-service extension, then this view will be used.
Otherwise the default view file named 'DefaultView' is used.
This element means that an existing view file should be used as the thanks page content.
The specificied view can be located in the default view folders 'Views\submission' and 'Views\Shared'. Theming is supported.
This element represents the layout of a single page.
This element group includes both structural layout elements as well as data elements such as data fields and lists.
This element group includes the structural layout elements such as grids and panels.
This element group includes the simple data elements that can be included in a table cell.
This element represents a grid layout using rows and columns. It renders a responsive grid layout where the individual cells flow to the next row when the screen width is too small to show all cells in one row.
Grids are designed for structuring the overall layout of a page.
This element generates a grid with a single cell and row for each of its elements.
Stack panels are designed to simplify 'simple' grid layouts.
This element represents a single row in a grid layout.
This element represents a single cell in a grid layout. The grid cell may contain further layout elements.
This element represents a table layout similar to the <Grid> element but without the responsive flexibility that allows cells to flow around depending on the width of the screen.
Tables are designed to display tabular data and for this reason it imposes a restriction on the allowed content elements inside cells.
It is currently not possible to generate table rows from list data.
CSS class name (constant value - not an expression).
The Bootstrap stylesheet used by default includes a couple of interesting table classes:
This element represents a table header - a list of table cells that are displayed at the top of the table and functions as column headers.
This element represents a single row in a table.
This element represents a single element in a table. The table cell may contain simple data elements.
This element represents a layout panel - a structural layout element that functions as a visual container for a sub-layout and gives it a title.
This element represents a navigational link to another page.
This type of element contains hard coded text to display for the end-user.
Any text content inside a text element is output without HTML encoding – making it possible to use HTML formatting tags inside it. The use of HTML requires the input to be XML escaped correctly, either with entity references (such as < for "<") or using CDATA content.
This element represents an interactive map for pin-pointing geographic locations.
This element represents the list of documents attached to a reply submission form for approval. The panel generates a list of clickable document names, allowing the end-user to view the documents one by one.
This type of element represents a single named document to show in a document panel.
This type of element represents an input element for a data field.
This type of element represents a button that, when pressed, issues an HTTP request to some external service. Upon completion of the request the UI will be updated with changes returned from the external service.
URL to an external web service.
Values from application settings beginning with "SelfServiceVariable." in the web.config file can be merged into the URL.
For instance, the value from ]]> can be merged into the Url string like this: Url="http://$BaseUrl$/externalservice" . The resulting URL will be http://localhost/externalservice .
HTTP method to use when issuing the external request. The default value is
GET is recommended for lookup operations with no side effects whereas POST is recommended for operations that make changes to data.
This element represents a list of web actions to be executed automatically.
This element represents a web action to be be executed automatically - either when the page is loaded or when the user navigates to the next page.
The page will be disabled while the web action is executing.
URL to an external web service.
Values from application settings beginning with "SelfServiceVariable." in the web.config file can be merged into the URL.
For instance, the value from ]]> can be merged into the Url string like this: Url="http://$BaseUrl$/externalservice" . The resulting URL will be http://localhost/externalservice .
HTTP method to use when issuing the external request. The default value is
GET is recommended for lookup operations with no side effects whereas POST is recommended for operations that make changes to data.
URL to an external web service.
Values from application settings beginning with "SelfServiceVariable." in the web.config file can be merged into the URL.
For instance, the value from ]]> can be merged into the Url string like this: Url="http://$BaseUrl$/externalservice" . The resulting URL will be http://localhost/externalservice .
HTTP method to use when issuing the external request. The default value is
GET is recommended for lookup operations with no side effects whereas POST is recommended for operations that make changes to data.
This element specifies that a text input should be replaced with a dropdown list input with dropdown elements based on the rows from a specific data source.
This element specifies additional output fields to update when selecting an item in a dropdown list.
This element specifies a single output field to update when selecting an item in a dropdown list. The output destination field name is the text content of this element.
This type of element represents authorization configuration for external requests.
This element represents configuration of JWT authorization for external requests.
With JWT authorization, the system will issue a Javascript Web Token (JWT) for the external service to verify. The JWT will be issued by http://cbrain.com/f2/self-service/ and use the specified value of Receiver for the subject and audience fields in the JWT. The JWT will be signed using the specified value of Secret .
The final JWT is include in the HTTP Authorization header with the scheme BEARER .
This type of element represents a list of input fields to include in external requests. When the request is made, the current value of each of the fields is added as a parameter to the request. Values are either added to the URL (when using HTTP GET ) or in the request body (when using HTTP POST ).
Values are encoded as follows:
True or False . Value string of the enumeration item definition. Value strings of the enumeration item definition. yyyy-mm-dd . Following properties will always be available, to be used as an input:
This element represents a single input field reference. The element text content specifies the value name to include.
Example: ActualFieldName]]>
This element represents a list of output elements which are fields that will be updated when selecting an auto-complete suggestion - or cleared when the auto-complete input is cleared.
Only parameters defined in Outputs will be used.
This element represents a list of output elements which are fields that will be updated when performing a webaction.
Because of backwards compatibility, all results will be used, but we recommend using output elements.
WebActions can only set properties (other than lists) not represented on the current site, if the Output is used. Lists can only be used as outputs if they are on the same page as the webaction or if the webaction is a 'PageWebAction' with ExecuteOn='Submit'
This element represents a single output parameter reference. The element text content specifies the field name to to be updated.
Example: ActualFieldName]]>
This element represents configuration of emphasizing condition and color for a data field. A field is considered "emphasized" when the associated condition evaluates to true. When emphasized, the field will be highlighted with the specified color.
This element represents a condition expression which can be stated either as an attribute or in the inner text of the element.
This element represents a color expression that will be used to determine the background color of an emphasized field. If no color is given (by evaluating to an empty string), the default design for Emphasized will be used. Note that the string cannot contain whitespaces. The expression can be stated either as an attribute or in the inner text of the element and must evaluate to a single string.
The calculated color string should be one of the following that are supported in the default stylesheets:
Green Pink Yellow Blue Gray Orange Brown Red Purple Zinnwaldite This element type represents a display-only version af a data field. A "display-only" version is not the same as a normal version of a data field in read-only mode. Display-only elements are rendered in a way that suits the default "summary page" style.
A property referenced in a display field, should always be edited in a data field on a page prior to the display field, as the display field value is only updated on page changes.
If the end-user should be able to navigate to the editable version of a property (as for instance on a summary page), then use a <Panel> element with navigation to that page.
This element represents a display-only version of a list field. A "display-only" version is not the same as a normal version of a data field in read-only mode. Display-only elements are rendered in a way that suits the default "summary page" style.
Text to be used as title for each record entry. The title text may contain one or more of the following merge fields:
$Counter$ to show the current number for the record. $TotalCounter$ to show the total number of records in the list $FilteredCounter$ to show the current number for the record where records hidden using ‘RecordVisible’ are ignored. The default title is simply "$Counter$".
A boolean expression which determines for each record, if it should be visible.
The expression may refer to “Counter” to get the index of the currently displayed row, making it possible to show, for instance, the last or first few rows. The index of the first row is 1.
Example (first two rows): RecordVisible="Counter LTE 2" .
Example (last two rows): RecordVisible="Counter GT Parent.Count()-2" .
This element represents a single field to display in a display-only list.
With GET , the request will be issued to the supplied URL with input properties added to the URL, e.g. "Property1=xxx&Property2=yyy&p3=zzz" where xxx , yyy and zzz are values from the submission data.
With POST , the request will be done as an HTTP POST request with the input values encoded as either x-www-form-urlencoded or Json in the request body (depending on the supplied format).
This element represents a layout element with UI components for signing the submission.
This element declares layout details for the top banner page navigation panel. It can be inserted into the top level <Layout> element and results in each page having a page overview in the top banner. This overview shows the available pages and hightlights the page the user is currently on and it allows the user to navigate to previous pages.
Pages hidden because of a visibility expression does not show up in the navigation panel. Pages visibility in the navigation panel updates only on page changes, so a change to a property that makes a page visible does make the page visible in the navigation panel before a page change.
This layout element represents a single list field.
An element defining the layout of the properties of the record type. The layout is defined similarly to page layouts, but starts with a Grid or Panel element.
If left out, a default layout is generated, with each property in separate rows. (Note that properties with value elements are not set to readonly in the default layout which allows user input into the field to be overwritten by the automatic value action.)
Configuration of "Delete record"-button.
The following merge-values can be used in the help text:
$Counter$ to show the current number for the record. $TotalCounter$ to show the total number of records in the list. Default is "Delete row $Counter$".
Configuration of "Show record"-button.
The following merge-values can be used in the help text:
$Counter$ to show the current number for the record. $TotalCounter$ to show the total number of records in the list. Default is "Show row $Counter$".
Configuration of "Hide record"-button.
The following merge-values can be used in the help text:
$Counter$ to show the current number for the record. $TotalCounter$ to show the total number of records in the list. Default is "Hide row $Counter$".
Text to be used as title for each record entry. The title text may contain one or more of the following merge fields:
$Counter$ to show the current number for the record. $TotalCounter$ to show the total number of records in the list The default title is simply "$Counter$".
Boolean for deciding if empty records should be shown in the list, the first time it is seen on a page.
True means that the number of records equal to the minimum range are shown. If there is no minimum range, one record will be shown.
False means that no records are shown, even if the list is required or has a minimum range greater than zero.
If left out, the minimum number of records will be shown. A required list will although have one record as a minimum.
This element represents the layout of a single record in a list.
This type of element represents a text-button with displayed text and additional popup text.
This type of element represents an image-button with alternate text.
This element represents the "Add record"-button in a list. It can be disable to make it impossible to add records.
This element represents the "Delete record"-button in a list. It can be disable to make it impossible to delete records.
This element declares contact details of the organisation behind the submission form. The contact information may be shown on the "Thanks" page shown after submitting a new submission.
Sender contact properties is a set of properties that are relevant for getting in contact with the end-user. The properties themselves are defined as usual and then referenced in the ContactProperties element.
The contact details can later on be used to associate the created F2 dossier with a party from the party registry. Users will also be asked if they want to have their contact information remembered when they submit from the website. If they agree, the contact properties will be prefilled for them when they start a new submission.
Along with the set of predefined contact properties (Name, EMail and FollowCaseOnline), it is possible to add any number of additional fields, by referencing the properties to use.
This type of element represents a list of variable declarations.
This element represents a single variable declaration.
This element declares the use of geo-positioning of submissions.
This element activates signing of submissions. When a Signature element is included, the end-user will be asked to re-enter hers/his login credentials again to acknowledge that the submission will be sent. The signing process does not include any kind of cryptological proofs of acknowledgement.
The actual location of the signature UI component is declared by the <SignaturePanel>
This element declares texts and settings related to the web page for the submission form.
This element declares various properties related to the case and dossier creation in F2.
This element declares journal plan settings for the created case.
This element declares the keyword for the created case.
This element declares a set of field values to be stored as case information on the created case. Each
This element declares a single field to be stored as case information on the created case. Element content will be stored as value of the field.
This element declares a list of F2 document templates to be instantiated and attached to the created dossier.
This element declares a single F2 document template to be instantiated and attached to the created dossier.
Values from the submission can be merged into the document templates to make them relevant to the submission.
This element declares a single party reference. Specifiy party number in element content and optional organisation number in Organization attribute.
This element declares which identity provider to use for authentication of the end-user.
This element defines the configuration of a payment provider for self-service submissions that include buyable products.
This element declares a list of buyable products.
This element declare a single buyable product.
This type of element declares inline and external validators.
This element declares an external validator.
Use JSON formatting for external validation requests. Will not work with GET requests
Use multipart/form-data formatting for external validation requests.
Use JSON formatting for Webaction requests. Will not work for GET requests
Use FormUrlEncoded formatting for for Webaction requests. (default)
This element represents authorization configuration for external validation. Insert shared secret as inner text for simple plain text authorization (not recommended) or use the sub-element JwtAuthorization for secure authorization.
This element declares an internal validator.
This element declares a list of properties to include in external validation requests.
This element declares a single property to include in external validation requests. Specify property name in element and optional external name in Name attribute.
This element declares references to validations to perform in various situations.
This element declares a single reference to a specific validation.
This element declares the languages available for the submission.
This element declares a single language to be available in the submission.
This element describes when to execute a page-webaction.
This element describes how the web action should handle retry.
It's important to think about what to expect if the web action fails, depending on how the user reacts.
This element represents the different ways the web action can handle retries.
This element sets the credentials for logging in to F2. It is optional and, if not set, the default from the server configuration will be used.