I don't believe it's possible for the CACHESYS database (the one that sits behind the %SYS namespace) to be added to the mirror, because each member of the mirror needs to store instance-specific data there.

I've seen sites write their own scripts to export users, roles etc periodically from the master instance into files and import them into the other(s). For example, the Export method of Security.Users

But it's long puzzled me that InterSystems doesn't seem to have done this job for us all. Or perhaps they have, and I haven't yet heard about it.

Daniel, if your team benefits from working in a shared namespace but you'd still like source control, please consider using Deltanji from George James Software. This is a powerful and mature tool which runs natively within Caché / Ensemble / IRIS environments and integrates with Atelier, Studio and Portal editors.  It is extensively used around the world, including at NHS sites.

A couple of years after my original post, we at George James Software got inspired to have another look at Visual Studio Code. And at Global Summit this week we premiered our upcoming extensions.

You can watch a video of my flash talk here. 

https://youtu.be/1146vFuHoI8?t=1263

If you want to be notified when it is available  please email your request to info@georgejames.com

When the Terminal shortcut connects to your local Cache instance it does so directly and doesn't use telnet. The presence of TRM in the window title confirms that you're connecting that way, so you're not using the telnet service.

Since you're able to use Portal, please go to System Administration > Security > Auditing. If auditing isn't already turned on, do that, then repeat the failed connect. Back in Portal use the audit viewer to see if there are any clues.

In Portal's Security section, check that your %Service_Console service is enabled.

What authentication methods does it accept?

The fact that your Terminal doesn't prompt for Username makes me think the service doesn't allow Unauthenticated. That's fair enough. But given that you used to be able to connect and now you can't, it looks like something changed on the config or the status of this Cache instance.

I'm guessing you're doing this on Windows, and using the "Terminal" option from the popup menu from a Cache "cube" in your system tray.

Is the cube blue? Or grey? Blue represents a locally-running instance of Cache, which is commonly how Windows folk have things, particularly when evaluating.

When you launch Terminal from your cube, what does the titlebar of the window say? It might mention Telnet, in which case you've somehow configured your cube to be connecting over telnet. When running on Windows, it's the Cache server that's responsible for operating the telnet service. Though if this isn't running you wouldn't get "Access denied", but instead a connection failure.

Please give us more information about your situation and I'm confident we'll be able to help you.

When the rule gets compiled, the GetFunctionSet classmethod of Ens.Rule.Utils enumerates all classmethods of Ens.Rule.FunctionSet and of all its subclasses in the namespace. The first occurrence of a classmethod name is recorded, and the class in which it's found is going to be the one that the compiler uses when it generates the rule's class code.

In your case SendToEaling is first found in LNWDeploy.RoutingRules.Utility rather than in LNWTIEPackage.RoutingRules.Utility (which collates later).

Per your comment, I think you'll need to specify the full reference to your function, i.e.

##class(LNWTIEPackage.RoutingRules.Utility).SendToEaling(HL7)

Update: so far I haven't found a way of explicitly indicating which class you want your custom utility function to be called in.