Repository navigation
Database Design

For better managment of Non-Conformities, I have decided to group them under buildings which are under ConstructSafe's management.
The location field could be improved by creating a custom component so show map and handle autocomplete or by using an existing component from PCFGallery.
Normal entity with lookup onto building and timeline control on the form. We are creating activities for this entity to map its progression. We can set statuses and deactivate them as completed.
For adding attachments to the Non-Conformities, I've decided to NOT use OOTB attachments on timeline. These attachments are saved directly into the Dataverse, have limited size and can very quickly exhaust the storage of the organization. I've tried to set up a Sharepoint integration which would be one possible option but I wasn't able to get a trial Sharepoint instance because of licensing. In the end I have decided to go with a custom activity entity with a file column. This column uses Azure Blob Storage and therefore doesn't exhaust organizational resources and is scalable. These files can also be conveniently annotated and viewed in the timeline control.
For reporting Corrective Actions I have decided to also use activity type entity so all the updates on non-conformities are visible in the timeline.
Only caveat to this architecture decision regarding evidence and corrective actions is that all activities share the same security setting. Therefore if security was of concern, this would need to be clearly communicated to the client
##Notification For notifications I have decided to use in app global notifications as described here. These notifications are currently the best way how to notify users about the need for their input or attention. As a general rule, I am trying to keep away from email notifications if possible. This entity is used to notify users about changes in Non-Conformities. As described here.
The tables have SVG icons saved in webresources. I've customized the views and forms. All option sets are global because that is usually the best practice. I've also customized the ribbon button through the new interface and for some entities I've customised their Status Reasons.