To complete my expertise in data storage, I joined the editor Oracle, before joining InterSystems in 2001.
My skills in data processing have therefore been extended, from multi-model storage, interoperability (and more particularly on health exchange standards), to real-time analysis and artificial intelligence (AI / ML), so as to cover a broad spectrum of the data lifecycle in all industries.
Pour compléter mon expertise en stockage de données, j'ai ensuite intégré l'éditeur Oracle, avant de rejoindre InterSystems France dès 2001.
Mes compétences en traitement de la donnée se sont dès lors étendues, depuis le stockage multi-modèles, l'interopérabilité (et plus particulièrement sur les standards d'échanges en santé), jusqu'à l'analyse en temps-réel et à l'intelligence artificielle (IA/ML), de manière à couvrir un large spectre du cycle de vie de la donnée.
Tanguy,
you can find a full example of retrieving environment variables from a Business Operation either from a global or from $system.Util.GetEnviron(env) in this repo:
https://github.com/SylvainGuilbaud/iris-dev









Hi Tanguy,
happy to hear you've finally fixed it.
Again, %ZSTART is not at all mandatory ; as soon as your ENV variables are available in your container you should be able to get it either from $system.Util.GetEnviron(env) or ##class(%SYS.Python).Import("os").getenv(env)
With these variables :
{"Env": [ "API_CLIENT_SECRET=ea5663885513e5b00df120fa4b4da8e1150398cde9d41ee27b5a8c6f1898dfa63ae711b82bf06b36475b646453a9092f5653895ddd2c3bb067d9a4f562a6b625", "TZ=Europe/Paris", "ISC_DATA_DIRECTORY=/irisdata", "ISC_CPF_MERGE_FILE=/app/merge.cpf", "API_CLIENT_ID=3e726f42daaa06a8", "ISC_PACKAGE_IRISGROUP=irisowner", "ISC_PACKAGE_IRISUSER=irisowner", "ISC_PACKAGE_MGRGROUP=irisowner", "ISC_PACKAGE_MGRUSER=irisowner", "IRISSYS=/home/irisowner/irissys", "TINI_VERSION=v0.19.0", "ISC_PACKAGE_INSTANCENAME=IRIS", "ISC_PACKAGE_INSTALLDIR=/usr/irissys", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/irisowner/bin", "PYTHONPATH=/usr/irissys/mgr/python", "LANG=en_US.UTF-8", "LANGUAGE=en_US.UTF-8", "LC_ALL=en_US.UTF-8" ]}
You should get :
write $SYSTEM.Util.GetEnviron("API_CLIENT_ID") 3e726f42daaa06a8 write $SYSTEM.Util.GetEnviron("API_CLIENT_SECRET") ea5663885513e5b00df120fa4b4da8e1150398cde9d41ee27b5a8c6f1898dfa63ae711b82bf06b36475b646453a9092f5653895ddd2c3bb067d9a4f562a6b625 write $SYSTEM.Util.GetEnviron("TZ") Europe/Paris write ##class(%SYS.Python).Import("os").getenv("API_CLIENT_ID") 3e726f42daaa06a8 write ##class(%SYS.Python).Import("os").getenv("API_CLIENT_SECRET") ea5663885513e5b00df120fa4b4da8e1150398cde9d41ee27b5a8c6f1898dfa63ae711b82bf06b36475b646453a9092f5653895ddd2c3bb067d9a4f562a6b625 write ##class(%SYS.Python).Import("os").getenv("TZ") Europe/Paris
Or, with %ZSTART containing :
ROUTINE %ZSTART QUIT ; Prevents direct execution without a label SYSTEM ; Subroutine called at system startup ; Initialize the IRIS application secrets Set ^Secrets("API_CLIENT_ID") = $System.Util.GetEnviron("API_CLIENT_ID") Set ^Secrets("API_CLIENT_ID","LastUpdated") = $ZDATETIME($HOROLOG,3) Set ^Secrets("API_CLIENT_SECRET") = $System.Util.GetEnviron("API_CLIENT_SECRET") Set ^Secrets("API_CLIENT_SECRET","LastUpdated") = $ZDATETIME($HOROLOG,3) QUIT
you should obtain :
IRISAPP>zw ^Secrets ^Secrets("API_CLIENT_ID")="3e726f42daaa06a8" ^Secrets("API_CLIENT_ID","LastUpdated")="2025-08-07 17:16:19" ^Secrets("API_CLIENT_SECRET")="ea5663885513e5b00df120fa4b4da8e1150398cde9d41ee27b5a8c6f1898dfa63ae711b82bf06b36475b646453a9092f5653895ddd2c3bb067d9a4f562a6b625" ^Secrets("API_CLIENT_SECRET","LastUpdated")="2025-08-07 17:16:19" IRISAPP>d SYSTEM^%ZSTART IRISAPP>zw ^Secrets ^Secrets("API_CLIENT_ID")="3e726f42daaa06a8" ^Secrets("API_CLIENT_ID","LastUpdated")="2025-08-07 17:24:02" ^Secrets("API_CLIENT_SECRET")="ea5663885513e5b00df120fa4b4da8e1150398cde9d41ee27b5a8c6f1898dfa63ae711b82bf06b36475b646453a9092f5653895ddd2c3bb067d9a4f562a6b625" ^Secrets("API_CLIENT_SECRET","LastUpdated")="2025-08-07 17:24:02"