I am currently designing a questions and answers app for office 365. Users can submit questions and other users can answer (very similar to stack exchange). This is for an intranet. I am currently working out how to hold the data in the backend in sharepoint.

Some alternatives I have are :

  1. Document library with each answer stored as a different version
  2. List items where each entry by a user is a list entry
  3. Is it possible to tweak the discussion forum or any other OTB App to configure this.

We will redesign the front end for this so it is customised.

I am seeking help on the best way to store the data so each question has a set of different answers stored efficiently and the performance to query the app data is fast via the client.

  • Many thanks for all your answers I have gone for the OTB discussiob board. However I also have an additional requirement which is to keep private questions private and not to appear on the board but to a certain user. So a question can be directed to a user but kept private. Does anyone have any ideas for this implementation.
    – Miyagi
    Commented Apr 8, 2014 at 11:50

3 Answers 3


Probably the out-of-the-box Discussion Board App (3rd option) best suits your needs since it already contains all the features that you described in the requirements.

Follow, for example, this article for a description of Discussion Board features in SharePoint 2013.


For this option 2 seems good.you can have two lists(Questions and Answers). In the Answers list you will be having the reference to the Question ID. While users asking/filling the question you can show the Questions List form, while filling the answers you can get the details from questions/Answers(multiple answers for 1 question) list and Answers List form.You can explore Quiz app(Paid one) available in SharePoint store.


to me I would see it as a 1 to many relationship.

You need to think about the functionality (flow). So are you going to have an excepted answer like stack exchange and microsoft? or are you just going to have answers....

this will determin the layout of data and retrival. Next is how are you going to pull the data? would it be on a question rather than a user as a user can have multiple questions but there could be multiple same questions from the same user or users.

having a list you need to check on two things... the question and the owner for retrival and have a checkup on a question being asked so you dont have repeating questions.

1) create two lists for questions and answers

2) create list for each answer and their questions

say i have 500 questions... option two would generate 500 lists as each list is a question (first row) and within each list question you would have multiple answers (rows), then you have one accepted answer (field).

option one is best(your option 2), You could have a single list for all questions, each row represents a single answer. You then create another list that represent all answers for all questions. When you create a question it automatically creates a unique id. You could use this Unique id within a custom column within the answers list..... any answer that is created under that question would be populated with that unique id. So when you query the answers list for a given question you would use the question id to return all answers. You then create a custom column within the answers list called accepted. Any accepted answer would be yes or true as the accepted answer!

to the point.

list 1 = questions

think how your gonna retrive the question and checkup on repeating question before they ask

list 2 = answers

user id from list 1 to get all answers from a unique column in list 2. List 2 will have another column that will specifiy if the answer has been accepted.

the rest ill let you figuer it out ;)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.