Decluttering configuration
Description
Environment
Attachments
Activity
Carlos RuizMarch 2, 2025 at 1:31 PM
Hi - last tests from the pull request have been successful.
Can you please also check this pull request?
Something I notice with the current state:
With this we can replace SysConfig keys that are System level or System+Client level.
The “System” level would be the definition of the default, and the client level would be the setting on the tenant (hmmm, I haven’t tested that case, I’m taking note to test it).
What it’s not replacing is “Org” SysConfig level, but I think those are a minority, and we can keep working with SysConfig when needed.
Regards,
Carlos Ruiz
Carlos RuizMarch 1, 2025 at 1:47 PM
The documentation needs to be updated to match the latest changes.
This is my new 2Pack for testing:
Carlos RuizOctober 14, 2024 at 9:53 AM
Great - thanks, sorry I didn’t notice.
Deepak PansheriyaOctober 14, 2024 at 1:53 AM
documentation was already added and same was added in web link in this ticket.
Carlos RuizOctober 13, 2024 at 7:02 PMEdited
Thanks - this looks very promising!!
I’ll add my peer review in the pull request.
Please add documentation NF12 wiki page.
For documentation purposes.
The pull request 2459 adds:
new columns:
AD_Table.M_AttributeSet_ID
M_Attribute.DefaultValue
M_Attribute.EntityType
M_AttributeSet.EntityType
M_AttributeUse.DefaultValue
M_AttributeUse.EntityType
M_AttributeValue.EntityType
new tables
AD_TableAttribute
AD_TableAttributeSet
I’m using this simple 2pack as first test case:
It adds an attribute IsGovernment to the table C_BPartner.
But we need test for more complex cases.
Hi, wanting to explore an idea here about decluttering the configuration of iDempiere.
Thinking about and the way how I implemented it.
SysConfig is an option to configure those exceptions, but anyways in the end is a bad option.
Also I don't like adding a new column for an exception case where 99% of records in AD_Tab will have that field empty and there are a few exceptions with the value filled.
I think we add too much columns in application dictionary for exceptional cases (cluttering the configuration). In the end we have a system that just experts can configure, and some of the options make the system too brittle. There are options that if somebody changes inadvertently can mess the system up.
So, I was thinking if would be easier to have some tables to define exceptions.
I mean, for example the specific case of is to configure a different DetailPagingSize for a few tabs, instead of adding AD_Tab.PagingDetailSize we have the following structure:
Table AD_TabNDC (NDC means non-default-configuration - but we can think a better name)
Columns:
AD_Tab_ID -> for example the tab Calendar Year and Period > Period
Property -> PagingDetailSize
Value -> 12
So, the whole system has a default and we define the exceptions in that table. This can be similar to SysConfig (system and client) but more focused on specific properties of the system.
Maybe we can have a table itself for the properties and their system-wide default values.
AD_PropertyDC (Property default configuration)
Property -> PagingDetailSize
Value -> 10 -> system-wide default value (or we can make it client+system in some cases same as SysConfig)
And in future, when needing to add an option that is exceptionally configured, we can simply add it as a default property and allow to fine-grain configure it in the exception tables, instead of adding a new direct field in dictionary, or a new cryptic SysConfig.
Also, some actual SysConfig are candidates to move to this new approach. And maybe the concept can be extended also to some client-side tables where you need a new column with a default value and rare exceptions configured in some records.
WDYT?
----------
I think we have a lot of candidates for this approach, and we can clean up some configuration from dictionary, for example:
AD_Window
WinWidth and WinHeight (I think this is not used in zk, maybe we can simply remove it)
System Color doesn't work -> can be removed
TitleLogic (mostly empty and just a few windows will have this filled)
Image? -> we have 20 windows with image from 424 (less than 5%) - in this case the property would be an ID - would need to think how to model it
IsBetaFunctionality -> could be made a property - we basically don't use this in core
AD_Tab
IsSingleRow -> just 21 from 1081 has 'N' - and probably is a misconfiguration
MaxQueryRecords
CommitWarning? -> just 9 from 1081
AD_Image_ID -> I think this is not being used
AD_Field
ObscureType? -> 5 from 19958 records have configured this
IsHeading -> zero in core
IsFieldOnly -> 8 from 19958
IsDefaultFocus -> zero in core
IsEncrypted -> 33 from 19958
Some of the options in "Overwritten From Column" group are also applicable here, like "Allow Copy" or "Value Format"
AD_Table
IsChangeLog -> this is maybe also better to have a system-wide default and people configure exceptions
IsHighVolume -> 37 from 961 different from default
AD_Column
Version -> we don't use this
IsAutoComplete?
VFormat
IsHtml
FormatPattern
AD_Process
AllowMultipleExecution
ExecutionType
IsBetaFunctionality
ShowHelp
IsServerProcess
AD_Process_Para
VFormat
IsEncrypted