Hi Neil,
ClassCode is used to differentiate parent/child objects. Example:
Entity is our main business object which supports – Users, Company, Household, Person
Entity does not have a classCode (since it’s abstract) – where as child objects of Entity have their own each classCode: User (USR), Company(CO), Household (HO), Person (PSN)
This can be used to extend the model for new objects as well.
EntityType is applied after the classCode has been determined. The attribute provides more flexibility in terms of business rules, validations etc. Example A Company can be of different types – Trust, Non-Operating etc
Entity type also drives user experience – icons, layout can be different depending on associated attributes etc
Each child object of Entity has a corresponding EntityType
As for ‘S’ for the typeCode property of a ENUM.
You are correct, ‘S’ stands for system enums. This is a naming convention standard. If you look at an enum file there : the property classification has various options. Only two are used majorly – system or sysEdit
System enums cannot be updated/added new values without code changes. These typically drive business logic, security etc
SysEdit enums – Can be modified run time/no code changes required.
Hope this helps.