We need a way to understand how much data (not what data, but how much) users have on the system to understand how that affects performance.
Under settings we will create an option “Usage Diagnostic” that will generate a CSV file (for download downloads) that shows as rows every section and subsection of eramba (policy, policy review, user management, groups, etc) and the counter for each section as follow:
- number of items
- number of items on trash
- number of (total) notifications
- number of (total) custom fields
- number of Dynamic Status (not system, only those added by user)
- number of filters
- if you have question please ask, the csv does not have to have pretty names on the sections as its going to be mostly for support purposes
This will be used to understand how many items are on the system.
It controls what items are archived and not archived, items fall by default into archive by using a setting. The user can “Force Archive” and “Force Unarchive” which basically overrides the automatic settings.
We need to enable this in CERTAIN SECTIONS to avoid making mistakes, for example risk classifications are not used for a long time but still they can not be sent to the archive. We need to start with obvious sections;
- Account Reviews
- Online Assessments
The code needs to handle the following:
This applies to:
- the stuff which is now on the trash stays on teh trash, is not affected by archive
- you use what is not in the trash
- update migration scripts are EXCLUDED!
- calculations (risk calculations, legal is archived it affects the risk score or not?)
- then legal can not archived (its a very unusual scenario where a mandatory calculation happens on top of a non-mandatory relation)
- filter settings (dropdowns of items)
- if its in the archive is not shown on the filters
- parent / child (policy and review for example)
- If parent falls into archive, then all childs go to archive with him
- if admin “Force Unarchive” an item from the archive, all child to back to life. Note: this is a forced unarchive, it wont care whatever setting archiving is set on the section, they dont apply to this item and its childs.
- if admin “Force Unarchive” an item, then only those child that are “new” are brought back , rest is left in archive.
- related items (a risk has an asset and the asset has fall into the archive, what happens?)
- we follow the logic of trash, if an item falls under archive by automatic settings, and this item is mandatory on another section then this item does not go to archive. the same applies to “Force Archive”.
- dynamic status calcutions
The user needs a simple way to know what fell under archive and what not, the user interface needs to be able to tell that quickly. First every filter on every section needs to show clearly what archiving setting is used:
then on the menu we will add an option called “Archive” ONLY if archive is enabled on the section, otherwsie ew dont show it. This must be ACL controlled.
When the user clicks in there it lists the items on the archive, there is no MENU for the items, we just show the:
- item name
- when it fell on the archive
- why (Automatic or Manual and by whom)
On that list the user can bulk edit items and perform the following actions:
- Unarchive (It wont archive until the user manually archives it again)
If you are in a child section (audit, etc) and the parent of an item which is supposed to be unarchived is archiveed, then the system tells this is not possible because the parent is archived. they need to unarchive the parent first.
If the parent is unarchived and the parent has child , then only you unarchive those childs that meet the archive settings of that child section. This means you might not need to unarchive all child!
When the user uses filters the user can have a filter option to see what archive status the item is:
The status as we said are:
- Automatically Archived
- Not Archived
- Forced Unarchived
- Forced Archived
Now the user needs to be able to manually decide the following:
- Force Archive (send to archive ignoring the archive settings)
This should be done by using bulk edits: