You can use the Create method of the Security.Users class to do that. Bear in mind that class is in %SYS. Documentation for Create is here: Security.Users.
set $nameSpace = "%SYS"
if '##class(Security.Users).Exists("testuser") {
// Set properties
set props("Enabled")=1
set props("Name")=testuser
set props("FullName")="Test User"
set props("SuperUser")=0
set props("NameSpace")="USER"
set props("Roles")="%Developer,%Operator,TestRole"
set props("Password")=userpassword
set props("PasswordNeverExpires")=0
set props("ChangePassword")=0
set props("Routine")=""
set props("ExpirationDate")=""
set props("Flags")=1
set props("EmailAddress")=""
set status=##class(Security.Users).Create(user, .props)
if $$$ISERR(status) {
do $system.Status.DecomposeStatus(status, .err)
}
}
We have used Datadog to produce some customer facing dashboards that provide an quick view of general server/application health as well as current license usage, number of Cache process, etc. Additional internal only dashboards allow customer support staff that don't have access to the mgmt portal to identify problematic queries, users with high latency, and other application specific issues which they can then research further if necessary. This is done via a %CSP.Page class that is is configured as the URL in the Datadog configuration. Documentation for that Datadog configuration is here.