Skip to content

Database Design

Dominator55 edited this page Apr 22, 2024 · 12 revisions

I consider myself proficient in database design and Solution Architecture of Power Platform. I have architected about 4 implementations of Dynamics 365 and Power Platform from simple projects for a few months to over year-long large projects.

NetworgTask drawio A simple ERD diagram demonstrating the entities and database of the solution

Building

For a better management 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 to show the location on a map and handle autocomplete or by using an existing component from PCFGallery.

Non-Conformity

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.

Evidence

For adding attachments to the Non-Conformities, I have decided NOT to use OOTB attachments on the timeline. These attachments are saved directly into the Dataverse, have limited size and can very quickly exhaust the storage of the organization. I have 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.

Corrective Actions

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 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.

Table design

The tables have SVG icons saved in webresources. I have customized the views and forms. All option sets are global because that is usually the best practice. I have also customized the ribbon buttons through the new interface and for some entities I have customized their status reasons.

Clone this wiki locally