Hey @Adrian_G
You could build this kind of functionality in Power Apps I don't tend to build forms with up to 100 questions but I can understand the need to build such large forms sometimes.
Let's look at your requirements:
Requirements:
MUST: The questionnaire contains about 100 questions in total. - you could add a column for each of the potential questions. Unsure on the Datasource you would like to do but you can do this with all the main ones e.g. SharePoint Lists, Dataverse and SQL. You can then add a form control in power apps and add them all in.
MUST: Depending on the responses to certain questions, some other questions are skipped. - When you add a form control you have the ability to conditionally change the visibility of the questions by editing the Visible property of the datacard it adds for each column. You can also do the same for the Required property to conditionally change the required and optional elements of forms.
MUST: Answers can be single/multiple choice or text input. - You can do this with the out of the box controls. I would recommend the Combobox for Single and Multi-Select drop-down styled fields, and the Text Input control for text fields.
SHOULD: Tooltips with explanations to questions can be displayed. - controls in PowerApps have a property called Tooltip property and you can edit and add what you need it to say in that property.
MUST: The questions pertain to an entity (an asset) that the user selects from a list at the start of the questionnaire.- I might be misunderstanding this but this sounds like another area you just need to add a Combobox Control.
MUST: A user can answer the questionnaire multiple times for different entities/assets.- that is possible just make sure to set the FormMode as New and OnSuccess of the Form Resetform.
SHOULD: If the user quits the questionnaire, they can proceed later without losing answers already given. - if this is just a should requirement and might not add a lot of value it could be simpler to avoid but if it is needed it is not too tricky to add. Add a Status to the Datasource add an In Progress Option and a Completed option. Then have two buttons one to submit the form and have the status set to completed and another to 'Save for Later' which sets the stays to in progress. Then add a condition to the FormMode to Lookup to see if this user who submitted the form has one inprogress if yes made the form edit else new. On the Item property make it if there is one it sets the item property to that lookup so you get the record.
MUST: If a (possibly different) user starts the questionnaire again for an asset, answers given earlier are prepopulated. - I think I need to understand the requirements better but it sounds like submissions for assets are a team thing and not unique to the person who submitted it. For this you could use the functionality I described in the previous option but we would just need to change the LookUp to meet your needs.
MUST: Responses for an entity/asset must be programmatically retrievable for processing purposes (e.g. to create reports). - this is very easy for all the example Datasources I mentioned.
MUST: Other systems are integrated via APIs (to retrieve the asset list and to relay responses). -You can do this you just need to understand what connectors or custom connectors you need.
The App type I would recommend would be a Canvas App.
You mentioned you are new to Power Platform so please let me know if you need a little more support i.e. links to docs or a short call for me to show you how to do the requirements.
P.s. forgive any typos I typed this on my phone 🙂