The KYC survey (see FE: survey page (for onboarding)) is designed:

  • to have a variable number of questions,

  • to have a variable number of options for each question,

  • to have the possibility of skipping questions or the whole survey based on the selected option.

Design (model):

Design remarks:

  • a survey instance should be immutable,

  • each major survey update (adding/deleting an option, adding/deleting a question, etc.) means a new survey creation,

    • since each survey creation is validated against the catalogue → the missing answers have to be inserted into the catalogue as the first step and then a new survey can be created,

  • it’s possible to update the wording of the question/option in the database BUT DO IT WISELY (it is a suggested way how to fix a typo) - it affects existing customer’s choices,

  • backward/forward compatibility of surveys is reached by using question/option (“natural”) identifiers (the same questions/answers in different surveys can have the same identifiers),

  • default survey will be stored in the database when no survey is present there (see: SurveyInitServiceImpl).