Interesting.  I'm curious if anyone has this particular setup with details to share?  For instance: does each developer have a local copy of IRIS on their laptop, or do they each have a dev instance on a server?  If they are using their laptops, are they using a virtual machine or container setup?  We have Windows machines but our IRIS instance is on Linux, so I imagine that would complicate things if the code a dev is working on references directory structure, system calls, etc.

Thanks for the reply.  I guess in my mind, a branch would be made each time a dev wanted to work on a new feature/project.  If we needed to set up a new environment each time we did that, we might be overwhelmed.  Perhaps some more details on our namespace setup would be helpful.

We have one namespace for handling most ADT/order/result HL7 messages, flowing back and forth to Epic.  We have another namespace that handles most of our sftp traffic between other systems like Infor and various vendors.  We have one namespace with an HL7 production dedicated to very high HL7 traffic from bedside monitors.  Then we have two namespaces dedicated to other ERP traffic and some outside charge/financial traffic (X12, SFTP again).  Each of these six namespaces has its own git repo on the server, managed by embedded-git, connected to Azure.  Presently each namespace has but a single git branch, which is shared by all devs.  If I, for instance, am working on settings in IE.cls for a new service, I make my edits and have locked the IE.cls from anyone else editing it until I commit my changes.

I think in my ideal world, I would be able to make my own branch for my modifications, make changes, then commit them to the server when ready (thus deleting the branch).  But if I want to be able to do that, I think we need to aim for a single-user environment, which means some sort of IRIS instance on my machine, or a dedicated environment just for my new branch on the server (as you suggested), although I don't quite understand how that would work.

Appreciate the feedback, nonetheless!

The far-future state we'd like to achieve is more of a master source control state with Dev>Test>Prod environments where changes we make in the development environment would be promoted to Test for testing and subsequently to production, but right now the differences between our dev and prod Interop Productions are such that we need to completely rethink them before we can possibly address the idea of whether some sort of environment variables can be established/used to customize production elements (such as service/operation names, ports, etc.)

Some clarification from WRC: "The "RuleActionUserData" is a value set in the rule when or otherwise clause and can be overwritten at each iteration of the <foreach>. The <Send> action is not executed immediately at each iteration, but a list of <Send> action is generated while evaluating the <When> condition and will be execuated all at once after the evaluation. That's why the last value set in the RuleActionUserData was sent to the same DTL twice in this case."

In the end, we were able to get this work by instead passing a list of the segment IDs, and then modifying the list within the transform.

Here, each iteration of the RGS segment appends the IDRGS to the comma delimited list, and then in the transform, we grab the first piece, and then if it is not the last item on the list, we modify the list (so the next Send action will get the next item):

This resulted in the previously expected behavior of one message with each RGS segment.

Thanks, this is helpful...  I am fairly new to objectscript, so I'm having some difficulty retrieving the filesize from FileInfo from within the customized adapter.  I think I need to call it after a session has been established, and so I'm trying:

Set tFileInfoList=$LISTBUILD("test","test")

do ..%sftpSession.FileInfo(pFilename,.tFileInfoList)

Set tFinalSize= $LIST(tFileInfoList,2)

But this results in an error, ERROR <Ens>ErrException: <UNDEFINED>zPutStream+10^ACH.OutboundAdapterSFTPConfirm.1 *tFileInfoList -- logged as '-' number - @' Set tFinalSize= $LIST(tFileInfoList,2)'

Looking for any info on this error is unproductive.  I must be misunderstanding something about how ByRef arguments work-- likely I am misunderstanding how to invoke FileInfo and handling %List objects for this particular session instance, as well.