Jeffrey,
That's exactly what we did to offload message archiving to our DR server.
We created another namespace (R/W, non-mirrored) and mapped the following globals from the original namespace with the mirrored R/O database:
EnsLib.*, EnsLib, EnsHL7.Segment, EnsHL7.Schema, EnsHL7.Description, EnsEDI.*, EnsEDI.X12.Schema, EnsEDI.X12.Description, EnsEDI.Schema, EnsEDI.Description, EnsEDI.ASTM.Schema, EnsEDI.ASTM.Description, Ens.MessageHeaderI, Ens.MessageHeaderD, Ens.MessageBodyI, Ens.MessageBodyD, CacheMsgNames, CacheMsg.
Then, we run the message archiving task in the other namespace without issues.
Here is the link to documentation https://irisdocs.intersystems.com/healthconnect20191/csp/docbook/DocBook...
Your BPL would look similar to this:
If you're going to write a BPL, a better solution would be to make those sends (<call> elements) synchronous. This way you don't have to guess how long to delay for. Checking Force Sync Send for regular HL7 processes does exactly that.
To clarify, you have one inbound message from a service going to one process/routing rule with two sends in it. You've noticed that sometimes messages get sent not in the same order as they appear in the routing rule.
If above is correct, try checking Force Sync Send in the process settings.
Generally, you'll likely have to write a BPL and use the delay action if you want to sleep/halt between sends.