This is the documentation for ConfiForms Server/Data Center app
However, this might also work for ConfiForms cloud and in most cases it does. But please see this page to understand the differences between server and cloud versions of the ConfiForms app.
ConfiForms is an add-on (a plugin, an app) for Atlassian Confluence which helps you to build and manage data entry forms.
ConfiForms app can help you to build data entry forms directly in Confluence, using Confluence editor. ConfiForms app is very versatile in functionality and covers a lot of user scenarios, with lot's of integration options - ranging from JIRA to databases and external web services. All these could be integrated into ConfiForms Form to help you to build a truly interactive user friendly forms.
Who develops and supports ConfiForms and how I can get help?
ConfiForms add-on is developed and maintained by Vertuna LLC, established in 2005 and based in Estonia, Tallinn. We are Atlassian Verified partner (now the program is called Top Vendor, now called GOLD level Atlassian partner) since 2015
You can contact us directly via the button below and we aim to answer you within 48 hours, but in most cases much faster
ConfiForms stores data in your database, same database you Confluence is using. Where exactly depends on the version of ConfiForms you are using. If you are on version 1.x of ConfiForms please consider upgrading to Data Center ready and much more performant 2.x version of ConfiForms. Please see Release Notes for details
Version | Storage |
---|---|
Version 3.x | Same storage as in version 2.x, see below |
Version 2.x | ConfiForms stores data in your Confluence database in a table "AO_CEFA84_CONFI_FORMS_ENTITY", one record per row. There are no limits on the dataset size per form in ConfiForms, but your database is limited to holding the total of 2,147,483,647 records (for all the forms). And the size of the record is limited by the number of characters your database can hold in a CLOB type field (ConfiForms limit is 2,147,483,647 bytes per record). |
Version 1.x | ConfiForms stores data in page metadata table called OS_PROPERTYENTRY. Internally the data is stored as XML. As the data is stored as page metadata it becomes a part of Confluence standard backup and restrore procedure. But this also introduces the limits - we are able store (within one form) as much as the "text_val" field in "OS_PROPERTYENTRY" table can accomodate. You can have multiple ConfiForms, this limit is per form. For example, when Confluence uses MySQL database then this field type is MEDIUMTEXT which has a limit of 16MBs (which you can easily ALTER to be of a larger size). |
There are no limits on the number of forms and fields per form you can have.
ConfiForms cloud is different, see Data storage types: ConfiForms native vs Atlassian content properties
When we ask you to provide us with a storage format for your page configuration - this is what we mean.
Server/Data center | Cloud |
---|---|
It allows us to import the contents directly to our test server and see exactly the configuration you have, and to help you with troubleshooting the issues you might have, a lot faster.
Atlassian documentation on storage format - https://confluence.atlassian.com/doc/confluence-storage-format-790796544.html
This is easy when you already have a form (ConfiForms Form macro). It requires you to do the following 2 steps
Same as with ConfiForms version - see above. You create a simple form and then use "Admin UI" to show you the stored data (View/Edit stored data). And the table footer will display the SEN and the version number for you
With ConfiForms version 2.x there are no set limits on the number of records. See Where ConfiForms stores data?
Below is valid for ConfiForms version 1.x
We do not have any hard limits but you have to understand that ConfiForms is not a replacement to JIRA and storing support cases in thousands and having hundreds of concurrent users accessing the same forms datasets is not what it is designed for. However, we have seen installations where ConfiForms holds 5000+ records in one form. Not recommended, but possible (See also the Q/A above). We suggest to split your data into multiple forms, have an archiving in-place using IFTTT macro and try to keep your busy ConfiForms with small datasets. Please also note that complex forms with many fields (like 100+) will need more space to hold for one record.
Some numbers to share (very old (for version 1.x), and has been improved with new releases):
Records # | Fields # | Data size | Form rendered | Data loaded | Edit entry dialog | Admin UI all records (TableView rendering) | Rendered size (of HTML for admin UI) | All records filtered by one field, no edit controls | All records with sorting (3 fields) with Edit controls | All records, no sorting, no Edit controls | Paged view, 50 records per page sorted, and with edit controls | Paged view, 50 records per page sorted, and no edit controls | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Version 2.x | 1564 | 17 | 2.5MB | 81 ms | 307 ms | 230 ms | 10 sec | 11.912.913 bytes! (11 MB of data) | 0.893 s | 5.8 sec | 8.9 sec | ||
Version 1.x | 1564 | 17 | 2.5MB | 0.15 sec | 4 sec | 6 sec | 50 sec | 8.5 sec | 0.9 sec | 0.6 sec |
This tests were executed on a very low-end machine, with 2GB of RAM total, shared VM on SSD, having the PostgreSQL database on the same machine, 1 core, Linux CentOS 7
Updated results for AdminUI loading of 1564 records: ConfiForms version 1.26.2+ (optimizations of edit controls rendering)
Tests are intentionally executed on a very low end machine.
Please note that the numbers shown above are not reference numbers but just a snapshot of how ConfiForms performs on a very low level hardware. Please also note that the tables it renders are very huge in size and in normal life you will not output something like 1500 records to your users on a page just for fun...
Happy to hear that and yes, please share it with us! We are very customer driven and love to hear your feedback. The feedback you gave us helps us to built the product you want! Use the contact form above to do that. Thank you in advance.
Service Level Agreement for Add-ons developed by Vertuna LLC
Each ConfiForms Form is associated with a page (or a blogpost), the page where this form is defined using ConfiForms Form macro container. Administrators for this form are users who: have administrative access to Confluence (Confluence admins and superusers) users who have edit permissions on the page where the form is configured users (users in a group) who are explicitly set to be Form administrators via ConfiForms Form parameter to set additional form admins (they might not have Edit permissions on the page). Also see: Why do I see an extra button with + sign on my form and ownedBy field
This is because you are the administrator of the form and allowed to see some metadata and create records on someones behalf. Ordinal users will not see this button. Also see: Why do I see an extra button with + sign on my form and ownedBy field
[SERVER/DATA CENTER] Nothing. The data stored with ConfiForms plugin is stored as page metadata and remains in the database even if uninstall the plugin.
[CLOUD] Data will be removed within 2-3 months. You can also request it to be removed earlier if needed
This is very important to understand. ConfiForms is not a replacement to JIRA or any other issue tracking system. However, it could be easily used as one, but keep in mind the dataset size and the complexity of the forms you are building.
The original purpose of ConfiForms plugin is to allow customers to store structured data within Confluence. We strongly advice you to try to avoid forms with 5000+ rows, or better put, to avoid pages with forms that have 5000+ rows (as you may have many forms on the same Confluence page) There is no limit on a number of forms you can create, and no limit on number of rows, but our tests show that the plugin works best then a number of rows is up to 2000 (per form) and dataset is smaller than 10MB. We strongly suggest to keep the datasets sizes as small as possible, splitting the data between forms or using other external storages, such as JIRA as an example.
We have a strict dependency on Confluence Workbox plugin, to send internal notifications. Please make sure you have Workbox – Host Plugin (version 4.0.2 or can be other version, depending on your Confluence server version) is enabled!
This might be the log entry you see in the Confluence general log:
ERROR [http-nio-8090-exec-10] [atlassian.plugin.manager.PluginEnabler] actualEnable Unable to start the following plugins due to timeout while waiting for plugin to enable: com.vertuna.confluence.plugins.confiforms -- referer: https://YOUR_SERVER/plugins/servlet/upm | url: /rest/plugins/1.0/com.vertuna.confluence.plugins.confiforms-key WARN [http-nio-8090-exec-10] [confluence.util.profiling.DefaultActivityMonitor] close Exceeded the threshold of 60000 ms: ActivitySnapshot{startTime=1500375387027, threadId=214, threadName='http-nio-8090-exec-10', userId='admin', type='web-request', summary='/rest/plugins/1.0/com.vertuna.confluence.plugins.confiforms-key'}
Or something along these lines
ERROR [Spring DM Context Creation Timer] [plugin.osgi.factory.OsgiPlugin] onPluginContainerFailed Unable to start the plugin container for plugin 'com.vertuna.confluence.plugins.confiforms' org.springframework.context.ApplicationContextException: Application context initialization for 'com.vertuna.confluence.plugins.confiforms' has timed out waiting for (|(objectClass=com.atlassian.mywork.service.LocalNotificationService)(objectClass=com.atlassian.mywork.service.LocalTaskService)) ERROR [UpmAsynchronousTaskManager:thread-4] [atlassian.plugin.manager.PluginEnabler] actualEnable Unable to start the following plugins due to timeout while waiting for plugin to enable: com.vertuna.confluence.plugins.confiforms ERROR [Spring DM Context Creation Timer] [extender.internal.support.ExtenderConfiguration] onOsgiApplicationEvent Application context refresh failed (NonValidatingOsgiBundleXmlApplicationContext(bundle=com.vertuna.confluence.plugins.confiforms, config=osgibundle:/META-INF/spring/*.xml)) org.springframework.context.ApplicationContextException: Application context initialization for 'com.vertuna.confluence.plugins.confiforms' has timed out waiting for (|(objectClass=com.atlassian.mywork.service.LocalNotificationService)(objectClass=com.atlassian.mywork.service.LocalTaskService)) ERROR [Spring DM Context Creation Timer] [internal.dependencies.startup.DependencyWaiterApplicationContextExecutor] fail Unable to create application context for [com.vertuna.confluence.plugins.confiforms], unsatisfied dependencies: Dependency on [(objectClass=com.atlassian.mywork.service.LocalTaskService)] (from bean [&taskService]), Dependency on [(objectClass=com.atlassian.mywork.service.LocalNotificationService)] (from bean [¬ificationService]) org.springframework.context.ApplicationContextException: Application context initialization for 'com.vertuna.confluence.plugins.confiforms' has timed out waiting for (|(objectClass=com.atlassian.mywork.service.LocalNotificationService)(objectClass=com.atlassian.mywork.service.LocalTaskService))
This is a known issue, when you have Brikit Theme plugin version 2.0.0 and up till 2.0.4, where the issue has been fixed (Brikit broke the Confluence editor JavaScript scripts execution and blocked ConfiForms scripts from running). Please update your Brikit plugin to version 2.0.4.
On a database level this operation is quite simple. Below you can find the queries which can help you to do this
select count(*) from os_propertyentry where entity_name = 'confluence_ContentEntityObject' and entity_key like 'confiform_content%'; select distinct entity_id as "content_id" from os_propertyentry where entity_name = 'confluence_ContentEntityObject' and entity_key like 'confiform_content%';
Sometimes you need to work with ConfiForms field value sin a raw format, and that goes through the use of [entry.field_name] notations (Accessing field values and properties)
Yes, we know it might be frustrating to type [entry.field_name] into a rich text macros( non-plain text), as Confluence editor tries to autoconvert them into a links...
The workaround for this would be as follows:
Another workaround is to type your field reference in some plaintext editor and copy it directly to Confluence editor
Or as follows - type [] then press ctrl+Z and start typing your expression inside the brackets
Another workaround suggested by one of our customers
We have also noticed that - the same plugin code renders slower in Confluence 6 than in Confluence 5. In fact. our macros rendering is not that slower (How to enable debug logging for ConfiForms app), however, the output to user is sent considerably slower than in Confluence 5.
We think, that this might be one of the reasons https://confluence.atlassian.com/confkb/slow-page-rendering-of-large-pages-due-to-http-post-limitations-183137.html
We have also noticed that rendering times (in fact the time used to sent the rendered output to user) has been improved in Confluence 6.8.x, but is still is slower than on Confluence 5. We are continuing to investigate this issue and looking for solutions.
Best tutorial to start with is Creating Jira issue from Confluence with ConfiForms.
Look at the pages mentioned below to learn what your Jira may expect as an input format for a certain field type and how you can prepare the values from ConfiForms to be in the format your Jira expects