A foundation production is an interoperability production.  The wizard creates the namespace and production and adds it to a register of healthshare productions visible on the wizard screen.

The Ens.Activity.Operation.Local operation is used to collect/monitor production activity. See Monitoring Productions Monitoring Activity Volume for details. 

To summarise; 

  • The 'Configure Foundation' option in the Installer Wizard;
    • creates a healthcare interoperability namespace and production 
    • adds this production to the register of productions on the Installer Wizard page
  • A Foundation Production is just an normal interoperability production
    • it is only critical in the sense that you need one to process messages in HSHC. 
    • it is the same as a HL7 routing production created with the Production Wizard except that it doesn't pre-populate with; HL7FileService, Ens.Alert, MsgRouter, BadMessageHandler,EMailAlert, HL7FileOperation and PagerAlert.
    • it does include a Ens.Activity.Operation.Local operation (see Monitoring Productions Monitoring Activity Volume)
  • HSHC 2019.1 also creates a Foundation Production and adds it to the list on the Installer Wizard page when you tick the 'enable names for interoperability productions' tickbox. (ticked by default in HSHC 2019.1)


  • use the 'Configure Foundation' option in the Installer Wizard to create interoperability namespaces and their associated productions
  • manually create whatever you need from HL7FileService, Ens.Alert, MsgRouter, BadMessageHandler,EMailAlert, HL7FileOperation and PagerAlert  
  • don't manually create interoperability namespaces and productions. use the wizard.  


  • the old 'New production' dialog doesn't add your production to the list of configurations defined at  http://yourserver.etc:port/csp/healthshare/HS.HC.UI.Installer.Welcome.cls
  • The 'start all' button wont start your new production, it will start the foundation production created when you created your namespace, or throw an error if you deleted it. (hitting 'stop all' stops all productions even if the are not in the 'register')
  • WRC informed me that the Ens.Activity.Operation.Local operation will be removed in future versions. I don't know what that means for the Monitoring Productions Monitoring Activity Volume functionality?  


Whitelist for Atelier.

  • *.eclipse.org
  • atelier.artifactoryonline.com  (soon to be retired)
  • atelier.jfrog.io  (new domain for *.artifactoryonline.com domains)

This might be help if (like me) you work at a hospital with very strict network security.  Without whitelisting these domains for my team, the proxy (Trend) detects the JVM binaries and automatically blocks traffic.

The kind staff at the WRC helped me with this question. (WRC staff are amazing)

As it stands there is no known way to specify the full class path to a utility function.

Alternatives are discussed in the other comments below.

Suriya at WRC solved this for me

Where I went wrong: 

  1. I created context.pidSegment as EnsLib.HL7.Segment - which fails as an argument to the DTL <assign> statement)
  2. I forgot the (1) in {PIDgrp(1).PID}

The right way to copy a segment from one message to another is;

  1. create context variable as a string:  e.g. context.pidSegment as %String(MAXLEN=2500) 
  2. extract the segment as a string: context.k22.GetValueAt("PIDgrp(1).PID")
  3. use the DTL to set the right field: <assign value='context.pidSegment' property='target.{PIDgrp(1).PID}' action='set' />

Thanks go to Suriya at WRC