I have.

As Robert mentioned - disk I/O is one issue.  And the other issue is drive letter changes if the drive is moved between hosts (for example - the 'Journal File Location' pat set to D:\ in one instance - then drive 'D:' not found when the flash drive is moved between hosts.)  This can be overcome with scripts of sorts (potentially) - though I haven't tried to do that.

yes - I can't expect it was related to ZPM, but definitely seemed that way when it was the only image that didn't work in that state. 

Warning I guess for others reading this thread:  

docker system prune -f

Did remove 3 containers I had created, run and stopped on my system (but was planning to get back to them and start them again).  

thanks for now..

well that sucks.... 

docker system prune -f
Deleted Containers:

then re-running .. worked...

That may seem a great outcome to some, but, this un-predictability or, failure to report what the issue is (remember, the issue manifested in an IRIS process hanging), is not ideal. 

Also - I did try with non-ZPM containers successfully multiple times, whilst I was getting the issue, just to ensure, the issue was with only the zpm ones. It worked fine every time with non-ZPM containers.


Hi - 

Note that using the ZPM images to build a HealthShare Foundation namespace (interoperability enabled database and namespace), using the HealthShare -> Installer wizard -> Configure Foundation ; .

OR you can try this, using this line:

DO ##class(HS.HC.Util.Installer).InstallFoundation("MYNAMESPACE")

will hang mid-way.

However,  above operations complete successfully using the standard, non-ZPM enhanced builds.
I haven't tested any other functionality.


Hi - note that in order for this WHILE loop to iterate over the tXMLList (which was your XML string converted to a $LIST string) you need to also initialise the variable ptr = 0 outside the loop.

Also note this code only iterates over the source string and retrieves each value. - if you want to to replace your 'a' string as per your original post, use Robert's solution, or build this out in a new variable.   like this:

Set tXMLList = $LISTFROMSTRING(a, "</RollNo>")
Set ptr=0,newA=""
while $LISTNEXT(tXMLList,ptr,value) {
    Set $P(value,">",*) = "***"
    Set newA=newA_value_"</RollNo>"
Set a=newA

A warning on both solutions offered so far is that XML elements are not case-sensitive, so beware when the element "RollNo" is not provided to you in exactly that mix of lower/uppercase.

Hi Robert - 

Have you by any chance built or come across an Ensemble/IRIS Adapter that is based on WebSockets ?  Otherwise, I'm about to build my own...


Hi Nigel

Ok yes - that would work. When the context object is being populated with individual property values, - if the last thing I do is:

set myContextObject.context=myContextObject

then I can pass in the property 'context' into my function to gain access to the whole object. 

I could also just pass the rowID of myContextObject, and have myFunction re-instantiate it too.

I think this will have to be what I do, if the entire context object is not made public to my function.

Thanks - Steve

Hi Nigel.  

Not really. What I want to do is, in my Business Rule, call my custom function, passing the entire context object, not individual properties. Putting it out there again:

Assume I have a custom function called 'ValidateAllMandatoryFields' that returns a 1/0 from checking multiple properties of the context object and their inter-dependancies.

I'd like my rule to simply say:      IF ValidateAllMandatoryFields(<something>) ...
and for the function to see the whole context object, and do what it wants.

I don't want my rule to have to say:  IF ValidateAllMandatoryFields(context.Properties.PropA, context.Properties.PropB, etc.etc...)


Hi Fernando,

Strange. I've never seen this before, and it seems like a bug to me.  If no other suggestions appears here, I would reach out to the support team at InterSystems for advice.

If just defining classes and routines, VS Code is another alternative IDE. This is being developed further to bring it in line with the features of Atelier and provides another formidable option.

Of course the more mature IDE is IRIS Studio, another alternative for you, if running on a Windows client.