Plugin to Create and Update Forms in Confluence
Asked by RV:

We would like to create a Form in confluence which does the following:

1) First time the user logs in, shows the user a blank form (meaning all questions are unanswered), will let the user answer the questions and saves the response. The user need not answer ALL the questions.

2) Next time the user logs in, shows the same form but populates the form with already answered questions. The user can answer the rest of the questions and also change the answers to the already answered questions.

3) Don't want to create a separate page for each users form data.

Is that possible with any existing plugins?

Preferably, can we store the data in an external DB so that confluence is not overloaded with 1000's of FORM data.


Answers:
author: Davin Studer
body: The one I am most familiar with and use on an almost daily basis is [ConfiForms](https://marketplace.atlassian.com/plugins/com.vertuna.confluence.plugins.confiforms/server/overview). It can do what you are asking ... except for store the data in an external database. The data is stored with the page that the form is defined on. Technically, it is in the Confluence database and you could query it if you are proficient with SQL as it is stored in an xml format in the OS_PROPERTYENTRY table.

comments: author: RV
body: Hi Davin,

Thank you so much for responding. Our main concern is we only want to use only 1 page (standard form) and point users to this page.

Say the user needs to answer a set of questions for each JIRA issue. Since the number of questions is in 20's, we don't expect the users to answer all these questions in one go. For the first time, its a blank form, user answers few questions. Next time, the user first selects the issue number, so if there is already a record in the DB for this issue, we want to populate the form with already answered questions.

In short, we want to define issue number as a unique field/key in the DB, and query the DB to get the data related to issue id and populate the form with that data.

Is that possible? I didn't see any examples of this use case in ConfiForms. Can you please confirm if you have encountered any such case?


author: Davin Studer
body: Yes you can do that. You can even hook it up to JIRA to have it create JIRA tickets if you want or you could have a smart drop down that get's its data from the JSON of a JQL search (for looking up JIRA ticket numbers). It can do TONS of different kinds of things. I would say download a 30 trial to a non-prod server if you have one or production if you don't and you're ok with that. Honestly, it is one of the most useful add-ons we have purchased for Confluence in my organisation.


author: RV
body: Hi Davin,

I have installed the trial version and played around with it. I was able to pull data from JIRA and update JIRA fields as well based on certain actions in the confiforms form. Thanks for your suggestions!

I have a question: I have a field called "Jira Issue ID" and I am making it unique. If the form has say 10 questions, and a user has answered only 6 of them for a particular "issue id" and saves it. If the user comes back next day and searches/types that issue ID, I want to pull the data that he has already saved and populate the form with those saved responses. The user can answer only the rest of the questions and not all the questions again!

I am not able to achieve the above use case. I have seen that we can pull data from an external DB, or from JIRA issues etc. But how do I pull the data that was already stored in the same form's DB?

Do you have any pointers on how to implement that?

Thanks,  
Rahul


author: Davin Studer
body: You could use a field definition rule to hide the field if it has already been answered. So if you have 10 fields you would have 10 field definition rule macros that would check their respective fields and hide the field if it is not empty. When you save the entry and edit it again you should then only see the fields that do not have answers.


author: RV
body: Thanks Davin for the quick response.

I really don't necessarily need to hide the already answered questions. I actally want to show it so that in case the user changes his mind, he can modify his answer. From your response it appears obvious to pull the data and edit it again. That is what I am actually trying to do.

If I have saved an entry, how do I edit it again being a non admin, regular user. There needs to be a unique id to pull a specific record and in my case it is the JIRA Issue ID. Once I save the form with some answers for a specific Issue ID, how do I pull that record again and show it to the user who can modify his answers and save them again.

For one issue ID, I want to have only one record in the DB and keep updating that record multiple times.


author: Davin Studer
body: I'm not totally understanding how you want it set up, but are you wanting to get the JIRA ID created back from the ifttt macro to save it into the ConfiForms entry? So that future edit you can refer to that ID? If so you can get that from the ifttt macro and store it back into the entry for later use. It is discussed on [this page](https://wiki.vertuna.com/display/CONFIFORMS/Creating+JIRA+issue+with+ConfiForms) in their documentation.


Tags: atlassian-marketplace

forms