Ah, that's something different.
You require a conversion table by location + a time range when DST is to be applied! 
Location is a static thing to be defined once.
DST is a real challenge as it depends on the region and requires annual adjustment by location.
Including the chance that Europe may split up next year or drop it at all.
It might make sense to get it from an external government source by country.
it is definitely not included in any InterSystems product.   

I see 2 principal ways:

  • using $ZDateTime(), $ZDateTimeH() function to convert your timestamp to Posix Format and then add or subtract whatever seconds offset you require, with the advantage to easily cross day boundaries
  • or to use system variable $ZTIMEZONE to adjust the timezone of your actual process independent of the system's time zone by any number of minutes

Nothing prevents you to have such rules as part of your object definition.
And all the code to define this is definitely part of Caché or IRIS.
Caché and IRIS have excellent SQL support and projection of objects to simple tables.

But you should not try to compare an Object database to any relational database.
Just as a comparison, you won't ask:
  Why does a 747 not have red blinking warning lights at his back like a yellow school bus?

In reverse the 2 you mentioned try to mimic features of an Object database. With limited success.
 

@Sergei Shutov     You missed the point.
validator
is typically stored as part of the individual data record to handle various types of checks within your class to provide the highest flexibility. Think of language or geographically related checking.

You can't bypass the challenge.
Neither by $classmetho() nor any code generator as this is all static code frozen and inflexible a runtime. 

Creating a check routine by field or by record is not a realistic solution 

Good Morning,
Now the case seems rather clear to me:

  • in a fresh image of IRIS, the namespace USER is preconfigured for Interoperability/Ensemble and your Copy from should be USER
  • differently in a fresh installed HS image, it is the namespace HSSYS that is preconfigured for Interoperability/Ensemble and your Copy from should be HSSYS
  • namespace %SYS was and is  NEVER configured to work  in Interoperability/Ensemble
  • similar is IRISSYS using as your working database a bad misconfiguration with unpredictable conflicts and consequences  

you seem to miss this mapping by failed installation

[Map.your namespace>
Global_Ens.SecondaryData*=ENSSECONDARY
Global_EnsDICOM.Dictionary=ENSLIB
Global_EnsEDI.Description=ENS
Global_EnsEDI.Description("X","X12")=ENSLIB
Global_EnsEDI.Schema=ENS
Global_EnsEDI.Schema("HIPAA_4010")=ENSLIB
Global_EnsEDI.Schema("HIPAA_5010")=ENSLIB
Global_EnsEDI.Schema("ISC_00401")=ENSLIB
Global_EnsEDI.Schema("ISC_00405")=ENSLIB
Global_EnsEDI.X12.Description=ENS
Global_EnsEDI.X12.Description("HIPAA_4010")=ENSLIB
Global_EnsEDI.X12.Description("HIPAA_5010")=ENSLIB
Global_EnsEDI.X12.Schema=ENS
Global_EnsEDI.X12.Schema("HIPAA_4010")=ENSLIB
Global_EnsEDI.X12.Schema("HIPAA_5010")=ENSLIB
Global_IRIS.Msg=ENS
Global_IRIS.Msg("Arial,Tahoma,Verdana")=ENSLIB
Global_IRIS.Msg("Confirm")=ENSLIB
Global_IRIS.Msg("EDIDocumentView")=ENSLIB
Global_IRIS.Msg("Ens")=ENSLIB
Global_IRIS.Msg("EnsAlert")=ENSLIB
Global_IRIS.Msg("EnsBPL")=ENSLIB
Global_IRIS.Msg("EnsColumns")=ENSLIB
Global_IRIS.Msg("EnsDICOM")=ENSLIB
Global_IRIS.Msg("EnsEDI")=ENSLIB
Global_IRIS.Msg("EnsEDIEDIFACT")=ENSLIB
Global_IRIS.Msg("EnsEDIHL7")=ENSLIB
Global_IRIS.Msg("EnsEDISEF")=ENSLIB
Global_IRIS.Msg("EnsEDIX12")=ENSLIB
Global_IRIS.Msg("EnsEnt")=ENSLIB
Global_IRIS.Msg("EnsLDAP")=ENSLIB
Global_IRIS.Msg("EnsMQTT")=ENSLIB
Global_IRIS.Msg("EnsPushNotifications")=ENSLIB
Global_IRIS.Msg("EnsRecordMap")=ENSLIB
Global_IRIS.Msg("EnsSAP")=ENSLIB
Global_IRIS.Msg("EnsSR")=ENSLIB
Global_IRIS.Msg("EnsSearchTable")=ENSLIB
Global_IRIS.Msg("EnsWf")=ENSLIB
Global_IRIS.Msg("EnsXPATH")=ENSLIB
Global_IRIS.Msg("EnsebXML")=ENSLIB
Global_IRIS.Msg("Ensemble")=ENSLIB
Global_IRIS.Msg("ITK")=ENSLIB
Global_IRIS.Msg("RuleEditor")=ENSLIB
Global_IRIS.Msg("Workflow")=ENSLIB
Global_IRIS.Msg("tahoma,verdana")=ENSLIB
Global_IRIS.MsgNames=ENS
Global_IRIS.MsgNames("Arial,Tahoma,Verdana")=ENSLIB
Global_IRIS.MsgNames("Confirm")=ENSLIB
Global_IRIS.MsgNames("EDIDocumentView")=ENSLIB
Global_IRIS.MsgNames("Ens")=ENSLIB
Global_IRIS.MsgNames("EnsAlert")=ENSLIB
Global_IRIS.MsgNames("EnsBPL")=ENSLIB
Global_IRIS.MsgNames("EnsColumns")=ENSLIB
Global_IRIS.MsgNames("EnsDICOM")=ENSLIB
Global_IRIS.MsgNames("EnsEDI")=ENSLIB
Global_IRIS.MsgNames("EnsEDIEDIFACT")=ENSLIB
Global_IRIS.MsgNames("EnsEDIHL7")=ENSLIB
Global_IRIS.MsgNames("EnsEDISEF")=ENSLIB
Global_IRIS.MsgNames("EnsEDIX12")=ENSLIB
Global_IRIS.MsgNames("EnsEnt")=ENSLIB
Global_IRIS.MsgNames("EnsLDAP")=ENSLIB
Global_IRIS.MsgNames("EnsMQTT")=ENSLIB
Global_IRIS.MsgNames("EnsPushNotifications")=ENSLIB
Global_IRIS.MsgNames("EnsRecordMap")=ENSLIB
Global_IRIS.MsgNames("EnsSAP")=ENSLIB
Global_IRIS.MsgNames("EnsSR")=ENSLIB
Global_IRIS.MsgNames("EnsSearchTable")=ENSLIB
Global_IRIS.MsgNames("EnsWf")=ENSLIB
Global_IRIS.MsgNames("EnsXPATH")=ENSLIB
Global_IRIS.MsgNames("EnsebXML")=ENSLIB
Global_IRIS.MsgNames("Ensemble")=ENSLIB
Global_IRIS.MsgNames("ITK")=ENSLIB
Global_IRIS.MsgNames("RuleEditor")=ENSLIB
Global_IRIS.MsgNames("Workflow")=ENSLIB
Global_IRIS.MsgNames("tahoma,verdana")=ENSLIB
Global_IRIS.Temp.EnsHostTotals=IRISTEMP
Global_IRIS.Temp.EnsPortal*=IRISTEMP
Global_IRIS.Temp.EnsPublic*=IRISTEMP
Global_IRIS.Temp.Ens*=ENSENSTEMP
Routine_Ens*=ENSLIB
Package_CSPX.Dashboard=ENSLIB
Package_Ens=ENSLIB
Package_EnsLib=ENSLIB
Package_EnsPortal=ENSLIB

and eventually also these databases

ENSENSTEMP=C:\InterSystems\IRIS\mgr\ENS\ensenstemp\
ENSLIB=C:\InterSystems\IRIS\mgr\enslib\
ENSSECONDARY=C:\InterSystems\IRIS\mgr\ENS\enssecondary\